.agents/skills/desktop-release/SKILL.md
Perform a regular desktop release. This skill handles the full release workflow from the dev branch.
dev. If not, abort with a warning.git pull --rebase in the repo root to ensure the local branch is up to date.apps/desktop/package.json to get the current version and mainHash.git tag --sort=-creatordate | grep '^desktop/v' | head -1
git log <last-tag>..HEAD --oneline --no-merges
Read apps/desktop/changelog/next.md.
Present the categorized changes to the user and draft the changelog content.
Wait for user confirmation or edits before writing.
Write the final content to apps/desktop/changelog/next.md, following the template format:
# What's new in vNEXT_VERSION
## Shiny new things
- description of new feature
## Improvements
- description of improvement
## No longer broken
- description of fix
## Thanks
Special thanks to volunteer contributors @username for their valuable contributions
Keep NEXT_VERSION as the placeholder - it will be replaced by apply-changelog.ts during bump.
nbump requires a clean working tree. Commit changelog edits before running bump.
git add apps/desktop/changelog/next.md
dev:
git commit -m "docs(desktop): prepare release changelog"
This is critical for determining whether users need a full app update or can use the lightweight renderer hot update.
apps/desktop/layer/main/ since the last release tag:
git diff <last-tag>..HEAD --name-only -- apps/desktop/layer/main/
apps/desktop/package.json fields other than version/mainHash (since package.json is included in the hash calculation):
git diff <last-tag>..HEAD -- apps/desktop/package.json
Decision logic:
layer/main/ and no meaningful package.json changes (only version/mainHash/changelog-related), then mainHash should NOT be updated. Users will get a fast renderer-only hot update.layer/main/ (typo fixes, comment changes, logging tweaks) that don't affect runtime behavior, recommend NOT updating mainHash. Present the changes to the user and ask for confirmation.layer/main/ (new features, bug fixes, dependency changes, API changes), mainHash MUST be updated. Users will need a full app update.Present your analysis to the user with:
layer/main/apps/desktop/package.json for later comparison.git status --short
apps/desktop/ and run the bump:
cd apps/desktop && pnpm bump
release(desktop): release v{NEW_VERSION}release/desktop/{NEW_VERSION}mainIf Step 4 decided mainHash should NOT be updated, restore the old value now. The bump has already committed, pushed, and created the PR on a new release branch, so we amend the commit and force push. This is safe because the release branch was just created.
apps/desktop/):
cd ../..
release/desktop/{NEW_VERSION} branch (bump should have switched to it).apps/desktop/package.json.git add apps/desktop/package.json && git commit --amend --no-edit
git push --force origin release/desktop/{NEW_VERSION}
If Step 4 decided mainHash SHOULD be updated, skip this step entirely — the bump already wrote the correct new value.
apps/desktop/bump.config.tsapps/desktop/changelog/apps/desktop/changelog/next.template.mdapps/desktop/plugins/vite/generate-main-hash.tsapps/desktop/layer/main/src/updater/hot-updater.ts.github/workflows/build-desktop.yml.github/workflows/tag.yml