| name | desktop-release |
| description | Cut and publish ryOS Electron desktop releases on GitHub. Covers bumping package.json version, tagging v*, triggering Build Electron, and verifying the GitHub release. Use when the user asks to release the desktop app, bump the desktop version, trigger an Electron build, or publish macOS/Windows installers. |
Desktop Release (Electron)
ryOS desktop builds are Electron artifacts published by GitHub Actions. The desktop app version lives in package.json (version field). Do not confuse it with the web app version in scripts/generate-build-version.ts / public/version.json — those are separate.
Workflow
| Item | Location |
|---|
| CI workflow | .github/workflows/build-electron.yml |
| Builder config | electron-builder.yml |
| Build scripts | bun run electron:build:mac, bun run electron:build:windows |
| Output artifacts | release/ (DMG, ZIP, NSIS, latest-mac.yml, latest.yml) |
Triggers
-
Versioned release (preferred) — push a tag matching v* (e.g. v1.0.9)
- Builds macOS + Windows
- Publishes GitHub release ryOS v1.0.9 (tag = version)
- Sets release as latest
-
Manual / dev build — workflow_dispatch on main
- Republishes to the
desktop tag (overwrites assets)
- Use for unsigned test builds, not semver releases
Release checklist
- [ ] 1. Confirm main is clean and up to date
- [ ] 2. Bump package.json version (semver, e.g. 1.0.8 → 1.0.9)
- [ ] 3. Commit and push to main
- [ ] 4. Create and push tag v{version} (must match package.json)
- [ ] 5. Verify Build Electron workflow started
- [ ] 6. Confirm GitHub release assets when CI completes
Standard release commands
Replace 1.0.9 with the target version.
git add package.json
git commit -m "$(cat <<'EOF'
Bump desktop app version to 1.0.9.
EOF
)"
git push origin main
git tag v1.0.9
git push origin v1.0.9
Verify CI
gh run list --workflow=build-electron.yml --limit 3
gh run watch
When the run succeeds, check:
Expected assets:
- macOS:
ryOS_{version}_aarch64.dmg, .zip, .zip.blockmap, latest-mac.yml
- Windows:
ryOS_{version}_x64.exe, .exe.blockmap, latest.yml
Manual workflow dispatch (no new tag)
Only when the user explicitly wants a desktop channel rebuild, not a semver release:
gh workflow run build-electron.yml --ref main
This does not bump version. Artifacts land on the desktop release with overwrite.
Version rules
- Bump only
package.json version for desktop releases.
- Tag name must be
v + that version (1.0.9 → v1.0.9).
- Check existing tags before choosing a version:
git tag -l 'v1.0.*' and gh release list --limit 5.
- Do not re-tag an existing release unless the user explicitly requests a rebuild of that version (requires deleting/moving the old tag — ask first).
Git safety
- Never force-push
main or tags unless the user explicitly asks.
- Do not commit unrelated files with the version bump.
- Do not amend pushed commits.
Local builds (optional)
For local verification before tagging (requires signing secrets in .env.local for mac):
bun run electron:build:mac
bun run electron:build:windows
Local builds do not publish to GitHub. Production releases should go through the CI workflow.
CI secrets (reference)
macOS signed builds need GitHub Actions secrets documented in .github/workflows/build-electron.yml (APPLE_*, EVS_*). If CI fails on signing, inspect the workflow log — do not paste secret values.
When the user asks to "trigger a desktop build"
- Ask for the target version if not stated (suggest next patch bump from latest tag).
- Bump
package.json, commit, push, tag, push tag.
- Report the Actions run URL and expected release tag.