fix(updater): clear snoozes when a new version becomes available#149
Merged
quiet-node merged 1 commit intomainfrom May 7, 2026
Merged
fix(updater): clear snoozes when a new version becomes available#149quiet-node merged 1 commit intomainfrom
quiet-node merged 1 commit intomainfrom
Conversation
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A "Later" click against v0.8.2 should not silently suppress the update banner once v0.8.3 ships. Previously, snooze deadlines persisted across versions: a user who clicked Later at v0.8.2 would not see the v0.8.3 banner in Settings or chat for up to 24 hours after v0.8.3 was actually available.
Why this was a real bug
The original spec called this out explicitly:
The "new version always clears" half wasn't implemented. The two snooze flags lived on a wall-clock deadline alone, with no awareness of which version they were originally set against.
Implementation
last_seen_update_version: Option<String>records the version the manifest last surfaced. Survives across launches via the existing JSON sidecar in the app config dir. Marked#[serde(default)]so older sidecars still load cleanly.UpdaterState::set_updatecompares the incoming available version againstlast_seen_update_version. When they differ and the new value isSome, both snooze deadlines are cleared in-memory and the cached version is rolled forward.lib.rsstartup restoreslast_seen_update_versionfrom the sidecar before the first poll so the comparison correctly distinguishes "same version, snooze still applies" from "new version, snooze invalidated."poller::check_oncepersists the sidecar after a successful version detection so cleared snoozes survive an app restart.commands::persist_sidecaris nowpubto allow this cross-module call.Test plan
bun run test:all:coverageclean (100% line and function coverage maintained)bun run validate-buildcleanset_update(None)(no update available) → snoozes untouched