Issue #28: Help ▸ Check for updates, with an opt-in check at start

PrintCraft asks GitHub for the latest release and, when it is newer, offers
its release page to download from. Nothing is downloaded or installed
automatically (installing in place needs signed release artifacts).

- ui-egui: updates module (version comparison, background check, dialog);
  no network code: the desktop app supplies the source, and without one
  (web build, tests) the command opens the releases page.
- desktop: one HTTPS request (ureq over rustls with the OS's trusted roots,
  10 s timeout, 1 MiB cap). Only a page under the releases list is offered.
  No bundled root list: webpki-roots/webpki-root-certs are CDLA-licensed.
- The check at start is opt-in and silent unless there is a newer version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Brandon Thomas
2026-10-05 01:40:27 -04:00
co-authored by Claude Opus 5.5
parent 27f7ef96fe
commit 85a8652de1
11 changed files with 574 additions and 4 deletions
+12
View File
@@ -1685,6 +1685,18 @@ tools = []
evidence = ["crates/ui-egui/tests/commands.rs::every_registered_command_is_implemented"]
notes = ""
[[feature]]
id = "view.check-for-updates"
title = "Help ▸ Check for updates (and an optional check at start)"
area = "B"
tier = "P2"
milestone = "M3"
status = "partial"
commands = ["help.check_updates"]
tools = []
evidence = ["crates/ui-egui/tests/updates.rs::a_newer_release_is_offered_for_download", "crates/ui-egui/tests/updates.rs::the_check_at_start_is_opt_in_and_quiet_unless_there_is_news", "apps/printcraft/src/updates.rs::answers_are_read_and_only_our_release_pages_are_offered"]
notes = "asks GitHub Releases and offers the release page; the check at start is opt-in. Missing: installing the update in place (needs signed release artifacts)"
[[feature]]
id = "view.single-key-accelerators"
title = "Single-key tool accelerators"