Skip to content

v2.5.0

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Jul 01:22
7eb42bf

2.5.0 (2026-07-12)

✨ Features

  • autopilot: consume persisted cap frames for backtest + zone replay (#648) (9406d52), closes #645
  • autopilot: reactive rules engine + builder UI (nav hidden until P2) (#637) (d31df6d)

🐛 Bug fixes

  • automation,scheduler: low-severity review items 4.12-4.13 (f3adeea)
  • automation: honor manual overrides and missing setpoints (0c87deb)
  • automation: propagate timezone changes to the running engine (d78b8be)
  • biometrics-pruner: use POSIX df/ls so busybox pods actually prune (#659) (a4dadcc)
  • biometrics: stop archive pruner dying on SIGPIPE (/persistent filling past target) (#640) (8ef6474)
  • calibrator: gate daily fallback on persisted profile age and DAILY_HOUR (43e8da7)
  • complete review and temperature unit fixes (c44da6a)
  • db,scripts: low-severity review items 4.14-4.18 (878e7d0)
  • db: restore monotonic ordering in biometrics migration journal (b30a8bf)
  • environment-monitor: gate RAW timestamps to a sane wall-clock window (0efa528)
  • export: unwedge archive endpoint on client disconnect or hung tar (9a63c45)
  • hardware: back sideLock mutex with globalThis (afad9f2)
  • hardware: prevent permanent command/response misalignment after read timeout (8f5184f)
  • hardware: re-baseline gesture counters on degraded-to-running recovery (99d065d)
  • hardware: stop pump stall guard false-tripping on firmware-commanded stops (#663) (613b69a)
  • health: stop phantom scheduler-drift reloads for non-schedule jobs (3ac3c78)
  • homekit: reconcile intendedPower latch with observed firmware state (8f00fd4)
  • install: grant service user journal read so log viewer works on all pods (#662) (cf895d7)
  • modules: Python low-severity review items 4.7-4.11 + 6-value capSense2 (fc797ae)
  • piezo-processor: share one DBHolder across side processors (4ce7ae7)
  • piezoStream: eliminate file-tailing race that flaked CI (#652) (9e0d076), closes #650 #315 #1
  • raw-follower: survive RAW file rotation between find and open (fe5576d)
  • scheduler: tear down partially-initialized JobManager on loadSchedules failure (7639756)
  • server,ui: low-severity review items 4.2, 4.21-4.23 (920f3c1)
  • server: gate tRPC panel out of production; drop misleading protect flag (5df41c9)
  • sleep-detector: debounce presence to stop session fragmentation + runaway durations (#639) (1906475)
  • sleep-detector: make pump movement gate per-side (aa15134)
  • stop reporting 83°F on an off pod side (level-0 neutral phantom) (#636) (35f0fba)
  • streaming,hardware: low-severity review items 4.3-4.6 (2bd95fa)
  • streaming: skip SEQNO and prefer biometrics RAW (#608) (7593463)
  • ui: hold optimistic temp/power state until a status frame confirms it (a78d868)
  • ui: make snoozed alarm Cancel button clear the snoozed sides (a3e8edd)
  • ui: resume HTTP polling when the device-status WebSocket dies or stalls (beb415c)

📝 Documentation

  • review: add actionable fix plan for 2026-07-01 code review (88eef99)
  • review: add repo-wide code review report (2026-07-01) (e48996e)

🧪 Tests

  • db: kill src/db/schema.ts mutants via getTableConfig structural assertions (#641) (257891b), closes #591
  • streaming: kill mqttBridge HA discovery mutants via full payload assertions (#626) (7598a90)
  • streaming: kill piezoStream surviving mutants (#591 hit list) (#665) (9316e94), closes #635
  • streaming: kill surviving mutants in mqttBridge (#635) (960cbf5), closes #591 #591
  • system: kill surviving mutants in system router (#591) (#653) (f698549)

💚 CI

  • mutation: bump github-script to v9 for Node 24 runtime (#625) (d397ab1)

🔧 Chores

  • deps: Update @base-ui/react all non-major dependencies (#654) (9a2418b)
  • deps: Update @eslint/css all non-major dependencies (#661) (420b875)
  • deps: Update @formatjs/intl-localematcher all non-major dependencies (#638) (39e1dfb)
  • deps: Update @tanstack/react-query all non-major dependencies (#655) (caf4283)
  • deps: Update @types/node all non-major dependencies (#647) (b972ddb)
  • deps: Update node Node.js to v24 (#416) (5093703)
  • deps: Update typescript dependency typescript to v6 (#315) (215bd43)
  • docs: plan remaining 2026-07-03 review fixes; retire completed 2026-07-01 review docs (7945fee)
  • gitignore pycache (7f3a82c)
  • pin pod runtime to Node 24 (match .node-version) (#650) (d9fafa0), closes #416
  • repo: review items 4.24-4.26 — hygiene, CLAUDE.md, audit tracking (34d1cb5)
  • review: mark Batch 1 complete; fix non-null assertion in transport test (308b4f0)
  • review: mark Batch 2 complete; lint fixes in sideLock test (0d0570a)
  • review: mark Batch 3 complete; lint fixes in new hooks/tests (dc7d040)
  • sp-bundle-logs: capture streamer attach log and archive/disk pressure (#660) (821ac78), closes #608