[3.11.2] - 2026-11-06
Development News
- [chip]: ElectricalSensorPeriodic endpoint 2064 CHIP conformance is green ✅ for all automated harness tests covering the
ElectricalEnergyMeasurementcluster, including the optionalPeriodicEnergyfeature (TC_EEM_2_4.pyandTC_EEM_2_5.py), with its ownelectrical-energy-measurement.periodic.pics. - [chip]: ElectricalSensorPeriodicImported endpoint 2065 CHIP conformance is green ✅ for all applicable automated harness tests covering the
ElectricalEnergyMeasurementclusterImportedEnergy,CumulativeEnergyandPeriodicEnergyfeatures, with its ownelectrical-energy-measurement.periodic-imported.pics. - [chip]: ElectricalSensorPeriodicExported endpoint 2066 CHIP conformance is green ✅ for all applicable automated harness tests covering the
ElectricalEnergyMeasurementclusterExportedEnergy,CumulativeEnergyandPeriodicEnergyfeatures, with its ownelectrical-energy-measurement.periodic-exported.pics.
Breaking changes
- [dgram]: Decoded mDNS questions and records keep only the
DnsClassinclassand expose the top bit asunicastResponseon questions andcacheFlushon records (RFC 6762 §5.4, §10.2).
Added
- [types]: Add
/api/unregister-deviceand/api/rename-devicerequest/response contracts with device identifiers and a required renamelabel. - [types]: Add the
PlatformSelectDevice,PlatformSelectEntityandPlatformNodeLabeltypes, also re-exported byMatterbridgePlatform. - [frontend]: Add a device actions menu on registered devices opening
Reset deviceandChange controller name. - [core]: Handle
/api/unregister-deviceand/api/rename-devicein the frontend and backend WebSocket servers, forwarding them to the plugin platform. The backend WebSocket server validates every parameter withisValidString(). - [platform]: Reset (unregister) a device or set its controller name (
nodeLabel) on request from the frontend; renaming back to the device name removes the custom label. - [platform]: Persist the controller names in the new
nodeLabelsplugin storage and apply them inregisterDevice(). Thanks to @JoanYpersiel for PR #669. - [endpoint]: Add optional
periodicEnergyImported/periodicEnergyExportedparameters tocreateDefaultElectricalEnergyMeasurementClusterServer(),createImportedElectricalEnergyMeasurementClusterServer()andcreateExportedElectricalEnergyMeasurementClusterServer()that enable thePeriodicEnergyfeature (Matter 1.6.1 § 2.12.4.4), and document firing theCumulativeEnergyMeasured/PeriodicEnergyMeasuredevents. - [devices]: Add the
OnOffPlugInUnit,DimmablePlugInUnit,MountedOnOffControlandMountedDimmableLoadControlsingle-class devices (Matter 1.6.1 § 5.1 - 5.4) with Identify, Groups, Scenes Management, OnOff (Lighting) and LevelControl (OnOff, Lighting, levels 1..254; optional throughlevelControlfor the on/off device types) clusters, configured through an options object. The mounted device types also list their plug-in unit subset device type for older controllers (RECOMMENDED by the spec), unlessplugInUnitDeviceTypeisfalse. - [chip]: Create the OnOffPlugInUnit (501), DimmablePlugInUnit (502), MountedOnOffControl (503) and MountedDimmableLoadControl (504) demo devices with the new device classes.
- [devices]: Add the
Pumpsingle-class device (Matter 1.6.1 § 5.5) with OnOff, optional LevelControl, PumpConfigurationAndControl (ConstantSpeed) and optional Temperature/Pressure/Flow Measurement clusters, configured through aPumpOptionsobject. - [devices]: Add the
WaterValvesingle-class device (Matter 1.6.1 § 5.6) with ValveConfigurationAndControl (with or without theLevelfeature) and optional FlowMeasurement clusters, configured through aWaterValveOptionsobject, withopenValve()/closeValve()helpers. - [endpoint]: Add
createOnOffValveConfigurationAndControlClusterServer()to create aValveConfigurationAndControlcluster server without theLevelfeature, for binary (on/off) valves. - [chip]: Add the ElectricalSensorPeriodic (2064), ElectricalSensorPeriodicImported (2065) and ElectricalSensorPeriodicExported (2066) demo devices, simulate the periodic energy in the fake load and fake generator test event triggers, and add the 11
TC_EEM_2_1–2_5conformance tests on them.
Changed
- [utils]:
getEnumDescription()accepts any number or stringvalue; values outside the enum return the fallback. - [behaviors]: The Pump Configuration and Control server keeps the
PumpStatusRunningbit in sync with the applied speed (OnOff, LevelControl and OperationMode changes, and at startup when the pump is already on). - [dgram]: Add an optional
cacheFlush/unicastResponseflag todnsResponseClassToString()anddnsQuestionClassToString(). - [platform]:
--debug-platformand--verbose-platformalso enable the platform debug and verbose logs. - [platform]:
readyalso waits for thenodeLabelsstorage to load. - [core]: Log unknown
EsaStatevalues asInvalidinstead ofundefined. - [chip]: Validate the previous EnergyEvse
FaultStatein the fault test event triggers. - [chip]: Create the Pump (505) and WaterValve (506) demo devices with the
PumpandWaterValvedevice classes, so the demo pump starts at level 254 and runs onOn, and enablePumpStatusandSpeedin the pump PICS. - [matterbridge]: Bump
matterbridgeversion to v.3.11.2. - [matterbridge]: Bump
@types/nodeto v.26.6.6. - [matterbridge]: Bump
markedto v.18.1.2. - [matterbridge]: Bump
oxfmtto v.0.75.0. - [matterbridge]: Bump
oxlintto v.1.90.0. - [frontend]: Bump
react-routerto v.8.5.1. - [frontend]: Bump
globalsto v.17.14.0. - [core]: Bump
express-rate-limitto v.8.7.2. - [core]: Bump
weriftto v.0.26.0. - [core]: Bump
wsto v.8.22.1. - [core]: Remove the unused
@types/jestdev dependency and thejesttypes from the core tsconfigs. - [tests]: Refactor the tests for the
no-unsafe-enum-assignmentrule of oxlint v.1.90.0: use enum members instead of numeric literals and mark the deliberately invalid enum values. - [core]: The
/api/pluginsendpoint now fetches the plugin list from the plugin manager through the server broadcast, with a 500 error response on failure. - [core]: The plugin API representation includes
frontendPathand deriveshasWhiteListandhasBlackListfrom the plugin config. - [docs]: Read the website's npm and Docker totals from the daily badge gist and animate stats after loading.
- [core]: Don't auto-close a WebRTC session when werift 0.26.0 replaces or retires a DTLS transport during SDP negotiation.
- [frontend]: Serve the WebSocket and HTTP
/api/settingsfrom Matterbridge through thematterbridge_apisettingsbroadcast request instead of building the settings locally.
Fixed
- [devices]: Remove the unreachable
undefinedfallback ofWaterValve.getCurrentLevel()with theLevelfeature, restoring the 100% branch coverage ofwaterValve.ts. - [frontend]: Correct inverted WindowCovering Open/Closed labels and display ClosureDimension positions as percentages. Closes #671. Thanks to @peteroettl.
- [docs]: Bind the heading text renderer to the parser for marked 18.1.2.
- [core]: Map device classes explicitly to matter.js classifications, including App to Application.
- [core]: Keep manufacturer-specific operational states across Pause and Resume in
MatterbridgeOperationalStateServerandMatterbridgeRvcOperationalStateServer. - [frontend]: Require the frontend authentication on the plugin
/plugins/<name>/api/*routes before dispatching toonFetch. Closes #676. Thanks to @macjl. - [behaviors]: Keep the pump stopped when its
OperationModeor LevelControlCurrentLevelchanges while Off; the new setpoint applies on the nextOn(Matter 1.6.1 § 5.5.5.1).