| name | release |
| description | Use when the user asks to release unitmux, bump the version, publish a GitHub release, update the Homebrew cask, check release status, or says リリース/release/バージョン上げて. |
Release
Automate the unitmux release process: version bump → commit → tag → push → CI build.
Prerequisites
- All changes must be committed before starting
- Must be on the
main branch
- Remote must be up to date (
git pull if needed)
Process
1. Pre-flight checks
git status
git branch
git log --oneline -5
If there are uncommitted changes, ask the user to commit first or offer to commit them.
2. Determine version
Read the current version from package.json. Suggest the next patch version (e.g., 0.1.1 → 0.1.2) unless the user specifies otherwise.
Version guidelines:
- Patch (0.1.x): Bug fixes, minor UI tweaks, small improvements
- Minor (0.x.0): New features, significant UI changes
- Major (x.0.0): Breaking changes (rare at this stage)
Ask the user to confirm the version before proceeding.
3. Bump version
Update "version" in package.json.
4. Commit and tag
git add package.json
git commit -m "chore: bump version to <version>"
git tag v<version>
5. Push
git push origin main --tags
This triggers the GitHub Actions CI workflow (.github/workflows/release.yml) which builds for macOS, Linux, and Windows and creates a GitHub release with assets.
6. Monitor CI (optional)
If the user wants to wait for CI:
gh run list --limit 3
gh run watch <run-id>
7. macOS code signing note
The CI build uses ad-hoc signing. If the user needs a properly signed macOS build:
- Build locally with
npm run build:mac
- Upload the DMG to the GitHub release, replacing the CI-built one
8. Replace macOS asset with local build
CI builds use ad-hoc signing which causes Gatekeeper issues. Replace with a locally signed build:
-
Build locally:
npm run build:mac
-
Find the DMG:
ls dist/*.dmg
-
Delete the CI-built macOS asset and upload the local one:
gh release view v<version>
gh release delete-asset v<version> <ci-dmg-filename> --yes
gh release upload v<version> dist/<local-dmg-filename>
-
Verify the upload:
gh release view v<version>
9. Update Homebrew tap
After replacing the DMG, update the Homebrew cask formula:
-
Get the new SHA-256:
shasum -a 256 dist/<local-dmg-filename>
-
Update the checksum in the tap repo (homebrew-tap/Casks/unitmux.rb):
- Update
version
- Update
sha256
- Update the download URL if the filename changed
-
Ask the user before pushing to the tap repo.
Post-release checklist
Important rules
- Always ask for confirmation before committing, tagging, and pushing
- Never force-push
- Never skip version confirmation