diff --git a/.claude/commands/release.md b/.claude/commands/release.md new file mode 100644 index 00000000..caf509f3 --- /dev/null +++ b/.claude/commands/release.md @@ -0,0 +1,61 @@ +# Release + +Prepare a new release for cmuxterm. This command updates the changelog, bumps the version, and creates a release tag. + +## Steps + +1. **Determine the new version number** + - Get the current version from `GhosttyTabs.xcodeproj/project.pbxproj` (look for `MARKETING_VERSION`) + - Bump the minor version unless the user specifies otherwise (e.g., 1.12.0 → 1.13.0) + +2. **Gather changes since the last release** + - Find the most recent git tag: `git describe --tags --abbrev=0` + - Get commits since that tag: `git log --oneline ..HEAD --no-merges` + - Categorize changes into: Added, Changed, Fixed, Removed + +3. **Update the changelog** + - Add a new section at the top of `CHANGELOG.md` with the new version and today's date + - Write clear, user-facing descriptions (not raw commit messages) + - Focus on what matters to users: new features, bug fixes, breaking changes + - Also update `docs-site/content/docs/changelog.mdx` with the same content + +4. **Bump the version in Xcode project** + - Update all occurrences of `MARKETING_VERSION` in `GhosttyTabs.xcodeproj/project.pbxproj` + - There are typically 4 occurrences (Debug/Release for main app and CLI) + +5. **Commit the changes** + - Stage: `CHANGELOG.md`, `docs-site/content/docs/changelog.mdx`, `GhosttyTabs.xcodeproj/project.pbxproj` + - Commit message: `Bump version to X.Y.Z` + +6. **Create and push the tag** + - Create tag: `git tag vX.Y.Z` + - Push commits: `git push origin main` + - Push tag: `git push origin vX.Y.Z` + +7. **Monitor the release** + - Watch the workflow: `gh run watch --repo manaflow-ai/cmuxterm` + - Verify the release appears at: https://github.com/manaflow-ai/cmuxterm/releases + +## Changelog Guidelines + +- Use present tense ("Add feature" not "Added feature") +- Group by category: Added, Changed, Fixed, Removed +- Be concise but descriptive +- Focus on user impact, not implementation details +- Link to issues/PRs if relevant + +## Example Changelog Entry + +```markdown +## [1.13.0] - 2025-01-30 + +### Added +- New keyboard shortcut for quick tab switching + +### Fixed +- Memory leak when closing split panes +- Notification badges not clearing properly + +### Changed +- Improved terminal rendering performance +``` diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..c074138d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,112 @@ +# Changelog + +All notable changes to cmuxterm are documented here. + +## [1.12.0] - 2025-01-29 + +### Fixed +- Handle display scale changes when moving between monitors + +### Changed +- Fix SwiftPM cache handling for release builds + +## [1.11.0] - 2025-01-29 + +### Added +- Notifications documentation for AI agent integrations + +### Changed +- App and tooling updates + +## [1.10.0] - 2025-01-29 + +### Added +- Sentry SDK for crash reporting +- Documentation site with Fumadocs +- Homebrew installation support (`brew install --cask cmuxterm`) +- Auto-update Homebrew cask on release + +### Fixed +- High CPU usage from notification system +- Release workflow SwiftPM cache issues + +### Changed +- New tabs now insert after current tab and inherit working directory + +## [1.9.0] - 2025-01-29 + +### Changed +- Normalized window controls appearance +- Added confirmation panel when closing windows with active processes + +## [1.8.0] - 2025-01-29 + +### Fixed +- Socket key input handling +- OSC 777 notification sequence support + +### Changed +- Customized About window +- Restricted titlebar accessories for cleaner appearance + +## [1.7.0] - 2025-01-29 + +### Fixed +- Environment variable and terminfo packaging issues +- XDG defaults handling + +## [1.6.0] - 2025-01-28 + +### Fixed +- Terminfo packaging for proper terminal compatibility + +## [1.5.0] - 2025-01-28 + +### Added +- Sparkle updater cache handling +- Ghostty fork documentation + +## [1.4.0] - 2025-01-28 + +### Added +- cmuxterm CLI with socket control modes +- NSPopover-based notifications + +### Fixed +- Notarization and codesigning for embedded CLI +- Release workflow reliability + +### Changed +- Refined titlebar controls and variants +- Clear notifications on window close + +## [1.3.0] - 2025-01-28 + +### Added +- Debug scrollback tab with smooth scroll wheel +- Mock update feed UI tests +- Dev build branding and reload scripts + +### Fixed +- Notification focus handling and indicators +- Tab focus for key input +- Update UI error details and pill visibility + +### Changed +- Renamed app to cmuxterm +- Improved CI UI test stability + +## [1.1.0] - 2025-01-28 + +### Added +- Sparkle auto-update flow +- Titlebar update UI indicator + +## [1.0.x] - 2025-01-28 + +Initial releases with core terminal functionality: +- GPU-accelerated terminal rendering via Ghostty +- Tab management with native macOS UI +- Split pane support +- Keyboard shortcuts +- Socket API for automation diff --git a/CLAUDE.md b/CLAUDE.md index e4588af6..9874e01a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -88,7 +88,14 @@ git commit -m "Update ghostty submodule" ## Release -Tagging a version triggers the GitHub Actions release workflow and uploads the notarized zip. +Use the `/release` command to prepare a new release. This will: +1. Determine the new version (bumps minor by default) +2. Gather commits since the last tag and update the changelog +3. Update `CHANGELOG.md` and `docs-site/content/docs/changelog.mdx` +4. Bump `MARKETING_VERSION` in the Xcode project +5. Commit, tag, and push + +Manual release steps (if not using the command): ```bash git tag vX.Y.Z @@ -102,3 +109,4 @@ Notes: - The release asset is `cmuxterm-macos.dmg` attached to the tag. - README download button points to `releases/latest/download/cmuxterm-macos.dmg`. - Versioning: bump the minor version for updates unless explicitly asked otherwise. +- Changelog: always update both `CHANGELOG.md` and the docs-site version. diff --git a/docs-site/content/docs/changelog.mdx b/docs-site/content/docs/changelog.mdx new file mode 100644 index 00000000..ec99570d --- /dev/null +++ b/docs-site/content/docs/changelog.mdx @@ -0,0 +1,117 @@ +--- +title: Changelog +description: Release notes and version history for cmuxterm +--- + +# Changelog + +All notable changes to cmuxterm are documented here. + +## [1.12.0] - 2025-01-29 + +### Fixed +- Handle display scale changes when moving between monitors + +### Changed +- Fix SwiftPM cache handling for release builds + +## [1.11.0] - 2025-01-29 + +### Added +- Notifications documentation for AI agent integrations + +### Changed +- App and tooling updates + +## [1.10.0] - 2025-01-29 + +### Added +- Sentry SDK for crash reporting +- Documentation site with Fumadocs +- Homebrew installation support (`brew install --cask cmuxterm`) +- Auto-update Homebrew cask on release + +### Fixed +- High CPU usage from notification system +- Release workflow SwiftPM cache issues + +### Changed +- New tabs now insert after current tab and inherit working directory + +## [1.9.0] - 2025-01-29 + +### Changed +- Normalized window controls appearance +- Added confirmation panel when closing windows with active processes + +## [1.8.0] - 2025-01-29 + +### Fixed +- Socket key input handling +- OSC 777 notification sequence support + +### Changed +- Customized About window +- Restricted titlebar accessories for cleaner appearance + +## [1.7.0] - 2025-01-29 + +### Fixed +- Environment variable and terminfo packaging issues +- XDG defaults handling + +## [1.6.0] - 2025-01-28 + +### Fixed +- Terminfo packaging for proper terminal compatibility + +## [1.5.0] - 2025-01-28 + +### Added +- Sparkle updater cache handling +- Ghostty fork documentation + +## [1.4.0] - 2025-01-28 + +### Added +- cmuxterm CLI with socket control modes +- NSPopover-based notifications + +### Fixed +- Notarization and codesigning for embedded CLI +- Release workflow reliability + +### Changed +- Refined titlebar controls and variants +- Clear notifications on window close + +## [1.3.0] - 2025-01-28 + +### Added +- Debug scrollback tab with smooth scroll wheel +- Mock update feed UI tests +- Dev build branding and reload scripts + +### Fixed +- Notification focus handling and indicators +- Tab focus for key input +- Update UI error details and pill visibility + +### Changed +- Renamed app to cmuxterm +- Improved CI UI test stability + +## [1.1.0] - 2025-01-28 + +### Added +- Sparkle auto-update flow +- Titlebar update UI indicator + +## [1.0.x] - 2025-01-28 + +Initial releases with core terminal functionality: +- GPU-accelerated terminal rendering via Ghostty +- Tab management with native macOS UI +- Split pane support +- Keyboard shortcuts +- Socket API for automation diff --git a/docs-site/content/docs/meta.json b/docs-site/content/docs/meta.json index cdf7acd7..d74ec4ef 100644 --- a/docs-site/content/docs/meta.json +++ b/docs-site/content/docs/meta.json @@ -16,6 +16,7 @@ "claude-code-hooks", "---Reference---", "osc-sequences", - "environment-variables" + "environment-variables", + "changelog" ] }