V3-04 through V3-07, V3-10, V3-16 shipped complete; V3-11/V3-12/V3-14 shipped code-complete pending device/account verification; V3-08/V3-09 deferred behind a new V3-17 (self-hosted OSRM investigation). 316 tests passing, up from 221. The APK is a fresh release build (debug-signed, no release signing config exists yet) with two build fixes applied: core library desugaring enabled for flutter_local_notifications, and sentry_flutter bumped to 9.27.0 (8.14.2's bundled Kotlin plugin was incompatible with this project's Kotlin 2.4.0 toolchain).
4.5 KiB
v3 tickets
One file per feature, in the shape that worked for v2: Goal · Context · Design · Implementation · Acceptance criteria · Tests · Risks · Out of scope. Written before implementing, so the risks are on paper before they are walked into.
Menu, not a commitment. Nothing here is scheduled.
Everything in v3 is buildable with no server. Group rides, accounts and paid cloud backup are v4 — see ../BACKLOG.md.
Before starting anything: ../port/REAL-RIDE-CHECKLIST.md. The port has never recorded a real ride, and item I3 may still force a change of GPS engine — which would land underneath several of these tickets.
The tickets
| # | Ticket | Size | Depends on | Status |
|---|---|---|---|---|
| V3-01 | Activity type per ride | M | — | Done |
| V3-02 | Settings screen | S | — | Done |
| V3-03 | Distance and speed units | S | V3-02 | Done |
| V3-04 | Live map on the recording screen | M | — | Done |
| V3-05 | Mounted (handlebar) mode | M | V3-04 | Done |
| V3-06 | Live stats in the notification | S | — | Done |
| V3-07 | Route drawing (pins, straight lines) | M | — | Done |
| V3-08 | Road-snapped routing and ETA | L | V3-07, V3-01, V3-17 | Deferred (needs V3-17) |
| V3-09 | Follow a planned route | M | V3-04, V3-08 | Deferred (needs V3-08) |
| V3-10 | Trip splitting | S | — | Done |
| V3-11 | Offline tile pre-download | M | V3-04 | Partially done (pipeline shipped; needs aeroplane-mode device verification) |
| V3-12 | Crash reporting | S | — | Partially done (code only; needs a real Sentry DSN + release build) |
| V3-13 | Real-ride measurements | M | riding | Not started |
| V3-14 | GPX interoperability | S | V3-01 | Partially done (code only; needs real-device verification) |
| V3-15 | Auto-pause | M | V3-13 (gated) | Not started |
| V3-16 | Visual identity | M | V3-04, V3-05 | Partially done (token-level identity shipped; needs outdoor device verification) |
| V3-17 | Self-hosted OSRM: investigate and stand one up | M | — (needs a server — see the ticket's own note on the v3/v4 boundary) | Not started |
Dependencies
V3-01 ──┬────────────► V3-08 ──► V3-09
└──► V3-14 ▲
V3-07 ──────► V3-08 │
V3-17 ──────► V3-08 │
V3-02 ──► V3-03 │
V3-04 ──┬──► V3-05 ──┬───────┘
├──► V3-11 └──► V3-16
└──► V3-09
V3-13 ──► V3-15 (gate: may close unbuilt)
no dependencies: V3-01 · V3-02 · V3-04 · V3-06 · V3-07 · V3-10 · V3-12 · V3-17
V3-08/V3-09 are deferred, on request, pending V3-17 (self-hosted OSRM). See V3-17's own note on why that also puts them in tension with this document's v3/v4 boundary — unresolved by design, not an oversight.
Three that carry more weight than their size suggests
V3-01 ships the port's first real migration. The destructive fallback is gone, so
getting addColumn plus a v1-database test right matters more than the feature does —
V3-07 and V3-09 both add migrations behind it.
V3-08 forces a routing-engine decision with ongoing cost and vendor implications.
Behind a RoutingService interface, mirroring what LocationSource did for GPS. The
direction is decided (self-hosted OSRM); V3-17 does the actual standing-up, and V3-08 is
deferred until it exists.
V3-13 is not code. It answers the three questions that have been open since v2, and V3-15 may close unbuilt as a result — a legitimate and probably likely outcome.
Suggested order, if starting cold
- V3-01 — proves the migration path while the stakes are low, and unblocks V3-08/14
- V3-02 + V3-03 — small, self-contained, gives V3-01 a home
- V3-04 — the most visible change, and the gateway to four other tickets
- V3-07 — entirely independent; useful on its own before the routing decision
- V3-13 — as soon as there is a ride to measure
V3-12 is a good filler at any point. V3-16 should wait until the screens stop moving.