directlx-claude-config/plans/temporal-juggling-salamande...

3.0 KiB

Plan: Browser Update Check on Startup

Overview

Add a startup version check that queries the release server for the latest browser version. If a newer version exists, show a dialog offering to download it (same UX as agent download). Also add browser routes to the release server (separate Gitea repo).

Part 1: Release Server — Add Browser Routes

New file: hiveops-release/src/routes/browser.js

Mirror routes/agent.js but for a separate browser Gitea repo:

  • Env var: GITEA_BROWSER_REPO (default: hiveops-browser), reuses existing GITEA_URL, GITEA_TOKEN, GITEA_OWNER
  • Asset mapping: windows.exe, linux.AppImage
  • Endpoints:
    • GET /browser/latest — returns { version, name, published, platforms }
    • GET /browser/download?platform={windows|linux}&version={optional} — streams binary
    • GET /browser/versions — lists all versions
  • Own release cache (separate from agent)

Modify: hiveops-release/src/index.js

  • Import and mount browserRoutes alongside agentRoutes

Part 2: Browser — API Client Methods

Modify: hiveops-browser/src/main/api-client.js

Add three methods:

  • checkForBrowserUpdate()GET ${releaseUrl}/browser/latest, compare version to app.getVersion(), return { updateAvailable, latestVersion, currentVersion }
  • downloadBrowser(platform, savePath, onProgress, abortSignal) — same pattern as downloadAgent but hits /browser/download
  • getBrowserFilename(platform) — HEAD to /browser/download for Content-Disposition filename

Part 3: Browser — Startup Check + Download Flow

Modify: hiveops-browser/src/main/main.js

In checkServicesAndStart(), after main window is created (~line 197):

  1. Call apiClient.checkForBrowserUpdate() (non-blocking, won't delay startup)
  2. If update available, show dialog: "New version v{latest} available. You are running v{current}. Download?"
    • Buttons: Download / Later
  3. On "Download":
    • Auto-detect platform via os.platform() (no picker needed)
    • Get server filename via getBrowserFilename()
    • Show save dialog → download with progress window (reuse existing openDownloadProgress)
  4. On "Later": dismiss silently
  5. Entire check wrapped in try/catch — failures logged, never block the app

Files Changed

File Action
hiveops-release/src/routes/browser.js New
hiveops-release/src/index.js Modify — mount browser routes
hiveops-browser/src/main/api-client.js Modify — 3 new methods
hiveops-browser/src/main/main.js Modify — update check + download flow

Verification

  1. GET /browser/latest returns version info from release server
  2. Browser logs show update check on startup
  3. If newer version exists, update dialog appears after main window loads
  4. "Download" → save dialog with server filename → progress → completion
  5. "Later" → dismissed, app continues
  6. Release server unreachable → app starts normally, error logged silently