Stage 4: guided Player for both Modes and the Session summary

- buildSegments lays a Plan out as holds with Transitions (get ready,
  switch sides, next round, next exercise) or sets with count-up Rests;
  Supersets alternate members and rest per round unless asked otherwise
- SessionRunner drives segments against an injected clock: auto-advance
  with a chime, pause, skip, back, rep sets confirmed with logged reps
  and kg, timed sets started on demand, early end
- Player screen: countdown ring, accent pulse in the last 3 s, Flip
  Animation, next-up cards, Rest Screen, mute toggle, screen kept on
- Sessions table (schema v2 migration) keeps a Plan snapshot and Set
  Logs; nothing is saved when no hold or set was done
- Summary with time, exercises or sets logged, and every Set Log
- Synthesised quiet cue sounds (tools/sounds), status bar per Mode

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
CedricandClaude Opus 5.5 committed 2026-10-29 00:20:16 +01:00
1 parent bbdca95541
commit 971ff64117
28 files changed
+3465 -84

No files matched your search

+5 -3
View File
@@ -55,14 +55,16 @@ In Workout Mode, the screen after "Set done": a count-up timer ("Resting 1:12")
button. Nothing counts down. Timed sets start only when the user taps Start.
**Transition**:
In Stretching Mode, a short card between rounds, sides ("Switch sides") and Exercises, after which the
next hold starts automatically. Length set per Plan, 5 s by default.
In Stretching Mode, a short card before the first hold ("Get ready") and between rounds, sides
("Switch sides") and Exercises, after which the next hold starts automatically. Its length is the
Plan's "pause between holds", 5 s by default; 0 s means no Transitions.
## Sessions
**Session**:
One run-through of a Plan in the Player. It stores a snapshot of the Plan, so later edits to the Plan
never change it. A Session is **complete** or **incomplete** (ended early).
never change it. A Session is **complete** (reached the end) or **incomplete** (ended early). A Session
in which no hold or set was actually done is not saved at all.
_Avoid_: Workout, run
**Player**: