From 2f68776ef652993097ea5e12e1cf17f82896e3a8 Mon Sep 17 00:00:00 2001 From: Mohammad Abdul Sahil <127765312+abdulsaheel@users.noreply.github.com> Date: Sat, 10 Oct 2026 00:36:26 +0530 Subject: [PATCH 1/3] docs(readme): bring supported devices, install and build notes up to date Oura pairs now (experimental, no scores yet), experimental adapters are described without overclaiming, strain/HRV changes from v110, F-Droid recipe status, the Flutter 3.41.6 pin, Russian and the other languages, and the missing lib/ dirs and guides. --- README.md | 45 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 736cbfefd..c72c36fb3 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,13 @@ band at a time. Prefer to sideload the unsigned IPA instead of using TestFlight? That still works — see [`guides/IOS_SIDELOAD.md`](guides/IOS_SIDELOAD.md). +TestFlight gets new builds first. The Android APK on Releases is cut less often, so +it can trail TestFlight by a version or two. + +**F-Droid:** not listed yet. A build recipe that swaps out the Google-backed pieces +(Firebase, ML Kit barcode scanning, Play Services location) is drafted in +[`docs/fdroid/`](docs/fdroid/), but it hasn't been submitted. + ---
@@ -116,14 +123,24 @@ Every screenshot above is real output from a WHOOP 4.0. - **WHOOP 4, WHOOP 5, MG** — full support. Everything below is computed from these. - **Any standard Bluetooth heart-rate strap** — pairs for workout tracking today (heart rate + beat timing, stored and shown). Feeding it into recovery/strain is on the roadmap. -- **Oura Ring** — protocol groundwork exists in the codebase; not pairable in the app yet. - When it lands it will pair with the key the ring already holds, so there is no factory - reset and the Oura app keeps working — [how to get that key](docs/OURA_KEY.md). +- **Oura Ring** — experimental. Pairs with the key the ring already holds, so there is + no factory reset and the Oura app keeps working ([how to get that key](docs/OURA_KEY.md)), + then syncs the ring's history to the phone. That history is stored but doesn't feed + any score yet; nobody on the project has checked its decoding against a ring in hand. + +The pairing screen also lists a handful of other watches and rings marked +**Experimental**. Those have never been tested on real hardware. They can pair and store +what they send, but none of it becomes a number in the app until someone has confirmed +the decoding on an actual device. More wearables are in development. ## What works **Health** — heart rate, HRV, sleep staging, recovery/readiness, strain, stress, an HRV -spot-check, VO2max estimate, real-time breathing coherence. +spot-check, VO2max estimate, real-time breathing coherence. Strain is scored against +your own quiet waking heart rate, not a population constant, so a workout counts the +same for a fit person with a low resting HR as for anyone else. It needs three days of +your data before it shows a number. Nightly HRV is RMSSD from one estimator, and a +night where the beat detector over-counts is refused rather than scored. **Activity** — auto-detected workouts, live workout tracking with GPS routes, heart-rate zones you can edit manually, GPX export. @@ -145,7 +162,11 @@ reconnects. ("what actually moves your numbers"), lab-result CSV import, cycle tracking, a deterministic coach, a shareable weekly recap, a BYOK AI assistant, home-screen widgets, iOS Live Activities, Siri shortcuts, a smart alarm that buzzes the band with a weekly -repeating schedule and a smart wake window that catches you in light sleep. +repeating schedule and a smart wake window that catches you in light sleep (the next +alarm shows on Home). Scheduled local backups, and on Android you can point them at a +folder of your choice. + +**Languages** — English, German, Spanish, French, Hindi, Russian and Chinese. ## What doesn't work (yet, or maybe ever) @@ -163,6 +184,10 @@ repeating schedule and a smart wake window that catches you in light sleep. ## Run it +Needs Flutter **3.41.6** (the version CI builds with; newer 3.x releases aren't +supported yet). The `protocol` and `analytics` packages are pulled from git, pinned +to exact commits in `pubspec.yaml`, so `pub get` fetches them for you. + ```bash git clone https://github.com/OpenStrap/edge.git cd edge @@ -216,7 +241,9 @@ turn on yourself: it back off stops collection immediately. Never includes health data. - **OTA/announcement pointer** — checks whether there's a newer build. - **Legacy account import** — one-time, only if you had an old OpenStrap cloud account. -- **BYOK AI assistant** — only if you configure a provider. Your key, your account. Be +- **BYOK AI assistant** — only if you configure a provider. Your key, your account. It + also works with any OpenAI-compatible server you run yourself (Ollama and the like) on + your own network or over Tailscale, in which case nothing leaves your machines. Be aware that **the prompts contain your health data**: to answer "why is my recovery low", the assistant is given your metrics to read. That data goes to whichever provider you chose, under their policies, not ours. @@ -236,6 +263,7 @@ lib/coach/ read-only SQL coach over allow-listed views lib/compute/ runs the analytics pipeline, writes results lib/data/ local storage + the repository seam the UI reads from lib/debug/ debug-mode flags +lib/ecg/ WHOOP MG ECG readings lib/gestures/ device action / gesture dispatch lib/gps/ GPS route tracking for outdoor activities lib/health/ HealthKit / Health Connect import + export @@ -245,7 +273,8 @@ lib/live/ Live Activity / breathing session lib/models/ shared data models (Metric, payloads, app status) lib/notify/ the single notification emitter + alert policies lib/platform/ platform-channel glue (app icon, Tasker, device actions) -lib/state/ AppState, the one source of truth +lib/scan/ barcode scanning (swapped for a FOSS reader in the F-Droid build) +lib/state/ AppState, the one source of truth, plus its sync/workout/live controllers lib/stress/ guided-breathing session logic lib/sync/ background/headless sync policies lib/telemetry/ opt-in error + usage telemetry @@ -265,7 +294,9 @@ Protocol decoding and analytics live in their own repos — - [`guides/IOS_INSTALLATION.md`](guides/IOS_INSTALLATION.md) — building and installing on an iPhone. - [`guides/IOS_SIDELOAD.md`](guides/IOS_SIDELOAD.md) — sideloading without a paid developer account. +- [`guides/IOS_SHORTCUTS.md`](guides/IOS_SHORTCUTS.md) — syncing the band from Shortcuts, on demand or on a schedule. - [`guides/WATCH_SETUP.md`](guides/WATCH_SETUP.md) — the Apple Watch companion app. +- [`docs/OURA_KEY.md`](docs/OURA_KEY.md) — getting the key an Oura ring already holds. - [`guides/AI_COACH.md`](guides/AI_COACH.md) — bring-your-own-key AI coach, briefings, and journal. - [`guides/TASKER_INTEGRATION.md`](guides/TASKER_INTEGRATION.md) — buzzing the strap from Tasker/automation. - [`guides/BUZZ_MEANINGS.md`](guides/BUZZ_MEANINGS.md) — what each buzz pattern means. From 0e18070f33494a5477b4070f459af5afef381e57 Mon Sep 17 00:00:00 2001 From: Mohammad Abdul Sahil <127765312+abdulsaheel@users.noreply.github.com> Date: Sat, 10 Oct 2026 01:26:13 +0530 Subject: [PATCH 2/3] docs(readme): say scheduled backups run on app open, not in the background --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c72c36fb3..69df9f0db 100644 --- a/README.md +++ b/README.md @@ -163,8 +163,9 @@ reconnects. deterministic coach, a shareable weekly recap, a BYOK AI assistant, home-screen widgets, iOS Live Activities, Siri shortcuts, a smart alarm that buzzes the band with a weekly repeating schedule and a smart wake window that catches you in light sleep (the next -alarm shows on Home). Scheduled local backups, and on Android you can point them at a -folder of your choice. +alarm shows on Home). Scheduled local backups, which run when you open the app and one +is due (there is no background scheduler); on Android you can point them at a folder of +your choice. **Languages** — English, German, Spanish, French, Hindi, Russian and Chinese. From 4ed0ff88ddd5700fc21acad32b58b7e53a7ba8e8 Mon Sep 17 00:00:00 2001 From: Mohammad Abdul Sahil <127765312+abdulsaheel@users.noreply.github.com> Date: Sat, 10 Oct 2026 01:27:08 +0530 Subject: [PATCH 3/3] docs(readme): F-Droid request was opened and closed, not unsubmitted --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 69df9f0db..4a7ee31cd 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,8 @@ it can trail TestFlight by a version or two. **F-Droid:** not listed yet. A build recipe that swaps out the Google-backed pieces (Firebase, ML Kit barcode scanning, Play Services location) is drafted in -[`docs/fdroid/`](docs/fdroid/), but it hasn't been submitted. +[`docs/fdroid/`](docs/fdroid/). An inclusion request was opened and closed without +being merged. ---