Commit graph

33 commits

Author SHA1 Message Date
Chris
9c5eae20f2 Add POST /api/recipes/scan-photo endpoint for multimodal Gemini vision photo parsing 2026-11-01 12:50:26 -05:00
Chris
633eb4e63c Add persistent mobile tokens with idle sliding expiration and device revocation 2026-11-01 12:35:50 -05:00
Chris
e4b71fc5e4 feat: detect Facebook caption truncation, extract embedded Relay payloads, and pre-fill fallback modal 2026-11-01 11:35:38 -05:00
Chris
fc1fcbb535 feat: add Facebook Reels recipe extraction and social caption modal support 2026-11-01 11:28:53 -05:00
Chris
fe47950936 fix: increase Gemini AI Polish timeout from 15s to 60s 2026-11-01 02:54:45 -05:00
Chris
d848305355 style: position extraction, social import, and scan photo buttons below url input field 2026-11-01 02:40:38 -05:00
Chris
fa95266675 feat: add Instagram recipe scraping and caption extraction support 2026-11-01 02:23:16 -05:00
Chris
095bd54684 Add canonical base URL support via APP_URL, reverse proxy trust, and dynamic client configuration 2026-11-01 02:00:22 -05:00
Chris
eb1bae3b06 Exclude node_modules and data from Docker build context
Prevents host-built native modules (better-sqlite3) from overwriting the image's Linux build and keeps the live database/backups out of image layers.
2026-11-01 01:44:58 -05:00
Chris
454f676499 Update default model list from live API discovery and filter out TTS/music/agent models 2026-11-01 01:43:44 -05:00
Chris
ca6d9b2db6 Add direct Google API fallback for model discovery and graceful non-JSON handling 2026-11-01 01:29:15 -05:00
Chris
423334db4d Add structured logging (Pino), Docker log rotation, and OpenObserve + Fluent Bit observability stack
- logger.js: Pino JSON logger with console-style helpers and pino-http request logging (static assets skipped, headers not logged, secrets redacted)

- server.js: replace 89 console.* calls with log.info/warn/error; add request logging middleware

- docker-compose.yml: json-file rotation (10m x 5, compressed), LOG_LEVEL, 'forkfolio' log tag

- observability/: standalone OpenObserve + Fluent Bit stack routing tagged container logs to per-app streams

- .dockerignore: exclude observability stack from app image
2026-11-01 01:17:21 -05:00
Chris
311c03136c Support dynamic Gemini AI model selection with model discovery and default to gemini-2.0-flash 2026-11-01 01:44:40 -04:00
Chris
a098ea3bca Use local heuristic engine first for extraction and offer user-initiated AI Polish action 2026-11-01 01:22:40 -04:00
Chris
e283f238cc Enhance TikTok heuristic parser for unstructured single-line captions 2026-11-01 01:12:50 -04:00
Chris
36b8706548 Implement Option 1: TikTok caption recipe extraction with Gemini AI and heuristic parser 2026-11-01 01:05:19 -04:00
Chris
50b94bb190 Remove color gradients from buttons and hero heading text 2026-11-01 00:34:00 -04:00
Chris
a1a6637577 Apply Midnight Gastro-Bar theme with Savory Olive accent 2026-11-01 00:25:57 -04:00
Chris
c7fb78a139 fix: serve backup user inspection from metadata and avoid Google Drive quota bursts 2026-10-31 01:36:47 -04:00
Chris
c34ce4122b fix: include application/json Content-Type in getAuthHeaders for backup inspect and restore POST bodies 2026-10-31 01:25:20 -04:00
Chris
b44c4ba333 fix: eliminate Google Drive API burst rate-limit errors and cache inspected backup buffers 2026-10-31 01:20:11 -04:00
Chris
906d448dba feat: support selective single-user data restore from cloud and local backups 2026-10-31 01:06:07 -04:00
Chris
6e8e948ce1 feat: add live cloud backup scanner and one-click cloud restore modal for Google Drive and S3 2026-10-31 00:52:45 -04:00
Chris
12dbf04b8e feat: add one-click Google Drive authorization and folder picker with zero manual credential input 2026-10-31 00:40:59 -04:00
Chris
90373d3cc3 feat: add admin cloud and manual database backup and recovery console 2026-10-31 00:23:35 -04:00
Chris
01ed916a51 chore: add GEMINI.md workspace rule for automatic git commit and push 2026-10-29 17:56:30 -04:00
Chris
dc6f500045 feat: add multiple shareable shopping lists with smart consolidation toggle and default user setting 2026-10-29 17:46:43 -04:00
Chris
72b965743e fix: sticky mobile modal footer, inline copy feedback, and PerimeterX scraper fallback 2026-10-29 14:52:27 -04:00
Chris
7043f1afe1 feat: implement admin public shared links dashboard with visitor tracking and revocation override 2026-05-30 00:32:11 -04:00
Chris
0895a97588 feat: migrate database to SQLite and implement secure recipe sharing, unique visitor tracking, and link revocation 2026-05-29 23:57:13 -04:00
Chris
b9016991eb Mobile Optimizations 2026-05-28 22:30:24 -04:00
Chris
02f0ecb587 Image 2026-05-27 00:04:36 -04:00
Chris
97733b8570 Initial commit: GourmetVault recipe manager 2026-05-26 19:57:35 -04:00