Building in public

Changelog

Every feature, fix, and improvement shipped to the Comi.AI platform

31 releases · 432 changes shipped

55,005
Lines of code
81
Screens + pages
1,636
LATAM dishes
9
Countries
119
TypeScript files
16
DB migrations

v1.6.0 + 1.1.0

February 15, 2026 - 9:05 AM CTPremium UI — 10x Design Upgrade+1,146 / -2582 files✅ 184/184 passed, Codex ✅
AppAppWebsiteBackend
App

MealCard Component (Mobile v1.6.0)

8 changes
  • Full-width hero image (200px) with gradient overlay for better text contrast
  • Glassmorphism floating badges (BlurView) — meal type + time on image
  • Giant calorie number (42px, font-weight 900) for instant visual impact
  • AI Confidence badge: Alta precisión (green) / Precisión media (orange) / Verificar datos (red)
  • Macro progress rings (56px diameter, 6px stroke) with emoji centers (🥩🍚🧈)
  • Deeper shadows (elevation 8, shadowRadius 16) for premium depth perception
  • Floating heart button with glassmorphism in top-right corner
  • Before: 64x64 thumbnail, basic layout · After: Instagram-style premium card
App

History Page (Mobile v1.6.0)

9 changes
  • Gradient calorie hero — color-coded background (green on track, red over limit)
  • 48px giant calorie number with real-time percentage badge
  • Enhanced progress bar (12px height, smooth animated fills)
  • Emoji-labeled macro bars (🥩 Proteína, 🍚 Carbos, 🧈 Grasa)
  • Meal count badge with plate emoji (🍽️ + count)
  • Better section headers with camera timeline badge (📸 + count)
  • Division-by-zero protection (calorieTarget > 0 guard)
  • Fixed typo: timelinText → timelineText (caught by Codex review)
  • Before: Basic summary card · After: Premium gradient dashboard
Website

Search Page Redesign (Webapp v1.1.0)

10 changes
  • Larger, engaging empty state with interactive search chips (🌮 Tacos, 🍛 Arroz, 🍗 Pollo, etc.)
  • Enhanced food cards with category badges (distinct colors per category: Proteínas, Carbohidratos, Frutas, Lácteos, etc.)
  • Macro pills upgraded: full labels (Proteína, Carbos, Grasa, Fibra) instead of single letters
  • Selection states with checkmarks (✓) and glow effects (4px rgba glow)
  • Better spacing: rounded-2xl borders, gap-3 between cards, px-4 py-2 pills
  • Improved loading state with 'Buscando...' spinner message
  • Better empty results with 🔍 icon + helpful retry message
  • Search result counter with horizontal divider line
  • Removed country_origin display (confirmed unnecessary for UX)
  • Before: Plain list, tiny chips · After: Rich, interactive search experience
Backend

Design Research & Implementation

5 changes
  • Researched 2026 million-dollar app design patterns (glassmorphism, 3D depth, micro-interactions)
  • Applied color psychology: orange/red for energy (fitness apps), green for success
  • Implemented AI transparency patterns (confidence indicators, visual trust signals)
  • Minimalist layouts with bold typography (giant numbers, weight 900)
  • 3D depth via layered shadows + glassmorphic BlurView effects
8
App
9
App
10
Website
5
Backend
32changes shipped

v1.3.0

February 14, 2026 - 9:45 PM CTA+ Scanner+3,009 / -57135 files
AppAppAppBackend
App

Critical Bug Fixes

5 changes
  • Food scanner 0-byte upload: fetch(localUri).blob() returns empty in React Native — replaced with ImageManipulator base64 + decode(). All uploads now work (361KB+ confirmed)
  • Navigation redirect: Token refresh triggered root layout routing, sending users back to home mid-analysis. Added hasInitiallyRouted guard + results screen to allowlist
  • Edge function race condition: Client-side error handler was overwriting successful 'complete' status. Removed redundant error overwriting
  • Private storage bucket: Replaced getPublicUrl() with createSignedUrl() (1-hour expiry) for private food-photos bucket
  • Barcode scanner: Fixed onBarcodeScanned firing in food photo mode with conditional guard
App

A+ Design & Polish

7 changes
  • Animated macro progress bars with Reanimated withTiming (400ms, cubic ease-out)
  • Entry stagger animations: MealCard and FoodItemRow fade in with 80ms stagger per item
  • Haptic feedback on all 11 onboarding screens (light on selections, success on completion)
  • Welcome screen: spring-animated logo (0.8→1.0), tagline fade-in, social proof badge
  • Confetti celebrations: 40-particle burst with spring physics on meal confirmation
  • PressableScale component: reusable spring press feedback applied to FAB and buttons
  • Full paywall redesign with social proof, trust signals, and feature comparison
App

Food Item Management

3 changes
  • Delete food items with red Eliminar button and confirmation dialog
  • Last item deletion prompts to delete entire meal
  • Quick delete from results view mode (no edit mode required)
Backend

Edge Function Improvements

4 changes
  • Rate limit bumped from 10/hour to 30/hour
  • JWT auth fallback: accepts body.user_id when JWT fails, deployed with --no-verify-jwt
  • Storage download fallback when URL fetch fails (via service role)
  • Fixed imageResponse scoping bug causing 500 errors
5
App
7
App
3
App
4
Backend
19changes shipped

v1.2.1

February 14, 2026 - 5:57 PM CTOverlay Fix+7 / -31 files
App
App

Critical Camera Fix

