Commit graph

21 commits

Author SHA1 Message Date
Lukas Müllner
4335d3b7a2 chore: apply review fixes and typed error hardening 2026-03-09 18:32:45 +01:00
Lukas Müllner
214285bb68 chore(branding): replace Hot Wheels user-facing text with die-cast wording 2026-03-05 20:14:15 +01:00
Lukas Müllner
450d0a7b34 feat(ux): add distinct success/info/error top overlay message styles 2026-03-05 19:03:02 +01:00
Lukas Müllner
404ac270f7 fix(state): scope active collection preference by user with legacy key migration 2026-03-05 14:46:12 +01:00
Lukas Müllner
1dc440cd25 fix(errors): sanitize user-facing failures and centralize safe error messaging 2026-03-05 14:40:37 +01:00
Lukas Müllner
947992e8b9 fix(stability): remove auth/context force unwraps and add guarded null-safe paths 2026-03-05 14:39:00 +01:00
Lukas Müllner
bebd21097d fix: enforce role-based collection actions and instant defaults 2026-03-05 10:30:40 +01:00
Lukas Müllner
83344a06d5 perf: avoid redundant tab refresh traffic 2026-03-05 08:34:14 +01:00
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
a93694728e chore(scanner): add duplicate-ID cooldown for rapid scan stability
- Ignore repeated processing of the same HW ID within a short 2s window
- Prevent duplicate dialogs/inserts during very fast repeated captures
- Keep continuous scanner loop responsive while reducing accidental re-triggers
2026-03-04 11:08:03 +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
360fd5a705 feat(scanner-ui): show community verification status in found-car sheet
- Include confirmation_count in global_cars lookup
- Display verification state and confirmation count in found catalog bottom sheet
- Improve trust/feedback loop for collaborative validation workflow
2026-03-04 10:48:54 +01:00
Lukas Müllner
d4883c1d32 feat(validation): record independent discovery votes during catalog adds
- Add vote tracking when users add an existing global car entry
- Guard against duplicate votes by checking user_id + hw_id first
- Keep new-discovery flow voting unchanged while extending repeated-add validation
- Align scanner business flow with TPB community verification model
2026-03-04 10:48:24 +01:00
Lukas Müllner
e4afe7b63c feat(collections): persist active collection and harden member actions
- Persist scanner activeCollectionId via shared_preferences
- Restore last selected collection automatically on scan tab load
- Keep selection valid if collection list changes and store fallback safely
- Harden collection membership service rules:
  - only owners can invite/remove members
  - prevent self-invite duplicates
  - block owner removal
  - block owner leave action with explicit error
- Improve manage-collection UX with pull-to-refresh and owner leave guidance
2026-03-04 10:38:14 +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
d8dbc2573a feat(v3.0): rebrand to car64 and align app flow with TPB schema
- Rename installed app display name to car64 (Android/iOS/Web titles)
- Remove Buy Me a Coffee link from About screen
- Update app version to 3.0.0+1
- Migrate scanner workflow to catalog-first flow:
  - look up in global_cars
  - show Found in Catalog bottom sheet for known cars
  - show New Discovery bottom sheet and insert into global_cars + car_votes
  - insert only into hotwheels for collection entries
- Align garage reads to TPB schema by joining global_cars
- Switch image field usage from image_url to user_image_url
- Implement private-storage image service:
  - upload path auth.uid()/hotwheels.id.jpg
  - signed URL generation (1h) for display
  - in-app compression pipeline targeting <=500KB and max 1080px width
- Use local brand fallback image assets/img/icon_bg_removed.png for missing car photos
- Restrict edit dialog to personal notes (hotwheels) instead of global car metadata
- Ensure first login auto-creates a default collection and owner membership
2026-03-04 10:12:12 +01:00
Lukas Müllner
94e0ab436b
Update lib/screens/scan_tab.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-24 20:14:48 +01:00
Lukas Müllner
ae39f2cbaf
Update lib/screens/scan_tab.dart
better error message on failed collection loading

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-24 20:14:10 +01:00
Lukas Müllner
4b9cefb319 feat: multi-collection support, shared collections, invite by email
- Add collections & collection_members tables (SQL migration)
- Create CollectionService for CRUD, invite/remove members
- Add CollectionsScreen with create/manage/open flow
- Add ManageCollectionScreen (rename, invite by email, leave/delete)
- Update GarageScreen to filter by collection_id
- Update ScanTab with collection picker dropdown
- Update HomeShell: Collections tab replaces Garage tab
- Fix RLS policies (infinite recursion, owner visibility)
- Change package ID to com.dltw.derkauzigekoala.hwhub
- Fix unused variable warning in AboutScreen
2026-02-24 17:28:44 +01:00
Lukas Müllner
eaf538bf45 feat: implement collections feature with screens for viewing, managing, and creating collections 2026-02-24 16:38:35 +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