--- name: release description: "Prepare and ship a cmux release end-to-end: choose the next version, curate user-facing changelog entries, bump versions, open and monitor a release PR, merge, tag, and verify published artifacts. Use when asked to cut, prepare, publish, or tag a new release." --- # Release Run this workflow to prepare and publish a cmux release. ## Workflow 1. Determine the version: - Read `MARKETING_VERSION` from `GhosttyTabs.xcodeproj/project.pbxproj`. - Default to a minor bump unless the user explicitly requests patch/major/specific version. 2. Create a release branch: - `git checkout -b release/vX.Y.Z` 3. Gather user-facing changes since the last tag: - `git describe --tags --abbrev=0` - `git log --oneline ..HEAD --no-merges` - Keep only end-user visible changes (features, bug fixes, UX/perf behavior). 4. Update changelogs: - Update `CHANGELOG.md`. - Update `docs-site/content/docs/changelog.mdx`. - Use categories `Added`, `Changed`, `Fixed`, `Removed`. - If no user-facing changes exist, confirm with the user before continuing. 5. Bump app version metadata: - Prefer `./scripts/bump-version.sh`: - `./scripts/bump-version.sh` (minor) - `./scripts/bump-version.sh patch|major|X.Y.Z` - Ensure both `MARKETING_VERSION` and `CURRENT_PROJECT_VERSION` are updated. 6. Commit and push branch: - Stage release files (changelog + version updates). - Commit with `Bump version to X.Y.Z`. - `git push -u origin release/vX.Y.Z`. 7. Create release PR: - `gh pr create --title "Release vX.Y.Z" --body "..."` - Include a concise changelog summary in the PR body. 8. Watch CI and resolve failures: - `gh pr checks --watch` - Fix failing checks, push, and wait for green. 9. Merge and sync `main`: - `gh pr merge --squash --delete-branch` - `git checkout main && git pull --ff-only` 10. Create and push tag: - `git tag vX.Y.Z` - `git push origin vX.Y.Z` 11. Verify release workflow and assets: - `gh run watch --repo manaflow-ai/cmux` - Confirm release exists in GitHub Releases and includes `cmux-macos.dmg`. ## Changelog Rules - Include only user-visible changes. - Exclude internal-only changes (CI, tests, docs-only edits, refactors without behavior changes). - Write concise user-facing bullets in present tense.