Skip to content

feat(desktop): Tauri auto-updater wired to GitHub Releases#62

Merged
oratis merged 1 commit into
mainfrom
feat/tauri-updater-github
May 28, 2026
Merged

feat(desktop): Tauri auto-updater wired to GitHub Releases#62
oratis merged 1 commit into
mainfrom
feat/tauri-updater-github

Conversation

@oratis

@oratis oratis commented May 28, 2026

Copy link
Copy Markdown
Owner

On launch: silent poll → if newer release exists, background download + ed25519 verify → UpdateBanner. Relaunch button calls tauri-plugin-process.relaunch(). Pubkey embedded in tauri.conf.json (private key at ~/.tauri/deepcode-updater.key — must be backed up). Closes M9 auto-update item.

When DeepCode.app launches:
  1. Background poll of https://github.com/oratis/deepcode/releases/latest/download/latest.json
  2. If a newer version exists → download in background, signature-verify with ed25519 pubkey
  3. Fire `update-downloaded` event → renderer shows UpdateBanner
  4. User clicks "Relaunch now" → tauri-plugin-process relaunch() → new version starts

  · apps/desktop/src/lib/updater.ts (NEW) — startUpdaterPolling /
    onUpdateDownloaded / relaunchNow. Silent on offline / 404 (early
    ship phase has no releases yet).
  · apps/desktop/src/App.tsx — calls startUpdaterPolling on mount,
    subscribes both shim + real updater.
  · apps/desktop/src/components/UpdateBanner.tsx — "Relaunch now" now
    actually calls relaunchNow(). Shows "Relaunching…" state.
  · apps/desktop/src-tauri/tauri.conf.json — updater.active=true,
    endpoint, pubkey (ed25519 generated via `tauri signer generate`).
    Private key at ~/.tauri/deepcode-updater.key (gitignored — must be
    backed up by maintainer).
  · apps/desktop/src-tauri/Cargo.toml — added tauri-plugin-process.
  · apps/desktop/src-tauri/src/lib.rs — registers plugin-process.
  · apps/desktop/src-tauri/capabilities/default.json — added process
    permissions.
  · apps/desktop/package.json — added @tauri-apps/plugin-process.

When the maintainer cuts a release (git tag v0.X.Y), they need to:
  1. Run sign-and-notarize.sh — produces signed .app + .dmg
  2. Sign update artifacts with the private key via `tauri signer sign`
  3. Generate latest.json pointing to the signed .tar.gz/.zip
  4. Upload to GitHub Releases v0.X.Y
The auto-update flow then kicks in for every installed client.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@oratis oratis merged commit a2ff7ca into main May 28, 2026
@oratis oratis deleted the feat/tauri-updater-github branch May 28, 2026 10:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant