Commit Graph

93 Commits

Author SHA1 Message Date
c9e3caff5a feat: implement ironclad offline strategy with pre-caching and root fallback 2025-12-20 23:07:00 +01:00
b7ac0957d1 docs: add offline sync & PWA documentation
feat: improve PWA resilience with SWR and navigation timeouts
2025-12-20 22:52:04 +01:00
e0436987a1 feat: Unify AI prompts for Gemini and Mistral 2025-12-19 22:01:29 +01:00
2601a8f12f feat: Switch to Mistral Large 3 (mistral-large-latest) 2025-12-19 21:59:51 +01:00
25b1378794 feat: Replace Nebius with Pixtral AI for bottle scanning 2025-12-19 21:53:18 +01:00
06891a3619 style: Add wall clock time to session timeline 2025-12-19 21:11:36 +01:00
fdc1dd01e5 feat: Complete Flight Recorder with Session Closing and UI feedback 2025-12-19 21:06:16 +01:00
822dc18bfc style: Improve active session visibility and fix mobile timeline layout 2025-12-19 21:01:48 +01:00
0474a83dfb chore: Pin pnpm version for build stability 2025-12-19 20:53:24 +01:00
b48ad8cd56 fix: Resolve build blockers by removing outdated tests and refining schema 2025-12-19 20:53:11 +01:00
0a692498ce fix: Type error in TastingList for optional bottle_id 2025-12-19 20:50:42 +01:00
e8c3032954 feat: Add Flight Recorder, Timeline, ABV Curve and Offline Bottle Caching with Draft Notes support 2025-12-19 20:45:20 +01:00
24e243fff8 feat: Upgrade to Next.js 16.1 & React 19.2, migrate to Supabase SSR with async client handling 2025-12-19 20:31:46 +01:00
d9b44a0ec5 fix(ai): prevent OpenAI credential error at module load time
- Moved OpenAI client initialization to a lazy getter function
- Added explicit check for NEBIUS_API_KEY in the getter
- Ensures Server Actions return structured errors instead of crashing when keys are missing
2025-12-19 14:30:38 +01:00
e2c9bef8f4 fix: improve server action resilience and error logging
- Moved Supabase client initialization inside try-catch in Server Actions
- Added safety checks for null Supabase client in magicScan
- Added detailed server-side logging for debugging deployment issues
- Ensures all failure paths return a structured error response instead of 500
2025-12-19 14:28:40 +01:00
cbb28b389c fix: resolve TagSelector build error and improve component type safety
- Fixed undefined setTags in TagSelector.tsx
- Updated TagSelector to use Dexie cache for immediate UI updates
- Refined TastingList mapping to satisfy TypeScript interface
- Verified fix with a successful production build
2025-12-19 14:17:40 +01:00
f52cfb80fc fix: resolve magic scan crash and implement context-aware AI languages
- Fixed SQL syntax error in magicScan caused by single quotes
- Implemented dynamic locale-aware AI suggestions (Technical: EN, Custom Tags: Localized)
- Updated Dexie schema to version 2 (added locale to pending_scans)
- Fixed missing bottle_id in UploadQueue synchronization
- Installed missing dexie dependencies via pnpm
2025-12-19 14:06:13 +01:00
60ca3a6190 feat: implement robust offline-first sync with Dexie.js
- Migrated to Dexie.js for IndexedDB management
- Added optimistic UI for tasting notes with 'Wartet auf Sync' badge
- Implemented background caching for tags and buddies
- Unified scanning and tasting sync in a global UploadQueue
2025-12-19 13:40:56 +01:00
e08a18b2d5 fix: add missing state for suggested custom tags in TastingNoteForm 2025-12-19 13:20:38 +01:00
14e7759cf9 feat: complete AI custom tag proposals integration
- Fixed data fetching in TastingNoteForm to include suggested_custom_tags
- Verified Nebius service compatibility with updated AI prompts
- Cleaned up artifacts and implementation plan
2025-12-19 13:20:30 +01:00
74916aec73 feat: implement AI custom tag proposals
- AI now suggests dominant notes not in the system list (Part 3: Custom Suggestions)
- Updated TagSelector to show 'Neu anlegen?' buttons for AI-proposed custom tags
- Added suggested_custom_tags to bottles table and metadata schema
- Updated TastingNoteForm to handle both system and custom AI suggestions
2025-12-19 13:20:13 +01:00
b2a1d292da feat: implement advanced tagging system, tag weighting, and app focus refactoring
- Implemented reusable TagSelector component with i18n support
- Added tag weighting system (popularity scores 1-5)
- Created admin panel for tag management
- Integrated Nebius AI and Brave Search for 'Magic Scan'
- Refactored app focus: removed bottle status, updated counters, and displayed extended bottle details
- Updated i18n for German and English
- Added database migration scripts
2025-12-19 12:58:44 +01:00
9eb9b41061 feat: implement server-side image compression with sharp and cleanup RLS policies 2025-12-18 22:08:28 +01:00
d26ebc0b2e fix(query): resolve PostgREST grouping error in SessionList 2025-12-18 21:48:25 +01:00
17727243be feat: add global auth listener with hard reload on logout 2025-12-18 21:45:27 +01:00
6f32bfa17f feat: add visual eyecatcher to session detail header 2025-12-18 21:38:10 +01:00
ec9468f671 fix: resolve dynamic server usage error in debug-admin API route 2025-12-18 21:33:57 +01:00
42d8191c1a fix(pwa): add visibilitychange listener for Android sleep issues 2025-12-18 21:28:46 +01:00
087292f65d feat: improve PWA auth robustness and session management 2025-12-18 21:27:00 +01:00
409e78f2f4 feat: add docker healthcheck for Coolify 2025-12-18 21:19:08 +01:00
7008bbfd84 feat: social UI optimization, collapsible sections, and admin fixes 2025-12-18 21:16:09 +01:00
a64e8f17a1 feat: session deletion, improved tasting deletion visibility, and PWA login loop fix 2025-12-18 21:02:44 +01:00
a4a9d79c4c docker speeeeed 2025-12-18 20:45:37 +01:00
c63a348e6b fix: add defensive fallbacks for missing database relationships 2025-12-18 20:35:38 +01:00
68ac7a515e new 2025-12-18 17:40:20 +01:00
fea964b781 chore: add pnpm onlyBuiltDependencies 2025-12-18 17:37:30 +01:00
4051c40960 add dockerfile 2025-12-18 17:31:48 +01:00
869c8fe9c5 feat: add stop session button and update walkthrough 2025-12-18 17:20:49 +01:00
ca1621e765 feat: refine session workflow with global state, quick tasting, and statistics 2025-12-18 17:19:38 +01:00
7f600698e4 feat: modernize search filters & intelligent label shortening
- Introduced shortenCategory utility to strip redundant terms from labels
- Refactored BottleGrid filters into a compact, collapsible layout
- Added filter count indicator and improved chip styling
- Fully localized new filter UI elements
2025-12-18 16:46:39 +01:00
9464d56055 perf: optimize RLS policies (consolidate and wrap auth calls) 2025-12-18 16:36:30 +01:00
22db65d109 chore: security hardening, mobile PWA fix & analysis expansion
- Applied strict RLS and auth validation to tracking/credit services
- Set Service Worker to Network First to fix mobile session/loading issues
- Expanded Gemini analysis summary to show distilled/bottled/batch info
- Updated SQL schema document with hardening policies
2025-12-18 16:29:16 +01:00
a503e1a317 feat: expand camera analysis display with new fields
- Added distilled date, bottled date, and batch info to the analysis result summary in CameraCapture
- These fields now appear only if Gemini successfully identifies them from the photo
2025-12-18 16:10:50 +01:00
0f56c8b0f4 feat: add gallery upload and fix mobile header issues
- Added 'Upload from Gallery' button to CameraCapture component
- Implemented secondary file input without 'capture' attribute to allow gallery selection on mobile
- Fixed overlapping header elements on mobile by making the header responsive
- Compacted 'Dram of the Day' button on small screens
- Added translations for the new gallery upload feature
2025-12-18 15:48:11 +01:00
960fa89fc1 fix: resolve relationship error in admin dashboard
- Fetched api_usage and profiles separately to avoid Supabase join errors when relationships are not explicitly defined in the schema cache.
- Updated Gemini AI tracking integration to ensure all calls are recorded correctly.
- Improved error handling in admin dashboard.
2025-12-18 15:43:40 +01:00
f25aad401e fix: add debug info to recent API calls display
Added total count display and error message output to help debug
why API calls are logged but not displayed in the UI.
2025-12-18 15:39:46 +01:00
1cfa9cab8c feat: add Gemini AI tracking and fix admin dashboard
- Integrated API tracking into analyze-bottle service
- Added credit balance check before Gemini API calls
- Deduct credits after successful Gemini analysis
- Track both successful and failed Gemini API calls
- Added debug logging to admin dashboard for recent API calls
- Fixed error handling in analyze-bottle

