Debug export: strap & data state + analytics-funnel diagnostics#20
Merged
Conversation
The shareable strap-log/bundle header was connectivity-only (device, OS, battery-opt, permissions). Enrich it for the data-quality bug classes that actually recur. Strap & data state (offline-safe: persisted prefs + the "my-whoop" daily spine): - Strap model, last-known firmware (now persisted on connect so it survives disconnect and the background export), last-sync (relative), timezone/offset, days of history, and the most recent sleep + recovery day. Analytics funnels (latest night, best-effort, self-reporting): - Recompute the REM + skin-temp funnels for the most recent sleep session and print each ".summary", so a "0% REM" / "skin-temp absent" report arrives with the funnel already broken down. Prints the sample counts it read and says plainly when it cannot compute (no session / no raw samples under the canonical id) so it never fabricates a verdict. Plumbing: - New AndroidDiagnostics.dynamicLines(context) (suspend, on Dispatchers.Default) appended to BOTH the interactive and scheduled export headers. - LogExport share/write paths become suspend; the DebugExportWorker already runs in a coroutine, and the 4 UI share buttons now launch on their screen scope. - NoopPrefs.lastFirmware persisted at the firmware-decode point in WhoopBleClient. No analytics-pipeline changes; all additions live in the diagnostics/export layer.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Enriches the shareable strap-log / bundle header, which was connectivity-only (device, OS, battery-opt, permissions), for the data-quality bug classes that actually recur (no steps / 0% REM / skin-temp absent / missing nights).
Added
Strap & data state (offline-safe — persisted prefs + the
my-whoopdaily spine):Analytics funnels (latest night, best-effort, self-reporting):
.summary, so a "0% REM" / "skin-temp absent" report arrives with the funnel already broken down.Plumbing
AndroidDiagnostics.dynamicLines(context)(suspend, onDispatchers.Default) appended to both the interactive and scheduled export headers.LogExportshare/write paths becomesuspend;DebugExportWorkeralready runs in a coroutine; the 4 UI share buttons nowlaunchon their screen scope.NoopPrefs.lastFirmwarepersisted at the firmware-decode point.Scope / safety
Not included (deliberate)