Skip to content

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 26 May 04:48
f56df8b

2.3.0 (2026-05-26)

✨ Features

🐛 Bug fixes

  • homekit,mqtt: tighten ambient-sensor tests and HA state_class coverage (f19c560)
  • install: /persistent/deviceinfo group=dac mode=2775 + self-heal (bb9e62d)
  • install: /persistent/deviceinfo group=dac mode=2775 + self-heal (#600) (9282aba)
  • install: detect_free_sleep_conflict aborts install on clean pods (#603) (6763fa4), closes #602
  • install: drop v6 rules file from free-sleep detection (#618) (20499cd)
  • install: Pod 5 install hardening — iptables lock, frank-less RAW redirect, env-monitor crash (#616) (ca4c4c9)
  • install: tighten /persistent/deviceinfo to 2770 (drop world bits) (10cdaaf)
  • led: use {lb:N} CBOR key and add LED brightness UI (#607) (db8e43a)
  • scheduler: alarms fire vibration even when the side is off (#602) (23f9dd3)
  • settings: debounce pump-safety number inputs to onBlur (9c6bb84)
  • settings: debounce pump-safety number inputs to onBlur (#617) (5d0042e)
  • side-selector: button edges meet at center under link icon (#620) (ad99585), closes #239
  • update-card: require service bounce before re-blocking WAN (#619) (2699bcc)

📝 Documentation

  • install: clarify Pod 5 root bootstrap so rewt/dac messages aren't a surprise (15f651c)
  • install: clarify Pod 5 root bootstrap so rewt/dac messages aren't a surprise (#615) (2e17fcb)
  • mqtt: show concrete JSON shape for ambient environment payload (7600102)

🧪 Tests

  • homekit,mqtt: cover non-Error throws in ambient catch handlers (e2d686e)
  • useSchedule: finish toggleAllSchedules no-op assertion (3435196)
  • useSchedule: kill 96 surviving Stryker mutants (89a099c)
  • useSchedule: kill 96 surviving Stryker mutants (#610) (6518111), closes #591

🔧 Chores

  • deps: Update @base-ui/react all non-major dependencies (#611) (2db69ae)