Commit Graph
39 Commits
Author SHA1 Message Date
AyrisAI a0cb04b2c6 feat(qr-stands): set qr-4 as exclusive vector stand template 2026-08-20 23:25:19 +03:00
AyrisAI 4ce6505a4d feat(qr-stands): add custom-svg-3 preset with user provided SVG stand code 2026-08-20 19:03:18 +03:00
AyrisAI 0a2aae68db feat: add qr-2.svg template preset (Classic Bistro QR Stand 2) 2026-08-20 18:49:43 +03:00
AyrisAI 984a41d0e5 refactor: simplify QR stand presets to single urban qr-1.svg template 2026-08-20 18:44:44 +03:00
AyrisAI 04863c8a78 feat: add qr-1.svg template integration for QR stand generator 2026-08-20 18:43:15 +03:00
AyrisAI e63de8584d style(mobile): render 1:1 pixel-perfect Urban Burger tabletop plaque layout 2026-08-20 18:28:23 +03:00
AyrisAI 3a15dd15b9 feat(mobile): build native in-app QR Stand Generator with theme switcher & A5 PDF / PNG exporter 2026-08-20 18:25:20 +03:00
AyrisAI d396cbb221 feat: implement Tabletop QR Stand Generator with high-res PNG and print-ready A5 PDF export 2026-08-20 18:16:49 +03:00
AyrisAI 54a27903c8 chore: remove confidence score step from AI menu scanner flow 2026-08-20 18:03:10 +03:00
AyrisAI 3f326fa407 feat: allow updating custom menu slug with format validation, uniqueness checking and active cache sync 2026-08-20 17:58:42 +03:00
AyrisAI e7d0bcc505 feat: implement DELETE /restaurants/:id endpoint and mobile UI danger zone for restaurant deletion 2026-08-20 17:44:55 +03:00
AyrisAI 8adec100af feat: render CNAME and Cloudflare SSL TXT verification instructions with copy buttons in mobile app domain settings 2026-08-20 17:33:14 +03:00
AyrisAI 5cbd80326f feat: setup Supabase Storage bucket for restaurant assets and add mobile upload helper 2026-08-20 17:30:22 +03:00
AyrisAI b7e128fb8c fix: resolve slug fallback rendering for demo/gusto-brasserie and add root [slug] routing 2026-08-20 17:05:45 +03:00
AyrisAI bb4cd1b0fc fix(mobile): stop matching entitlement by hardcoded identifier string
RevenueCat's entitlement identifier contains U+2024 (ONE DOT LEADER),
not a plain period — "Menul.io Pro" never matched the real
"Menul⁚io Pro" key, so isProActive() stayed false even after a real
purchase (confirmed via a genuine sandbox trial that RevenueCat
recorded as active while the app kept showing "Ücretsiz plan").
RevenueCat's API doesn't allow renaming an entitlement's lookup_key
after creation (405), so fixed on our side instead: this app only
ever grants one entitlement, so "any active entitlement" == Pro,
no identifier string needed.
2026-08-20 16:15:44 +03:00
AyrisAI 102cc0781e fix(mobile): add missing RevenueCat key to EAS production build env
eas.json's production build profile hardcodes its own env block —
local apps/mobile/.env is never read by EAS cloud builds. The
RevenueCat public key was missing from that list, so every
production/TestFlight build compiled EXPO_PUBLIC_REVENUECAT_API_KEY
as undefined, making configurePurchases() silently no-op and every
later Purchases call throw "no singleton instance".
2026-08-20 15:57:40 +03:00
AyrisAI 0836fc8539 feat: redesign web menu layout, add header cover banner & dynamic header layout, refine mobile inputs and theme selector 2026-08-20 15:07:13 +03:00
AyrisAI 6fb91c94ff fix(mobile): configure Purchases on menu editor load
"There is no singleton instance" when tapping Yayınla — the app can
land directly on /menu (e.g. iOS restoring the last screen on
relaunch) without ever running index.tsx's routing gate, so
Purchases.configure() was never called. Menu editor's load() now
configures it defensively too, same pattern as account/subscription.tsx.
2026-08-20 13:52:17 +03:00
AyrisAI 67cd5a488c fix(mobile): fix unreachable back button on subscription screen
Missing safe-area top inset pushed the header (back arrow + title)
up under the status bar/notch, overlapping the clock and making the
button effectively untappable. Also falls back to router.replace
when there's no back history instead of silently no-op'ing.
2026-08-20 13:33:24 +03:00
AyrisAI d87f66efff feat(mobile): gate publish behind subscription, surface free trial
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).
2026-08-20 13:23:55 +03:00
AyrisAI b25c742eea feat(mobile): integrate react-native-purchases (RevenueCat)
- 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.
2026-08-20 13:20:54 +03:00
AyrisAI 6cc56a198a perf(ai-scanner): drop confidence scoring to simplify AI menu import
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).
2026-08-20 05:47:55 +03:00
AyrisAI 93b2a77127 fix(mobile): update public menu URL format to https://menul.io/menu/:slug 2026-08-20 04:32:25 +03:00
AyrisAI c6b15ffa52 fix(mobile): install missing expo-linking and align native dependencies to 100% Expo SDK 52 2026-08-20 04:09:25 +03:00
AyrisAI c0544251b8 feat(themes): add Eleia Coastal Kitchen Mediterranean Aegean design system 2026-08-20 03:46:41 +03:00
AyrisAI bf637b02ed feat(themes): add Neon Street Fuze graffiti burger/taco menu design system 2026-08-20 03:44:02 +03:00
AyrisAI 809200550e feat(themes): add La Maison d'Élève French luxury editorial restaurant design system 2026-08-20 03:41:07 +03:00
AyrisAI de8bd506b8 feat(themes): add Swiss Brutalist restaurant design system with chapter numbers and high-contrast grid 2026-08-20 03:35:44 +03:00
AyrisAI 83fa4236ea fix(mobile): disable experimental newArchEnabled to prevent TurboModule SIGABRT crash 2026-08-20 03:10:48 +03:00
AyrisAI 89c2f62995 feat(themes): add Amber Artisan 2-column bento gourmet dark theme 2026-08-20 02:56:38 +03:00
AyrisAI da3d4d291b chore(assets): ensure 1024x1024 app icon is flattened without alpha for Apple App Store compliance 2026-08-20 02:45:19 +03:00
AyrisAI 32818766f0 fix(mobile): remove custom font loader causing SIGABRT crash on iOS release 2026-08-20 02:43:22 +03:00
AyrisAI 3257f7fe57 security: remove any hardcoded credentials from codebase 2026-08-20 02:39:21 +03:00
AyrisAI f5eebed0a7 fix(mobile): add hardcoded production env fallbacks to prevent launch crash 2026-08-20 02:38:37 +03:00
AyrisAI 1379642832 chore: add type module to root package.json 2026-08-20 02:26:57 +03:00
AyrisAI 4f4f68b924 chore(eas): set ios build image to latest 2026-08-20 02:18:37 +03:00
AyrisAI 660c38e5e2 fix: add expo-asset and expo-constants to mobile dependencies 2026-08-20 02:09:23 +03:00
AyrisAI 437af0b251 fix: eas config and dockerfiles 2026-08-20 01:53:41 +03:00
AyrisAI 97b83c7fd4 first commit 2026-08-20 01:51:59 +03:00