| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| 7.0.0 source code.tar.gz | 2026-07-05 | 542.3 kB | |
| 7.0.0 source code.zip | 2026-07-05 | 610.2 kB | |
| README.md | 2026-07-05 | 2.7 kB | |
| Totals: 3 Items | 1.2 MB | 0 | |
Breaking
- Minimum deployment target raised to iOS 17 / tvOS 17 (previously iOS 13 / tvOS 13, which was nominal: the code already required the async
URLSessionAPI). Requires Swift 5.9+ / Xcode 15+ to build.
Fixed
- Network failures (offline, timeout, DNS) are now reported to the results handler as
.appStoreDataRetrievalFailure(underlyingError:)instead of being silently swallowed; all failure callbacks are delivered on the main queue. - Prompt frequency rules (
.daily/.weekly) are now honored on the default.onForegroundpath; previously a stale in-memory date could re-present the alert on every foregrounding within a session. - The updater
UIWindowis created per presentation. Previously a lazily cachednil(first access with no foreground scene, including via the background observers) silently disabled all alerts for the life of the process. - The alert presentation date is recorded only when an alert is actually shown, so a failed presentation no longer suppresses the next opportunity.
- An already-visible alert is left in place when a second version check overlaps it, instead of being torn down with no callback.
cleanUp()releases the alert controller and window, breaking a retain cycle.- Version comparison is now component-wise with zero padding: installed "2.3" vs App Store "2.3.0" is no longer treated as an available update, and "2" → "2.0.1" is classified as a patch update. The same fix applies to the minimum-OS compatibility check.
- Empty App Store lookup results now throw
appStoreDataRetrievalEmptyResultsas documented, instead of being misreported as a JSON parsing failure. KnownErrorimplementsLocalizedError.errorDescription, so error messages survive type erasure toError.- 20 invalid ISO 3166-1 alpha-3 App Store country codes replaced with the ISO-2A codes the iTunes Lookup API requires (
SRB→RS,BIH→BA,AFG→AF,XKS→XK, and 16 more). The old codes were rejected by the API with an invalid-country error; every replacement was verified against the live endpoint.
Housekeeping
- Removed a dead
UserDefaultskey, a deprecatedsynchronize()call, and a no-opdo/catch. - README: Swift 5.9+ on master, modern SPM syntax, and a note that the CocoaPods trunk becomes read-only on December 2, 2026 (SPM is the recommended install method).
All changes were verified end to end in the iOS Simulator (alert presentation, background/foreground re-presentation, and frequency-gate suppression) and reviewed by three independent AI reviewers. See [#430] for full details.
🤖 Generated with Claude Code