settings: move HRV tuning into Advanced (declutter, recreates #518 core) - #1351
Merged
Conversation
Continuous HRV capture, "Overnight only" and the HRV window picker move out of the always-visible Strap card into a new "HRV" card under the already-collapsed Advanced disclosure — same @AppStorage bindings and the same BLE + re-score wiring, just relocated as power-user tuning. Advanced's subtitle now names "HRV tuning" so it stays findable. Everyday connection controls (strap log, strap name, Live Activity) stay in the Strap card. Recreates the declutter half of @digitalerdude's #518 on current main (that PR was a month stale, and its iOS changes would have reverted the #864 honesty gating). The shared InfoButton (i)-popover half of #518 is deferred: splitting the captions creates new strings that need 8-locale translations, which live in @digitalerdude's branch — better landed from there than fabricated here. No behaviour change (bindings/wiring unchanged); no new strings (original captions reused, i18n --ci audit clean). iOS/macOS app-target → app-build gate. Credit: @digitalerdude (#518).
5 tasks
simoncad7
pushed a commit
to simoncad7/noop
that referenced
this pull request
Aug 17, 2026
core) (ryanbr#1351) Continuous HRV capture, "Overnight only" and the HRV window picker move out of the always-visible Strap card into a new "HRV" card under the already-collapsed Advanced disclosure — same @AppStorage bindings and the same BLE + re-score wiring, just relocated as power-user tuning. Advanced's subtitle now names "HRV tuning" so it stays findable. Everyday connection controls (strap log, strap name, Live Activity) stay in the Strap card. Recreates the declutter half of @digitalerdude's ryanbr#518 on current main (that PR was a month stale, and its iOS changes would have reverted the ryanbr#864 honesty gating). The shared InfoButton (i)-popover half of ryanbr#518 is deferred: splitting the captions creates new strings that need 8-locale translations, which live in @digitalerdude's branch — better landed from there than fabricated here. No behaviour change (bindings/wiring unchanged); no new strings (original captions reused, i18n --ci audit clean). iOS/macOS app-target → app-build gate. Credit: @digitalerdude (ryanbr#518).
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.
Recreates the declutter half of @digitalerdude's #518 on current
main.What
Continuous HRV capture, "Overnight only" and the HRV window picker move out of the always-visible Strap card into a new "HRV" card under the already-collapsed Advanced disclosure — same
@AppStoragebindings, same BLE + re-score wiring, just relocated as power-user tuning. Advanced's subtitle now names "HRV tuning" so anyone looking finds it. The everyday connection controls (strap log, strap name, Live Activity) stay in the Strap card.No behaviour change — the HRV toggles keep their exact bindings (
continuousHrvEnabled/continuousHrvOvernightOnly/hrvWindowRaw) and.onChangeCompat → setKeepRealtimeForData/analyzeRecentwiring (verified: each used exactly once, moved not duplicated). No new strings — the original (already-translated) captions are reused, so thei18n --ciaudit is clean.Why not just rebase #518
#518 was a month stale and, despite being iOS-focused, its
Strand/edits would have reverted the #864 honest-data gating (telling a 5/MG owner the strap is "Armed" when Experimental is off). This lands the safe, valuable core on currentmainwithout that regression.What's deferred
The shared
InfoButton(i)-popover half of #518 (splitting each caption into background-prose-behind-a-tap + inline consequence) is not included here: that split creates new strings needing 8-locale translations, which live in @digitalerdude's branch. That half is better landed from their branch (with the translations) than fabricated here — I'll invite that on #518.Verification
i18n --ciaudit clean (no new hardcoded literals).SettingsView) → validated via the app-build gate.Credit: @digitalerdude (#518). Closes #518.