Full UI redesign pass complete: persistent tab shell with an always-visible background map, Modern Professional Dark theme, monochrome dark map tiles, offline skeleton map, a shared GlassPanel/FloatingPill component kit, customizable HUD telemetry widgets, and the Map HUD / Plan & Route Planning / Rides History screen rebuilds. 374 tests passing, up from 316. The APK is a fresh release build (debug-signed, no release signing config exists yet). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Xki7YAcc2TiN2PRZJ2tXr
81 lines
4.5 KiB
Markdown
81 lines
4.5 KiB
Markdown
# 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 on the ROADMAP (formerly "v4") — see [../BACKLOG.md](../BACKLOG.md).
|
|
|
|
> **Before starting anything:** [../port/REAL-RIDE-CHECKLIST.md](../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](V3-01-activity-type.md) | Activity type per ride | M | — | Done |
|
|
| [V3-02](V3-02-settings-screen.md) | Settings screen | S | — | Done |
|
|
| [V3-03](V3-03-units.md) | Distance and speed units | S | V3-02 | Done |
|
|
| [V3-04](V3-04-live-map.md) | Live map on the recording screen | M | — | Done |
|
|
| [V3-05](V3-05-mounted-mode.md) | Mounted (handlebar) mode | M | V3-04 | Done |
|
|
| [V3-06](V3-06-notification-stats.md) | Live stats in the notification | S | — | Done |
|
|
| [V3-07](V3-07-route-drawing.md) | Route drawing (pins, straight lines) | M | — | Done |
|
|
| [V3-08](V3-08-road-routing.md) | Road-snapped routing and ETA | L | V3-07, V3-01, **V3-17** | Deferred (needs V3-17) |
|
|
| [V3-09](V3-09-route-following.md) | Follow a planned route | M | V3-04, V3-08 | Deferred (needs V3-08) |
|
|
| [V3-10](V3-10-trip-splitting.md) | Trip splitting | S | — | Done |
|
|
| [V3-11](V3-11-offline-tiles.md) | Offline tile pre-download | M | V3-04 | Partially done (pipeline shipped; needs aeroplane-mode device verification) |
|
|
| [V3-12](V3-12-crash-reporting.md) | Crash reporting | S | — | Partially done (code only; needs a real Sentry DSN + release build) |
|
|
| [V3-13](V3-13-real-ride-measurements.md) | Real-ride measurements | M | **riding** | Not started |
|
|
| [V3-14](V3-14-gpx-interop.md) | GPX interoperability | S | V3-01 | Partially done (code only; needs real-device verification) |
|
|
| [V3-15](V3-15-auto-pause.md) | Auto-pause | M | V3-13 *(gated)* | Not started |
|
|
| [V3-16](V3-16-visual-identity.md) | Visual identity | M | V3-04, V3-05 | Partially done (token-level identity shipped; needs outdoor device verification) |
|
|
| [V3-17](V3-17-osrm-hosting.md) | Self-hosted OSRM: investigate and stand one up | M | — *(needs a server — see the ticket's own note on the v3/ROADMAP 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/ROADMAP 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.
|