Parent
What to build
Favorite detail view. Tapping a Favorite in the Favorites tab opens the existing history session sheet in a favorite mode: chart, map route, and stats loaded from the favorite's telemetry range (pinned, so always present), with the Favorite's name shown when set. Favorite mode offers rename (optional name, clearable) and delete; history mode keeps the star action. No re-trim — adjusting a range is delete + recreate.
Likely files
src/modules/history/components/HistorySessionSheet.tsx - the shared sheet gaining a mode switch
src/modules/history/store/historyStore.ts - session selection/loading pattern to reuse for a favorite range
src/modules/history/lib/rideFormat.ts - row/stat formatting shared with favorites list
Implementation hints
- Loading a favorite's data is a history range read for
[startMs, endMs] — reuse the existing selected-session load path with the favorite's range instead of a grouped session's range.
- Keep the mode switch small: favorite mode = name header + rename + delete-favorite; history mode = star. Everything else stays shared.
- Rename goes through the bridge API from slice 1 (extend with rename if not present).
Acceptance criteria
Blocked by
Related
Parent
What to build
Favorite detail view. Tapping a Favorite in the Favorites tab opens the existing history session sheet in a favorite mode: chart, map route, and stats loaded from the favorite's telemetry range (pinned, so always present), with the Favorite's name shown when set. Favorite mode offers rename (optional name, clearable) and delete; history mode keeps the star action. No re-trim — adjusting a range is delete + recreate.
Likely files
src/modules/history/components/HistorySessionSheet.tsx- the shared sheet gaining a mode switchsrc/modules/history/store/historyStore.ts- session selection/loading pattern to reuse for a favorite rangesrc/modules/history/lib/rideFormat.ts- row/stat formatting shared with favorites listImplementation hints
[startMs, endMs]— reuse the existing selected-session load path with the favorite's range instead of a grouped session's range.Acceptance criteria
Blocked by
Related