<feed xmlns='http://www.w3.org/2005/Atom'>
<title>domain-dig.git/DomainDig/OwnerAccess.swift, branch v5.0.1</title>
<subtitle>local-first ios domain inspection toolkit. dns, tls, rdap, audit.
</subtitle>
<id>http://git.krz.sh/krz/domain-dig.git/atom?h=v5.0.1</id>
<link rel='self' href='http://git.krz.sh/krz/domain-dig.git/atom?h=v5.0.1'/>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/domain-dig.git/'/>
<updated>2026-07-25T17:19:37+00:00</updated>
<entry>
<title>feat: owner Pro+ allowlist via CloudKit, cut v5.0.1</title>
<updated>2026-07-25T17:19:37+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-25T17:14:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/domain-dig.git/commit/?id=963ce3fb34bd6c6bd72f1aa956ce602267b90e9c'/>
<id>urn:sha1:963ce3fb34bd6c6bd72f1aa956ce602267b90e9c</id>
<content type='text'>
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 -&gt; 5.0.1, CURRENT_PROJECT_VERSION 45 -&gt; 46,
AppVersion.current -&gt; 5.0.1, roadmap updated. App builds clean; unit suite 63/63.
</content>
</entry>
</feed>
