diff --git a/README.md b/README.md
index 83f95ce..8c497a5 100644
--- a/README.md
+++ b/README.md
@@ -31,7 +31,7 @@ Bike trainer control web app using Web Bluetooth. Tested with Wahoo KICKR Core 2
- Creates an on-demand 1200×630 workout card for sharing on X from a stable, stateless RideControl.xyz link containing selected summary stats, a compact route map and elevation preview, and accurate personal-best callouts. Public GPX workouts link back to their exact RideControl route. Cloudflare regenerates an evicted image from the link and serves it with immutable cache headers; no share data is stored in KV or R2. Sharing is explicit and does not publish raw ride samples, comments, or profile details.
- Imports individual FIT or TCX activities, or every supported activity inside nested folders in a mixed-format ZIP, directly into local session history. Compatible ride data is preserved, duplicates are detected across formats by identifier or stable activity data, and invalid files do not stop the rest of a batch; imported rides permanently retain their import timestamp and a subtle import icon, while only the latest batch remains highlighted until the history tray closes.
- Downloads every locally saved ride at once as a compressed ZIP of individual FIT or TCX files, with TCX selected by default, the rider's format choice remembered locally, and collision-safe filenames when sessions share the same start time.
-- Continues any saved session in a new unsaved copy while preserving its recorded time, distance, calories, samples, averages, maximums, and original start time. Active rides are checkpointed locally and restored after a page reload; the restored dashboard explains that ride data remains safe while Bluetooth devices may need time to reconnect before riding continues, then automatically removes that notice once the trainer and every other paired ride device are connected again.
+- Continues any saved session in a new unsaved copy while preserving its recorded time, distance, calories, samples, averages, maximums, and original start time. Linked course sessions expose Previous and Next controls for moving through the continuation path, plus a full-journey view that combines every part on that path without mixing in alternate branches. Active rides are checkpointed locally and restored after a page reload; the restored dashboard explains that ride data remains safe while Bluetooth devices may need time to reconnect before riding continues, then automatically removes that notice once the trainer and every other paired ride device are connected again.
- Protects recorded active rides with a browser confirmation before refresh or close, and presents the save workflow before starting or continuing another session.
- Includes contextual keyboard help for dashboard and history actions, including pausing, ending, starting, navigating, viewing history, and deleting sessions.
- Displays connection and application notices with a visible 15-second countdown and automatic dismissal.
diff --git a/src/components/session-detail.tsx b/src/components/session-detail.tsx
index 5e693a7..2bd6436 100644
--- a/src/components/session-detail.tsx
+++ b/src/components/session-detail.tsx
@@ -139,17 +139,44 @@ export function DeleteSessionDialog({
function JourneyMetricScope({
journey,
onChange,
+ onSelectSession,
showCombined,
}: {
journey: CombinedSessionJourney;
onChange: (showCombined: boolean) => void;
+ onSelectSession?: (sessionId: string) => void;
showCombined: boolean;
}) {
+ const selectSession = (sessionId: string | undefined) => {
+ if (sessionId) {
+ onSelectSession?.(sessionId);
+ }
+ };
return (
-
- Course journey · Part {journey.partNumber} of {journey.partCount}
-
+
+
+ Course journey · Part {journey.partNumber} of {journey.partCount}
+