Skip to content

feat: make automatic update checks optional - #221

Closed
lzhgus wants to merge 1 commit into
mainfrom
feat/optional-update-check
Closed

feat: make automatic update checks optional#221
lzhgus wants to merge 1 commit into
mainfrom
feat/optional-update-check

Conversation

@lzhgus

@lzhgus lzhgus commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Summary

Adds an "Automatically Check for Updates" toggle in Settings → General → Updates, so users can disable Sparkle's scheduled daily update checks (SUEnableAutomaticChecks was previously hardcoded to true in Info.plist with no way to opt out).

  • New toggle binds to SPUUpdater.automaticallyChecksForUpdates (Sparkle persists it to UserDefaults; Info.plist default stays true, so behavior is unchanged for existing users)
  • "Automatically Install Updates" is greyed out when automatic checks are off, since background downloads only trigger after scheduled checks
  • Manual "Check for Updates" button remains fully functional when automatic checks are disabled
  • Updated the manual-check row sublabel ("Automatically checks daily" → "Manually check for a new version") to avoid implying checks are always on

Closes #219

Test plan

  • xcodebuild -scheme Capso -configuration Debug build succeeds
  • Toggle off → relaunch → verify no scheduled check fires and manual check still works
  • Toggle state persists across launches

Note

Low Risk
Localized preferences and Sparkle binding changes; default behavior remains automatic checks via Info.plist.

Overview
Users can now turn off daily background update checks from Settings → General → Updates via a new "Automatically Check for Updates" toggle, wired through UpdateManager to Sparkle’s SPUUpdater.automaticallyChecksForUpdates (with KVO so UI stays in sync when Sparkle changes the value).

"Automatically Install Updates" is disabled when automatic checks are off, since background installs depend on scheduled checks. The manual Check for Updates row copy is updated to describe on-demand checks instead of implying daily automatic checks.

Reviewed by Cursor Bugbot for commit bf8f796. Bugbot is set up for automated code reviews on this repo. Configure here.

Add an "Automatically Check for Updates" toggle in Settings > General
so users can disable Sparkle's scheduled daily checks. Manual checks
via the "Check for Updates" button remain available.

The "Automatically Install Updates" toggle is disabled when automatic
checks are off, since background downloads only happen after scheduled
checks.

Closes #219

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit bf8f796. Configure here.

))
.toggleStyle(.switch)
.controlSize(.small)
.disabled(!updateManager.automaticallyChecksForUpdates)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Install toggle stays enabled

Medium Severity

GeneralSettingsView keeps updateManager as a plain optional instead of observing UpdateManager, so changes to automaticallyChecksForUpdates do not reliably invalidate the settings body. The new .disabled(!updateManager.automaticallyChecksForUpdates) on “Automatically Install Updates” can stay stale, leaving that toggle interactive after automatic checks are turned off.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit bf8f796. Configure here.

@lzhgus lzhgus closed this Jul 27, 2026
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.

[Feature] Allow disabling update check

1 participant