What's new
Currently running version 0.3.0
0.3.0
2026-06-04- Save every recipe from a multi-recipe source (cookbook-spread photos, Instagram carousels)
- Add feedback — general (Settings) and recipe 'Not quite right?'
- Show fusion and broad-region cuisines (e.g. Italian inspired, Asian) in Browse by cuisine
- Add the extracted recipe and transcript to the shareable debug log
- Keep prepped ingredients grouped with the recipe component they're cooked into
- Show a spinner on the share button while a link is being generated
- Assign changelog beta numbers at build-cut time instead of guessing them per branch
- Backfill explicit change types onto historic changelog entries
- Keep ingredients seen in the video when merging in a recipe from the web
- Stop recipe thumbnails being swapped for a worse video frame
- Use a sharper, full-quality video frame for recovered thumbnails
0.2.0
2026-06-03- Add in-app version display and changelog
0.1.0
2026-06-02- Initial project with recipe generation by CLI
- Add tanstack start app, add db
- Add script to download, refresh and upload instagram cookies
- Change to web client
- Change style, extract author
- If instagram recipe suggests there is a link to follow for more info, read the recipe from the link
- Use /author/slug as urls
- Add author page, extract image from instagram
- Redesign UI, add logo
- Extra insta thumbnails to cloudinary
- Add structured timings and descriptions to recipes
- Show active time + rest time separately on recipe cards
- Improve instagram user id
- Add conditional video frame analysis with Claude Vision
- Add GitHub Action to deploy worker to Fly.io
- Restructure database to separate source tables and add community tips
- Run vercel link from repo root with scope flag
- Run vercel commands from repo root where .vercel exists
- Add VERCEL_ORG_ID and VERCEL_PROJECT_ID to all vercel steps
- Simplify env sync script to avoid quote escaping issues
- Strip quotes from FLY_API_TOKEN when extracting from env file
- Use vercel env run for flyctl auth in sync step
- Add sync-fly-secrets.sh script and use vercel env run
- Extract FLY_API_TOKEN from env file in sync script
- Use vercel env run for FLY_API_TOKEN injection
- Update page layout on mobile
- Tweak secret set logic
- Monorepo
- Add service layer, REST API, and api-client (Phase 2)
- Add Expo mobile app (Phase 3)
- Add native features and update docs (Phase 4)
- Add mobile logo, add share
- Add ingredient amounts toggle to method steps
- Add real-time extraction progress tracking
- Remove duplicate ShareExtension config from app.json
- Move extraction progress route to /recipes/extracting/$id
- Move worker callback URL to env var, show extraction errors
- Restore Nitro API route discovery on Vercel
- Allow re-extraction of failed recipes without force flag
- Route all website extractions through Claude for ingredient markers
- Add auth scaffold with better-auth, magic link, and saved recipes
- Increase Claude max_tokens to prevent truncated recipe extraction
- Add missing auth-fns module for Vercel build
- Add auth UI for web and mobile
- Deduplicate react versions in yarn.lock
- Handle auth check errors gracefully to prevent 500s
- Upgrade Zod to v4 and add try-catch to /add route guard
- Add text input mode for manually adding recipes
- Add step-splitting instructions to all recipe extraction prompts
- Add StepTimer type and timer parsing utility
- Add re-scan button on recipe pages for admin testing
- Always navigate to extraction progress page on re-scan
- Add recipe step timers with multi-timer UI
- Use sourceUrl for re-scan and exclude text recipes
- Show re-scan button for all recipe types including text
- Add YouTube as a direct recipe source
- Add Deno runtime and cookies for YouTube yt-dlp extraction
- Add Instagram → YouTube enrichment for recipes
- Add user icon dropdown menu with Manage Account page
- Upload website recipe images to R2 for reliable hosting
- Add user recipes system with My Recipes page, community recipes, and mobile tab
- Add contextual extraction error messages and missing-quantities warnings
- Ensure Nitro outputs to .vercel/output for reliable Vercel builds
- Rename My Recipes to Saved Recipes with uploaded-by-me filter
- Make recipe timers persistent and sleep/lock resilient
- Add GitHub workflow to sync database schema to Turso on merge
- Add recipe save/bookmark feature across web and mobile
- Track worker version on recipes and add re-extract flow
- Add --force flag to drizzle-kit push for non-interactive CI
- Add video ingredient detection fallback using YOLOv8 via Roboflow
- Add "watch the video" fallback when method is missing
- Fix saved recipes not showing until page refresh
- Add self-hosted inference worker for video ingredient detection
- Add Google and Apple OAuth sign-in (web + mobile)
- Add shared ingredients foundation: RelatedRecipe type and normalizeIngredientName util
- Add canonical ingredient matching for related recipes feature
- Add recipe tags extraction during ingestion
- Add recipe search endpoint with text, duration, and author filters
- Filter listing endpoints to only return complete recipes
- Add sourceType filter to recipe search endpoint
- Add ingredient filter to recipe search endpoint
- Add tags UI display and filtering across web and mobile
- Wire up search endpoint across web and mobile
- Use correct Fly.io token for inference worker deployment
- Add tag filter to recipe search API
- Add ingredientMatch=any mode to search endpoint for OR-based ingredient filtering
- Add recipe_tags lookup table for indexed tag queries
- Merge duplicate searchRecipes into single method
- Add late-night time-based greetings to mobile home screen
- Add cross-platform creator tracking with worker URL lookup
- Always transcribe YouTube Shorts like Instagram reels
- Add dark mode palette, mockups, and color tokens
- Implement warm linen redesign with dark mode support
- Auto-fill recipe title from first line of body text
- Redesign recipes page with browse-by-category layout
- Add recipe visibility (public/private) with text recipes defaulting to private
- Add recipe sharing — grant other users access to private recipes
- Add share acceptance flow with UI for private recipe sharing
- Add share-by-link for private recipes
- Add sharing docs and update CLAUDE.md with deployment note
- Add About link to navigation that points to add recipe page
- Align web app with redesign mockups
- Sentence case tags, card stretch, filter tray improvements
- Migrate to React Query, add bookmarks, compact recipe hero
- Add permissions and branch protection guidance for CI push-back step
- Add recipe sharing on mobile, web skeleton polish, consistent tab headers
- Add optimistic updates for unsave bookmark
- Show error messages inline under form inputs instead of at card bottom
- Show raw error details instead of hiding them behind friendly messages
- Add Spotify & Apple Music playlist suggestions to recipe detail
- Add implementation plan for playlist suggestions feature
- Add implementation plan for Instagram cookies pipeline
- Add Instagram cookies pipeline with Turso DB storage
- Add script to export Instagram cookies from browser
- Add --help flag and env var validation to export-cookies
- Fix timer parsing decimal values like "2.5 hours" being read as 5 hours
- Support extracting recipes from any language
- Add mobile admin actions: re-extract and delete recipe
- Fix useCallback import and replace default React/TanStack favicon with app logo
- Add platform toggle and search query info icon to Cook to this section
- Fix iOS OTA updates not reaching the device
- Improve playlist search query prompt to reduce generic results
- Move [id].* routes to directory structure to fix routing conflict
- Fix black bar at top of recipe page by using floating header buttons
- Use multiple search queries for playlist suggestions (3 queries × 2 results)
- Add Core Concepts section to CLAUDE.md and README.md
- Refresh creator profile picture weekly and show on author pages
- Add admin cog button to recipe header
- Fix duplicate URL in mobile share sheet on iOS
- Extract user from get-session response
- Phase 1 foundation — shared DB package, new extraction stages, source detection
- Optimize extraction pipeline — direct DB, thumbnail-early, caption-first, ready status
- Add retry with backoff for yt-dlp/instaloader + mark failed cookies
- Only mark cookies expired after all retries are exhausted
- Add recipe_errors table and wire error logging across all pipeline stages
- Extraction progress stuck at last stage + UX improvements
- Comprehensive stage reporting gaps + display order
- Fix recipe extraction getting stuck by populating recipeReady field
- Add extraction source tracking to know where recipe data came from
- Show extraction source on recipe detail page
- Add floating extraction progress banner above tab bar
- Show extraction retry history and errors on progress page
- Add retry badges and error log to web extraction progress page
- Fix recipe JSON error by adding shared DB schema path to sync workflow
- Support multi-component recipes with grouped ingredients and steps
- Add recipe grouping support to all extraction prompts
- Skip HEAD reachability check for Instagram/YouTube URLs
- Add History screen with full recipe status tracking
- Show View recipe button on all completed extractions
- Fix N+1 query in getHistory, memoize styles in HistoryRow
- Fix notifications not firing while app is backgrounded during extraction
- Add History page to web app for feature parity with mobile
- Fix performance issues in history feature
- Strip curly apostrophes (U+2018, U+2019) in generateSlug
- Fix history screen filter tags expanding vertically
- Add admin all-users toggle to history screen
- Add user event tracking for all user-initiated actions
- Show relative timestamps on history rows
- Add twice-daily Instagram cookie health check
- Add docs/archive/features scaffold
- Add Playwright e2e tests against real backend
- Add Conductor scripts for setup and web dev run (#90)
- Keep screen awake on the recipe page (#94)
- Add per-user recipe notes (markdown) (#97)
- Image ingestion — save a recipe from a photo (#99)
- Copy-to-clipboard button on extraction error cards (#101)
- Add recipes library + share-links (1b of edit-recipe) (#104)
- Recipe library + share-link REST surface (PR 2 of edit-recipe) (#105)
- Show site as author for website recipes (#102)
- Show OAuth profile picture instead of letter avatar (#118)
- Hide failed extractions from the library list (#120)
- Fix clipped filter chip text on history screen (#122)
- Sort recipes by added date, edited date, or cook time (#125)
- Capture creator profile pictures during extraction (#126)
- Import recipes by sharing notes from iOS Notes (#127)
- Replace cookie pool with ScrapeCreators API (#130)
- Read Fly secret values from process env so Vercel sensitive vars sync (#131)
- Source SCRAPECREATORS_API_KEY from GitHub secrets (#133)
- Split recipe extraction into parallel body + meta Claude calls (#134)
- Include /recipes prefix in generated share URL (#135)
- Attribute retries to user, unify success/failure flow, fix chip alignment (#137)
- Prevent the same URL from being extracted twice concurrently (#139)
- Try website before video processing; hide tab bar on recipe page (#141)
- Global preference to display recipe quantities as written, metric, or imperial (#142)
- Add helper captions under unit preference options (#144)
- Preview shared recipe with floating accept pill instead of auto-claim (#145)
- Only fire recipe-ready push once extraction is complete (#146)
- Admin re-extract bypasses the worker's same-version guard (#148)
- Re-extract creates a new attempt and never loses the prior success (#150)
- Restore website enrichment + unblock canonical recipe URL previews (#154)
- Require all-or-nothing groups and show fallback header for orphans (#156)
- Add "Add to library" button on canonical recipe page (#157)
- Section-aware editing for ingredients & method steps (#159)
- Show "The Rest" ingredients after named sections (#161)
- Show "The Rest" method steps after named sections (#162)
- Shopping categories, method unit prefs, and hero pull-down reveal (#163)
- Show tracked-down website, prefer platform thumb, fall back on Claude failure (#164)
- Add "View activity" link from recipe options menu (#167)
- Add marketing ideas doc to track positioning angles (#140)
- Add temperature (C/F) and date format preferences (#170)
- Pinterest pins + Instagram→website cache pop fix (#169)
- Show subtle source-type icon on recipe cards (#171)
- Unstick image pins that stall past Vercel's 60s function cap (#173)
- Typed tag taxonomy, tag landing pages, tag-aware search (#175)
- Global timer bar, currently-cooking banner, fuzzy phrases (#174)
- Parallel image uploads, early reportReady, per-stage telemetry (#176)
- Defeat Pinterest login wall with crawler UA + fallbacks (#177)
- Auto-start cooking when a method step is ticked (#180)
- Per-ingredient recipe tags with per-user popularity ranking (#182)
- Fetch creator bio for "Recipe in my bio" reels + log routing decisions (#183)
- Mobile loading state + background Pinterest retry + extracting watchdog (#184)
- Drill-in resolves "All users" cards instead of 404ing (#185)
- Auto-fail extractions stuck for more than 15 minutes (#188)
- Set official tagline "The cookbook you've been writing all along." (#190)
- Match skeleton loader to saved viewMode (grid vs list) (#189)
- Parallel YouTube web search alongside bio fetch (#187)
- Add hot-path indexes + denormalize siteName onto recipe_extractions (#191)
- Add first-content-image fallback for image-less recipe pages (#194)
- Instant-render from cache + parallelize tag query (#196)
- Fix ingredient checkbox desync between Recipe/Shopping views; add dedup safety net (#204)
- Add app-wide error screens for web and mobile (#206)
- Make recipe cuisine tagging optional for fusion/generic dishes (#207)
- Short-circuit caption-complete reels, skip needless video pass (#205)
- Fix duplicate tag chips with split counts on Search (#208)
- Improve mobile recipe editing & share-accept UX (#211)
- Add time-based home rail; static cuisine heading; 3-up cuisine tiles (#212)
- Add "See what others are cooking" section to mobile creator page (#217)
- Fix blank creator avatars and add creator platform link tags (#218)
- Fix /api/recipes 500 on malformed stored tags (#222)
- Add merge-duplicate-recipes admin tool; show re-extract disabled with explainer (#224)
- Add TikTok as a first-class extraction source (#226)
- Add Remotion app-demo video for the website (#228)