1 changes
  • CRITICAL: Fixed all camera overlay buttons dead/unresponsive — expo-camera v17 does NOT support children inside CameraView. Moved all overlay UI (close, capture, flash, gallery, barcode toggle) to absolutely-positioned View on top of CameraView with pointerEvents='box-none'
1
App
1changes shipped

v1.2.0

February 14, 2026 - 5:49 PM CTCal AI Killer+5,263 / -83541 files
AppAppAppAppBackendInfrastructure
App

5 New Meal Logging Methods

5 changes
  • Photo scan: Point camera at food → 3-second auto-capture countdown → AI analyzes via Claude Vision
  • Barcode scan: Camera opens in barcode mode → scans EAN-13, EAN-8, UPC-A, UPC-E, Code128, Code39 → looks up Open Food Facts API → shows product card with macros and portion multiplier
  • Text description: Type or dictate what you ate → AI analyzes via Claude → full nutritional breakdown
  • Voice input: Tap mic → records audio (AAC 44.1kHz/128kbps) → transcribes via OpenAI Whisper (Spanish-optimized) → auto-fills text description
  • Food search: Search 2,000+ LATAM dishes database with quick-log buttons
App

New Screens & Components

9 changes
  • Text description meal entry screen (783 lines) — meal type selector, AI analysis, loading states, character counter
  • Barcode result screen (309 lines) — scanned product card with image, brand, macros, portion multiplier (0.5x–2x)
  • MFP-style action sheet with green + FAB and 4 logging options
  • Tab bar rebuilt with blur background, gradient FAB with shadow, AnimatedPressable tabs, active state pill
  • iOS-style ScrollPicker replaces text inputs in onboarding (age, height, weight)
  • Reusable BottomSheet component with drag handle and backdrop dismiss
  • MealCard expanded with detailed nutritional bottom sheet and edit/delete/share actions
  • Recent meals dashboard widget for one-tap re-logging
  • Confetti celebration overlay for streaks and achievements
App

Apple Health Integration

4 changes
  • Apple HealthKit integration: save dietary energy, carbs, water, weight; get steps and latest weight
  • Health sync toggle in profile screen (iOS only)
  • Non-blocking HealthKit side effects on water log, meal confirm, and weight log
  • Config plugin for HealthKit entitlements with Spanish permission descriptions
App

Camera & Capture Improvements

6 changes
  • 3-second auto-capture countdown in food photo mode with visual countdown indicator
  • Exit button fixed: router.replace instead of router.back (camera opened from modal had empty back stack)
  • Red screen on food scan fixed: console.warn instead of console.error for edge function errors in dev mode
  • CalorieRing smoother animations with Reanimated spring configs
  • New haptic helpers: hapticHeavy, hapticSuccess, hapticError
  • Expanded design tokens: surfaceElevated, protein/carbs/fat/fiber colors, animation constants
Backend

New Edge Functions & Libraries

6 changes
  • transcribe-audio edge function (223 lines) — OpenAI Whisper API with Spanish language hint, CORS, structured error logging
  • Voice recording library (184 lines) — mic permissions, audio recording via expo-av, base64 encoding, Whisper transcription
  • Barcode library (70 lines) — Open Food Facts API lookup, Spanish product name preference, per-serving vs per-100g fallback
  • Shared animations library (99 lines) — spring/timing configs, reusable fade/slide/scale animation presets
  • analyze-food edge function updated with text description mode and improved error handling
  • Popular LATAM foods displayed on search screen with 12 dishes from user's country
Infrastructure

Infrastructure

7 changes
  • Deployed transcribe-audio edge function v2
  • Set OPENAI_API_KEY in Supabase secrets for voice transcription
  • Added expo-av dependency (audio recording)
  • Added react-native-health dependency (HealthKit)
  • Added NSMicrophoneUsageDescription to iOS info.plist (Spanish)
  • Added RECORD_AUDIO permission for Android
  • Updated app.json with expo-av, react-native-health, withHealthKit plugins
5
App
9
App
4
App
6
App
6
Backend
7
Infrastructure
37changes shipped

v1.1.8

February 14, 2026 - 3:51 PM CTServer Delete+131 / -282 files
BackendApp
Backend

Server-Side Account Deletion

3 changes
  • New delete-account edge function (121 lines): verifies JWT, deletes avatar and meal photos from storage, cascades all user data via auth.admin.deleteUser()
  • Replaces client-side 8-table cascade with single edge function call
  • Proper error handling with structured JSON logging
App

Profile Cleanup

1 changes
  • Simplified delete account in profile to single edge function call (removed 28 lines of manual cascade code)
3
Backend
1
App
4changes shipped

v1.1.7

February 14, 2026 - 3:46 PM CTAudit+706 / -5277 files
AppWebsite
App

Bug Fixes

3 changes
  • Onboarding paywall: handleStartTrial and handleRestore now wrapped in try/catch/finally (prevents permanent button disable on error)
  • Profile version fallback updated from 1.1.3 to 1.1.6
  • Changelog backfilled with v1.1.4, v1.1.5, v1.1.6 entries including KPI metrics
Website

FAQ Page & Fixes

8 changes
  • New /faq page with 8 questions in Spanish (accordion UI, dark theme, responsive)
  • Fixed 30+ missing Spanish accents on FAQ page (cómo, calorías, países, diseñada, etc.)
  • Fixed wrong contact email on FAQ page (hello@comi-ai.com → hola@comiai.co)
  • Added /faq to sitemap.ts for SEO discovery
  • Backfilled CHANGELOG.md with v1.0.10-v1.0.14 and v1.1.6 entries
  • Fixed CLAUDE.md duplicate numbering in Important Conventions
  • Cleaned up stale TODO section (removed already-completed items)
  • Fixed changelog timezone labels from AST to CT across all entries
