matterbridge-irobot 0.1.0 → 0.1.1

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
@@ -1,3 +1,5 @@
1
+ <!-- eslint-disable markdown/no-missing-label-refs -->
2
+
1
3
  # <img src="https://matterbridge.io/assets/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge iRobot plugin changelog
2
4
 
3
5
  All notable changes to this project will be documented in this file.
@@ -6,6 +8,49 @@ If you like this project and find it useful, please consider giving it a **star*
6
8
 
7
9
  <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="120"></a>
8
10
 
11
+ ## [0.1.1] - 2026-05-11
12
+
13
+ ### Changed
14
+
15
+ - [package]: Preliminary compatibility update to `matterbridge 3.8.0`, matter 1.5.1 and matter.js 0.17.0.
16
+ - [package]: Update dependencies.
17
+ - [package]: Bump package to `automator` v.3.1.8.
18
+ - [package]: Bump `node-ansi-logger` to v.3.2.1.
19
+ - [package]: Bump `node-persist-manager` to v.2.0.2.
20
+ - [package]: Bump `jest` to v.30.4.2.
21
+ - [package]: Bump `prettier` to v.3.8.3.
22
+ - [package]: Bump `typescript` to v.6.0.3.
23
+ - [package]: Bump `eslint` to v.10.3.0.
24
+ - [package]: Bump `typescript-eslint` to v.8.59.2.
25
+ - [package]: Add Node.js 26 to package `engines` field.
26
+ - [package]: Add `.vscode\tasks.json`.
27
+ - [package]: Add `.vscode\settings.json`.
28
+ - [package]: Add package script `typecheck`.
29
+ - [eslint]: Remove `eslint-plugin-promise` (not actively maintained) and add optional @typescript-eslint promise rules.
30
+ - [workflows]: Add Node.js 26 to `build.yml` Node matrix and remove Node.js 20.
31
+ - [devcontainer]: Add `Claude Code for VS Code extension` to Dev Container.
32
+ - [jest]: Add `jest` v.2.0.1 config.
33
+ - [eslint]: Add `eslint` v.2.0.3 config.
34
+ - [prettier]: Add `prettier` v.2.0.0 config.
35
+ - [agent]: Add `.github\copilot-instructions.md` for copilot.
36
+ - [agent]: Add `.claude\CLAUDE.md` for claude.
37
+ - [agent]: Add agent custom instructions (`testing`) for copilot and claude.
38
+ - [agent]: Add agent custom instructions (`matterbridge`) for copilot and claude.
39
+ - [devcontainer]: Fix pull of new image.
40
+ - [devcontainer]: Update VS Code settings.
41
+ - [devcontainer]: Leave matterbridge scripts in the cloned repo.
42
+ - [scripts]: Update mb-run script.
43
+ - [scripts]: Update package watch script.
44
+ - [scripts]: Add prune-releases script.
45
+ - [devcontainer]: Update `Dev Container` configuration.
46
+ - [devcontainer]: Add `postStartCommand` to the Dev Container configuration.
47
+ - [package]: Refactor `build.yml` to use matterbridge dev branch for push and main for pull requests.
48
+ - [package]: Add `type checking` script for Jest tests.
49
+ - [package]: Update actions versions in workflows.
50
+ - [package]: Add `CODE_OF_CONDUCT.md`.
51
+
52
+ <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a>
53
+
9
54
  ## [0.1.0] - 2026-04-10
10
55
 
11
56
  ### Added
package/README.md CHANGED
@@ -19,6 +19,10 @@
19
19
 
20
20
  ---
21
21
 
22
+ <a href="https://github.com/Luligu/matterbridge-irobot">
23
+ <img src="https://matterbridge.io/assets/irobot.svg" alt="iRobot logo" width="100" />
24
+ </a>
25
+
22
26
  This plugin allows you to expose iRobot devices to Matter.
23
27
 
24
28
  Features:
@@ -49,15 +49,17 @@ export class IRobotMqtt extends EventEmitter {
49
49
  };
50
50
  this.config.logger?.debug(`IRobotMqtt connecting to ${url}...`);
51
51
  this.client = this.connectFn(url, options);
