Work / Imposter / Wiki / Entities
pro-purchase
Entitycanonicalverified 2026-10-02
PURCHASE.PROSummary
What is sold. One non-consumable, bought once, on both stores.
Canonical values
| Key | Value | Source |
|---|---|---|
| Product ID | imposter_pro_lifetime |
PRO_PRODUCT_ID in src/data/categories.ts |
| Entitlement | pro |
PRO_ENTITLEMENT in src/data/categories.ts |
| Kind | non-consumable | App Store Connect, Play Console |
| Price | USD 4.99 on every store | RevenueCat, 2026-09-20 |
| RevenueCat offering | default |
RevenueCat |
| RevenueCat package | $rc_lifetime — "All 10 packs, one payment" |
RevenueCat |
| Packs in the app | 10 | src/data/packs/ |
| Free packs | 3 — Everyday, Food & Drink, Animals | src/data/categories.ts |
| Packs the purchase unlocks | the other 7, and every pack added later | — |
| The player's own word pack | free, not in the registry | CUSTOM_WORDS_ARE_FREE |
Word and hint counts are not here. src/data/categories.ts owns them, the
UI and the wireframes read the real number, and registry.test.ts holds every
pair to one hand-written hint. A count copied into a wiki page is a count that
is wrong the day a pack grows.
Rules
- There is no subscription, no consumable and no second product.
- Nothing may be added that undercuts "No subscription. No ads. Ever." — see
CLAUDE.md, "The one thing this app is for". - Restore Purchases is on the paywall header and in Settings.
Where it is set up
Account ids, console links and where the keys live are in
.context/ops/setup.md. What each store holds today is in
.context/ops/release.yml. The App Store review screenshot is described in
.context/listing/ios/iap.md.
Related
Sources
src/data/categories.ts- The root
STATUS.mdof 2026-09-20, split on 2026-10-02 (git show main:STATUS.md)
Every project of mine is written down like this.
Read the résumé