一键导入
vmux-release
Use when releasing a new vmux version, cutting a vmux release, validating vmux release automation, or troubleshooting vmux release artifacts.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when releasing a new vmux version, cutting a vmux release, validating vmux release automation, or troubleshooting vmux release artifacts.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | vmux-release |
| description | Use when releasing a new vmux version, cutting a vmux release, validating vmux release automation, or troubleshooting vmux release artifacts. |
APPLE_CERTIFICATE, APPLE_CERTIFICATE_PASSWORD, APPLE_SIGNING_IDENTITY, APPLE_ID, APPLE_APP_PASSWORD, APPLE_TEAM_ID.VMUX_UPDATE_PUBLIC_KEY, VMUX_UPDATE_PRIVATE_KEY, VMUX_UPDATE_PRIVATE_KEY_PASSWORD.Categorize the upgrade. Choose exactly one SemVer category before bumping:
git log v$LAST..HEAD for changes since last release and map every notable change into one category. Use the highest category present.Determine next version. Apply the category to the current version:
X.Y.Z -> X.Y.(Z+1)X.Y.Z -> X.(Y+1).0X.Y.Z -> (X+1).0.0Create release worktree and bump version.
git worktree list
git worktree add .worktrees/vmux-release-vX.Y.Z -b release/vX.Y.Z main
cd .worktrees/vmux-release-vX.Y.Z
git pull --rebase origin main
# Edit Cargo.toml: workspace.package.version = "X.Y.Z"
make lint
make test
git commit -am "chore(release): vX.Y.Z"
git push -u origin release/vX.Y.Z
Open PR.
gh pr create --title "chore(release): vX.Y.Z" --body "Release vX.Y.Z"
Wait for CI green. Lint + test always run; build-mac runs only if packaging-touching paths changed.
Squash-merge PR to main.
gh pr merge --squash --delete-branch
Watch release pipeline.
gh run watch $(gh run list --workflow=release.yml --limit 1 --json databaseId --jq '.[0].databaseId')
Expected: ~50 min for the macOS sign + notarize + DMG build.
Verify GH release.
gh release view vX.Y.Z
Assets present: Vmux_X.Y.Z_aarch64.dmg, vmux-vX.Y.Z-aarch64-apple-darwin.tar.gz, Vmux-vX.Y.Z-aarch64-apple-darwin.app.tar.gz, Vmux-vX.Y.Z-aarch64-apple-darwin.app.tar.gz.sig.
Verify auto-commit on main.
git pull --rebase origin main
git log -1 --stat
Expect a commit chore(release): update cask and update manifest to X.Y.Z touching Casks/vmux.rb and website/public/updates.json.
Verify website redeploy. Wait ~5 min for deploy-website.yml, then:
curl -fsSL https://vmux.ai/updates.json | jq .version
Should print "vX.Y.Z".
Smoke test. On a clean macOS machine or VM:
brew tap vmux-ai/vmux https://github.com/vmux-ai/vmux
brew install --cask vmux
# or, for existing installs:
brew upgrade --cask vmux
open -a Vmux
Confirm app launches and About shows the new version.
(Optional) Test auto-update. Install previous version, launch, wait for poll interval (default 1h). App should download + replace itself with the new version on next launch.
gh run view --log-failed. Common: notarization timeout (Apple side, retry the run), missing secret (re-add).Cargo.toml, so release should skip.Cargo.toml version. Confirm the bump landed; check git show main:Cargo.toml | head -10.vX.Y.Z tag points at the release SHA. It aborts if the tag points elsewhere. Fix by bumping version higher and pushing a new commit to main, or only delete the bad tag if you are certain it is safe.git pull --rebase origin main before push; if that fails, re-run the workflow.deploy-website.yml didn't fire. Check workflow runs; manually re-run via gh workflow run deploy-website.yml.