Commit graph

10 commits

Author SHA1 Message Date
Lukas Müllner
1be830b16f feat(scanner): polish detection feedback and main collection behavior
- Replace noisy no-id snackbars with in-screen red status feedback
- Keep success state green and reduce interruption during scan flow
- Make scan-tab collection switching session-only (does not overwrite main)
- Keep main collection preselected from collections tab preference
- Apply recent UX text/layout polish for scan and detail actions
2026-03-04 13:44:55 +01:00
Lukas Müllner
8cc58d6a76 test: add unit coverage for scanner parsing and reporting utils 2026-03-04 12:25:21 +01:00
Lukas Müllner
13114bd63f feat(scanner): add auto-scan cadence with pause/resume controls
- Add periodic auto-capture loop for uninterrupted scanner workflow
- Start auto-scan after camera init and stop cleanly on dispose
- Gate scans by busy/camera-ready state to avoid overlapping captures
- Add AUTO ON/OFF toggle in scanner status bar
- Keep manual capture path available as fallback
2026-03-04 11:15:43 +01:00
Lukas Müllner
b9d1d750b6 feat(scanner): add in-scanner active collection switcher
- Add collection dropdown at top of scanner screen
- Wire scanner selection changes back to scan tab active collection state
- Reuse persisted active collection behavior while scanning
- Keep continuous scan loop intact with collection changes applied immediately
2026-03-04 11:05:38 +01:00
Lukas Müllner
99da5cf1ca feat(scan+sharing): polish rapid scan feedback and invite UX states
- Add scanner status bar with real-time state (ready/scanning/saved)
- Add success pulse styling after accepted detection for faster repeated scans
- Keep scanner in uninterrupted loop while giving clear visual confirmation
- Add invite busy state in manage collection to prevent duplicate submits
- Improve collaborative management responsiveness with explicit inviting state
2026-03-04 10:47:45 +01:00
Lukas Müllner
012ff411a1 feat(scan+images): continuous scan loop and signed-url refresh fallback
- Add continuous scanner callback flow so detections are processed in-place
- Keep scanner open after add/lookup so users can continue scanning immediately
- Integrate scan processing with catalog branch logic without route round-trips
- Add signed URL refresh strategy for private image links on load failures
- Trigger signed-link regeneration from garage cards and detail view retry action
- Keep multi-select/move workflow and pagination compatible with refreshed image state
2026-03-04 10:34:24 +01:00
Lukas Müllner
91f25e0cef feat(v1.1): complete UI overhaul with branded theme, garage, and image uploads
- Custom Material 3 theme with Hot Wheels branding (orange/red gradient, navy accents)
- Locally bundled Poppins font (Regular, Medium, SemiBold, Bold)
- Redesigned login screen with full-bleed background image and frosted glass form
- Bottom navigation shell: My Garage / Scan / Profile tabs
- My Garage screen with grid view, search, stats, detail bottom sheet
- Edit and delete car details from the detail sheet
- Skip button for quick-add with minimal info
- Camera photo upload to Supabase Storage (UUID-based unguessable paths)
- Change/add photo from car detail view
- Profile screen with change password, about dialog, sign out
- Scan tab with camera scanner and manual entry
- Styled scanner screen with crosshair overlay and gradient buttons
- Custom app icon with transparent background and adaptive icon support
- Native splash screen with brand colors
- Auto-refresh garage on tab switch
2026-02-24 07:46:06 +01:00
Lukas Müllner
7635b0d85b fix: extract manual entry dialog into StatefulWidget
Fixes TextEditingController used after being disposed  the controller
was being manually disposed while the dialog's TextField still held a
reference during the pop animation. Now the dialog is its own
StatefulWidget so dispose() is called automatically by the framework
at the right time.
2026-02-23 09:47:46 +01:00
Lukas Müllner
bbcacc0664 fix: only rebuild AuthGate on actual login state changes
- AuthGate now tracks wasLoggedIn vs isLoggedIn and only calls setState
  when the login status actually flips, preventing token-refresh events
  from tearing down open dialogs and causing _dependents.isEmpty crashes
- Fix TextEditingController disposal order in scanner manual entry dialog
2026-02-23 08:50:39 +01:00
Lukas Müllner
2c3c6d990b feat: add camera OCR scanner, DB query, and collection dialogs
- Add camera, google_mlkit_text_recognition, image_picker, permission_handler deps
- Create ScannerScreen with live camera preview and OCR text recognition
- Auto-detect Hot Wheels IDs (e.g. JKF21) from captured photos using regex
- Add manual entry fallback dialog for typing HW ID by hand
- Update HomeScreen with scan FAB button and full DB query flow
- Query hotwheels table with .eq('hw_id', scannedCode).maybeSingle()
- Show 'Already in Collection' alert if car exists
- Show 'Add to Collection?' confirmation with insert if car is new
2026-02-23 07:12:24 +01:00