Commit graph

69 commits

Author SHA1 Message Date
Lukas Müllner
59aa8e5040 chore(assets): include splash generation artifacts and background image assets 2026-03-04 17:02:10 +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
4fbea2c1e4 chore: add TPB_APP_CHECKLIST.md to .gitignore 2026-03-04 12:37:58 +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
9daacaf0d8 docs: add TPB app checklist and stop tracking migration sql 2026-03-04 12:08:18 +01:00
Lukas Müllner
d90df35d57 feat(reporting): add My Reports status screen and profile entry 2026-03-04 11:46:44 +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
1395a75f1b docs: replace boilerplate README with car64 project guide 2026-03-04 11:35:22 +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
b26bcf6226 chore(collab): await member list refresh after invite/remove 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
2026-03-04 11:32:10 +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
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
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
b0b053ed80 feat(collections): add active scan collection indicator and quick switch
- 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
2026-03-04 11:10:18 +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
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
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
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
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
647448d7e6 add new images 2026-03-04 10:30:25 +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
1240b22f29 style(branding): align app color system with car64.app palette
- Map brand tokens to website colors (neon #0ea5e9, dark #0f172a)
- Update gradients and neutral text/surface shades for visual consistency
- Keep existing token names for compatibility while changing underlying values
2026-03-04 10:23:52 +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
55aba8790b fix: remove unused flutter_01.png image file 2026-02-25 06:53:49 +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
29838b56d1 Merge branch 'main' of github.com:DieLustigenTierwesen/hwhub 2026-02-25 06:18:12 +01:00
Lukas Müllner
a4a27eb53d fix: add supabase_migration.sql to .gitignore 2026-02-24 21:07:30 +01:00
Lukas Müllner
ec0dc1a835
Merge pull request #1 from DieLustigenTierwesen/shared_collections
Shared collections
2026-02-24 20:45:57 +01:00
Lukas Müllner
69b54de89d
Merge pull request #4 from DieLustigenTierwesen/copilot/sub-pr-1-another-one
Add input validation for collection names
2026-02-24 20:44:39 +01:00
Lukas Müllner
7ed134eba2
Merge pull request #3 from DieLustigenTierwesen/copilot/sub-pr-1-again
Debounce tab refresh in HomeShell to prevent redundant network calls
2026-02-24 20:43:50 +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]
f789bb7eff Add input validation for collection names (min 2, max 50 chars)
Co-authored-by: derkauzigekoala <79001016+derkauzigekoala@users.noreply.github.com>
2026-02-24 19:20:50 +00:00
copilot-swe-agent[bot]
b9e298851b Add 30-second debounce to tab refresh in HomeShell
Co-authored-by: derkauzigekoala <79001016+derkauzigekoala@users.noreply.github.com>
2026-02-24 19:19:49 +00: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
copilot-swe-agent[bot]
0539a7725a Initial plan 2026-02-24 19:17:53 +00:00
copilot-swe-agent[bot]
44951de8f5 Initial plan 2026-02-24 19:17:30 +00:00
Lukas Müllner
040a8bd1f2
Update lib/screens/manage_collection_screen.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-24 20:17:02 +01: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
copilot-swe-agent[bot]
60d440703b Initial plan 2026-02-24 19:16:08 +00:00
Lukas Müllner
05bdd281b6
Update lib/screens/manage_collection_screen.dart
add email regex

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