52
- this.client.on('connect', async () => {
52
+ this.client.on('connect', () => {
53
53
  this.config.logger?.info(`IRobotMqtt connected to ${this.config.ip}`);
54
54
  this.emit('connect');
55
- try {
56
- await this.subscribe(this.config.subscribeTopics);
57
- }
58
- catch (error) {
59
- this.config.logger?.warn('IRobotMqtt subscribe failed:', error);
60
- }
55
+ void (async () => {
56
+ try {
57
+ await this.subscribe(this.config.subscribeTopics);
58
+ }
59
+ catch (error) {
60
+ this.config.logger?.warn('IRobotMqtt subscribe failed:', error);
61
+ }
62
+ })();
61
63
  });
62
64
  this.client.on('reconnect', () => {
63
65
  this.config.logger?.debug(`IRobotMqtt reconnecting to ${this.config.ip}...`);
package/dist/module.js CHANGED
@@ -18,7 +18,7 @@ export class Platform extends MatterbridgeDynamicPlatform {
18
18
  constructor(matterbridge, log, config) {
19
19
  super(matterbridge, log, config);
20
20
  this.config = config;
21
- if (this.verifyMatterbridgeVersion === undefined || typeof this.verifyMatterbridgeVersion !== 'function' || !this.verifyMatterbridgeVersion('3.7.3')) {
21
+ if (typeof this.verifyMatterbridgeVersion !== 'function' || !this.verifyMatterbridgeVersion('3.7.3')) {
22
22
  throw new Error(`This plugin requires Matterbridge version >= "3.7.3". Please update Matterbridge to the latest version in the frontend.`);
23
23
  }
24
24
  this.config.discovery = this.config.discovery ?? true;
@@ -180,13 +180,13 @@ export class Platform extends MatterbridgeDynamicPlatform {
180
180
  logger: rvc.log,
181
181
  subscribeTopics: ['#'],
182
182
  });
183
- rvc.subscribeAttribute(RvcOperationalState.Complete, 'currentPhase', async (newPhase) => {
183
+ await rvc.subscribeAttribute(RvcOperationalState.Complete, 'currentPhase', (newPhase) => {
184
184
  const phaseList = rvc.getAttribute(RvcOperationalState.Complete, 'phaseList');
185
185
  if (!newPhase || !phaseList)
186
186
  return;
187
187
  rvc.log.notice(`Current Phase changed to ${newPhase} >>> ${phaseList[newPhase]}`);
188
188
  });
189
- rvc.subscribeAttribute(RvcOperationalState.Complete, 'operationalState', async (newState) => {
189
+ await rvc.subscribeAttribute(RvcOperationalState.Complete, 'operationalState', (newState) => {
190
190
  rvc.log.notice(`Operational State changed to ${newState}`);
191
191
  });
192
192
  rvc.addCommandHandler('RvcRunMode.changeToMode', async ({ request }) => {
@@ -200,7 +200,7 @@ export class Platform extends MatterbridgeDynamicPlatform {
200
200
  await robotMqtt.stop();
201
201
  }
202
202
  });
203
- rvc.addCommandHandler('RvcCleanMode.changeToMode', async ({ request }) => {
203
+ rvc.addCommandHandler('RvcCleanMode.changeToMode', ({ request }) => {
204
204
  const selectedMode = rvc.getAttribute(RvcCleanMode.Complete, 'supportedModes')?.find((s) => s.mode === request.newMode);
205
205
  rvc.log.notice(`Clean Mode changed to ${selectedMode?.label ?? 'unknown'}`);
206
206
  });
@@ -238,7 +238,7 @@ export class Platform extends MatterbridgeDynamicPlatform {
238
238
  maxArrayLength: null,
239
239
  maxStringLength: null,
240
240
  })}`);
241
- this.parseMqttMessage(rvc, msg.json);
241
+ void this.parseMqttMessage(rvc, msg.json).catch(() => { });
242
242
  }
243
243
  else {
244
244
  rvc.log.debug(`${rs}[mqtt] ${msg.topic}:\n${msg.payload.toString('utf8')}`);
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "matterbridge-irobot",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "matterbridge-irobot",
9
- "version": "0.1.0",
9
+ "version": "0.1.1",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "mqtt": "5.15.1",
13
- "node-ansi-logger": "3.2.0",
14
- "node-persist-manager": "2.0.1"
13
+ "node-ansi-logger": "3.2.1",
14
+ "node-persist-manager": "2.0.2"
15
15
  },
16
16
  "engines": {
17
- "node": ">=20.19.0 <21.0.0 || >=22.13.0 <23.0.0 || >=24.0.0 <25.0.0"
17
+ "node": ">=20.19.0 <21.0.0 || >=22.13.0 <23.0.0 || >=24.0.0 <25.0.0 || >=26.0.0 <27.0.0"
18
18
  },
19
19
  "funding": {
20
20
  "type": "buymeacoffee",
@@ -31,9 +31,9 @@
31
31
  }
32
32
  },
33
33
  "node_modules/@types/node": {
34
- "version": "25.6.0",
35
- "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz",
36
- "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==",
34
+ "version": "25.6.2",
35
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.2.tgz",
36
+ "integrity": "sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw==",
37
37
  "license": "MIT",
38
38
  "dependencies": {
39
39
  "undici-types": "~7.19.0"
@@ -259,9 +259,9 @@
259
259
  "license": "ISC"
260
260
  },
261
261
  "node_modules/ip-address": {
262
- "version": "10.1.0",
263
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
264
- "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
262
+ "version": "10.2.0",
263
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz",
264
+ "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==",
265
265
  "license": "MIT",
266
266
  "engines": {
267
267
  "node": ">= 12"
@@ -342,13 +342,13 @@
342
342
  "license": "MIT"
343
343
  },
344
344
  "node_modules/node-ansi-logger": {
345
- "version": "3.2.0",
346
- "resolved": "https://registry.npmjs.org/node-ansi-logger/-/node-ansi-logger-3.2.0.tgz",
347
- "integrity": "sha512-HvKsTZpMSrEkO2x2egSvTpjgWkVpYO0xsXNxmCG+7vi0Ohs5yy9EdTKbTPYbNwzXY70g7nqsE10yE+Tsw5MA8w==",
345
+ "version": "3.2.1",
346
+ "resolved": "https://registry.npmjs.org/node-ansi-logger/-/node-ansi-logger-3.2.1.tgz",
347
+ "integrity": "sha512-R5YptDlGVfVqACSiOtfmAwV+N/ytj8crwXStrs9d9kdAXYT4xF1J1H5qfhGbXsot06OHSha76Y2Fq66sIzMq2A==",
348
348
  "hasShrinkwrap": true,
349
349
  "license": "Apache-2.0",
350
350
  "engines": {
351
- "node": ">=20.0.0 <21.0.0 || >=22.0.0 <23.0.0 || >=24.0.0 <25.0.0"
351
+ "node": ">=20.19.0 <21.0.0 || >=22.13.0 <23.0.0 || >=24.0.0 <25.0.0"
352
352
  },
353
353
  "funding": {
354
354
  "type": "buymeacoffee",
@@ -356,16 +356,16 @@
356
356
  }
357
357
  },
358
358
  "node_modules/node-persist-manager": {
359
- "version": "2.0.1",
360
- "resolved": "https://registry.npmjs.org/node-persist-manager/-/node-persist-manager-2.0.1.tgz",
361
- "integrity": "sha512-uCnZd8YZSaaYkxhFdOtzC4Q0uix+z5Cfnq5RbL43OKKFvU/6Ms/kZtXWF4CrlhIX9CBKAPUtV7pIUQy85nYc8g==",
359
+ "version": "2.0.2",
360
+ "resolved": "https://registry.npmjs.org/node-persist-manager/-/node-persist-manager-2.0.2.tgz",
361
+ "integrity": "sha512-FGDdNOH4c6Xqb2LwTZ55GT0UaoqaOiWJ+hWt+O7w1+9QIUQh2NsaXPtGaTiibvCi6cX823JTFQPJK2NRseLTvw==",
362
362
  "hasShrinkwrap": true,
363
363
  "license": "Apache-2.0",
364
364
  "dependencies": {
365
365
  "node-persist": "4.0.4"
366
366
  },
367
367
  "engines": {
368
- "node": ">=20.0.0 <21.0.0 || >=22.0.0 <23.0.0 || >=24.0.0 <25.0.0"
368
+ "node": ">=20.19.0 <21.0.0 || >=22.13.0 <23.0.0 || >=24.0.0 <25.0.0"
369
369
  },
370
370
  "funding": {
371
371
  "type": "buymeacoffee",
@@ -489,12 +489,12 @@
489
489
  }
490
490
  },
491
491
  "node_modules/socks": {
492
- "version": "2.8.7",
493
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
494
- "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
492
+ "version": "2.8.9",
493
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.9.tgz",
494
+ "integrity": "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==",
495
495
  "license": "MIT",
496
496
  "dependencies": {
497
- "ip-address": "^10.0.1",
497
+ "ip-address": "^10.1.1",
498
498
  "smart-buffer": "^4.2.0"
499
499
  },
500
500
  "engines": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matterbridge-irobot",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Matterbridge iRobot plugin",
5
5
  "author": "https://github.com/Luligu",
6
6
  "license": "Apache-2.0",
@@ -50,10 +50,11 @@
50
50
  "hass",
51
51
  "hassio",
52
52
  "smartthings",
53
- "ewelink"
53
+ "ewelink",
54
+ "gladysassistant"
54
55
  ],
55
56
  "engines": {
56
- "node": ">=20.19.0 <21.0.0 || >=22.13.0 <23.0.0 || >=24.0.0 <25.0.0"
57
+ "node": ">=20.19.0 <21.0.0 || >=22.13.0 <23.0.0 || >=24.0.0 <25.0.0 || >=26.0.0 <27.0.0"
57
58
  },
58
59
  "files": [
59
60
  "bin",
@@ -65,11 +66,7 @@
65
66
  ],
66
67
  "dependencies": {
67
68
  "mqtt": "5.15.1",
68
- "node-ansi-logger": "3.2.0",
69
- "node-persist-manager": "2.0.1"
70
- },
71
- "overrides": {
72
- "eslint": "10.2.0",
73
- "@eslint/js": "10.0.1"
69
+ "node-ansi-logger": "3.2.1",
70
+ "node-persist-manager": "2.0.2"
74
71
  }
75
72
  }