3
App
8
Website
11changes shipped

v1.1.6

February 14, 2026 - 5:10 PM CTClearance+62 / -26
AppAppWebsite
App

App Store Compliance

6 changes
  • Removed 'Suscripciones disponibles próximamente' (coming soon) from paywall — replaced with retry button
  • Replaced 'Beta Gratuita' in profile with dynamic plan display (Plan Gratuito / Comi.AI Pro)
  • Added 'Mejorar a Pro' upgrade button for free-tier users in profile subscription section
  • Replaced unverifiable '50,000+ latinos' social proof with factual '2,000+ platos latinos' on welcome and paywall
  • Fixed recalculateTargets not awaited in profile weight save (same bug fixed earlier in edit-profile)
  • Cleaned up unused paywall styles (priceCardDisabled, priceBadgeComingSoon)
App

Store Asset Fixes

3 changes
  • Fixed wrong domain in Google Play description and privacy labels (comi-ai.com → comiai.co)
  • Fixed contact email across store assets (hello@comi-ai.com → hola@comiai.co)
  • Updated whats_new.txt from v1.0 placeholder to v1.1.5 stability fixes
Website

Changelog Fix

1 changes
  • Fixed timezone labels on all 25 changelog entries to CT (America/Chicago)
6
App
3
App
1
Website
10changes shipped

v1.1.5

February 14, 2026 - 4:05 PM CTFortress+95 / -30
App
App

Stability Round 2 — Deep Audit Fixes

13 changes
  • Realtime subscription now shows error state instead of infinite loading spinner
  • Food items fetch returns early on error (no longer displays stale data)
  • Weight validation uses isNaN() guard instead of falsy check
  • Building plan param parsing is NaN-safe with fallback defaults
  • getCurrentUserId wrapped in try/catch for network error resilience
  • Achievements screen no longer gets stuck loading if stats fetch fails
  • Search now saves fiber_g when logging food from the database (was silently dropping fiber data)
  • Food items insert error in search is now properly caught and reported
  • Weight save order fixed: profile updates before weight log insert
  • Weight validation enforces isNaN + upper bound (500kg)
  • RPC errors in deleteMeal and relogMeal are now checked and logged
  • Alert import moved to top-level in building-plan (was dynamic require in catch)
  • recalculateTargets is now awaited before navigating back in edit-profile
13
App
13changes shipped

v1.1.4

February 14, 2026 - 2:30 PM CTSentinel+223 / -103
App
App

Bug Sweep — Full Codebase Audit (15+ Fixes)

14 changes
  • CRITICAL: Food items now inserted BEFORE meal is marked complete (prevents empty meal cards)
  • RevenueCat now checks both 'pro' and 'family' entitlements with optional chaining
  • Camera upload has 30-second timeout with proper abort handling
  • Quick-add protected against double-tap race condition and null values
  • Deep links preserve /camera route correctly on cold start
  • Results screen null guards on delete and name validation
  • EditableFoodItem resets isCommitting lock after errors (prevents permanent edit lock)
  • FoodItemRow and ShareMealCard use null coalescing for macro values
  • feedbackStore handles null count without showing NaN
  • reviewPrompt validates parseInt result before date comparison
  • AI food item names are trimmed of whitespace before storing
  • New green laser scan animation on camera screen
  • Redesigned app icon with bold centered 'C.'
  • gestureEnabled on camera modal for swipe-to-dismiss
14
App
14changes shipped

v1.1.3

February 14, 2026 - 1:00 PM CTBastion+580 / -210
AppApp
App

Stability & Accessibility

13 changes
  • Fixed water tracker race condition with serialized operations (waterPending lock)
  • Fixed daily log duplicate key crash (handles 23505 error with re-fetch)
  • Fixed false redirect to onboarding on network errors (fetchError flag in profileStore)
  • confirmMeal now batch-inserts food items instead of individual inserts in a loop
  • Daily logs use correct dates from meal's logged_at when confirming/deleting
  • Custom slider now supports drag gesture via PanResponder (was tap-only)
  • Paywall close button enlarged to 44x44 with hitSlop for accessibility
  • Account deletion handles errors per cascade step (was silently ignoring failures)
  • Profile version now dynamic from expo-constants (was hardcoded v1.0.0)
  • Accents corrected in onboarding screens (cuánto, cuál)
  • Age and height validation in edit-profile (bounds checking, NaN guard)
  • Building-plan shows error Alert if profile creation fails
  • WCAG accessibility labels added to results, search, profile, and paywall screens
App

Additional Fixes

7 changes
  • Manual entry validates meals have >0 calories before saving
  • Sharing null guard prevents crash on undefined food items
  • Onboarding paywall shows error state on network failure (was infinite spinner)
  • FoodItemRow stale edit state reset when item prop changes
  • History screen refreshes date string across midnight via useFocusEffect
  • Achievements query limited to 90 daily_logs (was unbounded)
  • Edge function accent fix: 'vacía' spelling corrected
13
App
7
App
20changes shipped

v1.1.2

February 14, 2026 - 12:29 PM CTIronside+400 / -125
AppApp
App

Critical Bug Fixes (22 Bugs Resolved)

