github OpenStrap/edge v0.9.24

3 hours ago

Mostly a bug-fix release.

Steps. They used to be an estimate — the band samples once a second, which is too slow to see individual steps, and the estimator was reading gravity drift as walking. That's gone. Steps now come from a real pedometer: your phone's, or the band's 100 Hz stream while it's streaming. Turn on "Use phone step count" in Profile → Health for all-day numbers. A day with neither shows no number rather than a made-up one, and the two sources are never added together — it's the same walk seen from your pocket and your wrist.

Strain no longer reads 0.0 after a long workout. Strain was being tallied in memory by the app, so anything it slept through wasn't counted. Background the app for an hour, or let iOS kill it, and you'd finish with a score built from the few minutes it was awake. The band had the whole workout recorded the entire time, so it gets rescored from that once it syncs. Old workouts fix themselves.

Strength workouts reach Apple Health. They never had — the value being sent doesn't exist on HealthKit, so every one was silently rejected. Swims had the same problem on Android.

Imports. A WHOOP export is a zip and a NOOP backup is a zip, and both went straight into a text decoder, which is where "FormatException: Unexpected extension byte (at offset 10)" came from. WHOOP export zips now unpack and import. A .noopbak tells you to export the raw sensor CSV instead of failing on a byte offset. An export in a language we don't recognise says which columns it found rather than reporting "imported 0 days".

Android battery. The Bluetooth link was pinned at its fastest connection interval around the clock — all night, with nothing to say. It follows what's actually happening now: fast during a sync or a workout, slow when idle, slowest in the background. Band battery is polled every five minutes instead of every thirty seconds.

The band reconnects again. Take it off for ten minutes or walk out of range, and it often never came back until you forgot the device and re-paired. The retry loop only started on a disconnect event and a single error inside it ended reconnection for as long as the app stayed alive — which on Android is indefinitely. Attempts are isolated now, and a supervisor checks every minute that reconnection is actually being attempted.

Also in here since v0.9.21: naps are detected and shown on the Sleep screen, workouts can be logged and retimed by hand, cycling and rowing get suggested again, Health Connect sleep sessions stopped fragmenting, charging notifications stopped replaying, and a sync bug that could trim data off the band before it was safely stored.

Thanks to @Brackyt, @FlixiDoe, @svssathvik7 and @egoran2 for fixes in this one.

Heads up: the Bluetooth changes are the riskiest part of this release and they've had no time on a real band yet. If your strap starts disconnecting every couple of minutes, or the battery reading goes stale, roll back to v0.9.21 and open an issue.

tl;dr: steps are real now, driven from device pedometer, strain stops reading 0.0, both importers accept the file your other app actually gave you, Android stops eating battery overnight, and a band that goes out of range comes back on its own.

What's Changed

  • Bundle Manrope, fix the offload cap, and prune superseded rows by @abdulsaheel in #168
  • fix: repin siblings, per-day prune scoping, monotonic auto-continue clock, CI pin guard in the release path by @abdulsaheel in #169
  • Fix #170: cycling/rowing workouts weren't being suggested by @abdulsaheel in #171
  • fix bugs by @abdulsaheel in #172
  • fix: sleep profile folds every derive pass instead of once per night by @abdulsaheel in #174
  • repin analytics + protocol to main, kAlgoVersion 53 by @abdulsaheel in #175
  • NOOP import: recover the band step counter after schema drift (#160) by @abdulsaheel in #176
  • Stop replayed chargingOn events re-notifying (#179) by @abdulsaheel in #180
  • Log and retime completed workouts by @abdulsaheel in #189
  • test(notify): anchor dedupe keys to today — CI is red on every PR because a date aged out by @abdulsaheel in #207
  • fix(sync): refuse HISTORY_END trim when gate drops leave an empty buffer by @Brackyt in #198
  • Fix Health Connect sleep session fragmentation by @FlixiDoe in #196
  • naps + sleep need: one detector, today-scoped inputs, disclosed adjustments (kAlgoVersion 56) by @svssathvik7 in #204
  • Steps from a real pedometer only; movement minutes on measured evidence by @abdulsaheel in #182
  • Make a detected nap visible on the Sleep screen by @egoran2 in #205
  • fix: apple health strength workouts, workout strain, steps, imports, android battery + reconnect by @abdulsaheel in #209
  • version 0.9.24+55 by @abdulsaheel in #210

New Contributors

Full Changelog: v0.9.21...v0.9.24

Don't miss a new edge release

NewReleases is sending notifications on new releases.