[3.10.10] - 2026-09-18
Development News
- [chip]: Chime endpoint 1607 CHIP conformance is green ✅ for all automated harness tests covering the
Chimecluster, including the optionalChimeIDfield of thePlayChimeSoundcommand (TC_CHIME_2_5.py) and theChimeStartedPlayingevent (TC_CHIME_2_6.py). - [chip]: Momentary Switch endpoint 606 CHIP conformance is green ✅ for all applicable automated harness tests covering the
Switchcluster, including theMomentarySwitch,MomentarySwitchRelease,MomentarySwitchLongPressandMomentarySwitchMultiPressfeatures, with its owngeneric-switch-momentary.pics. - [chip]: Latching Switch endpoint 6061 CHIP conformance is green ✅ for all applicable automated harness tests covering the
SwitchclusterLatchingSwitchfeature, with its owngeneric-switch-latching.pics. - [chip]: Generic Switch Button1 endpoint 6063 CHIP conformance is green ✅ for all applicable automated harness tests covering the
Switchcluster on a single-press momentary switch, with its owngeneric-switch-single.pics. - [chip]: Doorbell endpoint 1609 CHIP conformance is green ✅ for all applicable automated harness tests covering the
Switchcluster on the mandatory single-press momentary switch of the Doorbell device type. - [chip]: Camera endpoint 1601 CHIP conformance is green ✅ for all applicable automated harness tests covering the
CameraAvStreamManagementcluster, including theVideo,AudioandSnapshotfeatures and the allocated stream and stream usage priority persistence tests (TC_AVSM_2_18.pytoTC_AVSM_2_21.py), which reboot the DUT mid-test throughcreateChipTestRestartFlag(), with its owncamera-av-stream-management.pics. - [chip]: PTZ Camera endpoint 16011 CHIP conformance is green ✅ for all applicable automated harness tests covering the
CameraAvSettingsUserLevelManagementclusterMechanicalPan,MechanicalTilt,MechanicalZoom,MechanicalPresetsandDigitalPTZfeatures, including theMPTZPosition,MPTZPresetsandDPTZStreamspersistence test (TC_AVSUM_2_9.py), which reboots the DUT mid-test throughcreateChipTestRestartFlag(). - [chip]: Camera endpoint 1601 CHIP conformance is green ✅ for all applicable automated harness tests covering the
WebRtcTransportProvidercluster, i.e. the fullSolicitOffer,ProvideOffer,ProvideAnswer,ProvideICECandidatesandEndSessioncommand set and theCurrentSessionsattribute (TC_WEBRTCP_2_1.pytoTC_WEBRTCP_2_32.py).
Added
- [demoDevices]: Add all the Chapter 16 Camera device types: Camera on endpoint 1601, a second PTZ Camera exposing the optional
CameraAvSettingsUserLevelManagementcluster on endpoint 16011, the composed Floodlight Camera on endpoint 1602 (Camera 16021 and On/Off Light 16022), the composed Video Doorbell on endpoint 1603 (Camera 16031 and Doorbell 16032), Intercom on endpoint 1604, Audio Doorbell on endpoint 1605, Snapshot Camera on endpoint 1606, Chime on endpoint 1607, Camera Controller on endpoint 1608 and Doorbell on endpoint 1609. Endpoint 1601 keeps the plain defaults, while the other endpoints activate the two options adding an optional cluster:ptz(Camera AV Settings User Level Management on the Camera endpoints) andidentifyType(Identify where it is optional, i.e. Camera, Intercom, Snapshot Camera and Chime). - [CameraAvSettingsUserLevelManagement]: Add the
MechanicalPresetsfeature toMatterbridgeCameraAvSettingsUserLevelManagementServer: theMaxPresetsandMPTZPresetsattributes and theMPTZMoveToPreset,MPTZSavePresetandMPTZRemovePresetcommands, implemented per Matter 1.6.0 § 11.3.7.3, § 11.3.7.4 and § 11.3.7.5. TheCameradevice type takes a newmaxPresetsoption (default 5). - [CameraAvSettingsUserLevelManagement]: Add the
DigitalPTZfeature toMatterbridgeCameraAvSettingsUserLevelManagementServer: theDPTZStreamsattribute and theDPTZSetViewportandDPTZRelativeMovecommands, implemented per Matter 1.6.0 § 11.3.7.6 and § 11.3.7.7. - [ColorControl]: Add startUpColorTemperatureMireds to ColorControl cluster helpers.
- [matterbridge]: Add isSoftwareUpdateBoot and revert matter.js exclusion of startUpOnOff, startUpCurrentLevel and startUpColorTemperatureMireds in bridged devices.
Changed
- [matterbridge]: Bump
matterbridgeversion to v.3.10.10. - [matterbridge]: Bump
@types/nodeto v.26.5.1. - [matterbridge]: Bump
@types/bunto v.1.4.2. - [matterbridge]: Bump
markedto v.18.0.13. - [matterbridge]: Bump
oxfmtto v.0.68.0. - [matterbridge]: Bump
oxlintto v.1.83.0. - [matterbridge]: Bump
multerto v.2.4.0. - [test-utils]: Bump
@types/bunto v.1.4.2. - [utils]: Bump
@types/bunto v.1.4.2. - [thread]: Bump
@zip.js/zip.jsto v.2.15.0. - [frontend]: Bump
frontendversion to v.3.6.1. - [frontend]: Bump
@rjsf/coreto v.6.10.0. - [frontend]: Bump
@rjsf/utilsto v.6.10.0. - [frontend]: Bump
@rjsf/validator-ajv8to v.6.10.0. - [frontend]: Bump
reactto v.19.3.0. - [frontend]: Bump
react-domto v.19.3.0. - [frontend]: Bump
@types/nodeto v.26.5.1. - [frontend]: Bump
@types/reactto v.19.3.0. - [frontend]: Bump
@types/react-domto v.19.3.0. - [frontend]: Bump
viteto v.8.3.0. - [frontend]: Bump
oxfmtto v.0.68.0. - [frontend]: Bump
oxlintto v.1.83.0. - [docker]: Change the base image of the s6-rc-legacy docker image from
node:22-bullseye-slimtonode:22-bookworm-slim. Debian 11 (bullseye) reached end of life on 2026-08-31 and its securityReleasefile expired on 2026-09-07, breakingapt-get updateduring the build. Debian 12 (bookworm) still provides thearmhfport andnode:22still publisheslinux/arm/v7, soarm64,amd64andarm/v7support is unchanged. - [MatterbridgeEndpoint]:
createDefaultBridgedDeviceBasicInformationClusterServer()takes a new optional trailingproductIdparameter and reports it on theBridgedDeviceBasicInformationcluster when it is a valid uint16.ProductIdhaddisallowConformon this cluster up to Matter 1.3, but Matter 1.4 (cluster revision 4) changed it todescribedConform(optional when bridging Matter devices), so it is now spec compliant to report it. The parameter is optional and appended at the end of the signature, so all the existing call sites are unaffected and the attribute stays absent unless a caller opts in. It is also passed through bydeserialize()and byMatterbridgePlatform, so a stored device doesn't lose itsproductId. Thanks Ludovic BOUÉ.
Fixed
- [WebRtcTransportProvider]:
MatterbridgeWebRtcTransportProviderServernow invokesICECandidateson the peer'sWebRtcTransportRequestor, so the camera trickles its own ICE candidates as Matter 1.6.0 § 11.4.3.1 and § 11.4.3.2 expect. OnlyOffer,AnswerandEndwere ever invoked before, so a controller that waits for the trickle command instead of reading the candidates out of the SDP never saw them. The candidates are sent in reply to the peer's ownProvideICECandidates, which is the signal that it has applied our SDP as its remote description: pushing them straight after theOffer/Answerreaches a peer mid-negotiation, and a libdatachannel based controller aborts on that. A peer that never trickles is unaffected, since the candidates are also embedded in theOffer/AnswerSDP. - [WebRtcTransportProvider]:
MatterbridgeWebRtcTransportProviderServer.provideOffer()now responds withRESOURCE_EXHAUSTEDand rolls back the new session when it would exceed the concurrent session capacity, per Matter 1.6.0 § 11.5.6.3. It previously sharedsolicitOffer()'s behavior of accepting the session and ending it afterwards withOutOfResources, which § 11.5.6.1 defines forSolicitOfferonly.solicitOffer()is unchanged. - [matterbridge]: The root directory is now resolved by probing the install layout on the file system instead of guessing it from the runtime and from a fixed number of parent directories.
- [matterbridge]: Fix
ENOENT ... /apps/frontend/package.jsonwhenmatterbridgeis started on node from a bun global install, and the same wrong root directory on any hoisted (flat) install and on a repository directory not namedmatterbridge.