Skip to content

[codex] fix update privacy and app rule restoration - #32

Merged
ygsgdbd merged 1 commit into
mainfrom
codex/manual-update-privacy-and-restore-rules
Aug 14, 2026
Merged

ygsgdbd merged 1 commit into
mainfrom
codex/manual-update-privacy-and-restore-rules

Conversation

@ygsgdbd

@ygsgdbd ygsgdbd commented Aug 14, 2026

Copy link
Copy Markdown
Owner

Summary

TypeSwitch previously performed a silent Sparkle update probe during every normal launch even though the README stated that GitHub was contacted only after the user selected an update-related menu action. The same app-rule model also represented “ignored” as a replacement strategy, so restoring an ignored app discarded its previous fixed, follow-last, or default rule. Finally, the menu bar icon visually distinguished unconfigured apps without exposing the equivalent state to VoiceOver.

Root cause and user impact

The app entry point explicitly called checkForUpdateInformation() after starting Sparkle. This caused an unprompted GitHub appcast request and made the documented privacy behavior inaccurate, although it did not automatically download or install updates.

Ignoring an app overwrote its only strategy field with .ignored, and both restore actions always wrote .none. Users temporarily ignoring a configured app therefore lost the rule they had selected before ignoring it.

The menu bar accessibility label was a constant TypeSwitch, while the icon changed according to the current app’s configuration state. VoiceOver users could not perceive the state represented by the badge.

Changes

  • Removed the launch-time Sparkle probe and the monitor state used exclusively by that probe.
  • Kept SUEnableAutomaticChecks=false; the update request now starts only when the user clicks Check for Updates….
  • Updated the English and Chinese privacy documentation and added unreleased release notes.
  • Added an optional, backward-compatible strategyBeforeIgnoring field to app rules.
  • Saved the current rule when ignoring an app and restored it for individual and restore-all actions; legacy ignored records without the field still fall back to .none.
  • Added localized menu bar accessibility labels for unconfigured, configured, and ignored current apps.
  • Removed obsolete silent-update tests and localized copy, and expanded reducer, Codable compatibility, and localization coverage.

Validation

  • rtk just check
  • SwiftFormat lint: 0 files require formatting
  • XCTest: 101 tests passed, 0 failures
  • git diff --cached --check
  • Verified the repository contains no remaining checkForUpdateInformation, startSilentCheck, or SparkleUpdateMonitor references.

@ygsgdbd
ygsgdbd marked this pull request as ready for review August 14, 2026 09:39
@ygsgdbd
ygsgdbd merged commit 6031ae4 into main Aug 14, 2026
2 checks passed
@ygsgdbd
ygsgdbd deleted the codex/manual-update-privacy-and-restore-rules branch August 14, 2026 09:44
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.

1 participant