Files
Triple-C/TODO.md
Josh Knapp 3344ce1cbf
All checks were successful
Build App / build-macos (push) Successful in 2m22s
Build App / build-windows (push) Successful in 4m1s
Build App / build-linux (push) Successful in 5m6s
Sync Release to GitHub / sync-release (release) Successful in 1s
fix: prevent spurious container recreation on every start
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>
2026-03-03 14:22:25 -08:00

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).

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

  1. 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.key
    

    Set TAURI_SIGNING_PRIVATE_KEY and TAURI_SIGNING_PRIVATE_KEY_PASSWORD in CI.

  2. Add tauri-plugin-updater to Rust and JS dependencies.

  3. 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.

  4. Configure the updater in tauri.conf.json:

    "plugins": {
      "updater": {
        "endpoints": ["https://repo.anhonesthost.net/...update-endpoint..."],
        "pubkey": "<public key from step 1>"
      }
    }
    
  5. Add frontend UI for the update prompt (replace or enhance the existing update check flow).

  6. Update CI pipeline to:

    • Sign bundles with the Tauri key during build
    • Upload .sig files alongside installers
    • Generate/upload the update endpoint JSON

References