The CLAUDE_INSTRUCTIONS env var was computed differently during container creation (with port mapping docs + scheduler instructions appended) vs the recreation check (bare merge only). This caused container_needs_recreation() to always return true, triggering a full recreate on every stop/start cycle. Extract build_claude_instructions() helper used by both code paths so the expected value always matches what was set at creation time. Also add TODO.md noting planned tauri-plugin-updater integration for seamless in-app updates on all platforms. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.3 KiB
TODO / Future Improvements
In-App Auto-Update via tauri-plugin-updater
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).
Recommended approach: tauri-plugin-updater
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.
Requirements
-
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
References
- 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