From 24bbeeffd3fb57883adce0338fefa2b65f9fbc2b Mon Sep 17 00:00:00 2001 From: uhryniuk Date: Tue, 11 Aug 2026 09:55:32 -0500 Subject: [PATCH] Refresh Rippr snapshot: v3 Ideas section Re-exported at 957392f. Co-Authored-By: Claude Opus 5 --- RIPPR.md | 2 +- rippr-full-history.bundle | Bin 498712 -> 511930 bytes rippr-src/docs/v3/BACKLOG.md | 50 ++++++++++++++++++++++++++--------- 3 files changed, 39 insertions(+), 13 deletions(-) diff --git a/RIPPR.md b/RIPPR.md index 190c75b..d9c6147 100644 --- a/RIPPR.md +++ b/RIPPR.md @@ -4,7 +4,7 @@ Rippr is a native Android GPS ride recorder for motorcycles. Its canonical repo `~/dojo/rippr`, which **has no git remote** — it exists only on that machine, so the bundle below is the only off-machine copy of its history. -**Snapshot taken at:** `46a0726` — "Document the whole project: README, architecture, v1 history, v3 backlog" (19 commits) +**Snapshot taken at:** `957392f` — "v3: add Ideas section, reverse the no-live-map decision" (20 commits) ## What is here diff --git a/rippr-full-history.bundle b/rippr-full-history.bundle index 0fcdba3de3e70950de3e83b147cd3ba47fc92324..ea73d73a8954ec0143916eee3d5f13336c1b53da 100644 GIT binary patch delta 18630 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 YBKs6KRL8Xb>aakw6)s*0iURF-2eap diff --git a/rippr-src/docs/v3/BACKLOG.md b/rippr-src/docs/v3/BACKLOG.md index 23d55d9..2db2a05 100644 --- a/rippr-src/docs/v3/BACKLOG.md +++ b/rippr-src/docs/v3/BACKLOG.md @@ -64,19 +64,17 @@ brings hosting, privacy, and location-sharing consent into scope. --- -## 3. Live map — explicitly deferred, revisit deliberately +## 3. Live map on the recording screen — **decision reversed** -v2 has **no live map by design**, on Dylan's reasoning: +v2 deliberately shipped no live map, on the reasoning that the phone rides in a pocket. +Dylan has since asked for one anyway, for visual appeal. Treat the v2 stance as superseded. -> "we hit start, put the phone in our pocket and then stop it after the ride. So having a -> live map doesn't make sense at all honestly, we just wanna see the path render after." +What still holds and should not be given up: -`TrackingService` holds no reference to any map type, and the map exists only inside the -detail screen's Compose lifecycle. That boundary is deliberate and worth preserving unless -there is a real reason to cross it. - -**Group riding is the one plausible reason** — seeing where the others are while stopped at -a junction. If it happens, keep it screen-on-only and never let the service touch it. +- **`TrackingService` must never reference a map.** Rendering belongs to the Compose + lifecycle of a visible screen, not the service. +- **Screen-on only.** No tile fetch or redraw while backgrounded. +- Battery cost sits on top of GPS and a wake lock — worth measuring before and after. --- @@ -95,7 +93,35 @@ a junction. If it happens, keep it screen-on-only and never let the service touc --- -## 5. Things that must not regress +## 5. Ideas + +Terse on purpose. Unshaped, to be consolidated later. + +- **Live map while recording.** More visually appealing than a numbers screen. Reverses the + v2 decision — see section 3 for the constraints that survive it. +- **Pick a real theme.** The current look is functional dark + safety orange, chosen to + match the icon. Decide on an actual visual identity and push the UI toward something + polished rather than merely clean. +- **User sign-up and accounts.** Register people, give their data somewhere to live. + Prerequisite for anything cloud-side, and pairs with the group-ride server in section 2. +- **Activity type per ride.** Motorcycle, bicycle, skateboard, running, other. The app is + not inherently motorcycle-only — the recording pipeline is activity-agnostic already. + Note: adds a column to `Trip`, so it needs a real `Migration` (the destructive fallback + is gone). Type could also drive sensible defaults — speed noise floor, map zoom, + elevation smoothing. +- **Paid cloud backup.** Ongoing storage of rides over time. Needs accounts first, plus a + decision on hosting, pricing, and what happens to data when someone stops paying. + +### Threads running through these + +Sign-up, cloud backup and group ride are one programme, not three: they all need a server, +identity, and a privacy stance. Worth scoping together rather than separately. + +Activity type and theming are independent and much cheaper — either could ship alone. + +--- + +## 6. Things that must not regress Hard-won and easy to undo by accident. Each has a comment in the code explaining why. @@ -116,7 +142,7 @@ Hard-won and easy to undo by accident. Each has a comment in the code explaining --- -## 6. Reading order for picking this up cold +## 7. Reading order for picking this up cold 1. [../../README.md](../../README.md) — what the app is and its current state 2. [../ARCHITECTURE.md](../ARCHITECTURE.md) — why it is built this way