11 changes
  • CRITICAL: Fixed data leak — all Zustand stores now reset on sign-out (previously only auth store cleared, leaking previous user data)
  • CRITICAL: Fixed 30-second camera freeze — navigation to results now fires immediately instead of awaiting edge function response
  • CRITICAL: Fixed daily log upsert resetting water_glasses to 0 — now checks for existing row before upserting
  • CRITICAL: confirmMeal and deleteMeal now properly update daily totals via RPC call
  • CRITICAL: Account deletion now removes ALL user data (meals, food_items, daily_logs, weight_logs, feedback, corrections, favorites) before profile
  • Fixed dev email sign-in routing — now navigates correctly after successful login
  • Fixed Terms and Privacy links on sign-in screen (onPress handlers were missing)
  • Fixed entry point flash — index.tsx defers routing to _layout.tsx instead of routing based on unloaded state
  • Fixed gallery picker crash — added null guard for cancelled image selection
  • Fixed AI response validation — recalculates totals from items instead of using || operator (which fails on zero values)
  • Added Stack.Screen registration for changelog route in root layout
App

UX & Error Handling Improvements

11 changes
  • Dashboard loadData wrapped in try/catch to prevent crash on network failure
  • Paywall shows 'Suscripciones disponibles proximamente' when RevenueCat not configured
  • Loading guard fix in profileStore and weightStore — removed overly aggressive concurrent call blocking
  • Scan count filter now includes end-of-day boundary (was missing meals logged late in the day)
  • Text overflow handling for large calorie numbers on dashboard
  • Error banner with retry UI on history screen when dayError occurs
  • Search screen error state with retry banner
  • Weight history: initial loading state, error banner, KeyboardAvoidingView on modal
  • Photo gallery: error state screen with retry button
  • Favorites: differentiated error messages, increased safe area padding
  • MealCard: numberOfLines and adjustsFontSizeToFit for calorie overflow
11
App
11
App
22changes shipped

v1.1.1

February 14, 2026 - 12:11 PM CTLaunchpad+1,077 / -603
AppWebsiteWebsiteInfrastructure
App

Production Polish & Accessibility

10 changes
  • 200+ Spanish diacritical mark fixes across 25 files (all user-facing text)
  • WCAG AA accessibility labels on all interactive elements across all screens
  • 44pt minimum touch targets on all buttons, chips, and toggles (Apple HIG)
  • Haptic feedback on chip selections, toggles, and food item interactions
  • Loading state added to weight history screen
  • Removed 5 debug console.log statements from notifications.ts
  • Comprehensive README.md with architecture docs, getting started guide, and screenshots
  • App Store and Play Store descriptions improved for ASO (keyword optimization)
  • Privacy labels JSON fixed: correct bundle ID, accurate SDK declarations, complete data categories
  • .gitignore hardened: added .claude/, .codex-reviews/, *.log patterns
Website

SEO & Performance

9 changes
  • JSON-LD structured data: Organization, WebApplication, FAQPage, WebSite schemas
  • LazyMotion provider reduces framer-motion bundle by ~10KB
  • Dynamic imports for 6 below-fold sections (code splitting)
  • Blog SEO: BlogPosting schema, BreadcrumbList, keywords, articleSection on all 10 posts
  • PWA manifest.json for mobile browser installability
  • Security headers: HSTS, X-Frame-Options, Permissions-Policy, nosniff
  • OG image PNG generated (1200x630) + apple-touch-icon.png (180x180)
  • Admin security hardened: timing-safe comparison + rate limiting (5 fails/5min)
  • Removed 3 unused CSS utility classes from globals.css
Website

Web App Hardening

8 changes
  • Error boundary pages: error.tsx, global-error.tsx (Spanish, dark theme)
  • Root loading state with spinner
  • Migrated middleware.ts to proxy.ts (Next.js 16 convention)
  • Smoke tests expanded: 7 routes with auth-aware status validation
  • Pre-deploy gate: 7 checks (was 3) — added version consistency, secrets scan, .env check
  • Deploy scripts standardized across all 3 projects with changelog + version bump
  • Meal sharing page fixed: server-side Supabase client bypasses RLS for public pages
  • Spanish accent fixes: 37 corrections across 7 webapp files
Infrastructure

Infrastructure & DevOps

6 changes
  • GitHub repos created: testedmedia/comi-ai, comi-ai-webapp, comi-ai-website
  • All 3 projects pushed to GitHub with full history
  • Vercel Analytics + Speed Insights added to marketing website
  • CHANGELOG.md created for webapp and website projects
  • .gitignore standardized across all 3 projects
  • Codex 5.3 code review gate on every push (all PASS, 0 issues)
10
App
9
Website
8
Website
6
Infrastructure
33changes shipped

v1.0.9

February 14, 2026 - 10:15 AM CTIronclad+745 / -254
AppAppAppWebsite
App

Performance & Stability Overhaul

10 changes
  • Race condition protection in mealsStore, dailyStore, and historyStore using version counters — prevents stale API responses from overwriting fresh data
  • Optimistic updates with revert pattern in profileStore, favoritesStore, and dailyStore water tracker
  • Concurrent fetch guards across all 8 Zustand stores to prevent duplicate API calls
  • Auth store: cleanup on unmount, double-init prevention, proper SIGNED_OUT handling
  • Feedback store: parallelized 3 sequential Supabase queries with Promise.all (3x faster stats load)
  • Weight store: profile weight auto-syncs when most recent weight log is deleted
  • Shared singleton skeleton animation — was running 20+ independent JS animation loops on dashboard, now shares one
  • EditableFoodItem: React.memo wrapper, double-commit guard (onSubmitEditing + onBlur race), keyboard dismiss on cancel
  • MealCard: memoized callbacks and computed values, individual Zustand selectors instead of full store subscription
  • NetworkBanner: animation completes before unmount, timeout cleanup, polling reduced from 4s to 10s
