- 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
- 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
- Await _loadMembers after invite to avoid stale member list state
- Await _loadMembers after remove for deterministic UI sync
- Keep collaborative management views consistent immediately after mutations
- 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
- 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
- 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
- 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
- Load and display persisted active collection in Collections list
- Add Active badge for the currently selected scan destination
- Add quick action to set any collection as active for scanner workflow
- Auto-set active collection when opening a collection details view
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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