--- 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 1. **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 2. **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. ```bash # 1. Bump version in package.json, then: 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 ```bash gh run list --workflow=build-electron.yml --limit 3 gh run watch # optional: pass run ID from list output ``` When the run succeeds, check: - https://github.com/ryokun6/ryos/releases/tag/v1.0.9 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: ```bash 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): ```bash bun run electron:build:mac # signed + notarized when Apple env is set 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" 1. Ask for the target version if not stated (suggest next patch bump from latest tag). 2. Bump `package.json`, commit, push, tag, push tag. 3. Report the Actions run URL and expected release tag.