diff options
| author | Christian Cleberg <[email protected]> | 2026-07-25 12:14:58 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-07-25 12:19:37 -0500 |
| commit | 963ce3fb34bd6c6bd72f1aa956ce602267b90e9c (patch) | |
| tree | ba2c18e4c2bebba8d07a6715e07bd1fccbea4581 /DomainDig/TimelineView.swift | |
| parent | 7156c088a438526182c517fafa35d31990d44f18 (diff) | |
| download | domain-dig-963ce3fb34bd6c6bd72f1aa956ce602267b90e9c.tar.gz domain-dig-963ce3fb34bd6c6bd72f1aa956ce602267b90e9c.tar.bz2 domain-dig-963ce3fb34bd6c6bd72f1aa956ce602267b90e9c.zip | |
feat: owner Pro+ allowlist via CloudKit, cut v5.0.1v5.0.1
Grants the app owner Pro+ without a purchase, keyed to their CloudKit
user-record ID so it works on the release App Store build.
- OwnerAccess holds the owner's CloudKit user-record ID (opaque, per-Apple-ID,
scoped to the app's container; safe to publish — CloudKit verifies identity
server-side, so it can't be presented by anyone else).
- PurchaseService resolves the allowlist against CloudKit once per launch and,
on a match, records a persisted owner grant so it applies instantly and
offline thereafter. The grant only ever elevates the tier to .proPlus and
defers to the existing #if DEBUG overrides, so real purchases and free/pro
testing are unaffected. cachedTier / cachedEntitlement were refactored to
fall back to the owner grant only when no debug override or stored purchase
applies.
- Supersedes the DEBUG record-ID reveal (PR #60): its only purpose was to read
the owner's ID, which is now hardcoded, so the reveal is not shipped.
Release cut: MARKETING_VERSION 5.0.0 -> 5.0.1, CURRENT_PROJECT_VERSION 45 -> 46,
AppVersion.current -> 5.0.1, roadmap updated. App builds clean; unit suite 63/63.
Diffstat (limited to 'DomainDig/TimelineView.swift')
0 files changed, 0 insertions, 0 deletions
