Priority: High Status: Planned
Currently the app detects available updates via the Gitea API (check_for_updates command) but cannot apply them. Users must manually download and install the new version. On macOS and Linux this is a poor experience compared to Windows (where NSIS handles upgrades cleanly).
Full in-app auto-update: detects, downloads, verifies, and applies updates seamlessly on all platforms. The user clicks "Update" and the app restarts with the new version.
-
Generate a Tauri update signing key pair (this is Tauri's own Ed25519 key, not OS code signing):
npx @tauri-apps/cli signer generate -w ~/.tauri/triple-c.keySet
TAURI_SIGNING_PRIVATE_KEYandTAURI_SIGNING_PRIVATE_KEY_PASSWORDin CI. -
Add
tauri-plugin-updaterto Rust and JS dependencies. -
Create an update endpoint that returns Tauri's expected JSON format:
{ "version": "v0.1.100", "notes": "Changelog here", "pub_date": "2026-03-01T00:00:00Z", "platforms": { "darwin-x86_64": { "signature": "...", "url": "https://..." }, "darwin-aarch64": { "signature": "...", "url": "https://..." }, "linux-x86_64": { "signature": "...", "url": "https://..." }, "windows-x86_64": { "signature": "...", "url": "https://..." } } }This could be a static JSON file uploaded alongside release assets, or a small API that reads from Gitea releases and reformats.
-
Configure the updater in
tauri.conf.json:"plugins": { "updater": { "endpoints": ["https://repo.anhonesthost.net/...update-endpoint..."], "pubkey": "<public key from step 1>" } }
-
Add frontend UI for the update prompt (replace or enhance the existing update check flow).
-
Update CI pipeline to:
- Sign bundles with the Tauri key during build
- Upload
.sigfiles alongside installers - Generate/upload the update endpoint JSON
- https://v2.tauri.app/plugin/updater/
- Existing update check code:
app/src-tauri/src/commands/update_commands.rs - Existing models:
app/src-tauri/src/models/update_info.rs