Skip to content

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 10:46
· 8 commits to main since this release

she 2.0.0 turns the Matter page into a full Matter and Thread controller UI and gives every Matter device an MQTT presence.

Matter

  • Sub-navigation on the Matter page: Devices · Bindings · Thread · MQTT (#/matter/<tab>; old #/matter/<nodeId> links still open the device).
  • Bindings: let a Matter switch drive a light directly, without she in the loop. she writes the target's access-control entry (the narrow Operate privilege, never Administer, and never an ACL without her own entry) and the source's binding list, reads both back and rolls back on failure. Bindings made by other controllers are shown read-only.
  • Groups: one multicast command for several devices — a shared key set by default, an own one on request; members provisioned with key set, group map, AddGroup and ACL entry; group commands from the UI and from scripts (she.matter.send('group:Name', null, 'onOff', 'on')); a switch can be bound to a group.
  • Multi-admin: which controllers (Apple Home, Home Assistant, she, …) a device belongs to; "Share with another app" opens a pairing window and shows the QR and manual code; a stale fabric can be removed.
  • Firmware updates from the CSA Distributed Compliance Ledger: she runs a Matter OTA provider; updates are found daily and on request, started only on your click, with progress and cancel.
  • Device information from the CSA ledger: vendor and product names, part number, product page, manual and support links; cached, works offline; --matter-dcl-offline never contacts the ledger.
  • Device health: battery, last seen, offline history, Thread role changes; alerts for a low battery and a long offline period, published on <name>/status/matter/health.
  • Events reach scripts: she.matter.sub(node, endpoint, 'switch', 'multiPressComplete', cb) — button presses with press count and long presses; the event feed shows them.
  • The device page shows certificates, byte strings and addresses readably (from 1.53.4).

Thread

  • Thread tab: the networks and border routers on the LAN (Apple TV, HomePod, OpenThread, the ESP router) with vendor, model, Thread version, role and state; a router with the OpenThread REST API shows its leader data.
  • Mesh graph: every Thread device in she's fabric with its role, its neighbours by link quality, the border routers, Wi-Fi devices by RSSI, bindings as arrows; neighbour tables re-read on demand and daily.
  • Dataset store: the network credentials, imported from the TLV or a QR image, kept encrypted, listed redacted; with the dataset known, the mesh can be read through a border router (MeshCoP, off by default).
  • Thread health alerts: leader change, partition, border router offline, router dropped, degraded link — logged and published on <name>/status/thread/health.

Matter ↔ MQTT bridge

Every paired device's attributes and events on MQTT, commands and writes accepted on set, reads on get — by default mqtt-smarthome (matter/status/<device>/<endpoint>/<cluster>/<attribute> as { val, ts, lc }, matter/set/…); topics and payload format configurable on the new MQTT tab, stable MQTT names per device. Off until switched on.

AI chat

Seven new read-only tools: one device in full, bindings, groups, fabrics, Thread networks, the mesh with link quality, device and Thread health with firmware updates — for "why is the sensor offline" and "which switch is bound to the kitchen light".

Daemon

  • Safe mode only for crashes that repeat early: a daemon that ran for days and then died is restarted normally; safe mode is entered only after three early crashes in a row (safeModeEarlyCrash, safeModeCrashCount, safeModeCrashWindow), and the banner says why.
  • matter.js 0.17.9; new dependencies @matter/thread-br-client, @matter/dcl-data.

Breaking changes and upgrade notes

  • Safe mode: the .she-running sentinel now carries <pid> <startMs>; a single unclean end no longer puts the next start into safe mode (see doc/script-engine.md). An old sentinel without a start time counts as one early crash.
  • The controller's fabric label is she for devices commissioned from now on (existing fabrics keep matter.js).
  • New files in the Matter storage: dcl-products.json, ota-updates.json, mqtt-bridge.json, device-health.json, groups.enc and thread-datasets.enc (the last two encrypted with the secrets store's key — back it up with the data directory).
  • The Matter page's URL hash gained a tab segment; links of the form #/matter/<nodeId> still work.
  • REST: many new routes under /she/matter/… (documented in doc/http-api.md); no existing route changed its shape.
  • Node 20.19, 22.12 or newer is recommended: the CSA vendor snapshot is an ES module loaded with require(); older Nodes run without the snapshot (a warning, vendor names come from the ledger when reachable).