Repository navigation
Fix restored training controls and improve widget feedback - #18
Closed
AlexSchmidt1999 wants to merge 5 commits into
Closed
AlexSchmidt1999 wants to merge 5 commits into
AlexSchmidt1999 wants to merge 5 commits into
Conversation
Owner
Author
|
Closing this older fork test PR. Its full head ( The relevant changes are now submitted for upstream review in #2759, #2761. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Training controls appeared unresponsive, and restored normal workouts lost their persisted session ID, causing existing widget and Live Activity actions to address a different session. The decoder now preserves the ID and pulse-loss pause flag. The existing round-trip regression test reproduced the loss before the correction. The shared controls also use an intent-backed optimistic Toggle for Pause/Resume, retaining existing icons, localized labels, design tokens and two-step ending.
The coordinator avoids publishing an unchanged snapshot before applying an action, reconciles the final state on early returns and errors, compares snapshot values instead of JSON byte order, and awaits pending ActivityKit updates before returning from an app intent. Display & Performance records local action/handler duration, session-match and confirmation flags and active-session count, without IDs or health values. These timings exclude app-process wake and the system's final redraw.
Validation: macOS build and 40 targeted training/snapshot/persistence/save-failure tests passed; iOS Release app, widget and watch builds passed; 12 existing layout renders passed, with Live Activities below 160 points. Translation, source hygiene and source/binary policy checks passed. An existing timer-test expectation now uses localized text so the rest-transition test also runs on German hosts.
Device evidence: the owner confirmed improved Pause feedback in build 445, but End did not display the expected confirmation. Local request-End handler times were 23–61 ms. Waiting redaction was removed after the owner reported blinking without the confirmation. Build 446 contains the restoration and final-state corrections; final End behavior and warm/cold latency still require device verification.
Apple-only fork change, stacked on the local performance-capture branch. No Android changes, schema changes, dependencies, network reporting or upstream PRs. Local iPhone test build 446 uses the existing signing process. The stored control fields are Apple-specific; physiological values and the backup whitelist are unchanged.