github ilyakruchinin/SomnoTrace v3.2.4

9 hours ago

v3.2.4

๐Ÿ”ง Reliability fixes

  • CPAP metadata resilience (fixes #326) โ€” Several protections against
    losing machine identification and therapy settings when the BLE link
    hiccups at therapy stop:

    • ๐Ÿ”„ If the identification/settings read stalls on a wedged BLE write,
      SomnoTrace now waits for the link to auto-reconnect and retries the
      failed read once, instead of giving up immediately.
    • ๐Ÿ’พ Machine identification and current settings are captured while the
      BLE link is idle at connect time and cached on the SD card โ€” so a
      same-machine fallback exists even on the very first night.
    • ๐Ÿ—“๏ธ EDF generation and Recreate All EDFs can now borrow missing
      _ident.json / _settings.json from the same day, neighbouring days,
      or the cached device snapshot (with serial-number checks so data can
      never cross-pollinate between machines). A failed night is now
      repairable automatically once any later session succeeds.
    • ๐Ÿšซ EDFs are no longer exported with blank SRN=/MID=/VID= headers,
      and uploads are held back until Identification.json exists โ€” so
      incomplete bundles can't reach Aerivue/SMB and bounce in a retry loop.
    • ๐Ÿ” Aerivue import failures now log the server's actual error message,
      and BLE write timeouts log the real status code โ€” no more guessing.
  • O2 Ring sync after long recordings (#327, thanks @CellularTuna!) โ€”
    Some rings ignore the file-list request for the entire post-recording
    window but answer right after a restart. After repeated refusals the
    ring now gets a vendor soft-reset command and the pull is retried once
    it comes back โ€” with a 10-minute guard so a stubborn ring can never be
    reset-looped, and quieter retry logs in the meantime.

  • SomnoStage warning spam โ€” Truncated or still-growing vitals.snt /
    _sa2.snt files are now classified as INSUFFICIENT instead of being
    re-queued forever, ending the repeated warnings on empty source files.

๐Ÿงช Tests & tooling

  • New SomnoStage CSV host tests covering ZQ scoring, deep-sleep onset,
    the Sleep Graph tail, and output limits โ€” plus mutation-test coverage
    for the export path (#325, thanks @Plantucha!).
  • Host tests for the new metadata fallbacks and missing-identification
    guards.

๐Ÿ™ Contributors

A big thank-you to everyone who made this release possible:

  • @CellularTuna โ€” O2 Ring 0xE2 soft-reset recovery (#327)
  • @Plantucha โ€” SomnoStage CSV test coverage and mutation-harness
    improvements (#325)
  • @derekkorczak โ€” detailed bug report with logs that pinpointed the
    missing-metadata failure chain (#326), and to Cole at Aerivue (@mktexan)
    for flagging the import failures

Don't miss a new SomnoTrace release

NewReleases is sending notifications on new releases.