github ilyakruchinin/SomnoTrace v3.2.5

4 hours ago

v3.2.5

✨ New features

  • Sleep stages on Aerivue — SomnoStage hypnograms now upload to Aerivue
    in SomnoTrace's native SST1 binary format, in addition to the existing
    CSV uploads to SMB:
    • 📦 Uploaded as-is — the original epoch grid is preserved (30 s for
      AirSense 11 and full-rate rings, 32 s for Gen1 O2 Rings at 0.25 Hz) with
      per-epoch confidence scores intact. No conversion, no resampling, no
      Zeo grid.
    • 🔀 Per-backend format routing — each upload destination now declares
      which stage format it consumes (SMB → CSV, Aerivue → SST), with separate
      CSV and SST fingerprints in upload state. A rescore that changes the
      .sst re-uploads to Aerivue without disturbing SMB's CSV state — and a
      CSV-only change never re-triggers an SST upload.
    • 🔍 Direct SST discovery — valid .sst sidecars are found directly
      under streams/ and oximetry/recordings/ too, so a hypnogram still
      uploads even when its CSV export doesn't exist (e.g. freshly-rescored
      files). PARTIAL (still-growing) and INSUFFICIENT (not enough valid
      oximetry) sidecars are never uploaded.
    • 📤 Each backend's refused/accepted stage files are logged from the
      server's import response, and a refused stage file fails the day so it
      retries instead of being silently marked done.
    • 🧩 Backend capacity raised 4 → 8 and BreathingRoom is pre-declared as an
      SST consumer — adding the next stage endpoint is now a flag flip, not a
      framework rework.

🔧 Reliability fixes

  • SMB "Test Connection" false failure (fixes #330) — after the first
    successful upload the test wrongly reported "write test failed" forever:
    its DATALOG probe hit STATUS_OBJECT_NAME_COLLISION ("directory already
    exists"), which vendored libsmb2 never surfaces via smb2_get_nterror().
    The firmware now recovers the real status from libsmb2's error string —
    no vendored-library patch needed. The same fix also repairs adaptive
    SMB-signing retry
    when a subfolder path is configured (Windows 11 24H2+
    servers that require signing were falsely reported as "folder not found").

📖 Docs & 🧪 tests

  • 📄 New spec: 0015-somnostage-sst-format.md — the complete SST1 byte
    layout, stage/confidence encoding, flag semantics and epoch-grid rules,
    written for third-party endpoints implementing .sst ingestion.
  • 🧪 Expanded host tests: dual-format tracking, format-isolated fingerprint
    invalidation, SST header/size/flag validation, 32 s Gen1 grids, SST-only
    discovery, and reboot persistence.

Don't miss a new SomnoTrace release

NewReleases is sending notifications on new releases.