Suspend watch edit locks on background; degrade oversized pushes

Two watch-stranding fixes (BULLETPROOFING.md M1, M4):

The exclusive-edit lock rode in the latest-wins context and was cleared
only by onDisappear, so an editor left open in a pocketed (or
force-quit) phone parked the watch's run indefinitely ("Editing on
iPhone..."). The scene-phase hook now publishes the locks as cleared
while the app is backgrounded - without forgetting them locally - and
re-asserts them on return to the foreground.

pushAll treated a failed updateApplicationContext as log-only, so a
payload past WatchConnectivity's size ceiling silently froze the watch
out of all future state. A failed push now retries with the
recently-completed tail dropped (display-only on the watch); only a
failure of the slim push too remains an error.

Claude-Session: https://claude.ai/code/session_01PVNBVKp5bcq52X722uMjwT
This commit is contained in:
2026-07-09 23:04:19 -04:00
parent abb223daca
commit 25a111a6b4
4 changed files with 53 additions and 14 deletions
+4
View File
@@ -8,6 +8,10 @@ A recording cut short by watchOS itself is now still saved to Apple Health inste
Ending a workout and immediately starting a new one no longer risks a stray seconds-long workout appearing in Apple Health.
Putting the iPhone away with an editor still open no longer leaves the workout stuck showing Editing on iPhone on the watch.
Syncing to the watch no longer silently stops when a large workout history makes the update too big to send.
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.