App

Crash Prevention

9 changes
  • Root layout: parallel init (analytics + purchases), cancellation flags on all async useEffects, auth error recovery
  • Dashboard: memoized meal filtering, selective store subscriptions, streak animation cleanup on unmount
  • Camera: isMountedRef prevents state updates after unmount, blob memory leak fix, working Promise.race timeout (was broken AbortController)
  • Results screen: initial loading spinner, null-meal safety guard, UUID validation before Supabase queries
  • Paywall: try-catch on purchase/restore, offerings error state with retry button, double-tap prevention
  • Building-plan: useRef guard prevents double profile creation in StrictMode
  • History: memoized MacroPie with React.memo, stabilized useFocusEffect with refs
  • Search: debounce timer cleanup on unmount, removed dead Supabase RPC query, added error handling
  • Profile: loading state while fetching, fixed useEffect dependency array
App

AI & Data Hardening

6 changes
  • AI response validation: clamps negative calories/macros to 0, recalculates NaN totals from items, defaults confidence to MEDIUM
  • Calorie calculations: safePositive guards on BMR/TDEE/macros, sane defaults for edge cases (min 800 kcal BMR, min 20kg weight)
  • Offline queue: per-item error handling — failed meals no longer block the entire queue (poison pill fix)
  • Notifications: isolated try-catch for token retrieval and DB save, projectId guard, NaN input safety
  • Supabase client: AppState auto-refresh (fixes stale JWT after backgrounding), realtime rate limiting (2 events/sec)
  • RevenueCat log level set to WARN in production, DEBUG only in __DEV__
Website

Waitlist & Infrastructure

6 changes
  • Fixed waitlist signup form: API routes now use service role key to bypass RLS for count queries — position was always showing #0
  • Updated Supabase anon key on Vercel from placeholder format to real JWT key
  • Added SUPABASE_SERVICE_ROLE_KEY to Vercel production environment
  • Removed hardcoded placeholder anon key from lib/supabase.ts
  • Fixed changelog timestamps: corrected timezone labels from EST to CT
  • Deployed v1.0.9 with full smoke test verification (6/6 routes passing)
10
App
9
App
6
App
6
Website
31changes shipped

v1.0.8

February 14, 2026 - 9:24 AM CTBulletproof+193 / -43
AppAppAppAppWebsite
App

Deep Link Routing & Validation

4 changes
  • Deep link routing: created /meal/[id] redirect route for Universal Links and Android App Links from comiai.co/meal/ URLs
  • Fixed cold-start deep links being overwritten by auth routing: deep link screens now persist through auth flow
  • UUID validation: new validation utility prevents Postgres errors from invalid IDs in results and shared-meal screens
  • Invalid meal IDs now show a full-screen Spanish error with 'Ir al inicio' button instead of crashing
App

Paywall & Subscription Fixes

4 changes
  • Fixed critical onboarding paywall bug: failed purchases no longer silently navigate user forward as if they subscribed
  • Fixed operator precedence bug in annual price calculation: was showing full annual price as monthly price
  • Purchase result now distinguishes between success, user cancellation, and payment error for proper UX branching
  • Fixed 'ano' to 'año' in subscription period text across both paywalls
App

Weekly Report & Profile

3 changes
  • Weekly report: added error state with Spanish retry button when data fails to load
  • Weekly report: added empty state for weeks with zero tracked days instead of showing blank charts
  • Edit profile: disabled Cancel button during save to prevent race condition and data loss
App

Store Hardening

2 changes
  • Error handling hardened across 6 Zustand stores: dailyStore, favoritesStore, feedbackStore, historyStore, mealsStore, weightStore
  • All Supabase query results now checked for errors before use
Website

API Error Handling

4 changes
  • waitlist-count: returns 502 on Supabase error instead of fake 200 with count: 0
  • waitlist: added JSON parse error handling for malformed request bodies
  • admin/kpi: added non-JSON response handling for Supabase proxy errors
  • WaitlistCounter: checks res.ok before using response, no more false zero counts when backend is down
4
App
4
App
3
App
2
App
4
Website
17changes shipped

v1.0.7

February 14, 2026 - 9:19 AM CTResilient+114 / -33
AppApp
App

Keyboard & Input Polish

3 changes
  • Added keyboardDismissMode='on-drag' to home dashboard, search, and manual entry screens
  • Error retry banner on home screen when data fails to load
  • Pull-to-refresh on loading skeleton state (not just loaded state)
App

Error Alerts & Retry Logic

2 changes
  • Results screen: Spanish error alerts when meal or food items fail to load with Retry/Back options
  • Network error handling improved across all API-dependent screens
3
App
2
App
5changes shipped

v1.0.6

February 14, 2026 - 9:15 AM CTUX Polish+80 / -5
App
App

Pull-to-Refresh & Empty States

3 changes
  • Added RefreshControl to food database search screen
  • Added empty state to achievements screen when no achievements unlocked
  • Haptic feedback: hapticLight on gallery select in camera, hapticSuccess on food item edit save, hapticHeavy on swipe-to-delete
3
App
3changes shipped

v1.0.5

February 14, 2026 - 9:13 AM CTError Proof+79 / -51
App
App

Error Handling Hardening

