feat: add auto-update checker via GitHub Releases API#10
Merged
Conversation
add1c74 to
3a113b4
Compare
Lightweight update checker (no Sparkle) that queries GitHub Releases API and compares semver versions. Includes UpdateProviding protocol for testability, GitHubReleaseProvider, and deduplication via checkTask pattern (like WhisperKitEngine.loadingTask).
New checkForUpdates (default true) and includePreReleases (default false) properties with UserDefaults persistence.
New "Updates" section with check toggle, pre-release toggle, Check Now button with spinner, status display (error/update/up-to-date), and download button. Follows OpenAI connection test pattern.
Shows "Update Available: vX.Y.Z" menu item before Settings when an update is detected. Clicking opens the DMG URL or release page.
Add @State updateChecker, pass to MenuBarView and SettingsView, start periodic checks (30s delay, then every 24h) via .task modifier.
3a113b4 to
716fc52
Compare
Small upward arrow in bottom-right of waveform icon when an update is detected and the app is idle. Complements the existing "Update Available" entry in the dropdown menu.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
UpdateProvidingprotocol withGitHubReleaseProvider— mock-injectable for testscheckTask, periodic checks (30s delay → every 24h)Test plan
swift buildsucceedsswift test— all 459 tests pass (27 new tests for UpdateChecker, AppSettings, SettingsView, MenuBarView)