Skip to content

Warn WHOOP users about firmware restrictions on data access - #680

Merged
abdulsaheel merged 2 commits into
OpenStrap:mainfrom
mikenrafter:warn/whoop-firmware-access
Nov 9, 2026
Merged

abdulsaheel merged 2 commits into
OpenStrap:mainfrom
mikenrafter:warn/whoop-firmware-access

Conversation

@mikenrafter

@mikenrafter mikenrafter commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

WHOOP users can lose access to band data after an automatic firmware update through the official app. Add a prominent warning at the top of the README, above search on the connection picker, and first on the WHOOP pairing screen, including retries. The warning advises both current users and people planning to switch to an open-source app later to avoid reconnecting to the official app and to uninstall or disable it. The app and README also state that we are working on a solution, but no fix is available yet.

Document the reported WHOOP-signed membership-token requirement on 50.43.1.0, the history-sync failure reported on 50.43.2.0, and certificate handling observed on MG 50.42.1.0. The README distinguishes these observations from confirmed enforcement and records availability of 50.43.1.0 by October 19, 2026. The exact rollout start and first enforcing version remain unknown. It does not claim the same restriction is established on WHOOP 4.0.

The warning is advisory and does not diagnose a band as locked from its firmware version. New strings are in the English localization template, with English fallback in other locales.

Related evidence: #673 and ryanbr/noop#2890. The README includes the source links and release-timing evidence. Wording approved by the requester before publication.

Validation:

  • Flutter analyze: no issues.
  • 41 targeted widget tests passed across connection picker, sensor pairing, onboarding, re-pair navigation, and the new warning tests.
  • Warning placement checked in light and dark themes; pairing controls remain usable at 2× text size.
  • Removing both warning call sites makes four new tests fail; restoring them passes all five new tests.
  • git diff --check passed.

Screenshot

Connection screen rendered from the production Flutter widgets at 390 × 844 logical pixels, with the bundled font and normal text size.

Connection screen showing the prominent WHOOP firmware warning, guidance for future users, and the note that a solution is being worked on

Summary by Sourcery

Warn WHOOP users about firmware updates that may restrict open-source access to band data.

New Features:

  • Add prominent WHOOP firmware-access warnings to the README, device connection picker, and pairing flows.

Enhancements:

  • Document reported WHOOP firmware restrictions, supporting evidence, release timing, and the limits of current knowledge without treating firmware versions as definitive lock indicators.

Documentation:

  • Add user-facing guidance recommending that users avoid reconnecting to the official WHOOP app and disable or uninstall it to preserve open-source data access.
  • Document compatibility observations for WHOOP 5.0, MG, and WHOOP 4.0, including token requirements, reported sync failures, certificate observations, and unknown rollout details.

Tests:

  • Add widget coverage for warning placement, conditional display, light and dark themes, retry flows, and usability at large text sizes.

Chores:

  • Include a screenshot of the WHOOP firmware warning.

@sourcery-ai

sourcery-ai Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

Reviewer's Guide

UI

Add a shared advisory warning to the connection picker and WHOOP pairing screen, including retries, while allowing sensor-only flows to omit it.

  • lib/ui2/onboarding/pairing.dart L24, L206-207
  • lib/ui2/pairing/device_picker.dart L386-389 (+4 small edits)
  • lib/ui2/pairing/whoop_firmware_warning.dart L1-67

Documentation

Warn WHOOP users about preserving open-source access and document firmware reports, evidence limits, and release timing.

  • README.md L1-14, L32, L38-70

Tests

Verify warning placement and visibility, sensor-only omission, pairing retries, and usability with large text in both themes.

  • test/whoop_firmware_warning_test.dart L1-102

Other changes

Files not grouped.

  • lib/l10n/app_en.arb L3-14
  • screenshots/whoop-firmware-warning.png

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai

coderabbitai Bot commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

Caution

Review failed

The pull request is closed.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 1 issue

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="lib/ui2/pairing/whoop_firmware_warning.dart" line_range="58-59" />
<code_context>
+            l?.whoopFirmwareWarningDetails ??
+                'Reports on WHOOP 5.0 / MG firmware 50.43.1.0 and 50.43.2.0 '
+                    'describe blocked data access. Bluetooth may still '
+                    'connect. OpenStrap cannot issue the WHOOP-signed '
+                    'membership token needed to unlock affected bands.',
+            style: F.cap.copyWith(color: p.ink2, height: 1.4),
+          ),
</code_context>
<issue_to_address>
**Users get unsupported diagnosis**

When a user on firmware 50.43.2.0 reads the pairing warning, the warning groups 50.43.2.0 with 50.43.1.0 and says a WHOOP-signed token is needed to unlock affected bands, so users see the token presented as the cause of the history-sync failure even though that cause is unestablished.

Distinguish the reports and state that the token-related cause for 50.43.2.0 is unestablished.

Also at `README.md:8-11`.
</issue_to_address>

Sourcery assessment

Approval pending. 1 finding to address first.

Blocking findings: lib/ui2/pairing/whoop_firmware_warning.dart:59


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

Comment on lines +58 to +59
'connect. OpenStrap cannot issue the WHOOP-signed '
'membership token needed to unlock affected bands.',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Medium · Users get unsupported diagnosis

When a user on firmware 50.43.2.0 reads the pairing warning, the warning groups 50.43.2.0 with 50.43.1.0 and says a WHOOP-signed token is needed to unlock affected bands, so users see the token presented as the cause of the history-sync failure even though that cause is unestablished.

Distinguish the reports and state that the token-related cause for 50.43.2.0 is unestablished.

Also at README.md:8-11.

Prompt for AI agents
In `lib/ui2/pairing/whoop_firmware_warning.dart` at lines 58-59:

**Users get unsupported diagnosis**

When a user on firmware 50.43.2.0 reads the pairing warning, the warning groups 50.43.2.0 with 50.43.1.0 and says a WHOOP-signed token is needed to unlock affected bands, so users see the token presented as the cause of the history-sync failure even though that cause is unestablished.

Distinguish the reports and state that the token-related cause for 50.43.2.0 is unestablished.

Also at `README.md:8-11`.

@abdulsaheel
abdulsaheel merged commit 38a83e9 into OpenStrap:main Nov 9, 2026
1 of 2 checks passed
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.

2 participants