Release Publish
Project-specific workflow for publishing ClawWork desktop releases.
Rules
- Release from
mainonly. - Do not open a PR unless the user explicitly asks for one.
- For prereleases, use tags like
v0.0.15-beta.4. packages/desktop/package.jsonversion must exactly match the tag withoutv.- Commit release prep with
git commit -s. - Do not push commits or tags without explicit user approval.
- The canonical local verification gate is
pnpm check.
Preflight
- Read
AGENTS.md,docs/agent-rules/git-conventions.md, and the release section inDEVELOPMENT.md. - Check repo state:
git status --short --branch git fetch --tags origin git tag --sort=-creatordate | head -20 git log --oneline --decorate -20 - Confirm
mainis clean and synced withorigin/main. - Identify the next version from the latest tag and user intent.
- Review unreleased commits:
git log --format='%h %s' <previous-tag>..HEAD node scripts/generate-release-notes.mjs <previous-tag>..HEAD
Prepare Commit
- Update
packages/desktop/package.jsonto the release version. - Run:
pnpm check - Inspect the final diff:
git diff -- packages/desktop/package.json git status --short - Stage only intended files.
- Commit:
git commit -s -m "chore(release): prepare vX.Y.Z[-beta.N]"
Publish
Only after the user explicitly approves pushing:
- Create the tag on the release prep commit:
git tag vX.Y.Z[-beta.N] - Push the commit and tag:
git push origin main git push origin vX.Y.Z[-beta.N] - Monitor the workflow:
gh run list --workflow release.yml --limit 5 gh run watch <run-id>
Post-Publish Verification
- Confirm
release.ymlsucceeded. - Confirm GitHub Release exists and is not draft:
gh release view vX.Y.Z[-beta.N] --repo clawwork-ai/clawwork --json tagName,isDraft,isPrerelease,isLatest,assets - Confirm expected assets are present:
- macOS arm64 DMG + zip + blockmaps
- macOS x64 DMG + zip + blockmaps
- Windows x64 NSIS installer + blockmap
- Linux x64 AppImage and deb
latest-mac-arm64.ymllatest-mac.ymllatest.ymllatest-linux.yml
- If the release body is empty, confirm
publish-release-notesfilled it.
Failure Handling
- Version mismatch: update
packages/desktop/package.json, recommit, move or recreate the tag only after confirming with the user. - Missing assets: inspect the failed matrix job first; do not re-run blindly.
- macOS notarization failure:
release.ymlhas an ad-hoc fallback. Treat non-notarization macOS failures as real blockers. - Failed local
pnpm check: fix root cause before publishing.