- Install @tauri-apps/plugin-updater + plugin-process (npm + cargo) - Configure tauri.conf.json: updater endpoint pointing to GitHub Releases, signing pubkey, createUpdaterArtifacts enabled - Register updater + process plugins in Rust (desktop-only, #[cfg(desktop)]) - Add updater:default + process:default capabilities - Add useUpdater hook: checks for updates 3s after startup, shows native confirm dialog, downloads+installs+relaunches on accept - Silently catches errors so update failures never block the app - Add comprehensive tests for the useUpdater hook (5 test cases) Product decision: Using window.confirm() for the update dialog rather than a custom React modal. This keeps the implementation simple and the native dialog is appropriate for a system-level action like app restart. Can be upgraded to a custom UI later if desired. Private key generated at ~/.tauri/laputa.key — NOT committed. For CI: set TAURI_SIGNING_PRIVATE_KEY + TAURI_SIGNING_PRIVATE_KEY_PASSWORD as GitHub Secrets. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.3 KiB
1.3 KiB