Skip to content

Commit b5b4b9c

Browse files
authored
Release 1.1.0
## [1.1.0] - 2026-04-10 ### Breaking Changes - [domains] Add `Domain Whitelist` and `Domain Blacklist`. ### Added - [helpers]: Add `helpers module` to make the platform code easier to read and maintain. - [helpers]: Add `payload module` to make the platform code easier to read and maintain. - [helpers]: Add `report module` to make the platform code easier to read and maintain. - [scripts]: Add script to prune GitHub releases based on tag prefix. ### Changed - [package]: Update dependencies. - [package]: Bump package to `automator` v.3.1.5. - [package]: Bump `eslint` to v.10.2.0. - [package]: Bump `prettier` to v.3.8.2. - [package]: Bump `typescript-eslint` to v.8.58.1. - [devcontainer]: Update VS Code settings. - [scripts]: Update mb-run script. - [entity]: Refactor entity helper signatures to be uniform across all helpers. ### Fixed - [schema]: Fix controllerStrategy schema. - [devcontainer]: Fix pull of new image. - [devcontainer]: Fix matterbridge scripts. <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a>
1 parent af84880 commit b5b4b9c

37 files changed

Lines changed: 3230 additions & 1268 deletions

.devcontainer/devcontainer.json

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ Dev containers have networking limitations depending on the host OS and Docker s
4949
"source=${localWorkspaceFolderBasename}-cert,target=/home/node/.mattercert,type=volume",
5050
"source=matterbridge,target=/matterbridge,type=volume"
5151
],
52-
// Create the matterbridge Docker network if it doesn't exist and pull the base image (runs on the HOST before the container starts).
53-
"initializeCommand": "docker network inspect matterbridge || docker network create matterbridge && docker pull mcr.microsoft.com/devcontainers/javascript-node:24-trixie",
52+
// Create the matterbridge Docker network if it doesn't exist, then pull the base image (runs on the HOST before the container starts).
53+
"initializeCommand": "(docker network inspect matterbridge || docker network create matterbridge) && docker pull mcr.microsoft.com/devcontainers/javascript-node:24-trixie",
5454
// On create, update npm, install and link the dev of matterbridge and install and build the plugin (runs inside the container)
5555
"postCreateCommand": "bash .devcontainer/postCreateCommand.sh",
5656
// On start, run the plugin in watch mode (runs inside the container)
@@ -90,10 +90,33 @@ Dev containers have networking limitations depending on the host OS and Docker s
9090
"eslint.format.enable": true,
9191
"eslint.useFlatConfig": true,
9292
"diffEditor.ignoreTrimWhitespace": false,
93-
"git.autofetch": true,
9493
"files.eol": "\n",
9594
"files.insertFinalNewline": true,
96-
"files.trimFinalNewlines": true
95+
"files.trimFinalNewlines": true,
96+
"files.watcherExclude": {
97+
"**/node_modules/**": true,
98+
"**/build/**": true,
99+
"**/.cache/**": true,
100+
"**/coverage/**": true
101+
},
102+
"search.exclude": {
103+
"**/node_modules": true,
104+
"**/dist": true,
105+
"**/build": true,
106+
"**/.cache": true,
107+
"**/coverage": true
108+
},
109+
"git.autofetch": true,
110+
"git.autoRepositoryDetection": false,
111+
"git.ignoredRepositories": ["**/node_modules/**", "**/dist/**", "**/build/**", "**/.cache/**", "**/coverage/**", "**/docs/**"],
112+
"js/ts.tsdk.path": "node_modules/typescript/lib",
113+
"js/ts.tsdk.promptToUseWorkspaceVersion": false,
114+
"js/ts.tsserver.watchOptions": {
115+
"watchFile": "dynamicPriorityPolling",
116+
"watchDirectory": "dynamicPriorityPolling",
117+
"fallbackPolling": "dynamicPriorityPolling",
118+
"excludeDirectories": ["**/.cache/**", "**/node_modules/**", "**/coverage/**", "**/dist/**", "**/build/**", "**/docs/**"]
119+
}
97120
}
98121
}
99122
}

