# Post-launch feedback tickets Same shape as `docs/ui-redesign/`: one file per ticket, Goal · Context · Design · Implementation · Acceptance criteria · Tests · Risks · Out of scope, written before implementing, with an Outcome section appended after. Source: `docs/FEEDBACK.md` — hands-on feedback after using the redesigned app. Turned into 11 tickets so far (5 from the first pass, 4 from a second round of feedback after FB-01..FB-05 shipped, 2 from a third round after FB-06/FB-07 turned out not to actually resolve on-device), each independently completable (self-contained enough for a fresh subagent with no prior context to implement correctly). ## The tickets | # | Ticket | Size | Depends on | Status | |---|---|---|---|---| | [FB-01](FB-01-live-street-level-map.md) | Live, street-level map everywhere | L | — | Done | | [FB-02](FB-02-hide-idle-speed-panel.md) | Hide the idle Speed panel until recording starts | S | — | Done | | [FB-03](FB-03-grid-snapped-hud-widgets.md) | Grid-snapped HUD widgets with auto-fit text | L | — | Done | | [FB-04](FB-04-route-planner-map-render-fix.md) | Fix Route Planner's map failing to render + zoom | M | FB-01 (shared zoom constant) | Done | | [FB-05](FB-05-closed-loop-routes.md) | Closed-loop routes in Route Planner | M | FB-04 (same file) | Done | | [FB-06](FB-06-always-interactive-map-recenter.md) | Map always pannable/zoomable, with a recenter button | M | — | Done | | [FB-07](FB-07-route-planner-null-island.md) | Route Planner opens on Null Island instead of your real location | S/M | FB-01 (ambient location provider) | Done | | [FB-08](FB-08-hud-reflow-on-hide.md) | HUD widgets reflow to fill the gap when one is hidden | M | — | Done | | [FB-09](FB-09-hud-title-driven-sizing.md) | HUD default sizing follows the title, value adapts | L | FB-08 (same files) | Done | | [FB-10](FB-10-map-pan-recenter-race.md) | Manual map pan loses a race against the follow-recenter timer | M | — | Not started | | [FB-11](FB-11-route-planner-tiles-still-blank.md) | Route Planner map still shows no tiles | M/L | — | Not started | ## Dependencies / dispatch order ``` Wave 1 (parallel): FB-01, FB-02, FB-03 Wave 2 (after Wave 1 lands): FB-04 — reuses FB-01's ambientZoom constant Wave 3 (after Wave 2 lands): FB-05 — heavily edits the same file FB-04 just touched Wave 4 (parallel): FB-06, FB-07, FB-08 — no file overlap between these three Wave 5 (after Wave 4 lands): FB-09 — heavily edits the same files FB-08 just touched Wave 6 (parallel): FB-10, FB-11 — no file overlap between these two. Both are follow-up fixes for real bugs FB-06/FB-07 left unresolved on-device; see each ticket's Context for what the earlier fix did and did not solve. ``` FB-02 and FB-03 both touch `lib/src/ui/record/record_screen.dart`, but disjoint regions (the idle-state `Column` vs. `_HudMetricValue`) — low conflict risk. ## Working method, per ticket 1. Implement against the ticket's own Implementation section. 2. `flutter analyze` clean, `flutter test` green — count must not regress (374 passing before this batch starts). 3. Outcome section appended to the ticket file: what shipped, deviations, test counts. 4. Commit, status flipped to Done in both the ticket file and this table. Android-emulator verification is best-effort only for this batch — lean on widget tests as the primary bar; don't get stuck fighting emulator flakiness.