matterbridge 3.3.4-dev-20251022-681420c → 3.3.5-dev-20251025-26d5c31

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
@@ -26,8 +26,19 @@ Advantages:
26
26
  - real concurrency outside the Node.js main loop;
27
27
  - isolation between threads;
28
28
  - individual plugin isolation in childbridge mode;
29
+ - ability to update the plugin in childbridge mode without restarting matterbridge;
29
30
 
30
- ## [3.3.4] - Not released
31
+ ## [3.3.5] - 2025-10-??
32
+
33
+ ### Changed
34
+
35
+ - [package]: Updated dependencies.
36
+
37
+ <a href="https://www.buymeacoffee.com/luligugithub">
38
+ <img src="bmc-button.svg" alt="Buy me a coffee" width="80">
39
+ </a>
40
+
41
+ ## [3.3.4] - 2025-10-24
31
42
 
32
43
  ### Breaking Changes
33
44
 
@@ -50,6 +61,10 @@ Advantages:
50
61
  - [frontend]: Bumped `frontend` version to 3.2.3.
51
62
  - [thread]: Bumped `BroadcastServer` version to 1.0.1.
52
63
 
64
+ ### Fixed
65
+
66
+ - [thrmostat]: Fixed minSetpointDeadBand data type. Thanks Apollon!
67
+
53
68
  <a href="https://www.buymeacoffee.com/luligugithub">
54
69
  <img src="bmc-button.svg" alt="Buy me a coffee" width="80">
55
70
  </a>
@@ -31,7 +31,7 @@ export class BroadcastServer extends EventEmitter {
31
31
  }
32
32
  broadcastMessageHandler(event) {
33
33
  const data = event.data;
34
- this.log.debug(`*Received broadcast message: ${debugStringify(data)}`);
34
+ this.log.debug(`Received broadcast message: ${debugStringify(data)}`);
35
35
  this.emit('broadcast_message', data);
36
36
  }
37
37
  broadcast(message) {
@@ -48,7 +48,7 @@ export class BroadcastServer extends EventEmitter {
48
48
  this.log.error(`Invalid request message format for broadcast: ${debugStringify(message)}`);
49
49
  return;
50
50
  }
51
- this.log.debug(`*Broadcasting message: ${debugStringify(message)}`);
51
+ this.log.debug(`Broadcasting request message: ${debugStringify(message)}`);
52
52
  this.broadcastChannel.postMessage(message);
53
53
  }
54
54
  respond(message) {
@@ -59,7 +59,7 @@ export class BroadcastServer extends EventEmitter {
59
59
  this.log.error(`Invalid response message format for broadcast: ${debugStringify(message)}`);
60
60
  return;
61
61
  }
62
- this.log.debug(`*Broadcasting message: ${debugStringify(message)}`);
62
+ this.log.debug(`Broadcasting response message: ${debugStringify(message)}`);
63
63
  this.broadcastChannel.postMessage(message);
64
64
  }
