npm homebridge 2.3.0

latest release: 2.3.1-beta.0
4 hours ago

⚠️ HAP-NodeJS Changes

Homebridge v2.3.0 ships HAP-NodeJS v2.2.0, which replaces the unmaintained node-persist with a small built-in file storage.

For Homebridge Users:

  • Your saved data is not touched — the on-disk format is identical, and nothing is migrated or rewritten.
  • There is a small chance that a plugin uses one of the storage methods that has been removed, in which case that plugin will stop working on this version. This should be rare, but it is possible. If a plugin starts misbehaving after updating, you can safely go back to Homebridge v2.2.1 while it is fixed — because the file format has not changed, nothing is lost by downgrading, and your pairings and accessories come back exactly as they were.

For Plugin Developers:

  • If your plugin calls HAPStorage.storage(), it can now only do four things. HAPStorage is exported from homebridge, so some plugins reach for it to store their own data. The object it returns now supports initSync, getItem, setItemSync and removeItemSync. Every other method from the old API throws an error that names the method and explains why.
  • Three smaller changes on those four:
    • Keys must be plain file names — no / in them, and no leading dot. A key like my-plugin/device-1 has to become something like my-plugin-device-1.
    • initSync({ dir }) needs an absolute path. A relative one used to be quietly resolved inside node_modules, where the data was lost at the next install.
    • getItem(key, callback) throws. Use await getItem(key).

Everything else is unchanged. api.user.storagePath() and api.user.persistPath() behave exactly as before, and a plugin running its own node-persist instance against the storage directory keeps working, because the file format has not changed.

Changes

  • feat: make identifying material in bonjour configurable (#3965) (@naterator)
  • fix(matter): compose PowerSource for all device types (#3968) (@zbuc)
  • fix(matter): restore cached accessories into the bridge before going online (#3969) (@keremerkan)
  • feat(matter): expose matter status errors on api.matter.status
  • feat(matter): detect thermostat features from the declared setpoints
  • fix(matter): read cluster features from the behavior, not the cluster
  • fix(matter): retry Matter server start on transient storage-lock contention
  • fix(matter): retry parts-list notification on synchronous lock contention
  • fix(matter): reject bridged registrations that arrive before the server is running
  • test(matter): cover cache-restore attach-in-place and pre-online ordering
  • fix(matter): defer bridge online until registrations settle (#3973) (@keremerkan)
  • fix(matter): add FixedLabel and PowerSource to composed parents (#3972) (@keremerkan)
  • feat(matter): expose commissioned fabrics in the child bridge status (#3974)
  • fix(matter): read the fabric vendor id from cluster-shaped fabric entries (#3974)
  • fix(matter): declare ac/dc feature on power measurement (#3977) (@keremerkan)
  • feat(matter): populate bridged accessory firmware version from firmwareRevision (#3976) (@keremerkan)
  • chore(deps): dependency updates
  • chore(deps): bump @matter/main to the released v0.17.7
  • feat: Support for NodeJS 26
  • feat(matter): warn when a thermostat's setpoint limits cannot satisfy its auto-mode deadband
  • fix(matter): advertise the power source device type on endpoints with a battery, per the Matter spec
  • fix(matter): seed a battery's unknown charge state, so a late first report is not rejected (#3982)
  • chore(deps): updated @matter/main from v0.17.6 to v0.17.9
  • feat(matter): expose the closure, media player and speaker device types to plugins
  • fix(matter): expose the clusters and enums the new device types need, so plugins are not left with magic numbers
  • fix(matter): route closure, media playback and keypad commands to plugin handlers
  • fix(matter): give composed parts the same preparation as their parent accessory
  • fix(matter): measure thermostat setpoint limits against the declared absolute limits
  • fix(matter): report zero commissioned fabrics as not commissioned (#3974)

Homebridge Dependencies

  • @homebridge/hap-nodejs @ v2.2.0

Matter Dependencies

  • @matter/main @ v0.17.9

Don't miss a new homebridge release

NewReleases is sending notifications on new releases.