🤖 fix: surface update errors with phase-aware feedback#2358
🤖 fix: surface update errors with phase-aware feedback#2358ibetitsmike merged 11 commits intomainfrom
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c7b6b2194a
ℹ️ 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 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c455bdd779
ℹ️ 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".
Upgrade in-flight checking source to manual when a skipped manual request arrives, and map downloaded-state updater errors to install phase. Added regression tests for both cases in updater.test.ts.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c02478ef2e
ℹ️ 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 |
|
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". |
|
@codex review |
1 similar comment
|
@codex review |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. ℹ️ 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 |
|
Codex Review: Didn't find any major issues. Nice work! ℹ️ 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 |
|
Codex Review: Didn't find any major issues. 🚀 ℹ️ 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 user-facing feedback when update operations fail, plus a
DEBUG_UPDATER_FAILflag to test error states locally.Background
Follow-up to #2335 (moved update controls into About dialog). Several failure modes were identified:
downloadUpdate()/installUpdate()could throw without emitting anUpdateStatus.errorerrorstate — failures were invisible unless the About dialog was openidle, identical to background auto-checks — users couldn't tell if the check actually ranImplementation
Schema: phase-aware errors
UpdateStatusSchemaerror variant withphase: "check" | "download" | "install"so the UI can tailor messaging and retry CTAs.Backend: source-aware checks + error emission
update.checknow accepts{ source?: "auto" | "manual" }:idle(no spam){ type: "error", phase: "check" }so the user gets feedbackdownloadUpdate()andinstallUpdate()in try/catch to emit proper error statuses with the relevant phase instead of silently throwingphasefieldUI: discoverable errors
AlertTrianglebadge icon whenupdateStatus.type === "error"— failures are now visible even with the About dialog closedDEBUG_UPDATER_FAIL— dev-mode failure simulationNew env var to exercise error UI locally:
Only takes effect when
DEBUG_UPDATERis set with a fake version string. ExtendedparseDebugUpdater()to parse the fail phase and gated simulation in each fake path.Validation
make static-check— all checks passbun test src/desktop/updater.test.ts— 25 tests pass (includes new source/phase + fail simulation tests)bun test ./tests/ui/aboutDialog.integration.test.ts— 7 tests pass (includes 3 new error phase tests)Risks
Low. Changes are additive — the
phasefield is new, andsourceinput is optional (existing call sites passingundefinedremain valid).DEBUG_UPDATER_FAILis dev-only and gated behindDEBUG_UPDATER.Generated with
mux• Model:anthropic:claude-opus-4-6• Thinking:xhigh• Cost:$4.77