AyrisAI
b0645c0ac3
feat(mobile): replace blocking modal with inline live inspector for instantaneous visual editing feedback
2026-08-21 01:04:03 +03:00
AyrisAI
2c3599839b
feat(mobile): add QrTemplate6 Stonehearth Grill, modal text editor and vertical positioning (offsetY) controls
2026-08-21 01:00:29 +03:00
AyrisAI
2530ab4005
feat(mobile): add multiline text with Enter, per-text independent font selection and font size controls
2026-08-21 00:55:44 +03:00
AyrisAI
b72846bd91
feat(mobile): integrate QrTemplate5 with 5.png background image and dynamic texts
2026-08-21 00:52:26 +03:00
AyrisAI
d2846ed628
feat(mobile): add QrTemplate4 Crimson Petal, support full Turkish characters on all system fonts and templates
2026-08-21 00:41:16 +03:00
AyrisAI
4dbb68a73a
feat(mobile): add full text editing, show/hide switches and font family selector for QR stands
2026-08-21 00:36:14 +03:00
AyrisAI
932c174b5f
fix(mobile): resolve TSpan text overlapping in QrTemplate3
2026-08-21 00:31:17 +03:00
AyrisAI
34dd24eee2
feat(mobile): register QrTemplate2 Daily Grind and filter UI to active component templates
2026-08-21 00:30:14 +03:00
AyrisAI
8481a34e61
feat(mobile): add QrTemplate3 Pizzeria, fix PDF export for component system
2026-08-21 00:25:44 +03:00
AyrisAI
ccd8c90267
fix(mobile): decode XML entities for react-native-svg text rendering
2026-08-21 00:07:43 +03:00
AyrisAI
3629f98855
fix(mobile): proper nested-g depth counting for qr-placeholder replacement
2026-08-21 00:06:03 +03:00
AyrisAI
dd282f3987
fix(mobile): strip XML comments before SvgXml parse to fix closing tag error
2026-08-21 00:02:37 +03:00
AyrisAI
4236ddb5ee
feat: re-integrate all SVGs from svg ornekleri/ fresh, add qr-6
2026-08-20 23:59:45 +03:00
AyrisAI
c7e4832441
fix(mobile): do not mutate SVG attributes, only replace qr-placeholder group
2026-08-20 23:58:21 +03:00
AyrisAI
fa50e73198
fix(mobile): inject QR directly into SVG XML for pixel-perfect placement
2026-08-20 23:56:37 +03:00
AyrisAI
808097377d
feat(qr-stands): add qr-5 L'Atelier Bistro Fine Dining template
2026-08-20 23:50:30 +03:00
AyrisAI
6cde8dfb87
feat: sync qr presets and mobile rendering with svg/ directory
2026-08-20 23:43:58 +03:00
AyrisAI
01c9f5f195
feat(mobile): render exact SVG vector templates in mobile QR stand screen
2026-08-20 23:43:26 +03:00
AyrisAI
f768b92873
feat(qr-stands): clean SVG template renderer with exact QR placement and no redundant overlays
2026-08-20 23:39:56 +03:00
AyrisAI
eb0b5d1886
feat(qr-stands): add qr-2.svg preset from user code
2026-08-20 23:36:01 +03:00
AyrisAI
38fd0dd030
feat(qr-stands): activate user provided qr-1.svg and qr-4.svg
2026-08-20 23:34:57 +03:00
AyrisAI
18396f3b99
fix(qr-stands): restore exact user-provided qr-1.svg alongside qr-4.svg
2026-08-20 23:31:54 +03:00
AyrisAI
edb7af9288
feat(qr-stands): add flat vector qr-1.svg urban preset
2026-08-20 23:30:04 +03:00
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
8efb5a9ff6
fix: render true SVG template vector graphic as stand background
2026-08-20 18:55:21 +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
bf44bf3e9d
fix(docker): resolve pnpm v10 ERR_PNPM_IGNORED_BUILDS in Dockerfile
2026-08-20 18:22:36 +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
5103322fa1
feat: dynamically fetch live Cloudflare SSL TXT verification records in GET /domains endpoint
2026-08-20 17:35:23 +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
5122ec24fc
fix: revert to stable Next.js 15 and add @swc/helpers to dependencies for Docker standalone runtime
2026-08-20 17:24:40 +03:00
AyrisAI
b950a31e3b
fix: move @import rule to top of globals.css to satisfy PostCSS specification
2026-08-20 17:20:22 +03:00
AyrisAI
f2b2537cd0
chore: upgrade Next.js to latest in web app
2026-08-20 17:15:42 +03:00
AyrisAI
484c7ce113
fix: resolve TypeScript type mismatch error in fetchRestaurantBySlug
2026-08-20 17:12:32 +03:00
AyrisAI
067d65940f
fix: fallback to basic select query when cover_url column is not present on production database
2026-08-20 17:10:19 +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
6055130828
docs: record EAS env var and entitlement identifier bugs
2026-08-20 16:16:14 +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