4 changes
  • 12 unchecked Supabase errors fixed across 4 stores: mealsStore (7), dailyStore (1), profileStore (2), feedbackStore (2)
  • confirmMeal: wrapped all .update/.delete/.insert/.rpc calls in error checks
  • getTodayScanCount: wrapped in try/catch to prevent dashboard crash
  • Onboarding age validation: max age increased from 100 to 120
4
App
4changes shipped

v1.0.4

February 14, 2026 - 9:09 AM CTPerformance+102 / -26
App
App

Performance & Accessibility

3 changes
  • React.memo applied to CalorieRing, MacroBar, MealCard, FoodItemRow to prevent unnecessary re-renders
  • Spanish accessibility labels on CalorieRing, MacroBar, MealCard, WaterTracker, and camera screen
  • Centralized App Store and Play Store URLs in constants.ts, updated 4 files
3
App
3changes shipped

v1.0.3

February 14, 2026 - 9:05 AM CTFortified+89 / -12
AppBackend
App

Bug Fixes

2 changes
  • FoodItemRow: fixed 0-value bug where setting calories to 0 would revert to previous value (parseInt || fallback pattern)
  • NetworkBanner: wired up offline queue with full upload flow (blob fetch, storage upload, meal insert, edge function call)
Backend

Security Hardening

4 changes
  • Edge function: added JWT authentication verification, unauthenticated calls return 401
  • Edge function: rate limiting now fails closed on database errors instead of allowing unlimited requests
  • Waitlist RLS: restricted from public read to own-entry-only (email matches auth JWT)
  • Service role key bypass preserved for internal accuracy testing scripts
2
App
4
Backend
6changes shipped

v1.0.2

February 14, 2026 - 8:41 AM CTData Driven+745 / -623
BackendInfrastructure
Backend

AI Accuracy Pipeline

6 changes
  • Built accuracy test harness: uploads real food photos, calls Claude Vision edge function, and compares AI nutritional estimates against the verified food database
  • Created test manifest generator: selects 260 representative dishes across 9 countries with weighted distribution (MX 60, CO 60, ES 40, VE 40, AR/PE 15 each, CL/EC/GT 10 each)
  • Built autocorrect rule generator: analyzes accuracy gaps and outputs SQL rules (multiply, add, replace) with deduplication and confidence scoring
  • 6 KPI SQL views deployed to production: kpi_overview, kpi_users_by_country, kpi_meals_by_day, kpi_waitlist, kpi_ai_accuracy, kpi_autocorrect_effectiveness
  • get_admin_kpi() RPC function with SECURITY DEFINER for real-time admin dashboard data
  • KPI CLI report script: instant terminal dashboard for users, meals, waitlist, AI accuracy, autocorrect stats, and food database coverage
Infrastructure

Production Infrastructure

3 changes
  • Applied 010_kpi_views.sql migration to production database
  • Admin dashboard verified end-to-end: comiai.co/admin returns live KPI data
  • 4 new automation scripts (1,763 total lines): accuracy-test.js, generate-rules-from-tests.js, generate-test-manifest.js, kpi-report.js
6
Backend
3
Infrastructure
9changes shipped

v1.0.1

February 14, 2026 - 8:33 AM CTHardened+265 / -104
AppBackendWebsite
App

Critical Bug Fixes

6 changes
  • Fixed timezone bug across entire app: replaced 10 instances of UTC date calculation with local timezone across 7 files (dailyStore, mealsStore, historyStore, favoritesStore, exportData, MealCard, manual-entry)
  • Fixed CalorieRing and MacroBar division by zero crash when daily targets are not yet configured
  • Fixed realtime Supabase subscription: re-fetches meal with food_items join instead of using bare payload (which was missing nutritional data)
  • Fixed deleteMeal: now captures meal reference before deletion, validates Supabase response, and refreshes daily log totals
  • Fixed fetchTodayMeals: filters by status='complete' so in-progress and errored meals don't appear in dashboard
  • Added Ecuador (EC) and Guatemala (GT) to Country type with localized meal schedules
Backend

Edge Function Stability

2 changes
  • Fixed base64 OOM crash on large images: replaced single String.fromCharCode(...) call (which overflows the call stack) with chunked 8KB loop
  • Deployed patched edge function to production
Website

Security Hardening & SEO

8 changes
  • Added 6 security headers: Strict-Transport-Security, X-Frame-Options DENY, X-Content-Type-Options nosniff, X-XSS-Protection, Referrer-Policy strict-origin-when-cross-origin, Permissions-Policy (camera/microphone/geolocation blocked)
  • Removed fake structured data: removed fabricated 4.8/5 aggregate rating and non-existent SearchAction schema
  • Secured admin API: removed query parameter auth fallback that could leak secrets in URLs, server logs, and referrer headers
  • Added noindex/nofollow metadata to admin pages
  • Added /admin/ to robots.txt disallow list
  • Fixed Spanish accents in OpenGraph and Twitter card images
  • Created public changelog page at /changelog
  • Expanded smoke test suite from 3 to 6 routes
6
App
2
Backend
8
Website
16changes shipped

v1.0.0-beta

February 14, 2026 - 1:26 AM CTLaunch Ready+5,223 / -15
BackendInfrastructure
Backend

AI Learning Engine

6 changes
  • User correction tracking system: captures structured diffs when users edit AI-generated food items (field, old value, new value, timestamp)
  • Autocorrect rules engine: 70 hand-tuned rules for LATAM cuisine applied during AI analysis with confidence scoring
  • generate_autocorrect_rules() batch RPC: aggregates correction patterns and auto-generates new rules above confidence threshold
  • Confidence-based UI badges: shows users when autocorrect rules were applied to their analysis
  • Admin KPI dashboard: real-time business metrics via SECURITY DEFINER RPC function
  • Affiliate tracking table with revenue attribution and commission calculations
