🤖 feat: add stable/nightly Electron update channels#2430
Conversation
78b1466 to
1db6499
Compare
1db6499 to
15a6196
Compare
When the version string includes a prerelease suffix like '-nightly.N', set build.publish.channel in package.json so electron-builder generates channel-specific manifests (e.g. nightly.yml, nightly-mac.yml) instead of the default latest.yml. This is required for electron-updater to resolve the correct manifest when autoUpdater.channel is set to 'nightly'.
Remove custom border/rounded-none overrides that clashed with the component's built-in segmented control appearance. Use the standard size='sm' variant which matches other ToggleGroup consumers (e.g. SecretsModal, SecretsSection).
|
@codex review |
|
Codex Review: Didn't find any major issues. Hooray! ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback". |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2c7bca4f4e
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@codex review Addressed P2 feedback: replaced hardcoded |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9dcb939a7c
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
9dcb939 to
f0cb920
Compare
|
@codex review Fixed the regex in |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f0cb920f24
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@codex review Fixed: all three action handlers now use |
|
Codex Review: Didn't find any major issues. You're on a roll. ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback". |
Summary
Adds a user-selectable update channel (Stable / Nightly) to the Mux Electron app. Users can switch channels from the About dialog; the choice is persisted in
~/.mux/config.jsonand takes effect immediately at runtime.Background
The Electron app currently updates only from official GitHub Releases ("Stable"). This PR adds support for a "Nightly" channel that pulls pre-release builds published from
main. This gives users who want bleeding-edge features an opt-in path without disrupting the default stable experience.Implementation
Config layer (
src/node/config.ts)UpdateChanneltype ("stable" | "nightly") withparseUpdateChannel()validation.Desktop updater (
src/desktop/updater.ts)applyChannel()configuresautoUpdater:allowPrerelease,channel, feed URLreleaseType.setChannel()method with state guards (blocks switching during download/install).oRPC surface (
src/common/orpc/schemas/api.ts,src/node/orpc/router.ts)update.getChannel/update.setChannelendpoints with Zod-validatedUpdateChannelSchema.Frontend (
src/browser/components/About/AboutDialog.tsx)ToggleGroupsegmented control (size="sm", matching other consumers).channelRequestTokenRefcounter.nulluntil fetched, preventing layout flicker.pendingActionstate gives immediate click feedback (spinner + disabled) for Check, Download, and Install buttons while waiting for the backend status stream to catch up.Button press feedback (
src/browser/components/ui/button.tsx)active:scale-[0.98]press animation andtransition-allso all buttons give tactile click feedback.CI: manifest naming (
scripts/set-package-version.js)-nightly.N) and setsbuild.publish.channelinpackage.jsonso electron-builder generates channel-specific manifests (nightly.yml,nightly-mac.yml) instead oflatest.yml.Validation
make static-check: typecheck, lint, fmt, broken links).src/desktop/updater.test.ts) covers channel switching, state guards, and transient error handling.Risks
nightly-mac.ymlmanifest. Previously, the build producedlatest-mac.ymlwhich caused signature validation failures when the client expectednightly-mac.yml.Generated with
mux• Model:anthropic:claude-opus-4-6• Thinking:xhigh• Cost:$26.04