Pals Launch Roadmap
Finish M1, then start M2 Accounts
M1 has one real story left, KAN-7 Heal, plus the hidden-bars decision in KAN-18 and four tickets that are already delivered and only need closing. Nothing blocks it.
KAN-13 Accounts & the starter Pal
The only new epic with no upstream dependency. Start with KAN-19 Supabase Auth. Everything after it needs a real player row to attach purchases, wallets and push tokens to.
Epics
Progress is stories done over stories in the epic. Expand an epic for its stories, each linked to Jira.
Apple compliance
The App Store Review rules that apply to this game, and the story that owns each one.
| Guideline | What it means for Pals | Owner |
|---|---|---|
| 3.1.1In-App Purchase | Gems and the cash revive go through StoreKit only. No external payment links or prices in the app. | KAN-34, KAN-30 |
| 3.1.1Loot box odds | Egg pulls are randomized items bought with a purchasable currency, so the odds of each rarity must be visible before a pull. | KAN-32 |
| 3.1.1Currency and restore | Purchased gems never expire; a Restore Purchases control is present. | KAN-36 |
| 4.8Login Services | Offering Google or similar means also offering Sign in with Apple or an equivalent. Email-only sign-up avoids the rule. | KAN-20 |
| 5.1.1(v)Account deletion | Because players create accounts, in-app deletion is mandatory and must remove the player's data. | KAN-23 |
| 5.1.1Privacy policy and labels | Policy URL in the listing and in the app. Labels must match what Supabase, notifications and crash tooling actually collect. | KAN-48, KAN-49 |
| ManifestPrivacy manifest | Required for apps and SDKs using required-reason APIs. Audit the manifest the Godot template ships and add one per plugin. | KAN-50 |
| 2.1App Completeness | No placeholder screens. The Arena and Shop "scoped after v1" tabs are hidden or replaced before submission. | KAN-47 |
| 4.5.4Push notifications | Optional, purposeful, asked for in context. Death warnings and needs reminders qualify; nothing promotional without consent. | KAN-40 |
| 1.3Kids Category | Opting in restricts third-party analytics and ads and changes IAP expectations. An all-ages rating outside the category is the simpler path. | KAN-51 |
| 5.1.2Data use and tracking | Cross-app tracking triggers the App Tracking Transparency prompt. Plan for no tracking so the prompt is never needed. | KAN-43 |
| ExportEncryption compliance | Only standard HTTPS, so declare the exempt-encryption flag in the plist to skip the yearly questionnaire. | KAN-52 |
Decisions that unblock stories
Hidden stat bars
Do cleanliness, energy and health leave the stats popup, as KAN-5, 6 and 7 say? Answering this closes M1.
Login options
Email only, or Sign in with Apple from day one? Email only is less work and avoids guideline 4.8.
Death tuning
Grace period after zero health, and what the fragment revive's penalty is.
Kids Category
In or out. It decides which analytics and crash tools are allowed and shapes the age rating.
Launch tabs
Hide Arena and Shop, or ship Shop as a minimal gem store that M4 needs anyway.
Future enhancements
Post-launch by design. Grouped from the feature backlog; each theme becomes its own epic once the care loop has players.
Sources: Jira board KAN, docs/feature-ideas.md, docs/3d-transition-plan.md, the schema in supabase/migrations/, and the App Store Review Guidelines. This page lives in the repo at docs/roadmap.html; its data block is regenerated from Jira by tools/roadmap/sync.mjs on an hourly GitHub Actions schedule, so story status follows the board.