Now tracks both Google Search and Gemini AI API usage!
2025-12-18 15:35:02 +01:00
b18f8907a3 feat: add plan assignment to user management
- Added plan dropdown to user edit modal
- Shows current plan with highlighted card
- Allows admin to assign/change user's subscription plan
- Loads user's current plan when opening edit modal
- Updates plan via setUserPlan service
- Visual feedback with success/error messages

Admins can now:
- View user's current subscription plan
- Assign users to different plans (Starter, Bronze, Silver, Gold)
- See plan details (credits/month, price) in dropdown

This completes the subscription plan system!
2025-12-18 15:29:13 +01:00
e1108addce debug: add extensive logging to subscription service
Added debug logs to getAllPlans to diagnose Bad Gateway error.
Logs will show in terminal when /admin/plans is accessed.
2025-12-18 15:25:39 +01:00
42b4b2b2e1 feat: implement subscription plan system with monthly credits
- Database schema:
  * subscription_plans table - stores plan tiers (Starter, Bronze, Silver, Gold)
  * user_subscriptions table - assigns users to plans
  * Default plans created (10, 50, 100, 250 credits/month)
  * All existing users assigned to Starter plan

- Subscription service (subscription-service.ts):
  * getAllPlans() - fetch all plans
  * getActivePlans() - fetch active plans for users
  * createPlan() - admin creates new plan
  * updatePlan() - admin edits plan
  * deletePlan() - admin removes plan
  * getUserSubscription() - get user's current plan
  * setUserPlan() - admin assigns user to plan
  * grantMonthlyCredits() - distribute credits to all users

- Plan management interface (/admin/plans):
  * Visual plan cards with credits, price, description
  * Create/Edit/Delete plans
  * Toggle active/inactive status
  * Sort order management
  * Grant monthly credits button (manual trigger)

- Features:
  * Monthly credit allocation based on plan
  * Prevents duplicate credit grants (tracks last_credit_grant_at)
  * Admin can manually trigger monthly credit distribution
  * Plans can be activated/deactivated
  * Custom pricing and credit amounts per plan

- UI:
  * Beautiful plan cards with color coding
  * Modal for create/edit with validation
  * Success/error messages
  * Manage Plans button in admin dashboard

Ready for future automation (cron job for monthly credits)
and payment integration (Stripe/PayPal).
2025-12-18 15:16:44 +01:00