Commit graph

27 commits

Author SHA1 Message Date
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
a2a8917506 fix(ux): show errors above modals and handle duplicate owner moves cleanly 2026-03-05 15:16:10 +01:00
Lukas Müllner
eab9000247 fix(regressions): restore member counts and improve duplicate-copy feedback 2026-03-05 15:10:32 +01:00
Lukas Müllner
7c25ab7c6f perf(images): lazy-load signed storage URLs for garage cards 2026-03-05 14:44:36 +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
34597b9909 fix: use exact collection stats beyond row limits 2026-03-05 14:13:26 +01:00
Lukas Müllner
69362e7a96 fix: show full garage stats independent of pagination 2026-03-05 14:08:21 +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
27bf33593e fix: bootstrap defaults and refine shared collection actions 2026-03-05 10:07:06 +01:00
Lukas Müllner
abf1b9d788 perf: use cached network images 2026-03-05 08:36:25 +01:00
Lukas Müllner
ed541e046c feat(ui): apply branded headers and refresh splash/loading icon assets
- Use login background image in garage, collections, and profile headers
- Show app logo in About screen and add support mail action
- Configure native splash image assets in pubspec
- Regenerate flutter_native_splash and launcher icons for Android/iOS/Web
2026-03-04 17:01:45 +01:00
Lukas Müllner
b67483db4e fix(reporting): prevent report reason dropdown overflow on small widths 2026-03-04 16:53:25 +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
e5773839e5 feat(reporting): add in-app car report form with Supabase persistence 2026-03-04 11:41:47 +01:00
Lukas Müllner
e7fe347670 feat(validation): surface verification status in garage cards 2026-03-04 11:35:06 +01:00
Lukas Müllner
d3f6fc3853 feat(validation): add garage-side community confirmation action 2026-03-04 11:34:13 +01:00
Lukas Müllner
d287d175b5 feat(images): surface actionable upload errors for private photo pipeline
- Change uploadCarImage to throw explicit errors instead of returning null
- Handle upload exceptions in garage detail flow with clearer user feedback
- Guide users to retry with a smaller/clearer image when upload constraints fail
2026-03-04 11:31:37 +01:00
Lukas Müllner
4ba1fe19cc feat(garage): add pull-to-refresh for collection gallery sync
- Wrap garage grid in RefreshIndicator
- Trigger full paged reload on pull gesture
- Use always-scrollable physics so refresh works even on short lists
- Improve manual sync flow for shared collection updates
2026-03-04 11:10:47 +01:00
Lukas Müllner
8469d556bb chore(images): align capture source quality with TPB upload pipeline
- Increase camera capture input for detail photo updates (1600px, quality 90)
- Keep final constraints enforced in storage service (1080px max, <=500KB)
- Improve visual quality before compression while preserving storage limits
2026-03-04 11:07:23 +01:00
Lukas Müllner
ddc1572273 feat(garage): add single-car move action from detail sheet
- Add Move action to car detail controls (Move / Edit / Remove)
- Introduce target collection picker dialog for single-entry move
- Reuse existing collection membership logic and refresh grid after move
- Keep bulk multi-select move workflow unchanged
2026-03-04 11:06:52 +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
225ce4631c feat(garage): add TPB pagination and multi-select move workflow
- Add lazy loading/pagination for collection garage grid (40 per page)
- Load additional pages on scroll near bottom and show load-more indicator
- Add selection mode with long-press card selection
- Add bulk move action to transfer selected cars to another collection
- Add selection state visuals on car cards
- Keep existing detail/edit/delete behavior compatible with new paging model
2026-03-04 10:23:57 +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
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