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.jsonfrom 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 untilIdentification.jsonexists โ 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.
- ๐ If the identification/settings read stalls on a wedged BLE write,
-
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.sntfiles 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