Description
Extend the existing update notification (which checks GitHub Releases) into a full auto-updater that can download and install updates without the user leaving the app.
Current State
The update checker exists (74d22b32a) and shows a dialog when a new version is available with a link to the release page. It does not download or install updates.
Acceptance Criteria
Implementation Guide
1. Download
- Extend
UpdateChecker to download the release asset (AppImage/ZIP/DMG) from the GitHub Releases API
- Download to a temp directory with progress reporting
- Verify checksum if available in the release notes
2. Platform-specific installation
- Linux AppImage: Replace the current AppImage file, re-launch
- Windows: Download the installer/ZIP, launch installer, quit current instance
- macOS: Download DMG, mount, replace .app bundle (or use Sparkle framework)
3. Rollback
- Before replacing, backup the current binary
- If the new version fails to launch, restore the backup
- Store backup path in settings for cleanup on next successful launch
4. UI
- Extend the existing update dialog with "Download & Install" button
- Show download progress bar
- Add "Check for Updates" in Help menu (already exists — add download action)
Key files
App/Core/UpdateChecker.h/.cpp — existing update check logic
App/UI/MainWindow.cpp — update dialog
App/Core/Settings.h/.cpp — auto-update preference
Description
Extend the existing update notification (which checks GitHub Releases) into a full auto-updater that can download and install updates without the user leaving the app.
Current State
The update checker exists (74d22b32a) and shows a dialog when a new version is available with a link to the release page. It does not download or install updates.
Acceptance Criteria
Implementation Guide
1. Download
UpdateCheckerto download the release asset (AppImage/ZIP/DMG) from the GitHub Releases API2. Platform-specific installation
3. Rollback
4. UI
Key files
App/Core/UpdateChecker.h/.cpp— existing update check logicApp/UI/MainWindow.cpp— update dialogApp/Core/Settings.h/.cpp— auto-update preference