Make the watch own its workout-session lifecycle
The HKWorkoutSession could only ever be born via the phone's one-shot startWatchApp handoff (BULLETPROOFING.md H1-H3): a dropped handoff, a watch crash/reboot, or a run engaged manually on the wrist left the whole workout sessionless - no heart rate, no Health save, app suspending wrist-down - and "End Current & Start New" swallowed the handoff against the old session's idempotency guard. Now the coordinator self-starts a session on any reconcile that finds an active run with none running (SessionEndPlanner.shouldStart / runToStart, activity type from the run's split), recover() re-adopts a crash-orphaned session at launch, and a system-ended session salvages its Health save instead of dropping it. A .finish decided for a session younger than 30s demotes to .discard so the stale-context races can't save junk workouts attributed to the wrong run; parallel completions now pick the survivor deterministically. Claude-Session: https://claude.ai/code/session_01PVNBVKp5bcq52X722uMjwT
This commit is contained in:
@@ -1,5 +1,13 @@
|
||||
**July 2026**
|
||||
|
||||
The watch now starts recording on its own whenever a workout is active, so a missed hand-off from the iPhone no longer leaves a session without heart rate or Health credit.
|
||||
|
||||
A workout recording now survives the watch app crashing or the watch restarting, reconnecting to the in-progress session instead of losing it.
|
||||
|
||||
A recording cut short by watchOS itself is now still saved to Apple Health instead of being silently dropped.
|
||||
|
||||
Ending a workout and immediately starting a new one no longer risks a stray seconds-long workout appearing in Apple Health.
|
||||
|
||||
A new Cardio exercise and matching starter split let you log aerobic sessions, tracked on your Apple Watch as a cardio workout.
|
||||
|
||||
A new Auto-Advance option lets a split flow hands-free from one exercise to the next, resting automatically between them.
|
||||
|
||||
Reference in New Issue
Block a user