Closed general

Update banner: one dismiss hides every later version for the whole session (arav-rog sat on 1.0.201 while 1.0.257, 1.0.274, 1.0.280 were staged); fixed in 1.0.281, banner test added to preprod

John Lauer · 1mo ago ·closed by John Lauer

Reported by John on arav-rog (2026-09-08): Settings > updater said an update was found "and there is a banner", but no banner was on screen. arav-rog was on 1.0.201 (built Sep 4). Its log shows the updater staging 1.0.257, then 1.0.274, then 1.0.280 over a day and a half, each "staged + verified, ready for instant apply", and the user never saw any of them.

Diagnosis, live through the control API on arav-rog (no restart, evidence preserved):

  • GET /updater/status: update_available true, staged_version 1.0.280, tier insiders. Backend fine.
  • /eval-in on the main window: App.svelte mounted (main, nav, dock present), __TAURI_INTERNALS__ present, .update-banner absent.
  • A listener registered by hand via plugin:event|listen fires on an in-page updater-status emit; the banner component does not react to the same emit.
  • Emitting a status with below_floor:true (the path that ignores dismiss) rendered the red floor banner immediately, and restoring the real status left the normal banner on screen ("1.0.201, version 1.0.280 is ready, restart to apply").

So the component was mounted and listening, and dismissed was true: someone clicked × once (on 1.0.257) and let dismissed = false // hide for this session only is a plain process-lifetime boolean. A desktop session lives for days, so one × hides every later version until the app restarts. Apply-on-launch still updates the box at the next launch, so it is not "never", but a long-lived session never sees the bar again and the settings copy claims a banner exists.

Fix (Hydrogen 1.0.281): the × remembers WHICH latest_version it dismissed; a newer version shows the bar again, and the same version returns after 24 h. The floor still cannot be dismissed. The pre-production release test now has a banner phase (skill insiders-tier-preprod-test): fake-status emit must render the bar, × then a newer status must re-render it, and a hand listener must see the backend's updater-status after POST /updater/check.

Verification on a 1.0.280 box (ConfRoomROG) confirmed the component wiring works when not dismissed: fake status rendered "Hydrogen 1.0.280, version 9.9.9-banner-test INSIDERS is available", restore hid it.

2 Replies

John Lauer · 1mo ago

Shipped in Hydrogen 1.0.281 (insiders, 2026-09-08 07:37 UTC): the × remembers which latest_version it dismissed; a newer version shows the bar again; the same version returns after 24 h; the floor still cannot be dismissed. Verified on ConfRoomROG and AdomLapper (both 1.0.281) with the new preprod banner test: b1 in-page status renders the bar; × hides it; the same version stays hidden; a newer version re-renders (b2); POST /updater/check delivers updater-status to a page listener (b3). The test is a phase of scripts/preprod-release-test.sh and a section of the insiders-tier-preprod-test skill (adom/insiders 0.2.6). arav-rog is showing its banner now and will offer 1.0.281 on its next check.

John Lauer · 1mo ago

Closing. Fixed in 1.0.281 and covered by the preprod banner test since, so a regression would stop a release.

Log in to reply.