Introduce all of the next round's combos before it starts #24

Merged
berkay merged 1 commit from rest-preview-all-combos into main 2026-11-10 21:51:02 +03:00
Owner

Requested by Berkay · project thread

From usability testing: before a round, show every combo of that round in order, not just the first one, and start as early as those combos need instead of a fixed 30 s.

Behaviour

  • Get ready and rest introduce the next round's combos one by one: the voice says each one ("Round 2. one, two, slip, two. Jab, cross, slip, cross." then "Then. three, six, three. ...") and the figure plays it.
  • Start time is computed: about 1 s for "Round N" + per combo (2 s + 1.1 s per strike, about two plays of the figure) + 3 s kept clear for the 3-2-1 beeps, at least 10 s. Two 3-4 strike combos start ~16 s before the round; one short combo 10 s. If rest (or get ready) is shorter, it starts right away.
  • Card: the title shows "NEXT ROUND · 2 COMBOS" before the introduction, then "COMBO 1/2", "COMBO 2/2". A row of combo chips lists the round's combos, the one being introduced in red. The figure restarts for each combo.
  • +20 s before the round pushes the introduction back and starts it over later (as before).
  • Random has no fixed list, so it still introduces only the round's opener (same timing rule).

Screenshot (get ready, rest before the introduction): /mnt/project-files/bagdrill/rest-preview-all-combos.png in the project files.

Code

  • WorkoutEngine: previewLeadFor / previewSlotFor replace previewBeforeRoundEnd; EngineState.nextRoundCombos + previewIndex (nextRoundCombo kept as a getter); NextComboPreview carries index / count.
  • SessionController: combos after the first are said with thenComboCallout.
  • Rest/Get ready view: combo chips and per-combo title.

Tests

  • Engine: computed lead for one combo; three combos introduced in order and before the 3-2-1; +20 s restarts the introduction; short-rest skip test now uses an 8 s rest.
  • Controller: rest says "Round 2." then "Then." for the second combo.
  • flutter analyze clean, flutter test 117 passed, screenshot tests pass.

Based on main; independent of #23. No APK built, no version bump.

🤖 Generated with Claude Code

https://claude.ai/code/session_015s4aKoJZdE2DV1jJq1MHvp

<!-- claude-projects-attribution --> _Requested by **Berkay** · [project thread](https://claude.ai/code/project/chan_01T5Cs4GeJAnhjXKSJKvCDa2?thread=cmsg_01T5Cs4GeJAnhjXKSJKvCDa2PMit7Fx4afYW6uXczMAydf)_ From usability testing: before a round, show every combo of that round in order, not just the first one, and start as early as those combos need instead of a fixed 30 s. ## Behaviour - **Get ready and rest** introduce the next round's combos one by one: the voice says each one ("Round 2. one, two, slip, two. Jab, cross, slip, cross." then "Then. three, six, three. ...") and the figure plays it. - **Start time is computed:** about 1 s for "Round N" + per combo (2 s + 1.1 s per strike, about two plays of the figure) + 3 s kept clear for the 3-2-1 beeps, at least 10 s. Two 3-4 strike combos start ~16 s before the round; one short combo 10 s. If rest (or get ready) is shorter, it starts right away. - **Card:** the title shows "NEXT ROUND · 2 COMBOS" before the introduction, then "COMBO 1/2", "COMBO 2/2". A row of combo chips lists the round's combos, the one being introduced in red. The figure restarts for each combo. - **+20 s** before the round pushes the introduction back and starts it over later (as before). - **Random** has no fixed list, so it still introduces only the round's opener (same timing rule). Screenshot (get ready, rest before the introduction): `/mnt/project-files/bagdrill/rest-preview-all-combos.png` in the project files. ## Code - `WorkoutEngine`: `previewLeadFor` / `previewSlotFor` replace `previewBeforeRoundEnd`; `EngineState.nextRoundCombos` + `previewIndex` (`nextRoundCombo` kept as a getter); `NextComboPreview` carries `index` / `count`. - `SessionController`: combos after the first are said with `thenComboCallout`. - Rest/Get ready view: combo chips and per-combo title. ## Tests - Engine: computed lead for one combo; three combos introduced in order and before the 3-2-1; +20 s restarts the introduction; short-rest skip test now uses an 8 s rest. - Controller: rest says "Round 2." then "Then." for the second combo. - `flutter analyze` clean, `flutter test` 117 passed, screenshot tests pass. Based on main; independent of #23. No APK built, no version bump. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_015s4aKoJZdE2DV1jJq1MHvp
Get ready and rest used to introduce only the next round's first combo,
always 30 s before the round. They now show every combo of the round in
order (drill; random still has one opener), each with its callout and the
figure, and start as long before the round as those combos need, kept
clear of the 3-2-1 beeps. The card lists the round's combos with the one
being introduced marked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015s4aKoJZdE2DV1jJq1MHvp
berkay merged commit 89ec8e3955 into main 2026-11-10 21:51:02 +03:00
berkay deleted branch rest-preview-all-combos 2026-11-10 21:51:02 +03:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
berkay/bagdrill!24
No description provided.