Generic provider needs a stable base URL to fetch latest.yml. Gitea 1.24.7
does not expose /releases/latest/download/ as a shortcut, so we use a manual
rolling-release scheme: each version is published twice — once under its
semver tag (vX.Y.Z) for archival, and once re-uploaded into a release
permanently tagged 'latest'. The URL below points at the rolling one.
Release procedure (per version):
1. npm version patch
2. npm run package:win
3. Upload release/*.exe, *.exe.blockmap, latest.yml as assets to vX.Y.Z
4. Re-upload the same 3 files into release 'latest' (delete previous assets first)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the custom server-poll updater (which depended on a placeholder
serverUrl 'https://your-server.com/api' and never fired in practice) with
electron-updater. Now a banner appears automatically when a new release is
published — auto-download in background, in-place install via quitAndInstall,
delta updates via blockmap.
Changes:
- Add electron-updater dep, build.publish (provider: generic, placeholder URL)
- Rewrite UpdaterManager around autoUpdater events (available/progress/
downloaded/error), forwarded to renderer via window.webContents.send
- Drop hardcoded APP_VERSION constant; main uses app.getVersion(), renderer
fetches via new GET_APP_VERSION IPC channel
- IPC: drop DOWNLOAD_UPDATE (autoDownload handles it), add INSTALL_UPDATE
+ GET_APP_VERSION
- VersionInfo reshaped (currentVersion field, no downloadUrl/mandatory);
add UpdateProgress and UpdateCheckResult types
- UpdateNotification: 3-phase UI (downloading with progress bar,
ready with restart-and-install, hidden); App.tsx tracks phase state
TODO before first real release:
- Replace build.publish.url placeholder with the actual generic host
- Bump version, run package:win, upload latest.yml + .exe + .blockmap to host
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>