github ilyakruchinin/SomnoTrace v1.0.8-alpha-experimental

pre-release3 hours ago

Experimental release - for testing purposes only

Changes since v1.0.7

Oximetry

  • Persistent-mode polling: Added an experimental persistent BLE connection mode for the O2 Ring that uses sparse unauthenticated cmd=0x04 queries at 30-second intervals, eliminating repeated connect/discovery/auth/setup cycles and reducing heart-rate artifacts caused by reconnection bursts.
  • Upload support: Added full oximetry upload pipeline with separate transport scope, canonical format generation (VLD3 export for SleepHQ, full directory tree for SMB), and per-unit state tracking with fingerprinting.
  • Canonical conversion reliability: Simplified error handling and added FATFS rename-over workaround in the canonical conversion pipeline. Added comprehensive logging to help diagnose migration failures.
  • Deferred migration: Moved canonical oximetry migration to a background task so it no longer blocks app_main startup.

Dashboard / Web UI

  • Unified oximetry charts: Integrated oximetry panels (SpO₂, pulse) directly into the main dashboard alongside CPAP charts, with an optional "clamp to CPAP times" toggle that filters oximetry data to the therapy window.
  • Zoom scroll fix: Fixed a bug where clicking reset-zoom or zooming out to full range caused the page to jump to the top on desktop. Reset now updates existing charts in-place via updateDashView() instead of destroying and rebuilding the entire chart DOM.
  • Terminology: Replaced "session" with "part" in upload UI and status messages for clarity.
  • Screenshots: Updated web dashboard screenshot with corrected aspect ratio.

System / Stability

  • NVS safety: Serialized all NVS reads through nvs_writer_run and eliminated unsafe PSRAM pointer access by copying arguments to internal-stack locals. Doubled nvs_writer stack to 8 KB with a low-watermark warning to catch potential overflows.
  • WebSocket reliability: Refactored WebSocket send operations to use httpd_queue_work and increased the ws_fwd stack to 12 KB.
  • FATFS compatibility: Added unlink() before rename() in upload_ox_save to work around FATFS's inability to rename over an existing file, fixing a bug where oximetry upload state was not persisted across reboots, causing repeated re-uploads.
  • SPIRAM: Large buffers now allocated in SPIRAM when available.

Don't miss a new SomnoTrace release

NewReleases is sending notifications on new releases.