Skip to content

Update-check failure (offline / unreachable manifest) shows as a red error banner on every step #657

Description

@fkb032

@farhankhalaf said:

fyi haven't seen this error before

CleanShot 2026-08-12 at 20.14.24@2x.png


What the screenshot shows (decoded 2026-08-27)

Banner text: "Update check failed: [updater] check failed: error sending request for url (https://releases.nixm…" — the Tauri updater couldn't reach releases.nixmac.com (DNS/offline/transient), and the app rendered that as a full-width red error banner at the top of the step area. The banner is mounted globally in widget.tsx ~L288, between the Stepper and the step content, so it shows on every step — the screenshot just happened to be on Describe. Nothing in the app was actually broken.

Where

  • hooks/use-updater.ts ~L81: the check error is console.error'd and stored as banner error state (errorSource: "check").
  • components/widget/layout/update-banner.tsx ~L62-68 renders Update check failed: {error} in the same red banner used for install failures.
  • The check runs once per launch from the mount effect (use-updater.ts ~L159-191, guarded by checkedRef); it is skipped when a developer version pin is active, in dev builds (Rust stub at commands/updater.rs ~L99-103 — so this can't be reproduced under devenv up), and with NIXMAC_DISABLE_UPDATER=1. Changing the update channel does not re-check until the next launch. So every release-build user who launches offline sees this.

Acceptance criteria

  • [Decision] The automatic launch-time update check failing (network error, non-2xx, malformed manifest) does not show the red banner. It is console.warn'd with the underlying error and emits a new update_check_failed telemetry event — add the variant to the TelemetryEvent union in lib/telemetry/types.ts ~L68-70; props = a short reason code, not the raw string (it contains the manifest URL). Remove the now-dead errorSource: "check" branch (use-updater.ts ~L23, update-banner.tsx ~L67). There is no manual check trigger today, so silent-on-failure is safe; if one is added later it must surface the failure inline.
  • A failed update install keeps the current banner behavior (errorSource: "install").
  • Follow-up (separate ticket, not in this estimate): a user-visible "Couldn't check for updates" line + manual Check again action. There is no Updates settings tab today (update UI lives only in Developer → Update channel, dev-mode-gated), no manual check trigger, and updater state is per-hook-instance — so this needs a shared store + new UI.
  • Unit test on the hook (renderHook + vi.mock, as in use-rollback.test.ts): check rejection → no banner error state; install rejection → banner error state. Run with import.meta.env.DEV stubbed false (vi.stubEnv) — the hook's dev-mode guards at ~L66 / ~L110 otherwise swallow both errors and the test proves nothing.

~1–2h for the required ACs (frontend only; use-updater.ts / update-banner.tsx are Cooper's). Verify only in a release build — dev stubs the updater. Not a bug in the updater itself; releases.nixmac.com resolves today.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions