Preview the next exercise and count into each set during rests
The run flow's between-exercise rest now previews the next exercise — its
figure and a large "Coming up" name — and the hands-free narration gains a
per-second count-in ("<Exercise>, in 1, 2, 3, GO!") spoken before every set,
plus a "Coming up" announcement as a between-exercise rest begins. A new
Settings > Narration picker chooses the count-in cues, the setup/form read,
or both.
Also fixes spoken cues going silent after the first exercise in a flow split:
the stop-on-teardown moved from the per-exercise view (rebuilt on every
hand-off) to the run host, which stays mounted for the whole run. The audio
session now holds its duck across the per-second count so background music
doesn't pulse between words.
Claude-Session: https://claude.ai/code/session_01BQcEWmAPA78338QuEwRkAh
This commit is contained in:
@@ -72,7 +72,13 @@ struct RunFlowView: View {
|
||||
.id(currentLogID)
|
||||
}
|
||||
.onAppear { liveRun.navigatedRunID = currentLogID }
|
||||
.onDisappear { if liveRun.navigatedRunID == currentLogID { liveRun.navigatedRunID = nil } }
|
||||
.onDisappear {
|
||||
if liveRun.navigatedRunID == currentLogID { liveRun.navigatedRunID = nil }
|
||||
// Silence narration only when the *whole run* leaves. This host stays mounted
|
||||
// across per-exercise hand-offs (the child re-ids), so stopping here — rather
|
||||
// than in the child's onDisappear — no longer cuts off the next exercise's cue.
|
||||
speechAnnouncer?.stop()
|
||||
}
|
||||
}
|
||||
|
||||
/// Hand off to the next exercise. Suppresses the leaving exercise's live-ended/activity
|
||||
|
||||
Reference in New Issue
Block a user