Infrastructure

Database & Migrations

4 changes
  • Migration 008: user_corrections table, autocorrect_rules table, learning engine RPCs, indexes for pattern matching
  • Migration 009: Seeded 70 autocorrect rules covering calorie and macro adjustments for top dishes across 9 countries
  • Migration 010: KPI analytics views for admin dashboard
  • Row Level Security policies for corrections and rules tables
6
Backend
4
Infrastructure
10changes shipped

v0.9.0

February 13, 2026 - 11:33 PM CTFinal Polish+2,150 / -1,614
App
App

UI Polish & Enhancements

8 changes
  • Edit profile screen with avatar, display name, country, and goal editing
  • Redesigned tab bar with custom icons and active state animations
  • Dashboard layout enhancements: improved spacing, card hierarchy, and visual rhythm
  • Onboarding display name collection screen
  • Polished favorites screen with improved card layout and empty states
  • Enhanced weekly nutrition report with macro trend charts
  • Achievements screen with unlocked/locked states and progress indicators
  • Photo gallery screen: browse all meal photos in a masonry grid with date grouping
8
App
8changes shipped

v0.8.0

February 13, 2026 - 11:00 PM CTProduction Ready+413 / -38
App
App

Reliability & UX

9 changes
  • Auth guard: redirects unauthenticated users to sign-in, prevents accessing protected screens without session
  • Meal deletion with confirmation dialog, optimistic UI update, and daily log recalculation
  • Relative time display on meal cards (e.g., 'hace 2 horas' instead of raw timestamp)
  • Pull-to-refresh on home dashboard, history, and favorites screens
  • Macro pie chart visualization on daily summary
  • Haptic feedback on key interactions (meal logged, achievement unlocked, streak milestone)
  • Offline action queue: queues mutations when offline, replays on reconnect
  • Daily summary card: shows calories remaining, macros hit, and streak status
  • Invite friends screen with referral link sharing
9
App
9changes shipped

v0.7.0

February 13, 2026 - 10:49 PM CTEngagement+2,420 / -155
App
App

Retention Features

8 changes
  • Favorites system: save and re-log previous meals with one tap
  • Manual meal entry: add meals without a photo using food database search
  • Quick-add shortcut: log water, snacks, or simple items without full camera flow
  • Streak celebration animations: confetti and milestone badges at 3, 7, 14, 30, 60, 90, 365 days
  • Nutrition goals editor: customize daily calorie and macro targets beyond auto-calculated values
  • Achievements and badges system: 15+ unlockable achievements (first meal, streak milestones, macro targets hit, weight goals)
  • Terms of Service screen with Spanish legal text
  • CSV data export: download all meals, daily logs, and weight history
8
App
8changes shipped

v0.6.0

February 13, 2026 - 10:25 PM CTIntelligence+1,307 / -147
AppBackend
App

AI Feedback System

3 changes
  • Meal feedback component: 5-star rating with structured correction categories
  • Structured feedback categories: wrong dish, wrong portion, wrong calories, wrong macros, extra item, missing item
  • Feedback state management with Zustand store
Backend

AI Accuracy Improvements

4 changes
  • Redesigned Claude Vision prompt with country-aware portion estimation and LATAM-specific food recognition
  • Edge function hardening: input validation, timeout handling, error recovery, retry logic
  • meal_feedback table with RLS policies and foreign key to meals
  • Migration 006: meal_feedback schema
3
App
4
Backend
7changes shipped

v0.5.0

February 13, 2026 - 10:12 PM CTGrowth Engine+4,068 / -330
AppWebsite
App

Growth & Discovery Features

10 changes
  • Deep link routing: shared meal URLs open directly in the app with fallback to web preview
  • Push notification system: configurable meal reminders for breakfast, lunch, and dinner
  • PostHog analytics integration: screen views, meal logging events, onboarding funnel tracking
  • Food database search with filters by country and category
  • Meal photo gallery: visual history of all logged meals
  • Weekly nutrition report: 7-day calorie and macro summary with trends
  • Avatar upload with image cropping and Supabase Storage
  • Custom splash screen with brand animation
  • Free scan limit (2 free AI scans before paywall) with remaining count display
  • App Store and Play Store screenshot set (6 screenshots per platform)
Website

SEO & Deep Links

5 changes
  • Deep link pages for shared meals: /meal/[id] with nutritional preview and app download CTA
  • Dynamic OpenGraph images with meal photo and nutritional summary
  • Twitter card images with Spanish copy
  • Legal page redirects: /privacidad and /terminos
  • Improved SEO metadata across all pages
10
App
5
Website
15changes shipped

v0.4.0

February 13, 2026 - 9:53 PM CTSocial+753 / -0
App
App

Sharing & Polish

4 changes
  • Social sharing: generate and share styled meal cards to Instagram, WhatsApp, and other apps
  • Haptic feedback engine: configurable patterns for success, warning, and error states
  • App Store review prompt: intelligent timing based on meals logged and streak length
  • Onboarding flow polish: improved transitions, progress indicators, and copy refinements
4
App
4changes shipped

v0.3.0

February 13, 2026 - 9:46 PM CTDeep History+1,667 / -8
App
App

History & Editing

