Download Latest Version 7.0.1 source code.zip (610.5 kB)
Email in envelope

Get an email when there's a new version of Siren

Home / 7.0.0
Name Modified Size InfoDownloads / 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 URLSession API). 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 .onForeground path; previously a stale in-memory date could re-present the alert on every foregrounding within a session.
  • The updater UIWindow is created per presentation. Previously a lazily cached nil (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 appStoreDataRetrievalEmptyResults as documented, instead of being misreported as a JSON parsing failure.
  • KnownError implements LocalizedError.errorDescription, so error messages survive type erasure to Error.
  • 20 invalid ISO 3166-1 alpha-3 App Store country codes replaced with the ISO-2A codes the iTunes Lookup API requires (SRBRS, BIHBA, AFGAF, XKSXK, 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 UserDefaults key, a deprecated synchronize() call, and a no-op do/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

Source: README.md, updated 2026-07-05