Commit graph

86 commits

Author SHA1 Message Date
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
fded06c85a fix(ux): show all global messages in front overlay for consistency 2026-03-05 18:37:47 +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
ff9aa57548 perf(collections): coalesce duplicate refresh triggers during in-flight loads 2026-03-05 14:47:02 +01:00
Lukas Müllner
7e798cd7e6 fix(reports): avoid stuck loading state when session is missing 2026-03-05 14:46:42 +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
edacf7ad1a perf(scanner): add adaptive cooldown backoff for repeated OCR misses 2026-03-05 14:45:00 +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
c2d8e754a2 perf(collections): remove N+1 member count RPCs with single batched query 2026-03-05 14:43:01 +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
f41708c662 fix(config): use dart-define supabase settings and default to PKCE auth flow 2026-03-05 14:37:09 +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
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
c412eda221 fix: prevent invite role dropdown overflow 2026-03-05 10:49:55 +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
d566621033 fix: harden scanner camera preview recovery 2026-03-05 10:43:36 +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
fa738b9a96 feat: add swipe navigation between main tabs 2026-03-05 09:30:32 +01:00
Lukas Müllner
f03f1b18e4 fix: don't change main collection on open 2026-03-05 09:24:50 +01:00
Lukas Müllner
07b1df3369 perf: reduce scanner OCR workload 2026-03-05 08:37:13 +01:00
Lukas Müllner
abf1b9d788 perf: use cached network images 2026-03-05 08:36:25 +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
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
8cc58d6a76 test: add unit coverage for scanner parsing and reporting utils 2026-03-04 12:25:21 +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
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