Subset of tauri_plugin_updater::Update that the result-mapping
logic actually consumes. Extracted so the mapping can be unit-tested
without a live Tauri runtime.
Signed manifest for the beta line, published to a rolling
channel-beta release. It cannot use releases/latest: beta releases
are marked prerelease (so they never hijack the stable pointer), and
releases/latest skips prereleases — pointing the beta channel there
would resolve to the stable manifest, which is how #238 broke the
update check when every release was a prerelease.
Pure mapping from “running version + optional plugin result” to the
renderer-facing UpdateInfo. Hardcoded v prefix on the release
URL matches the release tagging convention (v0.0.1, v0.1.0, …)
documented in CONTRIBUTING.md. Untag-prefixed releases would break
the deep-link — change here and in the workflow together if the
convention ever shifts.
Opt-in startup auto-check (the auto_check_updates setting). Checks the
updater endpoint once in the background and posts a non-intrusive desktop
notification if a newer build is available. Silent on no-update and on any
error — being offline must never nag — and never blocks startup. Split on
cfg(test) (mirrors overlay::spawn_render_watchdog) so the test/coverage
build neither spawns a task nor fires a real OS notification; the decision
logic lives in the pure, tested update_notification.
Title + body for the “update available” desktop notification, or None
when there’s nothing to announce (already on the latest build). Pure so the
copy and the no-update guard are unit-tested without a live updater or the
notification plugin.