Keep the screen awake during workouts; fix watch timers freezing

- iPhone: disable the idle timer while the exercise detail screen is open,
  so the display no longer sleeps mid-set.
- Watch: the work/rest timers counted on a run-loop Timer that watchOS
  throttles in the Always-On (wrist-down) state, so they froze. Anchor both
  to a wall-clock Date rendered with SwiftUI's self-updating timer text;
  rest haptics + auto-advance now derive from the end time so they catch up
  after a stall instead of stalling.
This commit is contained in:
2026-06-20 12:00:34 -04:00
parent 90271952f3
commit f2da47a70a
3 changed files with 50 additions and 19 deletions
+9
View File
@@ -4,6 +4,15 @@ All notable changes to this project are documented here.
## June 2026
- Fixed the Apple Watch work/rest timers freezing when the wrist was lowered. They
counted by incrementing a per-second `Timer`, which watchOS throttles in the
Always-On (dimmed) state; they now derive from a wall-clock anchor rendered with
SwiftUI's self-updating timer text, so the time keeps advancing while dimmed and is
correct the instant the wrist comes back up. Rest haptics and auto-advance are
driven off the end time too, so they catch up after a stall instead of stalling.
- Keep the iPhone screen awake while the exercise detail screen is open, so the
display no longer sleeps mid-set. (The Apple Watch already stays awake during a
workout via its HealthKit workout session.)
- Set the iPhone app to iPhone-only (`TARGETED_DEVICE_FAMILY` 1); it was
inadvertently universal but isn't an iPad-shaped experience. The Apple Watch app
is a separate target and is unaffected.