.devcontainer/install-matterbridge-dev.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ SHA7=$(git rev-parse --short=7 HEAD) && BASE_VERSION=$(node -p "require('./packa
2222
npm ci --no-fund --no-audit && npm run build
2323
cd apps/frontend && npm ci --no-fund --no-audit && npm run build && cd ../..
2424
npm install . --global --no-fund --no-audit
25-
rm -rf .cache .devcontainer .git .github .vscode docker docs reflector screenshots scripts systemd
25+
rm -rf .cache .devcontainer .git .github .vscode docker docs reflector screenshots systemd
2626
echo "Matterbridge has been installed from the dev branch."

.devcontainer/install-matterbridge-main.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ SHA7=$(git rev-parse --short=7 HEAD) && BASE_VERSION=$(node -p "require('./packa
2222
npm ci --no-fund --no-audit && npm run build
2323
cd apps/frontend && npm ci --no-fund --no-audit && npm run build && cd ../..
2424
npm install . --global --no-fund --no-audit
25-
rm -rf .cache .devcontainer .git .github .vscode docker docs reflector screenshots scripts systemd
25+
rm -rf .cache .devcontainer .git .github .vscode docker docs reflector screenshots systemd
2626
echo "Matterbridge has been installed from the main branch."

.github/workflows/publish.yml

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ jobs:
2121
name: Publish release to npm and trigger matterbridge docker build latest
2222
if: github.event_name == 'release'
2323
runs-on: ubuntu-latest
24+
env:
25+
PAT_TOKEN: ${{ secrets.PAT_TOKEN }}
2426

2527
steps:
2628
- name: Checkout repository
@@ -74,9 +76,10 @@ jobs:
7476
run: npm publish
7577

7678
- name: Trigger Matterbridge Docker Build Main
79+
if: env.PAT_TOKEN != ''
7780
uses: actions/github-script@v8
7881
with:
79-
github-token: ${{ secrets.PAT_TOKEN }}
82+
github-token: ${{ env.PAT_TOKEN }}
8083
script: |
8184
await github.rest.actions.createWorkflowDispatch({
8285
owner: 'Luligu',
@@ -89,6 +92,8 @@ jobs:
8992
name: Publish daily dev to npm and trigger matterbridge docker build dev
9093
if: github.event_name != 'release'
9194
runs-on: ubuntu-latest
95+
env:
96+
PAT_TOKEN: ${{ secrets.PAT_TOKEN }}
9297

9398
steps:
9499
- name: Select branch dev if exists, else default branch
@@ -170,11 +175,11 @@ jobs:
170175
DATE=$(date -u +'%Y%m%d')
171176
SHA=$(git rev-parse --short=7 HEAD)
172177
DEV_TAG="${BASE}-dev-${DATE}-${SHA}"
173-
echo "DEV_TAG=$DEV_TAG" >> $GITHUB_ENV
174-
echo "ORIG_SHA=$SHA" >> $GITHUB_ENV
178+
echo "dev_tag=$DEV_TAG" >> $GITHUB_OUTPUT
179+
echo "orig_sha=$SHA" >> $GITHUB_OUTPUT
175180
176-
- name: Bump to version-dev-date-commit --no-git-tag-version --ignore-scripts tag ${{ env.DEV_TAG }}
177-
run: npm version "${{ env.DEV_TAG }}" --no-git-tag-version --ignore-scripts
181+
- name: Bump to version-dev-date-commit --no-git-tag-version --ignore-scripts tag ${{ steps.vars.outputs.dev_tag }}
182+
run: npm version "${{ steps.vars.outputs.dev_tag }}" --no-git-tag-version --ignore-scripts
178183

179184
- name: Check if a new dev-publish is needed
180185
id: check_new
@@ -192,7 +197,7 @@ jobs:
192197
PUBLISHED_SHA=${PUBLISHED##*-}
193198
194199
# 4) get the current commit short-SHA
195-
CURRENT_SHA=${ORIG_SHA}
200+
CURRENT_SHA=${{ steps.vars.outputs.orig_sha }}
196201
197202
echo "Published dev tag: $PUBLISHED"
198203
echo "Published SHA: $PUBLISHED_SHA"
@@ -213,10 +218,10 @@ jobs:
213218
run: npm publish --tag dev
214219

215220
- name: Trigger Matterbridge Docker Build Dev
216-
if: steps.check_new.outputs.should_publish == 'true'
221+
if: steps.check_new.outputs.should_publish == 'true' && env.PAT_TOKEN != ''
217222
uses: actions/github-script@v8
218223
with:
219-
github-token: ${{ secrets.PAT_TOKEN }}
224+
github-token: ${{ env.PAT_TOKEN }}
220225
script: |
221226
await github.rest.actions.createWorkflowDispatch({
222227
owner: 'Luligu',

CHANGELOG.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,38 @@ If you like this project and find it useful, please consider giving it a **star*
1414

1515
> For naming issues (especially upsetting with Alexa), read the explanation and the solution [here](https://github.com/Luligu/matterbridge-hass/discussions/86).
1616
17+
## [1.1.0] - 2026-04-10
18+
19+
### Breaking Changes
20+
21+
- [domains] Add `Domain Whitelist` and `Domain Blacklist`.
22+
23+
### Added
24+
25+
- [helpers]: Add `helpers module` to make the platform code easier to read and maintain.
26+
- [helpers]: Add `payload module` to make the platform code easier to read and maintain.
27+
- [helpers]: Add `report module` to make the platform code easier to read and maintain.
28+
- [scripts]: Add script to prune GitHub releases based on tag prefix.
29+
30+
### Changed
31+
32+
- [package]: Update dependencies.
33+
- [package]: Bump package to `automator` v.3.1.5.
34+
- [package]: Bump `eslint` to v.10.2.0.
35+
- [package]: Bump `prettier` to v.3.8.2.
36+
- [package]: Bump `typescript-eslint` to v.8.58.1.
37+
- [devcontainer]: Update VS Code settings.
38+
- [scripts]: Update mb-run script.
39+
- [entity]: Refactor entity helper signatures to be uniform across all helpers.
40+
41+
### Fixed
42+
43+
- [schema]: Fix controllerStrategy schema.
44+
- [devcontainer]: Fix pull of new image.
45+
- [devcontainer]: Fix matterbridge scripts.
46+
47+
<a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a>
48+
1749
## [1.0.12] - 2026-04-02
1850

1951
### Breaking Changes

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ This guide is intentionally **repository-agnostic** so it can be reused across M
2828
## Submitting a Pull Request
2929

3030
- Open a PR from your fork to the upstream repository.
31-
- Target the correct base branch (`dev` when used, otherwise the default branch).
31+
- Target the correct base branch (`dev` when used, otherwise the default branch `main`).
3232
- Keep the PR focused (one feature/fix per PR when possible).
3333
- Describe what changed and why, and include:
3434
- Steps to test the change

README.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
![Node.js CI](https://github.com/Luligu/matterbridge-hass/actions/workflows/build.yml/badge.svg)
88
![CodeQL](https://github.com/Luligu/matterbridge-hass/actions/workflows/codeql.yml/badge.svg)
99
[![codecov](https://codecov.io/gh/Luligu/matterbridge-hass/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge-hass)
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/)
1212
[![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/)
1414
[![matterbridge.io](https://img.shields.io/badge/matterbridge.io-online-brightgreen)](https://matterbridge.io)
1515

1616
[![powered by](https://img.shields.io/badge/powered%20by-matterbridge-blue)](https://www.npmjs.com/package/matterbridge)
@@ -224,6 +224,14 @@ If the blackList is defined the devices, the individual and split entities inclu
224224

225225
List of entities not to be exposed for a single device. Enter in the first field the name of the device and in the second field add all the entity names you want to exclude for that device.
226226

227+
### domain whiteList
228+
229+
Only entities whose domain is listed here will be exposed. Leave this list empty to expose all domains. Enter the domain name (i.e. switch, light, sensor).
230+
231+
### domain blackList
232+
233+
Entities whose domain is listed here will be excluded. Leave this list empty to exclude no domains. Enter the domain name (i.e. automation, scene, button).
234+
227235
### splitEntities
228236

229237
The device entities in the list will be exposed like an independent device and removed from their device. Use the entity id (i.e. switch.plug_child_lock).

matterbridge-hass.config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "matterbridge-hass",
33
"type": "DynamicPlatform",
4-
"version": "0.5.0",
4+
"version": "1.0.0",
55
"host": "ws://homeassistant.local:8123",
66
"certificatePath": "",
77
"rejectUnauthorized": false,
@@ -12,6 +12,7 @@
1212
"filterByLabel": "",
1313
"whiteList": [],
1414
"blackList": [],
15+
"entityWhiteList": [],
1516
"entityBlackList": [],
1617
"deviceEntityBlackList": {},
1718
"splitEntities": [],

matterbridge-hass.schema.json

Lines changed: 58 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,6 @@
8484
"uniqueItems": true,
8585
"selectFrom": "name"
8686
},
87-
"entityBlackList": {
88-
"title": "Entity Blacklist",
89-
"description": "Not used in this plugin.",
90-
"type": "array",
91-
"items": {
92-
"type": "string"
93-
},
94-
"uniqueItems": true,
95-
"selectEntityFrom": "description",
96-
"ui:widget": "hidden"
97-
},
9887
"deviceEntityBlackList": {
9988
"title": "Device Entity Blacklist",
10089
"description": "List of entities not to be exposed for a single device. Enter in the first field the name of the device and in the list add all the entity names you want to exclude for that device. This is only related to device entities, not individual entities or split entities.",
@@ -111,6 +100,62 @@
111100
"selectDeviceEntityFrom": "name"
112101
}
113102
},
103+
"entityWhiteList": {
104+
"title": "Domain Whitelist",
105+
"description": "Only entities whose domain is listed here will be exposed. Leave this list empty to expose all domains. Enter the domain name (i.e. switch, light, sensor).",
106+
"type": "array",
107+
"items": {
108+
"type": "string",
109+
"enum": [
110+
"automation",
111+
"scene",
112+
"script",
113+
"input_boolean",
114+
"input_button",
115+
"switch",
116+
"light",
117+
"lock",
118+
"fan",
119+
"cover",
120+
"climate",
121+
"valve",
122+
"vacuum",
123+
"sensor",
124+
"binary_sensor",
125+
"event",
126+
"button"
127+
]
128+
},
129+
"uniqueItems": true
130+
},
131+
"entityBlackList": {
132+
"title": "Domain Blacklist",
133+
"description": "Entities whose domain is listed here will be excluded. Leave this list empty to exclude no domains. Enter the domain name (i.e. automation, scene, button).",
134+
"type": "array",
135+
"items": {
136+
"type": "string",
137+
"enum": [
138+
"automation",
139+
"scene",
140+
"script",
141+
"input_boolean",
142+
"input_button",
143+
"switch",
144+
"light",
145+
"lock",
146+
"fan",
147+
"cover",
148+
"climate",
149+
"valve",
150+
"vacuum",
151+
"sensor",
152+
"binary_sensor",
153+
"event",
154+
"button"
155+
]
156+
},
157+
"uniqueItems": true
158+
},
114159
"splitEntities": {
115160
"title": "Split Entities",
116161
"description": "The device entities in the list will be exposed like an independent device and removed from their device. Enter the entity_id (i.e. switch.computer_plug_child_lock). Split entities must satisfy the filters (if any) and the whiteList (if any).",
@@ -135,8 +180,8 @@
135180
"default": "Entity name"
136181
},
137182
"controllerStrategy": {
138-
"title": "Strategy used to expose multiple device types. 'Merge' combines non-overlapping device types on the main endpoint. 'Matter' creates a separate endpoint for each device type. Use the Merge strategy for legacy controllers. Changing this setting may require you to pair the controller again.",
139-
"description": "Strategy used for controller.",
183+
"title": "Controller Strategy",
184+
"description": "Strategy used to expose multiple device types. 'Merge' combines non-overlapping device types on the main endpoint. 'Matter' creates a separate endpoint for each device type. Use the Merge strategy for legacy controllers. Changing this setting may require you to pair the controller again.",
140185
"type": "string",
141186
"enum": ["Merge", "Matter"],
142187
"default": "Merge"

0 commit comments

Comments
 (0)