-
Notifications
You must be signed in to change notification settings - Fork 51
Legal/appstore readiness #93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+1,291
−410
Merged
Changes from all commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
bafa8c9
App-store-readiness prep (Phase 1, legal-review-driven)
abdulsaheel a6bf39e
Point kPrivacyPolicyUrl at the live hosted Privacy Policy
abdulsaheel 9f8b88e
iOS submission prep: scrub hardcoded Team ID + sync Widget/Watch vers…
abdulsaheel 7c6adc7
Offload derive second half to isolate; fix 3 fatal crashes; readiness…
abdulsaheel a074229
Merge pull request #91 from OpenStrap/fix/derive-offload-and-crashes
abdulsaheel e5691e3
Fix CodeRabbit findings on PR #93 (app-store-readiness prep)
abdulsaheel 46da0fc
PRIVACY.md: finalize placeholders, document health data contribution
abdulsaheel 1d9f415
Rewrite privacy/terms: no data collection, Firebase-only diagnostics
abdulsaheel 54d51d9
No data collection: gate health-data upload off, Firebase-only diagno…
abdulsaheel 2f156e9
Scope the "no data collection" claim to builds we actually distribute
abdulsaheel 7c074fe
Address CodeRabbit: make the off-by-default health-data gate explicit
abdulsaheel 6f77359
Carve out AI Coach / Health app integration from the absolute claims
abdulsaheel 1c13e21
Carve out AI Coach / Health app integration from the absolute claims
abdulsaheel fae01fc
Merge docs/legal-site: fold the hosted legal-docs site into this PR
abdulsaheel 1ec89b9
Bump kAlgoVersion 43 -> 44 for the partial-day + wake-steps fixes
abdulsaheel c0df061
iOS App Store prep: usage-description strings + real launch screen
abdulsaheel File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| # Notice | ||
|
|
||
| Edge is an independent, open-source project (MIT License — see `LICENSE`). It | ||
| is not affiliated with, sponsored by, or endorsed by WHOOP, Inc. or any of its | ||
| trademarks. | ||
|
|
||
| No WHOOP source code, binaries, firmware, or copyrighted assets are included | ||
| in this repository. The Bluetooth protocol support in this project was | ||
| independently developed by observing the band's own Bluetooth communications; | ||
| see [the protocol repo's README](https://github.com/OpenStrap/protocol) for | ||
| methodology notes. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,87 @@ | ||
| # Privacy Policy — Edge / OpenStrap | ||
|
|
||
| _Last updated: July 18, 2026_ | ||
|
|
||
| Edge ("the App") is an independent, open-source project. It is not affiliated | ||
| with, sponsored by, or endorsed by WHOOP, Inc. | ||
|
|
||
| **We do not collect your data** | ||
| This section describes every build we ourselves distribute — the signed | ||
| Android APK and iOS IPA published on GitHub Releases, and any future App | ||
| Store/Play Store submission. Your biometric/health data from your paired | ||
| WHOOP 4.0 band — heart rate, heart rate variability (RR intervals), motion | ||
| (accelerometer), raw skin-temperature/blood-oxygen sensor channels, and (if | ||
| you record workouts) GPS location during those workouts — is processed and | ||
| stored entirely on your device in every one of those builds. We do not | ||
| upload it, we do not operate a backend that receives it, and we never see it | ||
| — *unless you separately choose to enable AI Coach or Health app | ||
| integration, described below, which send specific data to services you | ||
| configure.* | ||
|
|
||
| Edge is open source. The underlying code contains an off-by-default, | ||
| compile-time flag (`kHealthDataContributionEnabled`, see | ||
| `lib/telemetry/health_uploader.dart`) that an independent developer could | ||
| enable in their *own*, separately-built and separately-distributed copy of | ||
| the app, pointed at a backend of their own choosing. No build we publish | ||
| enables it — our CI explicitly forces it off for every release (see | ||
| `.github/workflows/build.yml`) rather than relying on the flag's default. A | ||
| self-built copy compiled with that flag on is that builder's own software | ||
| and their own responsibility; it is not covered by this policy. | ||
|
|
||
| **Anonymous diagnostics (on by default)** | ||
| In every build we distribute, the only thing the App sends off your device | ||
| *automatically* — aside from the optional, user-initiated integrations | ||
| described next — is basic crash/error and performance monitoring, via | ||
| Firebase (Google) — Crashlytics, Performance Monitoring, and Analytics. This | ||
| is on by default; you can turn it off at any | ||
| time in Settings ("Send anonymous diagnostics"), which stops any further | ||
| collection immediately. It never includes your health data — only crash | ||
| reports, basic device info (OS/model/app version), and coarse performance | ||
| timing. This data is handled under Firebase's own privacy and security | ||
| practices, not a system we built or operate ourselves — see Google's Firebase | ||
| privacy & security documentation: https://firebase.google.com/support/privacy. | ||
|
|
||
| **Optional, user-initiated integrations** | ||
| If you choose to enable them, the App can also send data to services *you* | ||
| configure: | ||
| - **AI Coach** — if you enable this feature and supply your own API key, | ||
| summaries of your data are sent to the AI provider you configure (by | ||
| default, OpenAI) to generate coaching responses. Off by default and | ||
| requires your own API key. | ||
| - **Health app integration** — if you enable it, the App can write derived | ||
| daily metrics to Apple Health or Google Health Connect, which are controlled | ||
| by your device's own OS-level health app, not by us. | ||
|
|
||
| **What we don't do** | ||
| We do not sell your data. We do not send your health data to WHOOP, Inc. or | ||
| any advertising network. We do not require a WHOOP account or credentials to | ||
| use the App. We do not operate a backend that stores your health data. | ||
|
|
||
| **Your controls** | ||
| Turn off "Send anonymous diagnostics" at any time in Settings — this stops any | ||
| further collection immediately. You can also disable AI Coach or Health app | ||
| integration at any time in Settings if you'd previously turned them on. | ||
|
|
||
| Uninstalling the App deletes all of your locally stored data immediately. | ||
| That's the whole picture *unless* you had separately enabled one of the | ||
| optional integrations above — in that case, uninstalling stops the App from | ||
| sending anything further, but does not reach back and delete data already | ||
| sent: | ||
| - Anonymous diagnostics already sent to Firebase are retained and governed by | ||
| Firebase's own practices (linked above), not by us. | ||
| - Data already sent to your configured AI Coach provider (e.g. OpenAI) is | ||
| retained and governed by that provider's own policies, not by us. | ||
| - Metrics already written to Apple Health or Google Health Connect are | ||
| retained and governed by that platform's own data controls, not by us — | ||
| manage or delete them from that app directly. | ||
|
|
||
| **Children** | ||
| This App is not directed to children under 13 (or the relevant age of digital | ||
| consent in your jurisdiction) and we do not knowingly collect data from them. | ||
|
|
||
| **Changes** | ||
| We may update this policy; material changes will be reflected here with an | ||
| updated date. | ||
|
|
||
| **Contact** | ||
| Questions about this policy: abdulsaheel81@gmail.com. | ||
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
Identify the data controller explicitly.
The policy names the project and an email address but does not identify the developer/controller legal name or jurisdiction. Align this with the store listing and add the required developer/privacy-contact details. Google Play requires developer information and a privacy point of contact. (support.google.com)
Also applies to: 70-71
🤖 Prompt for AI Agents
Source: MCP tools