Skip to content

fix(updater): timestamp on errors and footer in chat mode#147

Merged
quiet-node merged 5 commits intomainfrom
fix/updater-timestamp-on-error
May 7, 2026
Merged

fix(updater): timestamp on errors and footer in chat mode#147
quiet-node merged 5 commits intomainfrom
fix/updater-timestamp-on-error

Conversation

@quiet-node
Copy link
Copy Markdown
Owner

Summary

Two related bugs in the auto-updater surface:

  1. "Last checked: Never" persists across failed checks. When the manifest fetch errors (network issue, 4xx/5xx, GitHub latest/download/ URL temporarily 404'ing during a publish window), the poller logs the error but does not record that an attempt was made. The user sees "Never" forever even after multiple checks. Fix: record a timestamp on every check, even when it fails.

  2. Chat-footer update indicator never renders in chat mode. The UpdateFooterBar was placed inside an existing {!isChatMode && ...} gate alongside the TipBar, accidentally inheriting the same scope restriction. Per design, the update strip should be visible in both ask-bar and chat modes (an update is signal worth showing mid-conversation; a tip is not). Fix: hoist the update branch above the mode gate so it always renders when an update is available; tips remain ask-bar only.

Changes

Backend (src-tauri/src/updater/)

  • New UpdaterState::mark_check_attempted() updates last_check_at without touching the cached update. Preserves any previously known available version so a flaky network does not erase real signal.
  • poller::check_once calls mark_check_attempted on both error paths (updater builder failure, manifest check failure).
  • Two new state tests: timestamp updates without touching update on a clean state; existing update is preserved across failed attempts while the timestamp moves forward.

Frontend (src/App.tsx)

  • Footer slot restructured: when showUpdate is true, render UpdateFooterBar regardless of mode; otherwise fall back to the existing ask-bar-only TipBar branch.
  • New regression test: keeps the UpdateFooterBar visible after entering chat mode mounts the App, simulates entering chat mode, and asserts the update bar still renders. This pins down the bug we just fixed so it cannot regress.

Test plan

  • bun run test:all:coverage clean (1233 frontend + 755 Rust tests, 100% line and function coverage)
  • bun run validate-build clean (no signing key required locally)
  • Manual: Last checked X seconds ago shows after a failed check, not Never
  • Manual: with v0.8.1 detected, the in-chat update strip renders next to the input area in both compact bar and active conversation modes
  • Manual: previously known update info survives a failed retry (e.g. transient network drop right after the manifest was successfully fetched)

quiet-node added 5 commits May 7, 2026 13:03
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
…iant

Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
@quiet-node quiet-node merged commit 92a2e15 into main May 7, 2026
3 checks passed
@quiet-node quiet-node deleted the fix/updater-timestamp-on-error branch May 7, 2026 19:03
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