Repository navigation
Update notice: show it on an open board when the check lands, re-check daily (T326) - #266
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
…e-show-it-on-an # Conflicts: # CHANGELOG.md
…e-show-it-on-an # Conflicts: # CHANGELOG.md
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.
T326. A board learned of a new release silently: the background check only wrote
update.json, and the notice was read once at open. A board left open for days never checked again.What changed
update::UpdateCheckreplacesstartup(). It reads the cached notice at open and starts at most one background check when the cache is 24 h old. The fetch thread writes the cache and flags the landing (aDropguard, so a panic also lands).BoardModel::poll_update_checkruns inboard_frame's settle step beside the other background polls. It shows a landed result and re-plans oncedue_at(last check + 24 h) passes. Single flight: in-processin_flightflag plus the existingmark_check_startedstamp across processes. No blocking I/O on the UI thread; the cache is read only when due or landed.set_update_noticealso writes the right seat, so wide split stays in sync.startup()sat outside thefull_board_opengate inload_board_inner). It is gated now;quick_capture_and_the_cli_never_checkfails without the gate.TSK_NO_UPDATE_CHECK, silent failures,releases/latest, status message wins the slot.storage.mdUpdate check; CHANGELOG Unreleased → Fixed.Tests (each fails with its fix hunk reverted by hand)
a_finished_background_check_reaches_an_open_board_without_a_restartpoll_update_check()fromboard_framean_open_board_checks_again_once_a_day_with_one_check_in_flightin_flightguard; or never re-planopt_out_suppresses_the_open_board_check_and_its_noticeopt_out()check inpollquick_capture_and_the_cli_never_checkfull_board_openan_update_notice_that_lands_with_a_preview_open_reaches_the_right_seat(lib)Live proof (Herdr, isolated state)
TSK_STATE_DIR=<scratch>only (the brief'sTSK_CONFIG_DIRdoes not exist insrc/; config lives in the state dir).update.jsonseeded{"last_check_unix":1,"latest":"v0.13.0"}.TSK_UPDATE_CURL= stub that sleeps 8 s then prints{"tag_name":"v99.0.0"}. Release build of this branch.At open:
About 8 s later, same process (pid 68592, elapsed 00:09, no restart):
Not driven live: the 24 h re-check (covered by the time-injected test) and wide split (unit test only).
Checks
cargo fmt --check && cargo clippy --all-targets -- -D warnings && cargo testgreen;cargo clippy --all-targets --target x86_64-pc-windows-gnu -- -D warningsgreen.