Publishing (including re-publishing after a lapsed subscription —
PRD §15) now checks Pro entitlement first; if inactive, prompts the
owner to the paywall instead of calling the publish endpoint. The
paywall also flags packages with an active introductory offer as
"7 gün ücretsiz dene" (both plans now have a 7-day free trial
configured in App Store Connect, Turkey territory).
- Purchases.configure() runs with appUserID = restaurantId at every
point the id becomes known (login resolve, cold-start rehydration,
onboarding restaurant creation) — this must match what the backend
webhook expects (see apps/api/src/routes/subscription.ts).
- New account/subscription.tsx paywall: current entitlement status,
offering packages with real store prices, purchase, restore.
- Linked from the account screen.
Native module — requires an EAS/dev-client build, not plain Expo Go.
Removes the per-item confidence field end to end (prompt, extraction
parsing, ai_import_items writes, API responses, low-confidence badge
in the mobile review screen). ai_import_items.confidence column is
left in place but unused (nullable, no destructive migration).