Commit graph

31 commits

Author SHA1 Message Date
copilot-swe-agent[bot]
3f0c7944b8 fix: offload image compression to background isolate via compute()
Co-authored-by: derkauzigekoala <79001016+derkauzigekoala@users.noreply.github.com>
2026-03-07 22:49:11 +00:00
Lukas Müllner
fb96d0bfb7 fix(db): add atomic collection creation RPC path with migration script 2026-03-06 08:14:35 +01:00
Lukas Müllner
38de6d8b86 fix(review): address auth subscription, safe image replace, logging and widget tests 2026-03-06 07:43:40 +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
eab9000247 fix(regressions): restore member counts and improve duplicate-copy feedback 2026-03-05 15:10:32 +01:00
Lukas Müllner
c2d8e754a2 perf(collections): remove N+1 member count RPCs with single batched query 2026-03-05 14:43:01 +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
f2c3e80f3f chore: polish membership error messages 2026-03-05 12:05:02 +01:00
Lukas Müllner
febba238ec fix: add rpc-backed member removal migration 2026-03-05 11:56:01 +01:00
Lukas Müllner
da9981d297 fix: make member removal check rls-safe 2026-03-05 11:40:30 +01:00
Lukas Müllner
d03e276ddf fix: use rpc-backed lookup for member removal 2026-03-05 11:19:41 +01:00
Lukas Müllner
943f08e92b fix: verify member removal persistence 2026-03-05 11:05:46 +01:00
Lukas Müllner
bb389d6f78 fix: correct member counts and member removal flow 2026-03-05 10:56:20 +01:00
Lukas Müllner
bd177cedcc fix: resolve invite overflow and member removal lookup 2026-03-05 10:46:30 +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
93cbf4b568 perf: cache signed storage URLs 2026-03-05 08:35:30 +01:00
Lukas Müllner
83344a06d5 perf: avoid redundant tab refresh traffic 2026-03-05 08:34:14 +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
aab5c7d039 fix(storage): enforce strict <=500KB upload guarantee for private bucket
- Harden compression pipeline with iterative quality + dimension reduction
- Throw explicit error if final output still exceeds 500KB bucket limit
- Keep 1080px cap while allowing progressive downscaling to fit constraints
- Update login screen branding comment to car64
2026-03-04 11:30:32 +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
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
2c6ae514fb fix: update app version to 2.0.0 and modify subtitle in profile screen 2026-02-25 07:17:47 +01:00
Lukas Müllner
b51d2b4ec1 fix: update collection service to use inFilter for querying collection IDs 2026-02-25 06:39:15 +01:00
Lukas Müllner
9f9a0cb601
Merge pull request #2 from DieLustigenTierwesen/copilot/sub-pr-1
Add client-side ownership enforcement to CollectionService update/delete
2026-02-24 20:42:55 +01:00
copilot-swe-agent[bot]
4fbd776605 Add client-side ownership checks to update and delete methods
Co-authored-by: derkauzigekoala <79001016+derkauzigekoala@users.noreply.github.com>
2026-02-24 19:18:27 +00:00
Lukas Müllner
2699242fdf
Update lib/services/collection_service.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-24 20:16:21 +01:00
Lukas Müllner
ca11df0152
Update lib/services/collection_service.dart
n+1 performance

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-24 20:13:39 +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