Files
samplez/rippr-flutter-src/docs/v3/README.md
uhryniuk 4c634354bd Refresh the Flutter snapshot: v3 tickets V3-04 through V3-16, plus a fresh installable APK
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).
2026-08-19 13:36:04 -05:00

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

  1. V3-01 — proves the migration path while the stakes are low, and unblocks V3-08/14
  2. V3-02 + V3-03 — small, self-contained, gives V3-01 a home
  3. V3-04 — the most visible change, and the gateway to four other tickets
  4. V3-07 — entirely independent; useful on its own before the routing decision
  5. 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.