9 changes
  • Weight history screen: SVG line chart with target weight reference line, pinch-to-zoom, and date range selection
  • Add and delete weight log entries with optimistic UI updates
  • Inline meal editing: tap any food item field (name, portion, calories, protein, carbs, fat) to edit in-place
  • Swipe-to-delete on individual food items within a meal
  • user_edited flag on modified food items for learning algorithm input
  • History calendar: horizontal week strip with 12-week paging
  • Green dot indicators on calendar days that have logged meals
  • Day detail view with calorie summary card and macro breakdown
  • Loading skeleton system: base shimmer component with DashboardSkeleton, SkeletonLine, SkeletonCircle, and SkeletonCard variants
9
App
9changes shipped

v0.2.0

February 13, 2026 - 9:33 PM CTBattle Tested+455 / -241
App
App

P0/P1 Bug Fixes

6 changes
  • Fixed auth session persistence: app no longer logs users out on cold start
  • Fixed camera permissions flow: proper handling of denied/restricted states with Settings redirect
  • Fixed meal logging race condition: prevented duplicate food_items on slow network
  • Fixed daily log aggregation: calories and macros now recalculate correctly after meal edits
  • Fixed onboarding flow navigation: prevented back-swipe from skipping required screens
  • Fixed Supabase realtime subscription lifecycle: proper cleanup on unmount
6
App
6changes shipped

v0.1.0

February 13, 2026 - 5:17 PM CTGenesis+29,658 / -110
AppBackendWebsiteInfrastructure
App

Complete Mobile App

15 changes
  • 40-screen React Native app built with Expo SDK 54 and TypeScript
  • 16-screen onboarding flow: welcome, gender, goal, age, height, current weight, target weight, activity level, dietary preferences, tracking experience, referral source, building plan animation, plan ready, food demo, paywall
  • Apple Sign-In and Google Sign-In authentication with Supabase Auth
  • Camera screen with real-time photo capture and gallery picker via expo-camera and expo-image-picker
  • AI food analysis: photo upload to Supabase Storage, signed URL generation, Claude Vision API call via edge function
  • Results screen with per-item nutritional breakdown (calories, protein, carbs, fat, fiber, portion size)
  • Daily dashboard with circular SVG calorie ring, 4 macro progress bars, water tracker, and meal card feed
  • Food database search across 1,636 verified LATAM dishes with full-text Spanish search
  • Profile screen with subscription status, dietary info, and settings
  • Streak tracking with consecutive day calculation and daily reset
  • RevenueCat subscription integration: free tier (2 scans) and premium unlock
  • Offline connectivity detection with animated slide-in/out banner
  • React error boundary with Spanish retry UI and error reporting
  • Complete dark theme: #000000 background, #00D166 brand green, consistent across all 40 screens
  • 100% Spanish UI: every label, error message, placeholder, and notification is in Spanish
Backend

AI Engine & Database

8 changes
  • 800-line Supabase Edge Function: receives food photo, calls Claude Vision API with LATAM-optimized prompt, parses structured nutritional response, inserts food items, updates meal totals
  • 1,636 verified LATAM dishes in food_database across 9 countries (MX, CO, AR, ES, PE, CL, VE, EC, GT) with calories, protein, carbs, fat, fiber, and portion sizes
  • PostgreSQL schema: 10 tables (profiles, meals, food_items, daily_logs, weight_logs, food_database, waitlist, meal_feedback, user_corrections, autocorrect_rules)
  • Row Level Security on every table: users can only read/write their own data
  • upsert_daily_log() RPC: recalculates daily calorie and macro totals from individual meals
  • update_streak() RPC: calculates consecutive logging days with timezone-aware date boundaries
  • Supabase Storage bucket: food-photos with 5MB limit, JPEG/PNG/WebP support, signed URL generation
  • Full-text search index on food_database.name_es for Spanish dish name search
Website

Marketing Website

14 changes
  • Next.js 16 marketing site deployed on Vercel at comiai.co
  • Landing page with 9 animated sections: hero, app preview, features grid, how it works, supported countries, pricing, social proof, final CTA, footer
  • Animated phone mockup showing app UI with auto-rotating screen previews
  • Waitlist signup form with email validation, duplicate detection, and real-time error messages in Spanish
  • Live waitlist counter: displays current signup count with auto-refresh
  • Automated welcome emails via Resend API from hola@comiai.co
  • 10 SEO-optimized blog articles: calorie counting guides, app comparisons, LATAM nutrition content
  • Download redirect page with iOS/Android platform detection
  • Privacy policy and Terms of Service in both Spanish and English
  • App design preview pages for stakeholder review
  • 23 total web pages with full SEO metadata, OpenGraph, and Twitter cards
  • Sitemap.xml and robots.txt for search engine indexing
  • 4 HTML email templates: welcome, launch announcement, streak reminder, weekly report
  • Mobile-responsive design optimized for 375px and up
Infrastructure

Infrastructure & DevOps

9 changes
  • Supabase project with PostgreSQL database, Auth, Storage, Edge Functions, and Realtime
  • 13 database migrations covering schema, seed data, policies, and analytics views
  • 2,490 lines of SQL across migrations
  • EAS Build configuration: development (simulator), preview (internal testing), and production profiles
  • Pre-deploy script: TypeScript compilation check, production build verification, and lint validation
  • Post-deploy smoke test automation: validates all critical routes and API endpoints
  • Deploy pipeline script with version tagging, pre-checks, Vercel deployment, and post-deploy QA
  • PostHog analytics pipeline for event tracking and funnel analysis
  • RevenueCat subscription pipeline for iOS and Android in-app purchases
15
App
8
Backend
14
Website
9
Infrastructure
46changes shipped

More updates coming soon. Stay in the loop.

Join the waitlist