Skip to content

fix(copy): correct stale and misleading WHOOP 5.0/MG text on Apple, Android and docs - #2795

Open
JohanStefanes wants to merge 1 commit into
ryanbr:mainfrom
JohanStefanes:johan/5mg-quick-wins
Open

JohanStefanes wants to merge 1 commit into
ryanbr:mainfrom
JohanStefanes:johan/5mg-quick-wins

Conversation

@JohanStefanes

Copy link
Copy Markdown

Summary

Text-only pass over user-facing WHOOP 5.0/MG copy on Apple (macOS/iOS), Android and the docs. Every changed string was first checked against the code that decides the behaviour; no BLE command, gate, analytics formula or stored value changes.

Main corrections:

  • Wrong navigation path (Refs Alarms: the 5/MG strap-alarm warning points to 'Settings, Experimental', but the switch is Test Centre → Protocol probes (and a 5.0 fire is now reported) #2464): 5/MG probe, ECG and alarm hints now point to Test Centre → 5/MG protocol diagnostics → Protocol probes (or Test Centre → Connection & Sync), not the removed Settings → Experimental section. README, FEATURES and the protocol docs follow.
  • Strap alarm on 5/MG: both platforms now say the 5/MG firmware alarm is experimental and only arms while Protocol probes is on. Android's "Buzz WHOOP 5/MG" companion row no longer promises a strap buzz that is never armed with probes off. Neither platform promises that switching off clears an alarm already on the strap ("may still be set").
  • Probe verdicts (98/84): "ACCEPTED" became "answered — N-byte payload (not a success verdict; see the bytes below)", identical on Swift and Kotlin, with tests updated on both.
  • Hello-suppressed 5/MG: the Health sync card, the Sync now hint, the Shortcuts reply and the Live Activity no longer claim a pairing handshake is in progress.
  • Pairing: the add-device step says how to enter pairing mode (tap until the LEDs flash blue); the bond-refusal hint is split for macOS and iOS.
  • Stale capability claims: onboarding expectation card, 5/MG steps calibration footnote, skin-temperature empty state, SpO₂ readouts, spot-HRV caveat (both WHOOP generations give optical R-R) and the 5/MG device-card footnote now match the code.
  • Translations: every changed English string is updated in all Android locales and in Localizable.xcstrings. The MG ECG medical disclaimer stays deliberately untranslated, as before.

Historical changelog entries are untouched; only the live onboarding Expectation card in AppChangelog.swift changed.

Verification

  • xcodebuild scheme Strand (macOS) and NOOPiOS (iOS Simulator): build succeeded.
  • swift test: WhoopProtocol (816 tests) and StrandAnalytics (2143 tests) pass.
  • ./gradlew testFullDebugUnitTest: passes apart from 2 RecoveryDriversTest cases (half-tie rounding) that fail the same way on unmodified main.
  • python3 -m unittest discover -s Tools: passes apart from 4 test_check_source_references cases (/var vs /private/var temp-path on macOS) that fail the same way on unmodified main.
  • Tools/i18n_audit.py --ci and Tools/doc_comment_lint.py: pass.
  • Not tested on hardware: copy-only change.

StrandTests was not run locally; app-build.yml runs it on this PR.

🤖 Generated with Claude Code

…ndroid and docs

User-facing text only; no BLE, gating, analytics or storage behaviour changes.

- Point every 5/MG probe reference at Test Centre -> 5/MG protocol diagnostics
  -> Protocol probes (or Connection & Sync), not the removed
  Settings -> Experimental section (Refs ryanbr#2464)
- Strap alarm: say on both platforms that a 5/MG only arms while Protocol
  probes is on, and that an earlier alarm may still be set on the strap
- Probe verdicts for opcodes 98/84 say "answered", not "ACCEPTED", identically
  on Swift and Kotlin (tests updated)
- Health sync card, Sync now hint and Shortcuts reply no longer claim a
  pairing handshake is in progress for a hello-suppressed 5/MG
- Pairing-mode step says how (tap until the LEDs flash blue); onboarding
  expectation card, steps, skin-temp, SpO2 and HRV caveats match the code
- Translations updated in all Android locales and the xcstrings catalog
- README, FEATURES, FAQ, ANDROID, ANALYTICS and protocol docs match the app

Verified: macOS (Strand) and iOS (NOOPiOS) builds succeed; WhoopProtocol and
StrandAnalytics swift test pass; Android testFullDebugUnitTest passes except
two RecoveryDriversTest cases that fail identically on main; i18n_audit --ci
and doc_comment_lint pass. Not tested on hardware (text only).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant