UNPKG

matterbridge

Version:

Matterbridge plugin manager for Matter

913 lines (638 loc) 159 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) [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://prettier.io/) [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://eslint.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org) [![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> ## Project evolution The project is evolving to a multi-threaded architecture with these advantages: - real concurrency outside the Node.js main loop; - memory and performace optimization; - isolation between threads; - individual plugin isolation in childbridge mode; - ability to update the plugin in childbridge mode without restarting matterbridge; ✅ The CLI is the threads manager. These threads already run as workers: - ✅ check updates; - ✅ check docker updates; - ✅ system check; - ✅ spawn commands; - ✅ archive commands; - ✅ check the global node_modules directory; These classes will run as threads in the next releases: - matterbridge; - frontend; - all plugins in bridge mode; - each plugin in childbridge mode; ## [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%200.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 coffee" width="80"></a> ## [3.5.6] - 2026-02-27 ### Dev Breaking Changes - [rootNode]: The serialNumber and uniqueId for accessory plugins in childbridge mode, and for devices with mode = server, are now taken from the device. These values are persisted in storage and cannot be changed later. - [devContainer]: Add the guide to [pair Matterbridge with Dev Container](README-DEV.md#how-to-pair-matterbridge-in-dev-containers) - [devContainer]: Add the new [dev container setup](https://matterbridge.io/reflector/MatterbridgeDevContainer.html). - [devContainer]: Add the new [reflector dev container setup](https://matterbridge.io/reflector/Reflector.html). ### Dev News - [binding]: Add for test only MatterbridgeBindingServer. - [docker]: Add **luligu/matterbridge:chip-test** image (400MB): it is based on Ubuntu LTS, Node.Js 24 LTS and includes connectedhomeip repository with chip-tool, chip-cert and all packages requierd to run yaml and phyton tests. The matterbridge instance inside the container is already paired for yaml and python test. In the container, the chip environment and phyton environment are already active. Just open a shell inside the container with bash and run the yaml or phyton tests. Matterbridge frontend is bound on port 8283. No volumes or port mapping needed. - [styleguide]: Add [STYLEGUIDE.md](STYLEGUIDE.md). - [contributing]: Add [CONTRIBUTING.md](CONTRIBUTING.md). ### Added - [nvm]: Add detection for Nvm (not for production with systemd service). - [nvm]: Clarify in systemd guides that Nvm cannot be used for production. ### Changed - [package]: Update dependencies. - [package]: Bump packages to `automator` v.3.1.0. - [package]: Bump `eslint` to v.10.0.2. - [package]: Bump `typescript-eslint` to v.8.56.1. - [package]: Replace `eslint-plugin-import` with `eslint-plugin-simple-import-sort`. - [package]: Bump `matter.js` to v.0.16.10. Thanks matter.js team. ### Fixed - [advertise]: Remove no more used timeout of 15 minutes. <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.5.5] - 2026-02-20 ### Breaking Changes - [Node.Js]: Consider to update all not docker based setups to Node.Js 24 that is now the LTS. - [docker]: Use mb_health instead of curl for HEALTHCHECK. This allows to save around 15MB on the docker image size. If you override the UI port or the protocol, update the health check CMD with mb_health https://localhost/health or disable it. ### Added - [images]: Add OCI standard labels (https://opencontainers.org/) to docker pipelines. - [frontend]: Add frontend publishing steps to publish workflow. - [docker]: Add dockerVersion api. ### Changed - [package]: Update dependencies. - [package]: Bump package to `automator` v.3.0.8. - [package]: Bump `node-persist-manager` to v.2.0.1, - [package]: Bump `eslint` to v.10.0.0. - [package]: Bump `matter.js` to v.0.16.9 (suspended, waiting for https://github.com/matter-js/matter.js/issues/3232). ### Fixed - [frontend]: Fix possible issue with some browsers in check authentication. Thanks Ludovic BOUÉ and k3067e3 (https://github.com/Luligu/matterbridge/issues/498). <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.5.4] - 2026-02-13 ### Dev Breaking Changes - [exports]: Removed Matterbridge export from matterbridge. ### Breaking Changes - [doorLock]: The default value for **DoorLock.actuatorEnabled** has been changed to true. Thanks Ludovic BOUÉ (https://github.com/Luligu/matterbridge/pull/509). - [ingress]: Removed the `--ingress` parameter used in the old Home Assisant add-on. Update the Matterbridge Home Assistant Application (formerly known as add-on) if you didn't. - [Node.Js]: Restricted **Node.Js requirents** to `>= 20.19` < 21 or `>= 22.13` < 23 or `>= 24` < 25. - [Node.Js]: Consider to update all all not docker based setups to Node.Js 24 that is now the LTS. ### Added - [packages]: Added **@matterbridge/types** monorepo scoped package. - [packages]: Added **@matterbridge/core** monorepo scoped package. - [apps]: Added **@matterbridge/frontend** monorepo scoped package. - [monorepo]: The transition to a modern monorepo setup with scoped packages is now completed. - [addon]: Added two other s6-rc based images to be used in the next releases of the [Home Assistant Application](https://github.com/Luligu/matterbridge-home-assistant-addon). - [frontend]: The frontend is now built in the GitHub publish workflow. - [SystemCheck]: Added a **system check** (run in its own thread) that starts after 2 minutes and checks the most common causes of issues: Node.Js version and network configuration. - [SystemCheck]: Added parameter **--systemcheck** to run the system check and exit. ### Changed - [package]: Updated dependencies. - [matterbridge.io]: Updated docs and styles. - [docker]: Updated docker readme file to clarify which base image is used. - [frontend]: Bumped `frontend` version to v. 3.4.5. ### Fixed - [worflows]: Fixed workflows that failed and dockerfiles. - [childbridge]: Fixed sequence of disabling a plugin in childbridge mode. Thanks [Tamer Salah](https://github.com/tammeryousef1006). ### Security During installation you may see in the log a warning that looks scary, for example: ```text npm warn deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me ``` This warning does not come from Matterbridge code. It is emitted by a transitive dependency (the `archiver` package) that pulls in an older `glob` version. Matterbridge does not depend on this version of `glob` directly. In short: you can safely ignore this message; it is a dependency warning, not a Matterbridge vulnerability. <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.5.3] - 2026-02-06 ### Dev Breaking Changes - [logger]: The logger (node-ansi-logger) has been refactored and updated (v.3.2.0) to support the new features below. ### Breaking Changes - [docker]: Updated latest and dev docker images to use node:24-trixie-slim as base. - [node]: Consider to update all setups to node 24 that is now the LTS. ### Added - [docker]: Added workflow, scripts and dockerfile to build the **s6-rc-base** base image used by the Matterbridge Home Assistant Application. - [docker]: Added workflow, scripts and dockerfile to build the **24-ubuntu-slim** base image used by the ubuntu Matterbridge docker image. - [frontend]: Added title rendering to the config editor and allow ui properties in 'oneOf', 'anyOf', 'allOf'. Thanks RinDevJunior (https://github.com/Luligu/matterbridge/pull/495). - [frontend]: Added SearchPluginsDialog in Install plugins panel on the home page. - [frontend]: Added version/tag selector to HomeInstallAddPlugins. Thanks RinDevJunior for the great idea (https://github.com/Luligu/matterbridge/pull/500). - [publish]: Migrated to trusted publishing / OIDC. - [logger]: Added parameter **--no-ansi** to disable ANSI color escape codes in all loggers. Accepts also environment variable **NO_COLOR=1** (https://no-color.org/). - [package]: Added version.mjs, sync-workspaces.mjs, bundle-workspaces.mjs, publish-workspaces.mjs and pack-workspaces.mjs scripts for managing monorepo packages versions and dependencies. ### Changed - [package]: Updated dependencies. - [workflows]: Updated all workflows to use Node.js 24. - [readme]: Updated readme files to clarify which Node.js version should be installed. - [docker]: Updated docker readme file to clarify which base image is used. - [matter.js]: Bump to matter.js v. 0.16.8. - [frontend]: Bumped `frontend` version to v. 3.4.4. - [frontend]: Updated `frontend` dependencies. - [frontend]: Updated rendering of button actions in config editor. ### Fixed - [publish]: Updated publish.yml to trigger the correct docker-buildx-latest.yml. <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.5.2] - 2026-01-31 ### Added - [matterbridge]: Added brand to MatterbridgeAccessoryPlatform and MatterbridgeDynamicPlatform. - [PluginManager]: Verify brand of MatterbridgePlatform, MatterbridgeAccessoryPlatform and MatterbridgeDynamicPlatform. - [PluginManager]: Added frontend message when a plugin is not added cause it is in the pluginIgnoreList or for other issues. - [MatterbridgePlatform]: Verify brand of MatterbridgeEndpoint. - [BasicVideoPlayer]: Added **Basic Video Player** class (suported by SmartThings). - [frontend]: Added **pluginIgnoreList** to avoid to install a plugin that is only a test or a name reservation on npm. - [docker]: Added instructions about how to disable the health check when you override the frontend port or enable https. - [Alexa]: Added a full review of supported device types and known issues. Thanks [Tamer Salah](https://github.com/tammeryousef1006). - [virtual]: Added outlet to mounted switch device type in virtual devices (Matter 1.4.2). Now the mounted switch is supported by all controllers. - [package]: Added @matterbridge/thread monorepo scoped package. - [docker]: Added mb_health bin to be used with docker health check. It allows to reduce the image size by 20MB. ### Changed - [package]: Updated dependencies. - [docker]: Clarified in [README-DOCKER.md](README-DOCKER.md) the content of the matterbridge docker images on Docker Hub. - [frontend]: Bumped `frontend` version to v. 3.4.3. - [frontend]: For the matterbridge docker image with tag dev, the frontend now shows the versions with the tag git. - [worker]: Bumped worker module to v. 1.1.0. <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.5.1] - 2026-01-24 ### Added - [mb_mdns]: Added additional mDNS service types for discovery. - [workflows]: Added npm registry URL and caching to Node.js setup in workflow files. - [workflows]: Added concurrency settings in build.yml to cancel previous runs in GitHub Actions. - [preset]: Added Thermostat with preset feature. Thanks Ludovic BOUÉ (https://github.com/Luligu/matterbridge/pull/482). - [matter.js]: Bump to matter.j v. 0.16.6. - [matter.js]: Bump to matter.j v. 0.16.7. - [mb_mdns]: Added --ip-filter params to filter incoming mDns messages by sender ip. - [express]: Added a login check for internal express api. The /health and /memory api don't need a login. Thanks Rogibaer (https://github.com/Luligu/matterbridge-hass/issues/149). - [readme]: Added a section with the data structure and backup/restore guidelines. - [matterbridge]: Added brand to MatterbridgePlatform and MatterbridgeEndpoint. ### Changed - [package]: Updated 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.5.0] - 2026-01-20 ### Breaking Changes - [matter]: This release brings the upgrade to matter 1.4.2 and matter.js 0.16.x. It may cause the controllers to see a new device. - [childbridge]: Fixed nodeLabel from deviceName in childbridge mode. It may cause the controllers to see a new device. - [modeserver]: Fixed nodeLabel from deviceName for server node devices. It may cause the controllers to see a new device. - [matterbridge]: On restart (typically on the Home Assistant addon), when the plugin is not found and is reinstalled, it is now reinstalled from the latest dev if it was on the dev branch. - [docker]: Removed the arch linux/arm/v7 from all docker images. ### Changed device types in Matter 1.4.2 - [all]: Added ScenesManagement Cluster that is no more provisional. - [onOffMountedSwitch]: Updated onOffOutlet and onOffMountedSwitch: when using the mounted device types add as well the outlet device types on the same endpoint as subset device type. - [dimmableMountedSwitch]: Updated dimmableOutlet and dimmableMountedSwitch: when using the mounted device types add as well the outlet device types on the same endpoint as subset device type. - [coverDevice]: Updated coverDevice rev. 4 and removed Scene Management cluster. - [roboticVacuumCleaner]: Updated roboticVacuumCleaner rev. 4: OperationCompletion event for RVC Operational State cluster is now mandatory (TODO: check behavior). - [laundryWasher]: Updated laundryWasher rev. 2: OperationCompletion event for Operational State cluster is now mandatory (TODO: check behavior). - [laundryDryer]: Updated laundryDryer rev. 2: OperationCompletion event for Operational State cluster is now mandatory (TODO: check behavior). - [dishwasher]: Updated dishwasher rev. 2: OperationCompletion event for Operational State cluster is now mandatory (TODO: check behavior). - [refrigerator]: Updated refrigerator: Temperature Controlled Cabinet with Cooler condition. - [microwaveOven]: Updated microwaveOven rev. 2: OperationCompletion event for Operational State cluster is now mandatory (TODO: check behavior). - [cookSurface]: Updated cookSurface rev. 2: TemperatureLevel is the only valid temperature control mode. - [temperatureControlledCabinetCooler]: Updated temperatureControlledCabinetCooler rev. 5: TemperatureNumber is the only valid temperature control mode. - [temperatureControlledCabinetHeater]: Updated temperatureControlledCabinetHeater rev. 5: TemperatureNumber is the only valid temperature control mode and OperationCompletion event for Oven Cavity Operational State cluster is now mandatory (TODO: check behavior). ### Changed clusters in Matter 1.4.2 - [BridgedDeviceBasicInformation]: Revision 5 - ConfigurationVersion attribute added as P O. - [DoorLock]: Revision 9 - Removed AlarmMask attribute. - [ElectricalPowerMeasurement]: Revision 2 - Changed reactive and apparent power fields to use new data types. Revision 3 - Changed range of apparent current field to allow negative apparent current. - [FanControl]: Revision 5 - Clarified attribute usage, added conformance column. - [Thermostat]: Revision 9 - Removed AlarmMask attribute and AlarmCodeBitmap Type. - [Identify]: Revision 6 - Added Q quality for IdentifyTime attribute. - [WindowCovering]: Revision 6 - Marked AbsolutePosition feature and associated elements provisional. - [RvcCleanMode]: Revision 4 - Added VacuumThenMop cleaning mode. - [RvcOperationalState]: Revision 4 - Added several operational states and errors. - [ServiceArea]: Revision 2 - Renamed InitialTimeEstimate to EstimatedTime. ### Added - [jest]: Added cache inside the repo in .cache/jest. - [frontend]: Enhanced logging for HTTP/HTTPS server binding in Frontend class. - [matterbridge]: Excluded specific network interfaces when looking for the first external interface. - [thermostat]: Conformance to new matter.js internal attributes externalMeasuredIndoorTemperature and externallyMeasuredOccupancy (not in Matter 1.4.2 specs). - [scenes]: Added SceneManagement cluster when required. - [server]: Added start and stop devices server mode in plugin restart. - [server]: Added start and stop devices server mode in plugin enable and disable. - [matter.js]: Bump to matter.j v. 0.16.0. - [matter.js]: Bump to matter.j v. 0.16.1. - [matter.js]: Bump to matter.j v. 0.16.2. - [matter.js]: Bump to matter.j v. 0.16.3. - [matter.js]: Bump to matter.j v. 0.16.4. - [matter.js]: Bump to matter.j v. 0.16.5. - [frontend]: Added the --bind parameter to bind the frontend to a specific address. Defaults to all addresses. ### Changed - [package]: Updated dependencies. - [eslint]: Moved cache in .cache/.eslintcache. - [prettier]: Moved cache in .cache/.prettiercache. - [DevContainer]: Refactor DevContainer to use bridge mode and matterbridge docker network. - [frontend]: Bumped `frontend` version to v. 3.4.2. ### Fixed - [evse]: Fixed the EnergyEvse.chargingEnabledUntil attribute that was wrongly set in the disable command (spec 9.3.8.4). - [package]: Fixed the devDependencies that slipped in for a bug in 3.4.7. <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.4.7] - 2026-01-12 ### Added - [docker]: Released for test and development the alpine and ubuntu images on Docker Hub. They are for amd64 arm64 and based on node 24. No plugins inside. - [docker]: Updated [README-DOCKER.md](README-DOCKER.md) to include alpine and ubuntu images specifications. - [package]: Added scripts for workspaces. - [reflector]: [Full guide](https://matterbridge.io/reflector/Reflector.html). - [@matterbridge]: Created scope @matterbridge. - [package]: Added @matterbridge/jest-utils, @matterbridge/vitest-utils, @matterbridge/utils and @matterbridge/dgram monorepo scoped packages. - [bug_report]: Updated the bug report issue template. - [dockerfile]: Refactored dockerfiles and entrypoints for main, dev, ubuntu and alpine. - [docker]: Removed from docker hub all images untagged or tag 1.x.x and 2.x.x (350 GB). - [eslint]: Added --cache. - [prettier]: Added --cache. ### Changed - [package]: Updated dependencies. - [dgram]: Bumbed version number to 1.0.3 and excluded virtual, overlay, or tunnel interfaces in Dgram class. - [network]: Bumbed version number to 1.0.3. ### Fixed - [macOS]: Fixed the macOS launchctl configuration file. Update it from the README-MACOS-PLIST. <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.4.6] - 2026-01-02 ### Added - [MdnsReflectorClient]: Added already seen cache. - [MdnsReflectorServer]: Added --share-with-clients to share mDNS between all reflector clients. - [reflector]: [Full guide](https://github.com/Luligu/matterbridge/blob/dev/docker-reflector/Docker%20reflector.md). - [package]: Moved to monorepo and workspaces. - [package]: Refactored scripts for jest with cross-env. - [jest]: Typed jest config. - [vitest]: Refactored configuration. - [eslint]: Refactored configuration. - [docker]: Prepare to release also alpine and ubuntu images on Docker Hub. Both only for amd64 arm64 and based on node 24. ### Changed - [package]: Updated dependencies. - [reflector]: Bumped `reflector` version to v.1.1.0. <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.4.5] - 2025-12-27 ### Added - [DevContainer]: Refactored Dev Container setup. The Matterbridge instance can now be paired on native Linux hosts or WSL 2 with Docker engine CLI integration. On Docker Desktop on Windows or macOS is not possible cause Docker Desktop runs inside a VM and not directly on the host so mDNS is not supported. - [DevContainer]: Since is now possible to pair from Dev Container, named volumes have been added to persist storage and plugins across rebuilds. - [mb_mdns]: Added query and advertise interval. Improved help for easy mDNS testing. - [mb_mdns]: Advertise full DNS-SD record set (PTR/SRV/TXT/A/AAAA) for matterbridge.\_http.\_tcp.local on port 8283. - [Mdns]: Added TXT/SRV/A/AAAA encoders into the Mdns class. - [Mdns]: Mdns.sendResponse now accepts an array and sends multi-answer responses. - [MdnsReflectorClient]: Added MdnsReflectorClient class. - [MdnsReflectorServer]: Added MdnsReflectorServer class. ### Changed - [package]: Updated 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.4.4] - 2025-12-19 ### Added - [frontend]: Set automatically autoScroll to false in mobileMode. - [frontend]: Added Log length: 100, 200, 500, 1000. - [frontend]: Added Log search with case-insensitive regex: use /regex/ in the search field to activate the regex search mode (i.e. /Frontend/). See [Regex](https://github.com/Luligu/matterbridge/tree/dev?tab=readme-ov-file#how-to-use-the-regex-search-in-the-log-page). - [frontend]: Differentiated update icon color: primary color for latest and secondary color for dev. - [frontend]: Added `Reset the frontend UI` in the Reset menu. It will reset the frontend local storage to the default and reload the page. - [MbfTable]: Added ConditionalTooltip to show clipped column cells. Used in the Cluster table for a better user experience. - [frontend]: Added battery level to Devices panel in the Home page. Thanks [Tamer Salah](https://github.com/tammeryousef1006). ### Changed - [package]: Updated dependencies. - [frontend]: Bumped `frontend` version to v.3.4.1. ### Fixed - [doorLock]: Fixed DoorLock.supportedOperatingModes. Thanks Ludovic BOUÉ (https://github.com/Luligu/matterbridge/issues/454). - [frontend]: Fixed mobileMode menu navigation. Thanks Calimerorulez (https://github.com/Luligu/matterbridge/issues/457). - [matterbridge]: Fixed debug level of 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.4.3] - 2025-12-12 ### Breaking Changes - [frontend]: This version of the frontend features full responsiveness till a width of 360 pixel (smallest smartphones). Mobile mode starts automatically below 1200 x 900 pixels. From the View menu of the frontend is possible to request the desktop site or the mobile site for the mobile mode. ### Added - [frontend]: Added homepage icon and link to https://matterbridge.io/. - [frontend]: Added settings to request Desktop site or Mobile site in mobile mode. - [matterbridge]: Added more frontend messages on start when a plugin is in error state. It is more clear when the bridge will not start for plugin errors. ### Changed - [package]: Updated dependencies. - [frontend]: Bumped `frontend` version to v.3.4.0. - [package]: Changed homepage to https://matterbridge.io. - [frontend]: Changed help link to https://matterbridge.io/README.html. - [frontend]: Changed changelog link to https://matterbridge.io/CHANGELOG.html. - [frontend]: Changed changelog icon to HistoryOutlinedIcon. - [frontend]: Removed column Url from Devices panel in the Home page. It is already available on the Devices page. - [frontend]: Mobile mode starts below 1200 x 900 and is fully resizable and responsive till a width of 360 pixel. ### Fixed - [matterbridge]: Plugin version is now updated even if the plugin is disabled. - [matterbridge]: Fixed default delay and fixed_delay to 120 seconds. - [frontend]: Fixed resize in desktop mode. <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.4.2] - 2025-12-05 ### Race condition We have a race condition when, after a blackout or with docker compose or with other systems that start more then one process, Matterbridge starts before other required system or network components. Race condition can cause missing configuration or missed devices on the controller side. All Matterbridge official plugins already wait for system and network components to be ready so there is no need of delay. To solve the race condition on blackout, use the --delay parameter. There is no delay on normal restart cause the delay is applied only in the first 5 minutes from system reboot. To solve the race condition on docker compose, use the --fixed_delay parameter. The start will always be delayed. ### Added - [frontend]: Added throttle and timeout to autoScroll in the logs. - [frontend]: Log filters are now applied to existing messages too. - [frontend]: Added close on success to Install dialog. - [BroadcastServer]: Added check for port closed. - [platform]: Added isShuttingDown property to MatterbridgePlatform. - [delay]: Added --delay [seconds]. It will wait to start Matterbridge for the specified delay (default 2 minutes) if the system uptime is less then 5 minutes. It is a safe switch to avoid race conditions on start after a blackout. - [fixed_delay]: Added --fixed_delay [seconds]. It will wait to start Matterbridge for the specified delay (default 2 minutes). It is a safe switch to always avoid race conditions on start on docker compose. Use only if really needed cause it will always wait. ### Chan