65
65
  async fetch(message) {
@@ -69,13 +69,13 @@ export class BroadcastServer extends EventEmitter {
69
69
  if (message.timestamp === undefined) {
70
70
  message.timestamp = Date.now();
71
71
  }
72
- this.log.debug(`*Fetching message: ${debugStringify(message)}`);
72
+ this.log.debug(`Fetching message: ${debugStringify(message)}`);
73
73
  return new Promise((resolve, reject) => {
74
74
  const responseHandler = (msg) => {
75
75
  if (this.isWorkerResponse(msg, message.type) && msg.id === message.id) {
76
76
  clearTimeout(timeoutId);
77
77
  this.off('broadcast_message', responseHandler);
78
- this.log.debug(`*Fetch response: ${debugStringify(msg)}`);
78
+ this.log.debug(`Fetch response: ${debugStringify(msg)}`);
79
79
  resolve(msg);
80
80
  }
81
81
  };
@@ -1,4 +1,4 @@
1
- import { AnsiLogger, BLUE, CYAN, db, debugStringify, er, wr } from 'node-ansi-logger';
1
+ import { AnsiLogger, BLUE, CYAN, db, debugStringify, er } from 'node-ansi-logger';
2
2
  import { dev } from './matterbridgeTypes.js';
3
3
  import { BroadcastServer } from './broadcastServer.js';
4
4
  import { hasParameter } from './utils/commandLine.js';
@@ -43,7 +43,7 @@ export class DeviceManager {
43
43
  this.server.respond({ ...msg, response: { success: true } });
44
44
  break;
45
45
  default:
46
- this.log.warn(`Unknown broadcast message ${CYAN}${msg.type}${wr} from ${CYAN}${msg.src}${wr}`);
46
+ this.log.debug(`Unknown broadcast message ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}`);
47
47
  }
48
48
  }
49
49
  }
package/dist/frontend.js CHANGED
@@ -3,7 +3,7 @@ if (process.argv.includes('--loader') || process.argv.includes('-loader'))
3
3
  import os from 'node:os';
4
4
  import path from 'node:path';
5
5
  import EventEmitter from 'node:events';
6
- import { AnsiLogger, stringify, debugStringify, CYAN, db, er, nf, rs, UNDERLINE, UNDERLINEOFF, YELLOW, nt, wr } from 'node-ansi-logger';
6
+ import { AnsiLogger, stringify, debugStringify, CYAN, db, er, nf, rs, UNDERLINE, UNDERLINEOFF, YELLOW, nt } from 'node-ansi-logger';
7
7
  import { Logger, Diagnostic, LogDestination, LogLevel as MatterLogLevel, LogFormat as MatterLogFormat, Lifecycle } from '@matter/general';
8
8
  import { DeviceAdvertiser, DeviceCommissioner, FabricManager } from '@matter/protocol';
9
9
  import { FabricIndex } from '@matter/types/datatype';
@@ -44,7 +44,7 @@ export class Frontend extends EventEmitter {
44
44
  }
45
45
  async msgHandler(msg) {
46
46
  if (this.server.isWorkerRequest(msg, msg.type) && (msg.dst === 'all' || msg.dst === 'frontend')) {
47
- this.log.debug(`**Received broadcast request ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}: ${debugStringify(msg)}${db}`);
47
+ this.log.debug(`Received broadcast request ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}: ${debugStringify(msg)}${db}`);
48
48
  switch (msg.type) {
49
49
  case 'frontend_start':
50
50
  await this.start(msg.params.port);
@@ -55,11 +55,11 @@ export class Frontend extends EventEmitter {
55
55
  this.server.respond({ ...msg, response: { success: true } });
56
56
  break;
57
57
  default:
58
- this.log.warn(`Unknown broadcast request ${CYAN}${msg.type}${wr} from ${CYAN}${msg.src}${wr}`);
58
+ this.log.debug(`Unknown broadcast request ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}`);
59
59
  }
60
60
  }
61
61
  if (this.server.isWorkerResponse(msg, msg.type)) {
62
- this.log.debug(`**Received broadcast response ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}: ${debugStringify(msg)}${db}`);
62
+ this.log.debug(`Received broadcast response ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}: ${debugStringify(msg)}${db}`);
63
63
  switch (msg.type) {
64
64
  case 'plugins_install':
65
65
  this.wssSendCloseSnackbarMessage(`Installing package ${msg.response.packageName}...`);
@@ -84,7 +84,7 @@ export class Frontend extends EventEmitter {
84
84
  }
85
85
  break;
86
86
  default:
87
- this.log.warn(`Unknown broadcast response ${CYAN}${msg.type}${wr} from ${CYAN}${msg.src}${wr}`);
87
+ this.log.debug(`Unknown broadcast response ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}`);
88
88
  }
89
89
  }
90
90
  }
@@ -125,6 +125,9 @@ export class Matterbridge extends EventEmitter {
125
125
  this.server = new BroadcastServer('matterbridge', this.log);
126
126
  this.server.on('broadcast_message', this.msgHandler.bind(this));
127
127
  }
128
+ destroy() {
129
+ this.server.close();
130
+ }
128
131
  async msgHandler(msg) {
129
132
  if (this.server.isWorkerRequest(msg, msg.type) && (msg.dst === 'all' || msg.dst === 'matterbridge')) {
130
133
  this.log.debug(`**Received broadcast request ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}: ${debugStringify(msg)}${db}`);
@@ -137,14 +140,14 @@ export class Matterbridge extends EventEmitter {
137
140
  this.server.respond({ ...msg, response: { success: true, logLevel: this.log.logLevel } });
138
141
  break;
139
142
  default:
140
- this.log.warn(`Unknown broadcast request ${CYAN}${msg.type}${wr} from ${CYAN}${msg.src}${wr}`);
143
+ this.log.debug(`Unknown broadcast request ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}`);
141
144
  }
142
145
  }
143
146
  if (this.server.isWorkerResponse(msg, msg.type)) {
144
147
  this.log.debug(`**Received broadcast response ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}: ${debugStringify(msg)}${db}`);
145
148
  switch (msg.type) {
146
149
  default:
147
- this.log.warn(`Unknown broadcast response ${CYAN}${msg.type}${wr} from ${CYAN}${msg.src}${wr}`);
150
+ this.log.debug(`Unknown broadcast response ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}`);
148
151
  }
149
152
  }
150
153
  }
@@ -1096,6 +1099,7 @@ export class Matterbridge extends EventEmitter {
1096
1099
  else {
1097
1100
  if (!this.initialized) {
1098
1101
  this.log.debug('Cleanup with instance not initialized...');
1102
+ this.destroy();
1099
1103
  this.frontend.destroy();
1100
1104
  this.plugins.destroy();
1101
1105
  this.devices.destroy();
@@ -795,7 +795,7 @@ export class MatterbridgeEndpoint extends Endpoint {
795
795
  maxCoolSetpointLimit: maxCoolSetpointLimit * 100,
796
796
  absMinCoolSetpointLimit: minCoolSetpointLimit * 100,
797
797
  absMaxCoolSetpointLimit: maxCoolSetpointLimit * 100,
798
- minSetpointDeadBand: minSetpointDeadBand * 100,
798
+ minSetpointDeadBand: minSetpointDeadBand * 10,
799
799
  thermostatRunningMode: Thermostat.ThermostatRunningMode.Off,
800
800
  ...(occupied !== undefined ? { unoccupiedHeatingSetpoint: unoccupiedHeatingSetpoint !== undefined ? unoccupiedHeatingSetpoint * 100 : 1900 } : {}),
801
801
  ...(occupied !== undefined ? { unoccupiedCoolingSetpoint: unoccupiedCoolingSetpoint !== undefined ? unoccupiedCoolingSetpoint * 100 : 2700 } : {}),
@@ -49,7 +49,7 @@ export class PluginManager extends EventEmitter {
49
49
  this.server.respond({ ...msg, response: { packageName: msg.params.packageName, success: await this.uninstall(msg.params.packageName) } });
50
50
  break;
51
51
  default:
52
- this.log.warn(`Unknown broadcast message ${CYAN}${msg.type}${wr} from ${CYAN}${msg.src}${wr}`);
52
+ this.log.debug(`Unknown broadcast message ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}`);
53
53
  }
54
54
  }
55
55
  }
@@ -1,9 +1,10 @@
1
1
  import { inspect } from 'node:util';
2
+ import { RESET } from 'node-ansi-logger';
2
3
  export function logError(log, message, error) {
3
4
  log.error(`${message}: ${error instanceof Error ? error.message + '\nStack:\n' + error.stack : error}`);
4
5
  }
5
6
  export function inspectError(log, message, error) {
6
7
  const errorMessage = error instanceof Error ? `${error.message}\n` : '';
7
8
  const inspectedError = inspect(error, { depth: 10, colors: true, showHidden: false });
8
- log.error(`${message}: ${errorMessage}${inspectedError}`);
9
+ log.error(`${message}: ${errorMessage}${RESET}${inspectedError}`);
9
10
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "matterbridge",
3
- "version": "3.3.4-dev-20251022-681420c",
3
+ "version": "3.3.5-dev-20251025-26d5c31",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "matterbridge",
9
- "version": "3.3.4-dev-20251022-681420c",
9
+ "version": "3.3.5-dev-20251025-26d5c31",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@matter/main": "0.15.6",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matterbridge",
3
- "version": "3.3.4-dev-20251022-681420c",
3
+ "version": "3.3.5-dev-20251025-26d5c31",
4
4
  "description": "Matterbridge plugin manager for Matter",
5
5
  "author": "https://github.com/Luligu",
6
6
  "license": "Apache-2.0",