matterbridge 3.7.3-dev-20260408-abfa6ac → 3.7.3-dev-20260409-47ebca7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,10 +7,10 @@
7
7
  ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
8
  ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
9
  [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
- [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://github.com/prettier/prettier)
11
- [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://github.com/eslint/eslint)
10
+ [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://prettier.io/)
11
+ [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://eslint.org/)
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
13
- [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/api/esm.html)
13
+ [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org)
14
14
  [![matterbridge.io](https://img.shields.io/badge/matterbridge.io-online-brightgreen)](https://matterbridge.io)
15
15
 
16
16
  [![powered by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
@@ -55,6 +55,15 @@ These classes will run as threads in the next releases:
55
55
 
56
56
  ## [3.7.3] - Dev branch
57
57
 
58
+ ### New plugins
59
+
60
+ - [security]: Add [Security Plugin](https://www.npmjs.com/package/matterbridge-security).
61
+
62
+ ### Dev news
63
+
64
+ - [frontend]: Implement rendering in config editor of array-items-enum-uniqueItems rjsf path (see the schema of Hass Plugin).
65
+ - [platform]: Add BasePlatformConfig to strictly type the platform config (see the matterbridge-irobot module.ts).
66
+
58
67
  ### Added
59
68
 
60
69
  - [security]: Escape user-controlled strings in backend responses (e.g. upload `filename`) before sending them to the browser to reduce XSS risk (CodeQL).
@@ -63,8 +72,14 @@ These classes will run as threads in the next releases:
63
72
  ### Changed
64
73
 
65
74
  - [package]: Update dependencies.
75
+ - [frontend]: Update dependencies.
76
+ - [frontend]: Bump `frontend` version to v.3.4.11.
66
77
  - [terminal]: Ignore process.stdout.isTTY that was too restrictive.
67
78
 
79
+ ### Fixed
80
+
81
+ - [ansi]: Fix typo in getDefaultDeviceEnergyManagementModeClusterServer(). Thanks Ludovic BOUÉ (https://github.com/Luligu/matterbridge/pull/542).
82
+
68
83
  <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a>
69
84
 
70
85
  ## [3.7.2] - 2026-04-02
package/README-DEV.md CHANGED
@@ -7,10 +7,10 @@
7
7
  ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
8
  ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
9
  [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
- [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://github.com/prettier/prettier)
11
- [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://github.com/eslint/eslint)
10
+ [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://prettier.io/)
11
+ [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://eslint.org/)
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
13
- [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/api/esm.html)
13
+ [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
14
14
  [![matterbridge.io](https://img.shields.io/badge/matterbridge.io-online-brightgreen)](https://matterbridge.io)
15
15
 
16
16
  [![powered by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
package/README-DOCKER.md CHANGED
@@ -7,10 +7,10 @@
7
7
  ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
8
  ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
9
  [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
- [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://github.com/prettier/prettier)
11
- [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://github.com/eslint/eslint)
10
+ [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://prettier.io/)
11
+ [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://eslint.org/)
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
13
- [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/api/esm.html)
13
+ [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
14
14
  [![matterbridge.io](https://img.shields.io/badge/matterbridge.io-online-brightgreen)](https://matterbridge.io)
15
15
 
16
16
  [![powered by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
@@ -39,11 +39,11 @@ The image (tag **s6-rc-legacy** 83 MB) includes only Matterbridge, using the lat
39
39
 
40
40
  ### Matterbridge chip-tool docker image
41
41
 
42
- The image (tag **chip-test** 400MB) includes Ubuntu LTS, Node.Js 24 LTS, connectedhomeip repository with chip-tool, chip-cert and all needed for yaml and phyton tests. The matterbridge instance inside the container is already paired in the chip-tool fabric to execute yaml tests and in the python harness fabric to execute python tests. In the container, the chip environment and phyton environment are already active. Just open a shell inside the container with bash and run the tests. Matterbridge frontend is as usual on port 8283. No volumes or port mapping needed.
42
+ The image (tag **chip-test** 400MB) is based on `ubuntu:latest` with Node.js 24 LTS from NodeSource and includes the connectedhomeip repository with chip-tool, chip-cert and all components required for yaml and phyton tests. The matterbridge instance inside the container is already paired in the chip-tool fabric to execute yaml tests and in the python harness fabric to execute python tests. In the container, the chip environment and phyton environment are already active. Just open a shell inside the container with bash and run the tests. Matterbridge frontend is as usual on port 8283. No volumes or port mapping needed.
43
43
 
44
44
  ### Matterbridge docker base images
45
45
 
46
- The image (tag **24-ubuntu-slim** 83 MB) includes only `ubuntu:latest`: Ubuntu 24.04.4 LTS (noble) with Node.js 24. It is used to build the **ubuntu** image but can also be used to open a shell in ubuntu latest with node 24 (node doesn't publish node:24-ubuntu).
46
+ The image (tag **24-ubuntu-slim** 83 MB) is based on `ubuntu:latest` with Node.js 24 LTS from NodeSource. It is used to build the **ubuntu** image but can also be used to open a shell in ubuntu latest with node 24 (node doesn't publish node:24-ubuntu).
47
47
 
48
48
  ### Docker health check
49
49
 
@@ -7,10 +7,10 @@
7
7
  ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
8
  ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
9
  [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
- [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://github.com/prettier/prettier)
11
- [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://github.com/eslint/eslint)
10
+ [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://prettier.io/)
11
+ [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://eslint.org/)
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
13
- [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/api/esm.html)
13
+ [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
14
14
  [![matterbridge.io](https://img.shields.io/badge/matterbridge.io-online-brightgreen)](https://matterbridge.io)
15
15
 
16
16
  [![powered by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
package/README-NGINX.md CHANGED
@@ -7,10 +7,10 @@
7
7
  ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
8
  ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
9
  [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
- [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://github.com/prettier/prettier)
11
- [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://github.com/eslint/eslint)
10
+ [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://prettier.io/)
11
+ [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://eslint.org/)
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
13
- [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/api/esm.html)
13
+ [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
14
14
  [![matterbridge.io](https://img.shields.io/badge/matterbridge.io-online-brightgreen)](https://matterbridge.io)
15
15
 
16
16
  [![powered by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
package/README-PODMAN.md CHANGED
@@ -7,10 +7,10 @@
7
7
  ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
8
  ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
9
  [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
- [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://github.com/prettier/prettier)
11
- [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://github.com/eslint/eslint)
10
+ [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://prettier.io/)
11
+ [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://eslint.org/)
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
13
- [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/api/esm.html)
13
+ [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
14
14
  [![matterbridge.io](https://img.shields.io/badge/matterbridge.io-online-brightgreen)](https://matterbridge.io)
15
15
 
16
16
  [![powered by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
@@ -7,10 +7,10 @@
7
7
  ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
8
  ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
9
  [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
- [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://github.com/prettier/prettier)
11
- [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://github.com/eslint/eslint)
10
+ [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://prettier.io/)
11
+ [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://eslint.org/)
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
13
- [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/api/esm.html)
13
+ [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
14
14
  [![matterbridge.io](https://img.shields.io/badge/matterbridge.io-online-brightgreen)](https://matterbridge.io)
15
15
 
16
16
  [![powered by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
@@ -97,6 +97,28 @@ Group=<USER>
97
97
  WantedBy=multi-user.target
98
98
  ```
99
99
 
100
+ On some systems, npm install may fail with errors like `ENETUNREACH`:
101
+
102
+ This happens when:
103
+
104
+ The system has IPv6 enabled
105
+ DNS returns IPv6 (AAAA) records
106
+ But the host does not have a working IPv6 default route
107
+
108
+ In this situation:
109
+
110
+ Node.js may try IPv6 first.
111
+ The connection fails with ENETUNREACH.
112
+ Npm retries may randomly succeed or fail depending on resolution order.
113
+
114
+ This often indicates a misconfigured IPv6 route / DNS preference.
115
+
116
+ One possible fix, add this line to the existing [Service] section:
117
+
118
+ ```text
119
+ Environment="NODE_OPTIONS=--dns-result-order=ipv4first"
120
+ ```
121
+
100
122
  If you use the frontend with **-ssl** --frontend 443 and get an error message: "Port 443 requires elevated privileges",
101
123
  add this:
102
124
 
@@ -7,10 +7,10 @@
7
7
  ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
8
  ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
9
  [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
- [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://github.com/prettier/prettier)
11
- [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://github.com/eslint/eslint)
10
+ [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://prettier.io/)
11
+ [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://eslint.org/)
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
13
- [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/api/esm.html)
13
+ [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
14
14
  [![matterbridge.io](https://img.shields.io/badge/matterbridge.io-online-brightgreen)](https://matterbridge.io)
15
15
 
16
16
  [![powered by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
@@ -117,7 +117,7 @@ Wants=network.target
117
117
 
118
118
  [Service]
119
119
  Type=simple
120
- Environment=NODE_ENV=production
120
+ Environment="NODE_ENV=production"
121
121
  Environment="NPM_CONFIG_PREFIX=/opt/matterbridge/.npm-global"
122
122
  Environment="NPM_CONFIG_CACHE=/opt/matterbridge/.npm-cache"
123
123
  ExecStart=matterbridge --service --nosudo
@@ -137,6 +137,28 @@ ReadWritePaths=/opt/matterbridge
137
137
  WantedBy=multi-user.target
138
138
  ```
139
139
 
140
+ On some systems, npm install may fail with errors like `ENETUNREACH`:
141
+
142
+ This happens when:
143
+
144
+ The system has IPv6 enabled
145
+ DNS returns IPv6 (AAAA) records
146
+ But the host does not have a working IPv6 default route
147
+
148
+ In this situation:
149
+
150
+ Node.js may try IPv6 first.
151
+ The connection fails with ENETUNREACH.
152
+ Npm retries may randomly succeed or fail depending on resolution order.
153
+
154
+ This often indicates a misconfigured IPv6 route / DNS preference.
155
+
156
+ One possible fix, add this line to the existing [Service] section:
157
+
158
+ ```text
159
+ Environment="NODE_OPTIONS=--dns-result-order=ipv4first"
160
+ ```
161
+
140
162
  If you use the frontend with **-ssl** -frontend 443 and get an error message: "Port 443 requires elevated privileges",
141
163
  add this:
142
164
 
package/README-SERVICE.md CHANGED
@@ -7,10 +7,10 @@
7
7
  ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
8
  ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
9
  [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
- [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://github.com/prettier/prettier)
11
- [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://github.com/eslint/eslint)
10
+ [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://prettier.io/)
11
+ [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://eslint.org/)
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
13
- [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/api/esm.html)
13
+ [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
14
14
  [![matterbridge.io](https://img.shields.io/badge/matterbridge.io-online-brightgreen)](https://matterbridge.io)
15
15
 
16
16
  [![powered by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
@@ -74,18 +74,38 @@ Group=<USER>
74
74
  WantedBy=multi-user.target
75
75
  ```
76
76
 
77
- If you use the frontend with --ssl --frontend 443 and get an error message: "Port 443 requires elevated privileges",
78
- add this:
77
+ On some systems, npm install may fail with errors like `ENETUNREACH`:
78
+
79
+ This happens when:
80
+
81
+ The system has IPv6 enabled
82
+ DNS returns IPv6 (AAAA) records
83
+ But the host does not have a working IPv6 default route
84
+
85
+ In this situation:
86
+
87
+ Node.js may try IPv6 first.
88
+ The connection fails with ENETUNREACH.
89
+ Npm retries may randomly succeed or fail depending on resolution order.
90
+
91
+ This often indicates a misconfigured IPv6 route / DNS preference.
92
+
93
+ One possible fix, add this line to the existing [Service] section:
79
94
 
95
+ ```text
96
+ Environment="NODE_OPTIONS=--dns-result-order=ipv4first"
80
97
  ```
81
- [Service]
98
+
99
+ If you use the frontend with --ssl --frontend 443 and get an error message: "Port 443 requires elevated privileges",
100
+ add this line to the existing [Service] section:
101
+
102
+ ```text
82
103
  AmbientCapabilities=CAP_NET_BIND_SERVICE
83
104
  ```
84
105
 
85
- If you use the matterbridge-bthome plugin add this:
106
+ If you use the matterbridge-bthome plugin add this line to the existing [Service] section:
86
107
 
87
- ```
88
- [Service]
108
+ ```text
89
109
  AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_NET_ADMIN
90
110
  ```
91
111
 
package/README.md CHANGED
@@ -7,10 +7,10 @@
7
7
  ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
8
  ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
9
  [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
- [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://github.com/prettier/prettier)
11
- [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://github.com/eslint/eslint)
10
+ [![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://prettier.io/)
11
+ [![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://eslint.org/)
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
13
- [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/api/esm.html)
13
+ [![ESM](https://img.shields.io/badge/ESM-Node.js-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
14
14
  [![matterbridge.io](https://img.shields.io/badge/matterbridge.io-online-brightgreen)](https://matterbridge.io)
15
15
 
16
16
  [![powered by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
@@ -316,6 +316,21 @@ Features:
316
316
  - The discovered BTHome devices are stored with all attributes to easily restart the plugin.
317
317
  - The plugin has also a command line to test and verify the bluetooth adapter and the ble network.
318
318
 
319
+ ### Security
320
+
321
+ <a href="https://github.com/Luligu/matterbridge-security">
322
+ <img src="https://matterbridge.io/assets/matterbridge.svg" alt="Matterbridge logo" width="100" />
323
+ </a>
324
+
325
+ Matterbridge Security plugin allows you to create a security system.
326
+
327
+ Features:
328
+
329
+ - Five preconfigured modes: Home, Away, Night, Vacation, Off.
330
+ - Five preconfigured setters: Home, Away, Night, Vacation, Off.
331
+ - Four preconfigured triggers: Home, Away, Night, Off.
332
+ - Five preconfigured alerts: Home, Away, Night, Off, Master.
333
+
319
334
  ### Accessory platform example
320
335
 
321
336
  This is an example of an accessory platform plugin.
@@ -330,7 +345,7 @@ An Accessory platform plugin only exposes one device.
330
345
 
331
346
  This is an example of a dynamic platform plugin.
332
347
 
333
- It exposes 57 virtual devices.
348
+ It exposes 70 virtual devices.
334
349
 
335
350
  All these virtual devices continuously change state and position. The plugin also shows how to use all the command handlers (you can control all the devices).
336
351
 
@@ -354,7 +369,7 @@ The history works in both bridge and childbridge mode.
354
369
 
355
370
  The Eve app only shows the history when the plugins run like an AccessoryPlatform in childbridge mode or as a device with mode server (this means the plugin is paired directly).
356
371
 
357
- ## Third-party plugins
372
+ ## Community plugins
358
373
 
359
374
  ### [Loxone](https://github.com/andrasg/matterbridge-loxone)
360
375