Skip to content

feat: beta release channel - #90

Closed
frenchie4111 wants to merge 2 commits into
mainfrom
feat-beta-release-channel
Closed

feat: beta release channel#90
frenchie4111 wants to merge 2 commits into
mainfrom
feat-beta-release-channel

Conversation

@frenchie4111

Copy link
Copy Markdown
Collaborator

Summary

  • Add a releaseChannel setting (stable / beta) wired through the settings slice, persistence, IPC, and a new dropdown in Settings → Updates.
  • setupAutoUpdater reads the value once at boot and sets autoUpdater.channel + allowPrerelease accordingly. Beta users pull beta.yml and get pre-releases plus any newer stable; stable users never see betas.
  • npm run release 1.2.3-beta.1 cuts a beta build: electron-builder publishes to beta.yml (mac + linux), the GitHub release is marked --prerelease, and README + site/public/releases.html updates are skipped so the marketing surface keeps pointing at the last stable. Same script promotes by running with a plain X.Y.Z version.
  • Linux build workflow detects the channel from the tag and passes --config.publish.channel=beta through to electron-builder when needed.
  • Added a --dry-run flag to scripts/release.sh that surfaces the routing decisions without touching the working tree, gh, or the network.

Test plan

  • npm run typecheck
  • npx electron-vite build
  • npx vitest run src/shared (settings reducer + 593 other shared tests pass)
  • bash scripts/release.sh 1.2.3-beta.1 --dry-run — reports channel=beta, beta-mac.yml, README/releases.html skipped, --prerelease
  • bash scripts/release.sh 1.2.3 --dry-run — reports channel=latest, latest-mac.yml, README/releases.html applied, no prerelease flag
  • bash scripts/release.sh 1.2.3-beta --dry-run — rejected (missing .N)
  • bash scripts/release.sh 1.2.3-alpha.1 --dry-run — rejected (unknown prerelease shape)
  • In dev: open Settings → Updates → Release channel, flip Stable ↔ Beta, confirm value persists in <userData>/config.json
  • On a real beta tag push, confirm beta-mac.yml + beta-linux.yml land on the GitHub release and the release is marked pre-release

Known limitation

First-install users can't pick beta from a fresh download — they install a stable build first, then toggle in Settings. Documented in CLAUDE.md. A dedicated beta install URL can be added later if needed.

🤖 Generated with Claude Code

frenchie4111 and others added 2 commits May 25, 2026 15:01
Add `releaseChannel: 'stable' | 'beta'` to the settings slice and surface
it in Settings → Updates as a dropdown. `setupAutoUpdater` reads the
value once at boot and sets `autoUpdater.channel` + `allowPrerelease`
accordingly — beta users get pre-release builds plus any newer stable,
stable users never see betas. Channel changes require a restart, noted
in the UI.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
`npm run release 1.2.3-beta.1` cuts a beta build. The version regex
routes everything: electron-builder gets `--config.publish.channel=beta`
(emits `beta-mac.yml` / `beta-linux.yml`), `gh release create` gets
`--prerelease`, README + releases.html updates are skipped so the
marketing surface stays pointed at the last stable. Promotion to
stable happens by running the same command with a plain `X.Y.Z`
version — semver puts `1.2.3` above `1.2.3-beta.N` so all users
update.

Also adds a `--dry-run` flag that surfaces the routing decisions
without touching the working tree, gh, or the network.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant