You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The release workflow opens the Cask bump as a PR to homebrew-tap, and the bump is verified by reading the tap
CI checks version coherence across package.json, tauri.conf.json, the native bundle, the update manifest and the tag
Uninstall, reinstall and zap observed with user repositories, worktrees and branches preserved
Closure rule
Close this issue by hand, with an evidence comment linking retained evidence tied to immutable source. Implementing PRs use Refs #N, never a closing keyword.
Rust verifier, a byte-for-byte port of scripts/update-manifest.mjs. Ed25519 verify_strict, canonical-JSON check, current/next key ids, expiry with 300 s skew, stable newer-version rule. Checked against 44 Node-signed cross-implementation vectors. App-scoped update-check.json (atomic, lenient per-field load, newer-schema files never rewritten, failed saves reported to the user). Checks every 24 h with backoff up to 7 days. Four commands restricted to the main webview
Notify-only banner in its own app row, so native web panes can't cover it. Cask installs show brew upgrade --cask psyche-build; DMG installs get a release link and the arch SHA-256. Skip / Dismiss, an accessible live title, focus return, and Escape that doesn't leak to the workspace
Still inert:release/update-manifest-keys.json has current: null, so the app makes no network request and the setting stays hidden. It activates once the owner provisions the key (see the previous comment), and a signed release then publishes a manifest.
Activity
fix(release): name the manifest that fails to read or parse
fix(updater): stop consulting a package registry the CLI is not publi…
fix(updater): stop consulting a package registry the CLI is not publi…
ci: fail every change whose release versions disagree
fix(release): name the manifest that fails to read or parse
ci: fail every change whose release versions disagree (#482)
docs(release): design record for the in-app update channel
docs(release): design record for the in-app update channel (#501)
18 remaining items
feat(desktop): notify-only update banner
fix(desktop): banner focus return, quieter live region, toggle resync
feat(desktop): notify-only update banner
fix(desktop): banner focus return, quieter live region, toggle resync
fix(desktop): keep the update banner clear of native webviews; consum…
fix(test): drop the Node-build-dependent small-order update vector
feat(desktop): notify-only update banner
fix(desktop): banner focus return, quieter live region, toggle resync
fix(desktop): keep the update banner clear of native webviews; consum…
feat(desktop): verify the signed update manifest; notify-only check s…
feat(desktop): notify-only update banner
fix(desktop): banner focus return, quieter live region, toggle resync
fix(desktop): keep the update banner clear of native webviews; consum…
feat(desktop): notify-only update banner (#477 3.2b, stacked on #529) (…
BunsDev commentedon Oct 3, 2026
Desktop verifier and update banner merged — 2026-10-03
acf7c904scripts/update-manifest.mjs. Ed25519verify_strict, canonical-JSON check, current/next key ids, expiry with 300 s skew, stable newer-version rule. Checked against 44 Node-signed cross-implementation vectors. App-scopedupdate-check.json(atomic, lenient per-field load, newer-schema files never rewritten, failed saves reported to the user). Checks every 24 h with backoff up to 7 days. Four commands restricted to the main webview1a128d4ebrew upgrade --cask psyche-build; DMG installs get a release link and the arch SHA-256. Skip / Dismiss, an accessible live title, focus return, and Escape that doesn't leak to the workspaceStill inert:
release/update-manifest-keys.jsonhascurrent: null, so the app makes no network request and the setting stays hidden. It activates once the owner provisions the key (see the previous comment), and a signed release then publishes a manifest.Along the way:
paneLifecycletest).Remaining on #477: