UNPKG

matterbridge

Version:

Matterbridge plugin manager for Matter

868 lines (629 loc) 184 kB
<!-- eslint-disable markdown/no-missing-label-refs --> # <img src="https://matterbridge.io/assets/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge changelog [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge) [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge) [![Docker Version](https://img.shields.io/docker/v/luligu/matterbridge/latest?label=docker%20version)](https://hub.docker.com/r/luligu/matterbridge) [![Docker Pulls](https://img.shields.io/docker/pulls/luligu/matterbridge?label=docker%20pulls)](https://hub.docker.com/r/luligu/matterbridge) ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg) ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg) [![Codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge) [![tested with Vitest](https://img.shields.io/badge/tested_with-Vitest-6E9F18.svg?logo=vitest&logoColor=white)](https://vitest.dev) [![styled with Oxc](https://img.shields.io/badge/styled_with-Oxc-9BE4E0.svg?logo=oxc&logoColor=white)](https://oxc.rs/docs/guide/usage/formatter.html) [![linted with Oxc](https://img.shields.io/badge/linted_with-Oxc-9BE4E0.svg?logo=oxc&logoColor=white)](https://oxc.rs/docs/guide/usage/linter.html) [![TypeScript Native](https://img.shields.io/badge/TypeScript_Native-3178C6?logo=typescript&logoColor=white)](https://github.com/microsoft/typescript-go) [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org) [![ESM](https://img.shields.io/badge/ESM-Bun-000000?logo=bun&logoColor=white)](https://bun.com) [![matterbridge.io](https://img.shields.io/badge/matterbridge.io-online-brightgreen)](https://matterbridge.io) [![powered by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history) [![powered by](https://img.shields.io/badge/powered%20by-node--ansi--logger-blue)](https://www.npmjs.com/package/node-ansi-logger) [![powered by](https://img.shields.io/badge/powered%20by-node--persist--manager-blue)](https://www.npmjs.com/package/node-persist-manager) --- All notable changes to this project will be documented in this file. If you like this project and find it useful, please consider giving it a star on [GitHub](https://github.com/Luligu/matterbridge) and sponsoring it. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="120"></a> ## [3.10.3] - 2026-07-31 ### Added - [publish]: Update publish script to allow a re-run. - [matterbridge]: Add a wired AC PowerSource to server nodes. ### Changed - [matterbridge]: Bump `matterbridge` version to v.3.10.3. - [matterbridge]: Update dependencies. - [matterbridge]: Upgrade package. - [matterbridge]: Bump `@matter/main` to v.0.17.7. - [matterbridge]: Bump `oxfmt` to v.0.60.0. - [matterbridge]: Bump `oxlint` to v.1.75.0. - [matterbridge]: Bump `oxlint-tsgolint` to v.7.0.2001. - [chip-test]: Switch Dockerfile from master to v1.6-branch. - [frontend]: Bump `frontend` version to v.3.5.5. - [frontend]: Update dependencies. - [frontend]: Ignore for now plugins: `matterbridge-camera` and `matterbridge-webcam`. - [frontend]: Bump `react` and `react-dom` to v.19.2.8. - [frontend]: Bump `react-router` to v.8.3.0. - [frontend]: Bump `@testing-library/jest-dom` to v.7.0.0. - [frontend]: Bump `@vitejs/plugin-react` to v.6.0.4. - [frontend]: Bump `oxfmt` to v.0.60.0. - [frontend]: Bump `oxlint` to v.1.75.0. - [frontend]: Bump `oxlint-tsgolint` to v.7.0.2001. - [helpers]: Add ActiveBatFaults[] to PowerSource Battery helpers. ### Fixed - [frontend]: The Devices page now reloads the contents at restart. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.10.2] - 2026-07-24 ### Added - [devcontainer]: Add a double Node/Bun Dev Container setup where VS Code lets you choose one profile or the other. - [devcontainer]: The Bun Dev Container profile builds in a fraction of the time compared to the Node profile, confirming how impressive the Bun runtime is. - [devcontainer]: Add dedicated `.devcontainer/node` and `.devcontainer/bun` profiles with their own Dockerfile, docker-compose, and create/start scripts. - [devices]: Add `tagList` support to the `ClosureOptions` used by the `Closure` device constructor. Thanks Ludovic BOUÉ. - [closure]: Add `countdownTime`, `mainState`, `currentErrorList`, `overallCurrentState`, `overallTargetState`, and `latchControlModes` support to the `ClosureOptions` used by the `Closure` device constructor. - [devices]: Add `addPanel()` to the `Closure` device and `tagList` support to `ClosurePanelOptions` to compose closures with multiple closure panels (e.g. a venetian blind with `ClosurePanelTag.Lift` and `ClosurePanelTag.Tilt` panels). Thanks Ludovic BOUÉ. ### Changed - [matterbridge]: Bump `matterbridge` version to v.3.10.2. - [matterbridge]: Update dependencies. - [matterbridge]: Bump `@matter/main` to v.0.17.6. - [matterbridge]: Bump `oxlint-tsgolint` to v.0.25.0. - [frontend]: Bump `frontend` version to v.3.5.4. - [frontend]: Update dependencies. - [frontend]: Bump `@rjsf` packages to v.6.7.0. - [frontend]: Bump `vite` to v.8.1.5. - [frontend]: Bump `oxlint-tsgolint` to v.0.25.0. - [chip-test]: Update chip-test Dockerfile. ### Fixed - [tags]: Fix `ClosureTag` export shadowing. - [frontend]: Local plugins are detected, and both update actions and available-version checks are skipped. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.10.1] - 2026-07-24 This release failed to be published for a npm error. DO NOT USE IT. ## [3.10.0] - 2026-07-17 ### Breaking changes - [matter]: Bump `matter.js` to 0.17.5 and Matter to 1.6.0. See [Matter 1.6.0 changes from 1.5.1](Matter-1.6.0.md) for delta from 1.5.1. ### Development Breaking changes - [endpoint]: Add `productLabel`, `productUrl` and `configurationVersion` parameters to the Basic Information creation methods. The default product labels are now `Matter Endpoint` and `Matter Bridged Endpoint`, and the default product URL is now `https://matterbridge.io`. - [matter]: RainSensor, WaterFreezeDetector and WaterLeakDetector device types now require BooleanState ChangeEvent feature as mandatory. - [export]: Removed the deprecated `matterbridge/jestutils` export. Use `@matterbridge/jest-utils` or `@matterbridge/vitest-utils` instead. - [endpoint]: Remove the deprecated `getChildEndpointByName()` helper. - [device types]: Remove the deprecated device types: `onOffOutlet`, `dimmableOutlet`, `onOffMountedSwitch`, `dimmableMountedSwitch`, `pumpDevice`, `onOffSwitch`, `dimmableSwitch`, `colorTemperatureSwitch`, `doorLockDevice`, `coverDevice`, `thermostatDevice`, `fanDevice`, `speakerDevice`, `airConditioner`. - [tags]: Remove the deprecated `tag` aliases: `AreaNamespaceTag`, `ClosureTag`, `CompassDirectionTag`, `CompassLocationTag`, `DirectionTag`, `LandmarkNamespaceTag`, `LevelTag`, `LocationTag`, `NumberTag`, `PositionTag`, `RelativePositionTag`. - [servers]: Remove deprecated behavior servers: `MatterbridgeEnhancedColorControlServer`, `MatterbridgePresetThermostatServer`, `MatterbridgeLiftWindowCoveringServer`, `MatterbridgeLiftTiltWindowCoveringServer`. - [command handler]: Remove deprecated interface `MatterbridgeEndpointCommands`. ### Added - [utils]: Add the `isValidInteger()` validation helper with optional inclusive range checks. - [endpoint]: Add JSDoc remark refinements to MatterbridgeEndpoint helper methods for clarity. ### Changed - [matterbridge]: Bump `matterbridge` version to v.3.10.0. - [matterbridge]: Update dependencies. - [matterbridge]: Bump `@types/node` to v.26.1.1. - [matterbridge]: Bump `typescript` to v.7.0.2 and remove `@typescript/native-preview`. Refactor scripts to always use tsc instead of tsgo. - [matterbridge]: Bump `oxfmt` to v.0.59.0. - [matterbridge]: Bump `oxlint` to v.1.74.0. - [matterbridge]: Bump `oxlint-tsgolint` to v.0.24.0. - [matterbridge]: Bump `vitest` to v.4.1.10. - [matterbridge]: Bump `marked` to v.18.0.6. - [core]: Bump `ws` to v.8.21.1. - [thread]: Bump `@zip.js/zip.js` to v.2.8.31. - [typescript]: Update tsconfigs `typescript` to v.7.0.2. - [bun]: Update `bunfig.toml` to install in isolated mode. - [bun]: Update Dockerfile.bun to install the latest matterbridge version. - [devcontainer]: Update `devcontainer.json` to use native toolchain. - [frontend]: Bump `frontend` version to v.3.5.3. - [frontend]: Update dependencies. - [frontend]: Bump `oxfmt` to v.0.59.0. - [frontend]: Bump `oxlint` to v.1.74.0. - [behaviors]: Add '@matter/node' export. - [package]: Replace prettier-ignore with oxfmt-ignore. ### Fixed - [matter]: Use endpoint software and hardware version metadata for accessory and server device Basic Information. - [endpoint]: Validate that Basic Information product URLs start with `https://` and contain at most 256 characters. - [device manager]: Preserve `productLabel` and `configurationVersion` in `BaseDevice` projections and worker messages. - [endpoint]: Validate software versions as Matter `uint32`, hardware versions as Matter `uint16`, and their version strings as non-empty strings of at most 64 characters. - [client clusters]: Fix addRequiredClusters, addRequiredClusterClients to log warning only if the cluster client is not already present. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.9.4] - 2026-07-10 ### Added - [matterbridge]: Add running statistics and improper shutdown detection. - [matter]: Add Matter 1.6.0 specs and the [Matter 1.6.0 changes from 1.5.1](Matter-1.6.0.md) document. - [docker]: Add the `bun-ubuntu-slim` base image and build workflow. ### Changed - [matterbridge]: Bump `matterbridge` version to v.3.9.4. - [matterbridge]: Update dependencies. - [matterbridge]: Bump `@types/node` to v.26.1.0. - [matterbridge]: Bump `@typescript/native-preview` to v.7.0.0-dev.20260703.1. - [matterbridge]: Bump `oxfmt` to v.0.57.0. - [matterbridge]: Bump `oxlint` to v.1.72.0. - [matterbridge]: Bump `oxlint-tsgolint` to v.0.24.0. - [package]: Apply style to all files. - [service]: Update service configuration example `systemd/matterbridge.service`. - [service]: Update service configuration guides. - [matterbridge]: Bump `@matter/main` to v.0.17.4. - [matter]: Update the data model script to support Matter 1.6.0 generation. - [frontend]: Bump `frontend` version to v.3.5.2. - [frontend]: Update dependencies. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.9.3] - 2026-07-03 ### Warning The Docker run examples did not set a stop timeout. The new matter.js storage lock system needs Matterbridge to shut down cleanly, so without `--stop-timeout 60` Docker may kill the container before the lock is released. Docker Compose setups should use `stop_grace_period: 60s` for the same reason. The docker guide has been updated. Please update your setup. ### Breaking changes - [frontend]: Stop checking for updates automatically on connection. It is the wrong timing to check for updates when the bridge is restarting. ### Added - [bun]: Add ban test runtime check. - [bun]: Add ban test workflow. - [bun]: The bun local docker image now runs from src files. No build is done. - [utils]: Add writeDiagnostic() in utils package. - [bun]: Add bunAvailable() in runtimeBun.ts. - [s6-rc]: Add a timeout-kill of 55 secs to the s6-rc images (same reason as the `--stop-timeout 60` in Docker run and Docker compose). ### Changed - [matterbridge]: Bump `matterbridge` version to v.3.9.3. - [matterbridge]: Update dependencies. - [matterbridge]: Bump `@matter/main` to v.0.17.4-alpha.0-20260627-deac80361. This brings a great memory optimization. Thanks @Apollon77. - [matterbridge]: Bump `@matter/main` to v.0.17.4-alpha.0-20260628-67a669f75. - [workflows]: Update all GitHub Actions to their latest major versions. - [docker]: Add `matterbridge-mqtt` to the dev Docker image. - [docker]: Add `--stop-timeout 60` to Docker Desktop examples so Matterbridge has enough time to shut down cleanly before Docker kills the container. - [oxlint]: Update `Oxlint configuration` to v.1.0.16. - [oxlint]: Update `Oxfmt configuration` to v.1.0.5. - [readme]: Improve the journald configuration comments in `README-SERVICE.md`, `README-SERVICE-OPT.md` and `README-SERVICE-LOCAL.md`. - [bun]: Change bun install param from --production to --omit=dev to avoid the frozen lock. - [thread]: Refactor Docker, npm and GitHub version check timeout handling and warn when Docker Hub rate limits version lookups. - [typecheck]: Refactor typecheck tsconfig.json. - [service]: Update service configuration guides. - [codex]: Update config to v.1.0.1. - [frontend]: Bump `frontend` version to v.3.5.1. - [frontend]: Update dependencies. ### Fixed - [thread]: Add worker-local unhandled rejection and uncaught exception guards, and count failed worker exits as thread errors. - [docs]: Fix wrong path for the frontend certificates: place certificates in the `.matterbridge/certs` directory. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.9.2] - 2026-06-26 This release adds support for [bun](https://bun.sh/). Support for bun is stil under [development](README-BUN.md) and is purely experimental. ### Added - [frontend]: Add type aware linting with `oxlint` and format with `oxfmt`. - [frontend]: Remove eslint prettier typescript packages. The total package count drops from ~430 to ~220. Oxlint, Oxfmt and Tsgo run in a fraction of second. - [frontend]: Add wssSendPluginUpdateRequired(), wssSendPluginStatusUpdate() and wssSendMatterbridgeStatusUpdate() to allow updates without full refresh. - [checkUpdates]: Improve workflow sending only the updated versions to the frontend. - [checkUpdates]: Add new plugin version notification. - [checkUpdates]: Add no updates found notification. - [startup]: Improve workflow sending only the updated data to the frontend. - [configure]: Improve workflow sending only the updated data to the frontend. - [pack]: Add scripts\pack-monorepo.mjs to improve performance with monorepo pack. - [thread]: Add check for thread path existence. - [docker]: Refactor Dockerfiles for all images to improve speed. - [bun]: Add isBun() and getGlobalBunModules(). - [bun]: Add the `luligu/matterbridge:bun` docker image. - [bun]: Refactor thread manager lifecycle (init and exit) to work consistently with node and bun. ### Changed - [matterbridge]: Bump `matterbridge` version to v.3.9.2. - [matterbridge]: Update dependencies. - [matterbridge]: Bump `Oxlint configuration` to v.1.0.12. - [matterbridge]: Bump `@types/node` to v.26.0.1. - [matterbridge]: Bump `@matter/main` to v.0.17.4-alpha.0-20260627-deac80361. - [package]: Bump `node-ansi-logger` to v.3.3.0. - [package]: Bump `node-persist-manager` to v.2.1.0. - [frontend]: Bump `frontend` version to v.3.5.0. - [frontend]: Update dependencies. - [frontend]: Bump `Oxlint configuration` to v.1.0.3. - [frontend]: Bump `@types/node` to v.26.0.1. ### Fixed - [frontend]: Serve plugin frontend from `base/plugins/plugin/` for compatibility with Ingress. - [matterstorage]: Close the matter storage as many times as opened. Thanks Apollon77 and Alexander Thoukydides (https://github.com/matter-js/matter.js/issues/3945). <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.9.1] - 2026-06-19 ### Development Changes - [vitest]: Jest has been replaced by [Vitest](https://vitest.dev), which is much faster and natively supports ESM without extra configuration. - [jest]: Remove Jest tests and Jest packages. Dev dependencies package count drops from ~660 to ~450. A clean install is much faster. - [oxc]: ESLint and Prettier have been replaced by the [oxc](https://oxc.rs) stack: [oxlint](https://oxc.rs/docs/guide/usage/linter.html) for linting and [oxfmt](https://oxc.rs/docs/guide/usage/formatter.html) for formatting. Both lint and format the codebase in a fraction of the time the previous tools took. - [oxc]: Remove ESLint and Prettier packages. Dev dependencies package count drops from ~450 to ~240. A clean install is much faster. - [typescript]: Move the package to the TypeScript Native Preview (tsgo), which type-checks and builds in a fraction of the time of the classic compiler. The final build in the publish workflow is always done with TypeScript (tsc), since tsgo is still in preview. - [endpoint]: `hasAttributeServer()` now also detects mandatory attributes supplied by Matter.js behavior defaults. ### Added - [dependencies]: Add `scripts/scan-deps.mjs` to check that every `@matter/*` and `@matterbridge/*` import across the monorepo is declared in the package `dependencies`/`devDependencies` and, for workspace packages, referenced in the build tsconfig project references. The scanner understands the lockstep `@matter` monorepo, so a declared `@matter/main` satisfies its whole dependency closure (including the `@matter/nodejs` Node bootstrap). - [codex]: Add Codex configuration in `.codex/config.toml` and rules in `.codex/default.rules`. - [checkUpdates]: Improved workflow sending only once the refresh to the frontend. ### Changed - [matterbridge]: Update dependencies. - [matterbridge]: Bump `matter.js` to v.0.17.3. - [matterbridge]: Bump `@typescript/native-preview` to v.7.0.0-dev.20260618.1. - [matterbridge]: Bump `oxlint` to v.1.70.0. - [matterbridge]: Bump `oxfmt` to v.0.55.0. - [matterbridge]: Bump `vitest` to v.4.1.9. - [matterbridge]: Bump `@vitest/coverage-v8` to v.4.1.9. - [oxfmt]: Update `Oxfmt configuration` to v.1.0.3. - [oxlint]: Update `Oxlint configuration` to v.1.0.10. - [agents]: Update `docs` to reflect the new toolchain.. ### Fixed - [utils/zip]: Remove no more present zip export. Thanks Pugsin (https://github.com/Luligu/matterbridge/pull/568). - [package]: Update legacy export. Thanks Pugsin (https://github.com/Luligu/matterbridge/pull/567). - [publish]: Fix publish.yml not checking the previously published SHA. - [publish]: Fix publish.yml publishing the frontend even when no changes were made. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.9.0] - 2026-06-12 ### New plugin - [plugins]: A new plugin is now available [matterbridge-mqtt](https://github.com/Luligu/matterbridge-mqtt). ### Development Breaking Changes - [subscribeAttribute]: The `subscribeAttribute()` method is now synchronous and returns `MatterbridgeEndpoint` for chaining instead of `Promise<boolean>`. - [conformance]: Remove from `onOffSwitch`, `dimmableSwitch` and `colorTemperatureSwitch` the extraneous cluster servers. The OnOff cluster server is still needed if you want Apple Home to show a switch and should be added manually with .createDefaultOnOffClusterServer(). - [deviceTypes]: All exported device type names follow the Matter canonical name. Old exported names are deprecated and resolve to the new names. The import name is camel case. - [deviceTypes]: In all device type the property name changed to the canonical Matter name (e.g. MA-onOffLight => OnOffLight). The name property is Pascal case and follow the Matter canonical name (without "-" and "/"). - [deprecation]: Add the list of [deprecation notices](README-DEV.md#deprecation-list). - [matter]: Update doc [Matter 1.5.1 changes from 1.4.2](Matter-1.5.1.md). - [matter]: Update doc [Matter.js 0.17 changes from 0.16](Matter.js-0.17.md). ### Added - [s6-rc]: Delete `matter.js storage locks` before starting the s6-rc and s6-rc-legacy docker images. - [test-utils]: Add matter methods in `jest-utils` and `vites-utils` packages. - [soilMeasurement]: Add `createDefaultSoilMeasurementClusterServer()` endpoint helper. - [deviceTypes]: Add `controlBridge`, `pumpController`, `windowCoveringController`, `thermostatController`, `contentApp`, `castingVideoClient`, `videoRemoteControl` device types. - [eslint]: Enforce `@typescript-eslint/no-deprecated` rule. - [register]: Add `getSupportedDeviceType()` and `getSupportedCluster()` register helpers. See [matterbridge-mqtt](https://github.com/Luligu/matterbridge-mqtt) plugin for an example. - [factory]: Add `createClusterServer()` and `getServerBehaviorFromClusterId()` generic factory helpers. See [matterbridge-mqtt](https://github.com/Luligu/matterbridge-mqtt) plugin for an example. - [frontend]: Add plugin frontend button in the UI when a plugin has a frontend. Try [matterbridge-mqtt](https://github.com/Luligu/matterbridge-mqtt) for an example. ### Changed - [matterbridge]: Update dependencies. - [matterbridge]: Bump `matter.js` to v.0.17.2-alpha.0-20260606-610f30128. - [matterbridge]: Bump `matter.js` to v.0.17.2-alpha.0-20260609-97109a2d3. - [matterbridge]: Bump `matter.js` to v.0.17.2. - [matterbridge]: Bump `marked` to v.18.0.5. - [matterbridge]: Bump `npm-check-updates` to v.22.2.3. - [matterbridge]: Bump `@types/node` to v.25.9.2. - [matterbridge]: Bump `@vitest/eslint-plugin` to v.1.6.19. - [matterbridge]: Bump `eslint-plugin-jsdoc` to v.63.0.2. - [matterbridge]: Bump `eslint-plugin-n` to v.18.1.0. - [matterbridge]: Bump `prettier` to v.3.8.4. - [matterbridge]: Bump `typescript-eslint` to v.8.61.0. - [matterbridge]: Remove npm-check-updates shx packages. - [frontend]: Bump `frontend` version to v.3.4.17. - [frontend]: Update dependencies. - [frontend]: Bump `@rjsf` to v.6.6.1. - [frontend]: Bump `react` to v.19.2.7. - [frontend]: Bump `react-router` to v.7.17.0. - [frontend]: Bump `vite` to v.8.0.16. - [frontend]: Bump `vitest` to v.4.1.8. - [frontend]: Remove cross-env npm-check-updates shx packages. - [frontend]: Made dialogs full screen on mobile. ### Fixed - [setCluster]: Allow partial in setCluster() ClusterType overload. - [powerSource]: Fix type of batPercentRemaining and batVoltage attributes in PowerSource enpoint helpers. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.8.0] - 2026-06-05 ### Breaking changes - [matter]: Update to Matter 1.5.1. See [Matter 1.5.1 changes from 1.4.2](https://matterbridge.io/Matter-1.5.1.html). - [matter]: Update to matter.js 0.17.1. See [Matter.js 0.17 changes from 0.16](https://matterbridge.io/Matter.js-0.17.html). - [matter]: Enable `tcp` transport with `udp` preference. If you override the default Matter port 5540, consider eventual port number collision for both udp and tcp protocols. ### Development Breaking changes - [matterbridge]: Since this release upgrades matter to 1.5.1, it would be better to require matterbridge 3.8.0 in all plugins next release cause some changes in the plugin code will not be backward compatible. - [endpoint]: Since the cluster clients have been added to each device type, instead of `addRequiredClusterServers()` call `addRequiredClusters()` (3.8.0 only) to add both required server clusters and required client clusters. ### Development - [logger]: The `node-ansi-logger` package integrates now a chainable ANSI tagged template styling API. See matterbridge-mqtt plugin for an example. ### Added - [plugins]: The plugins can have their own frontend in /apps/frontend/build. It will be served by the Matterbridge express app under /plugins/plugin-name. (https://github.com/Luligu/matterbridge/issues/561). - [plugins]: The plugin frontend can fetch from the platform with a full REST API: /plugins/plugin-name/api/:path. It will call platform.onFetch(method: string, path?: string, query?: Record<string, unknown>, body?: unknown) (for an example check matterbridge-test). (https://github.com/Luligu/matterbridge/issues/561). - [bindingServer]: Add `getEndpoint(clusterId: ClusterId): Endpoint | undefined` to `MatterbridgeBindingServer` to look up the bound remote endpoint for a given client cluster ID. - [endpoint]: Add `addClusterClients(clientList: ClusterId[])` helper and chainable `MatterbridgeEndpoint` method to require `MatterbridgeBindingServer` with the given client cluster list. Safe to call multiple times — subsequent calls merge the new IDs into the existing list without duplicates. - [endpoint]: Add `addRequiredClusterClients()` helper and chainable `MatterbridgeEndpoint` method to collect and register all required client clusters declared by the endpoint's device types. - [endpoint]: Add `addOptionalClusterClients()` helper and chainable `MatterbridgeEndpoint` method to collect and register all optional client clusters declared by the endpoint's device types. - [endpoint]: Add `addRequiredClusters()` chainable `MatterbridgeEndpoint` method that calls both `addRequiredClusterServers()` and `addRequiredClusterClients()` in one step. - [endpoint]: Add `createDefaultBindingClusterServer(clientList: ClusterId[])` chainable `MatterbridgeEndpoint` method as the standard `createDefault*` helper for the Binding cluster. - [readme]: Add "How to use cluster clients" section to README-DEV.md with description and examples for `addClusterClients`, `addRequiredClusterClients`, `addOptionalClusterClients`, and `getEndpoint`. - [deviceTypes]: Add `requiredClientClusters` and `optionalClientClusters` to the device type definitions for: `OTAProvider`, `deviceEnergyManagement`, `onOffLight`, `dimmableLight`, `colorTemperatureLight`, `extendedColorLight`, `onOffOutlet`, `dimmableOutlet`, `onOffMountedSwitch`, `dimmableMountedSwitch`, `pumpDevice`, `waterValve`, `onOffSwitch`, `dimmableSwitch`, `colorTemperatureSwitch`, `thermostatDevice`, `heatPump`, `cameraController`. - [Codecov]: Add merge of Jest and Vitest coverage reports. This allows to run both Jest and Vitest tests in the same package and have a unified coverage report in Codecov. ### Changed - [package]: Update dependencies. - [package]: Bump `node-ansi-logger` to v.3.3.0-dev-20260524-cac9dd5. - [package]: Bump `node-persist-manager` to v.2.1.0-dev-20260524-6a6019a. - [package]: Refactor `jest-utils` and `vitest-utils` packages. - [package]: Add exports for `jest-utils` and `vitest-utils` packages. - [package]: Bump `@eslint/json` to v.2.0.0. - [package]: Bump `@vitest/eslint-plugin` to v.1.6.19. - [package]: Bump `eslint-plugin-prettier` to v.5.5.6. - [package]: Bump `npm-check-updates` to v.22.2.1. - [package]: Bump `typescript-eslint` to v.8.60.1. - [oxlint]: Bump `oxlint` config to v.1.0.2. - [oxfmt]: Bump `oxfmt` config to v.1.0.2. - [jest]: Bump `jest` config to v.2.0.2. - [vitest]: Bump `vitest` config to v.2.0.5. - [eslint]: Bump `eslint` config to v.2.0.5. - [eslint]: Bump `devcontainer` config to v.1.0.1. - [claude]: Move CLAUDE.md in the repo root. - [claude]: Add .claude/settings.json with permissions configuration. ### Fixed - [frontend]: Fix value of port discriminator and passcode shown on Settings/Matter settings on the frontend. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.7.10] - 2026-05-22 ### Development - [matter]: Update [Matter 1.5.1 changes from 1.4.2](Matter-1.5.1.md). - [matter]: Update [Matter.js 0.17 changes from 0.16](Matter.js-0.17.md). ### Added - [development]: Local plugins (not installed but just added from a local path) are now supported also with Docker (use a path reachable from the container i.e. /root/Matterbridge/factory/pluginname). Matterbridge will be automatically linked to the package on restart. - [development]: Uploaded plugins not published on npm are now supported also with Docker (use private=true in package.json). They will be reinstalled on Docker recreate from the last used tarball. ### Changed - [package]: Update dependencies. - [package]: Bump `eslint` to v.10.4.0. - [package]: Bump `@types/node` to v.25.9.1. - [package]: Bump `ts-jest` to v.29.4.11. - [package]: Bump `typescript-eslint` to v.8.59.4. - [package]: Bump `vitest` to v.4.1.7. - [package]: Bump `@vitest/coverage-v8` to v.4.1.7. - [package]: Bump `eslint-plugin-jsdoc` to v.63.0.0. - [package]: Bump `@eslint/markdown` to v.8.0.2. - [package]: Bump `marked` to v.18.0.4. - [package]: Remove tsconfig.eslint.json and use tsconfig.json. - [package]: Update `.devcontainer/devcontainer.json` for improved development experience with tsgo and oxc. - [package]: Update `.vscode/settings.json` for improved development experience with tsgo and oxc. - [package]: Add `.vscode/extensions.json` for improved development experience with tsgo and oxc. - [frontend]: Bump `frontend` version to v.3.4.16. - [frontend]: Update dependencies. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.7.9] - 2026-05-15 ### Breaking Changes - [docker]: The **latest** docker image now includes only Matterbridge, using the latest release published on npm. Official plugins are not included in the image: they will be reinstalled on first run. ### Development Changes - [tsgo]: Add explicit TypeScript project `references` to all workspace `tsconfig.build.json` and `tsconfig.build.production.json` files, enabling correct parallel builds with `tsgo`. Clean build time drops from **~17s** (`tsc`) to **~3s** (`tsgo`) — a **5.7× speedup**. - [localdev]: Add the ability to auto link matterbridge in the local plugins (not published on npm) when using docker (beta). Thanks [prohand](https://github.com/Luligu/matterbridge/issues/558). ### Added - [node]: Add Node.js 26.x to the allowed versions in the package.json `engines` field. - [workflows]: Add Node.js 26.x to the `build matrix` and remove Node.js 20.x. Node.js 20.x is still listed in the package.json engines field even if EOL. - [frontend]: Add `version` in the tooltip of plugin upgrade. Thanks [Tamer Salah](https://github.com/tammeryousef1006). ### Changed - [docker]: Update the **chip-test** Dockerfile to `ubuntu:24.04` because `ubuntu:latest` now resolves to Ubuntu 26.04 LTS (Resolute), which is not yet supported by connectedhomeip. - [docker]: The **24-ubuntu-slim** and **ubuntu** Matterbridge Docker images now resolve to "Ubuntu 26.04 LTS (Resolute)". - [frontend]: Bump `frontend` version to v.3.4.15. - [package]: Update dependencies. - [package]: Bump `jest` to v.30.4.2. - [package]: Bump `vitest` to v.4.1.6. - [package]: Bump `typescript-eslint` to v.8.59.3. - [scripts]: Refactor `scripts`. - [package]: Bump `eslint.config.js` v.2.0.3. - [package]: Bump `vite.config.ts` v.2.0.3. ### Fixed - [localdev]: Fix npm install for local plugins (not published on npm) when using docker. Thanks [prohand](https://github.com/Luligu/matterbridge/issues/558). <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.7.8] - 2026-05-09 ### Development Breaking Changes - [bin]: Remove mb-run bin. It will be replaced by mb-run package. - [matter]: Add the matter.js renamed Semantic Tag Namespaces in [Matter.js 0.17 changes from 0.16](Matter.js%200.17.md). ### Development changes - [matter]: Add the new Matter 1.5.1 Semantic Tag Namespaces in [Matter 1.5.1 changes from 1.4.2](Matter-1.5.1.md). ### Added - [storage]: Add the node storage health check. - [eslint]: Enforce `eslint-plugin-n` rules. - [frontend]: Add matterbridge version and frontend version in the after update panels. - [frontend]: Parse docker info in Matterbridge info. ### Changed - [package]: Update dependencies. - [package]: Bump `node-ansi-logger` to v.3.2.2. - [package]: Bump `node-persist-manager` to v.2.1.0. - [package]: Bump `eslint` to v.10.3.0. - [package]: Bump `marked` to v.18.0.3. - [package]: Bump `typescript-eslint` to v.8.59.2. - [package]: Bump `eslint-plugin-n` to v.18.0.1. - [package]: Bump `jest.config.js` v.2.0.1. - [package]: Bump `eslint.config.js` v.2.0.1. - [package]: Bump `vite.config.ts` v.2.0.2. - [frontend]: Bump `frontend` version to v.3.4.14. - [frontend]: Update dependencies. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.7.7] - 2026-05-01 ### Changed - [package]: Update jest config to v.2.0.0, prettier config to v.2.0.0 and eslint config to v.2.0.0. ### Fixed - [frontend]: Fix add plugin after upload. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.7.6] - 2026-05-01 ### Development changes - [matterbridge]: Add a persisted `uuid` properties to PlatformMatterbridge. This allows to detect a new setup in the plugin code. - [eslint]: Remove `eslint-plugin-promise` (not actively maintained) and add optional @typescript-eslint promise rules. - [utils]: Add `fireAndForget()` helper. - [utils]: Add `isValidPromise()` helper. - [tsgo]: Add experimental scripts to use `tsgo` (super fast typescript 7). Use npm run installExperimental before. - [oxlint]: Add experimental scripts to use `oxlint` (super fast linter). Use npm run installExperimental before. - [oxfmt]: Add experimental scripts to use `oxfmt` (super fast formatter). Use npm run installExperimental before. ### Added - [threads]: Add `snackBar()` helper to `WorkerWrapper` to send snackbar messages from worker threads to the frontend. - [systemcheck]: Show frontend snackbar errors for unsupported Node.js versions and network configuration issues detected by the SystemCheck worker. - [systemcheck]: Clarify excluded network interface guidance to mention the Mdns interface setting in the frontend. - [dockerversion]: Add snack bar message if a new Docker image exist. - [matter]: Add [Matter.js 0.17 changes from 0.16](Matter.js%200.17.md). - [scripts]: Add scripts\install-experimental.mjs and scripts\npm-link.mjs. - [threads]: Add a check on the worker result and fix cleanup for errors. - [promises]: Enforce `@typescript-eslint/no-floating-promises` rule. - [eslint]: Add `eslint` v.2.0.0 config (co-authored by Claude Sonnet 4.6). - [spawn]: Add `cross-spawn` v.7.0.6. - [frontend]: After the frontend upload a package, matterbridge will try to add the plugin too (this is a best effort and may fails). Thanks Pierre-Gilles Leymarie (https://github.com/Luligu/matterbridge/discussions/544) ### Changed - [package]: Update dependencies. - [package]: Bump `typescript-eslint` to v.8.59.1. - [jest]: Increase test timeout to 30 seconds in CI workflows. - [frontend]: Bump `frontend` version to v.3.4.13. - [frontend]: Update dependencies. - [matter]: Remove `Waiting for controllers to connect...`. Thanks [Tamer Salah](https://github.com/tammeryousef1006). - [eslint]: Update all docs. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.7.5] - 2026-04-24 ### Development changes - [endpoint]: Remove undefined attributes from MatterbridgeEndpoint.forEachAttribute(). - [devcontainer]: Add `Claude Code for VS Code extension` to Dev Container. ### Added - [docker]: Add script to [run two instances of matterbridge](README-DOCKER.md#how-to-run-a-double-instance-of-matterbridge) (edge case when you need two instances of a plugin). - [matter]: Validate out-of-range server node passcodes and discriminators before creating the server node. Thanks Alexander Thoukydides (https://github.com/Luligu/matterbridge/issues/549). ### Changed - [package]: Update dependencies. - [test]: Strengthen single-class device attribute assertions by aligning `forEachAttribute` checks with the base test model. - [test]: Refactor `jestutils` module. ### Fixed - [frontend]: Add clear authClientsTimeout to destroy(). <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.7.4] - 2026-04-17 ### Dev news - [matter]: Add matterbridge/matter/model export to allow to create custom cluster with the matter.js decorator-based system. ### Added - [agent]: Add `.github\copilot-instructions.md` for Copilot. - [agent]: Add `.claude\CLAUDE.md` for Claude. - [agent]: Add agent custom instructions (testing) for Copilot and Claude. - [agent]: Add agent custom instructions (matterbridge) for Copilot and Claude. - [agent]: Add agent prompt files. - [matter]: Add [Matter 1.5.1 changes from 1.4.2](Matter-1.5.1.md). - [storage]: Create storage directories on start. - [config]: The dialog to blacklist an entity now shows only the entities not already blacklisted. Thanks [Tamer Salah](https://github.com/tammeryousef1006). ### Changed - [package]: Update dependencies. - [package]: Bump `matter.js` to v.0.16.11. - [package]: Bump `node-ansi-logger` to v.3.2.1. - [package]: Bump `node-persist-manager` to v.2.0.2. - [frontend]: Update dependencies. - [frontend]: Bump `frontend` version to v.3.4.12. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.7.3] - 2026-04-10 ### New plugins - [security]: Add [Security Plugin](https://www.npmjs.com/package/matterbridge-security) v.1.0.0. ### Dev news - [frontend]: Implement rendering in config editor of array-items-enum-uniqueItems rjsf path (see the schema of Hass Plugin). - [platform]: Add BasePlatformConfig to strictly type the platform config (see the matterbridge-irobot module.ts). ### Added - [security]: Escape user-controlled strings in backend responses (e.g. upload `filename`) before sending them to the browser to reduce XSS risk (CodeQL). - [security]: Apply rate limiting to backend file-transfer endpoints (upload/download) to reduce brute-force/abuse and accidental DoS (CodeQL). ### Changed - [package]: Update dependencies. - [frontend]: Update dependencies. - [frontend]: Bump `frontend` version to v.3.4.11. - [terminal]: Ignore process.stdout.isTTY that was too restrictive. ### Fixed - [ansi]: Fix typo in getDefaultDeviceEnergyManagementModeClusterServer(). Thanks Ludovic BOUÉ (https://github.com/Luligu/matterbridge/pull/542). <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.7.2] - 2026-04-02 ### Dev Breaking Changes - [triggerEvent]: The overloads of `triggerEvent()` method that take Behavior.Type or ClusterType are now typed. - [behaviors]: The matterbridge behaviors are exported from matterbridge/behaviors. - [endpoint]: Remove createPinDoorLockClusterServer() endpoint helper because of the doorLock device type requirements (8.1.6). - [endpoint]: Refactor MatterbridgeDoorLockServer beahavior with autoRelockTime attribute and unlockWithTimeout, setUser, getUser, clearUser, setCredential, getCredentialStatus and clearCredential commands. ### Dev news - [endpoint]: Add internalFor() helper. ### Changed - [package]: Update dependencies. - [frontend]: Bump `frontend` version to v.3.4.10. - [frontend]: Remove `matterbridge-security` from ignore list. It has been published. ### Fixed - [ansi]: Fix --no-ansi and NO_COLOR=1 for threads and matter logger. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.7.1] - 2026-03-27 ### Breaking Changes - [cli]: Change names to mb-mdns mb-coap mb-health. The old names (mb_mdns, mb_coap and mb_health) are still available but change your scripts and setups. ### Dev news - [utils]: Add getEnumDescription() function to log cluster enums. - [endpoint]: Add createPinDoorLockClusterServer() endpoint helper to create a DoorLock device with PIN and COTA feature. - [endpoint]: Add createUserPinDoorLockClusterServer() endpoint helper to create a DoorLock device with USR, PIN and COTA feature. ### Added - [package]: Add `CODE_OF_CONDUCT.md`. - [plugins]: Add `title` and `ui:widget` to default schema. - [threads]: Add `DockerVersion` thread. - [reset]: The reset commissioning clears also plugin and device with mode = server. - [mb-mdns]: Add `mb-mdns` v.2.0.0 and refactor both bins to exported CLI entrypoints with dedicated tests. - [mb-coap]: Add `mb-coap` v.2.0.0 and refactor both bins to exported CLI entrypoints with dedicated tests. - [mb-run]: Add `mb-run` bin. ### Changed - [package]: Update dependencies. - [package]: Bump `eslint` to v.10.1.0. - [package]: Bump `typescript` to v.6.0.2. - [frontend]: Bump `frontend` version to v.3.4.9. - [frontend]: Bump `typescript` to v.6.0.2. - [frontend]: Bump `vite` version to v.8.0.1 and fix imports for the new RollDown. - [frontend]: Bump `@rjsf` version to v.6.4.1 and refactor component ConfigPluginDialog. - [boot]: Change boot time limit from 120 to 300 seconds. - [frontend]: Remove `matterbridge-irobot` from ignore list. It has been published. ### Fixed - [frontend]: `Filter by` in the Devices page is now case insensitive. - [rvc]: Update `currentArea` parameter type to allow null in createDefaultServiceAreaClusterServer. - [config]: Fix config editor, to send formData consistently in onAction(). - [config]: Fix config editor, to add the device name instead of newKey in properties dialog. Thanks [Tamer Salah](https://github.com/tammeryousef1006). <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.7.0] - 2026-03-19 ### Dev Breaking Changes - [getAttribute]: The overloads of `getAttribute()` method that take Behavior.Type or ClusterType are now typed. - [setAttribute]: The overloads of `setAttribute()` method that take Behavior.Type or ClusterType are now typed. - [updateAttribute]: The overloads of `updateAttribute()` method that take Behavior.Type or ClusterType are now typed. - [subscribeAttribute]: The overloads of `subscribeAttribute()` method that take Behavior.Type or ClusterType and the handler function are now typed. - [addCommandHandler]: The `addCommandHandler()` method and the handler function are now typed. The command must be a string in the format "Cluster.command" (e.g. "OnOff.toggle"). The cluster name and command name should match the Matter specifications. For backward compatibility, aliases for the most used cluster commands (e.g. "on" or "off") are also supported ("toggle" is treated as "OnOff.toggle"). When you require Matterbridge >= 3.7.0 (verifyMatterbridgeVersion('3.7.0')), prefer the fully qualified command name (e.g. "OnOff.toggle" instead of just "toggle") to avoid conflicts with other clusters that have commands with the same name. The short form is deprecated and will be removed in the next releases. > The attributes property of data (passed to the handler function) is writable inside the handler function. > YOU CANNOT CALL enpoint.setAttribute() OR endpoint.setCluster() INSIDE THE HANDLER FUNCTION. At runtime none of these changes will create issues because this is a typing-only change (the runtime signatures didn't change). At build time (TypeScript compile time), you may see new type errors in plugins that call these overloads, because the types are now more strict/precise. If you hit build errors: - update your code to match the new typings (often it is just adjusting the generic/type argument or the inferred type); - change your verifyMatterbridgeVersion('3.7.0') to require Matterbridge >= 3.7.0. ### Dev News - [DevContainer]: Change base image to `mcr.microsoft.com/devcontainers/javascript-node:24-trixie`. - [DevContainer]: Add postStartCommand. ### Added - [frontend]: Add support for `Hass Ingress` project (https://github.com/lovelylain/hass_ingress). Thanks kramttocs (https://github.com/Luligu/matterbridge/discussions/524). - [threads]: Add `ArchiveCommand` thread. - [endpoint]: Add `getSnapshot()` to create a snapshot of matter cluster state. - [endpoint]: Add `removeCommandHandler()` method. ### Changed - [package]: Update dependencies. - [package]: Update actions versions in workflows. - [frontend]: Bump `frontend` version to v. 3.4.8. - [frontend]: Refactor archives creation using threads. - [frontend]: Change basePath to pathName for BrowserRouter. - [archive]: Use `zipjs` package. - [archive]: Remove `archiver` and `glob` packages. ### Fixed - [frontend]: Fix edge case when more then one device with mode = 'server' is in the same plugin. Thanks Ryan (https://github.com/Luligu/matterbridge/pull/528). - [thermostat]: Fix Thermostat preset implementation. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.6.1] - 2026-03-13 ### Dev Breaking Changes - [getCluster]: The overloads of `getCluster()` method that take Behavior.Type or ClusterType are now typed. - [setCluster]: The overloads of `setCluster()` method that take Behavior.Type or ClusterType are now typed. ### Added - [package]: Enable tree-shaking for @matterbridge/utils. - [package]: Enable tree-shaking for @matterbridge/thread. - [threads]: Add ThreadsManager class to the cli. - [threads]: Add WorkerWrapper class. - [reset-sessions]: Add --reset-sessions parameter to disable resumption records. Use it only if your controller doesn't support resumption. ### Changed - [package]: Update dependencies. - [package]: Bump `eslint` to v.10.0.3. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a> ## [3.6.0] - 2026-03-06 ### Dev Breaking Changes - [Oven]: Refactor `Oven` class to use TemperatureNumber for TemperatureControlledCabinet device type. - [Refrigerator]: Refactor `Refrigerator` class to use TemperatureNumber for TemperatureControlledCabinet device type. - [Evse]: Refactor `Evse` class as composed device. - [WaterHeater]: Refactor `WaterHeater` class as composed device. - [SolarPower]: Refactor `SolarPower` class as composed device. - [BatteryStorage]: Refactor `BatteryStorage` class as composed device. - [HeatPump]: Refactor `HeatPump` class as composed device. ### Dev News - [matter1.5.0]: Add SoilMeasurement cluster and corresponding test. - [matter1.5.0]: Add ClosureControl and ClosureDimension clusters with corresponding tests. - [matter1.5.0]: Add SoilSensor class and corresponding tests. - [matter1.5.0]: Add IrrigationSystem class and corresponding tests. - [matter1.5.0]: Add Closure class and corresponding tests. - [matter1.5.0]: Add ClosurePanel class and corresponding tests. - [matter1.5.0]: Add SoilSensor, IrrigationSystem, Closure, and ClosurePanel device types with corresponding definitions. - [semtag]: Add `getSemtag()` helper to facilitate adding tagList to the Descriptor cluster. If you use them don't forget to require Matterbridge 3.6.0. - [getCluster]: Add `getCluster()` method to retrive the state of a cluster. If you use them don't forget to require Matterbridge 3.6.0. - [setCluster]: Add `setCluster()` method to set the state of a cluster. If you use them don't forget to require Matterbridge 3.6.0. - [chip-test]: ✅ `TC_DeviceBasicComposition.py` passes. - [chip-test]: ✅ `TC_DeviceConformance.py` passes. - [chip-test]: ✅ `TC_DefaultWarnings.py` passes. ### Added - [docker]: Add the image (tag **s6-rc-legacy** 83 MB). It includes only Matterbridge, using the latest release published on npm. This image is based on `node:22-bullseye-slim` (the last node version supporting armv7), supports `arm64`, `amd64` and `arm/v7` and integrates the `s6-rc overlay` system. Plugins are not included in the image: they will be installed on first run. It will be used for the legacy [Matterbridge Home Assistant Application (Legacy)](https://github.com/Luligu/matterbridge-home-assistant-addon-legacy). - [frontend]: Add the ability to filter by plugin in the Devices page. Thanks [Tamer Salah](https://github.com/tammeryousef1006). - [frontend]: Add in the config whiteList and blackList select a filter to remove from the list what is already added. Thanks [Tamer Salah](https://github.com/tammeryousef1006). - [frontend]: Unregister all devices increments the BasicInformation.configurationVersion. This, if supported on controller side, allows controllers to detect changes in the configuration. ### Changed - [package]: Update dependencies. - [package]: Add `@eslint/json`. - [package]: Add `@eslint/markdown`. - [docker]: The base image `24-ubuntu-slim` is now built with the latest node 24 release. - [frontend]: Bump `frontend` version to v. 3.4.7. - [frontend]: Update dependencies. ### Fixed - [thermostat]: Remove atomic commands required only with Preset and Schedule features. - [TemperatureControlledCabinet]: Remove not mandatory Identify cluster from TemperatureControlledCabinet device type. - [frontend]: Fix config lock from select Devices panel. It broke somehow in the past releases. - [logger]: Fix logger level in the single class devices. Thanks Reimer Prochnow (https://github.com/Luligu/matterbridge/issues/521). - [frontend]: Add `charset=utf-8` to type in view and download api. Thanks FredForHACS (https://github.com/Luligu/matterbridge-home-assistant-addon/issues/48). <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a