matterbridge 3.2.8-dev-20250919-0c45649 → 3.2.8-dev-20250920-80e7900

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
@@ -8,7 +8,7 @@ If you like this project and find it useful, please consider giving it a star on
8
8
  <img src="bmc-button.svg" alt="Buy me a coffee" width="120">
9
9
  </a>
10
10
 
11
- ## [3.2.8] - 2025-09-??
11
+ ## [3.2.8] - 2025-09-20
12
12
 
13
13
  ### Breaking Changes
14
14
 
package/dist/frontend.js CHANGED
@@ -677,11 +677,6 @@ export class Frontend extends EventEmitter {
677
677
  return powerSource(child);
678
678
  }
679
679
  }
680
- getMatterDataFromDevice(device) {
681
- if (device.mode === 'server' && device.serverNode) {
682
- return this.matterbridge.getServerNodeData(device.serverNode);
683
- }
684
- }
685
680
  getClusterTextFromDevice(device) {
686
681
  if (!device.lifecycle.isReady || device.construction.status !== Lifecycle.Status.Active)
687
682
  return '';
@@ -852,7 +847,7 @@ export class Frontend extends EventEmitter {
852
847
  uniqueId: device.uniqueId,
853
848
  reachable: this.getReachability(device),
854
849
  powerSource: this.getPowerSource(device),
855
- matter: this.getMatterDataFromDevice(device),
850
+ matter: device.mode === 'server' && device.serverNode ? this.matterbridge.getServerNodeData(device.serverNode) : undefined,
856
851
  cluster: this.getClusterTextFromDevice(device),
857
852
  });
858
853
  }
@@ -1057,6 +1052,7 @@ export class Frontend extends EventEmitter {
1057
1052
  const localData = data;
1058
1053
  if (!isValidString(data.params.pluginNameOrPath, 10)) {
1059
1054
  sendResponse({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, error: 'Wrong parameter pluginNameOrPath in /api/addplugin' });
1055
+ this.wssSendSnackbarMessage(`Plugin ${data.params.pluginNameOrPath} not added`, 10, 'error');
1060
1056
  return;
1061
1057
  }
1062
1058
  data.params.pluginNameOrPath = data.params.pluginNameOrPath.replace(/@.*$/, '');
@@ -89,6 +89,7 @@ export class Matterbridge extends EventEmitter {
89
89
  failCountLimit = hasParameter('shelly') ? 600 : 120;
90
90
  log = new AnsiLogger({ logName: 'Matterbridge', logTimestampFormat: 4, logLevel: hasParameter('debug') ? "debug" : "info" });
91
91
  matterbridgeLoggerFile = 'matterbridge' + (getParameter('profile') ? '.' + getParameter('profile') : '') + '.log';
92
+ matterLog = new AnsiLogger({ logName: 'Matter', logTimestampFormat: 4, logLevel: "debug" });
92
93
  matterLoggerFile = 'matter' + (getParameter('profile') ? '.' + getParameter('profile') : '') + '.log';
93
94
  plugins = new PluginManager(this);
94
95
  devices = new DeviceManager(this);
@@ -108,7 +109,6 @@ export class Matterbridge extends EventEmitter {
108
109
  sigtermHandler;
109
110
  exceptionHandler;
110
111
  rejectionHandler;
111
- matterLog = new AnsiLogger({ logName: 'Matter', logTimestampFormat: 4, logLevel: "debug" });
112
112
  environment = Environment.default;
113
113
  matterStorageName = 'matterstorage' + (getParameter('profile') ? '.' + getParameter('profile') : '');
114
114
  matterStorageService;
@@ -1246,6 +1246,8 @@ export class Matterbridge extends EventEmitter {
1246
1246
  }, 60 * 1000).unref();
1247
1247
  this.emit('bridge_started');
1248
1248
  this.log.notice('Matterbridge bridge started successfully');
1249
+ this.frontend.wssSendRefreshRequired('settings');
1250
+ this.frontend.wssSendRefreshRequired('plugins');
1249
1251
  }, this.startMatterIntervalMs);
1250
1252
  }
1251
1253
  async startChildbridge(delay = 1000) {
@@ -1341,6 +1343,8 @@ export class Matterbridge extends EventEmitter {
1341
1343
  }
1342
1344
  this.emit('childbridge_started');
1343
1345
  this.log.notice('Matterbridge childbridge started successfully');
1346
+ this.frontend.wssSendRefreshRequired('settings');
1347
+ this.frontend.wssSendRefreshRequired('plugins');
1344
1348
  }, this.startMatterIntervalMs);
1345
1349
  }
1346
1350
  async startController() {
@@ -1458,17 +1462,11 @@ export class Matterbridge extends EventEmitter {
1458
1462
  serverNode.lifecycle.commissioned.on(() => {
1459
1463
  this.log.notice(`Server node for ${storeId} was initially commissioned successfully!`);
1460
1464
  this.advertisingNodes.delete(storeId);
1461
- this.frontend.wssSendRefreshRequired('settings');
1462
- this.frontend.wssSendRefreshRequired('plugins');
1463
- this.frontend.wssSendRefreshRequired('devices');
1464
1465
  this.frontend.wssSendRefreshRequired('matter', { matter: { ...this.getServerNodeData(serverNode) } });
1465
1466
  });
1466
1467
  serverNode.lifecycle.decommissioned.on(() => {
1467
1468
  this.log.notice(`Server node for ${storeId} was fully decommissioned successfully!`);
1468
1469
  this.advertisingNodes.delete(storeId);
1469
- this.frontend.wssSendRefreshRequired('settings');
1470
- this.frontend.wssSendRefreshRequired('plugins');
1471
- this.frontend.wssSendRefreshRequired('devices');
1472
1470
  this.frontend.wssSendRefreshRequired('matter', { matter: { ...this.getServerNodeData(serverNode) } });
1473
1471
  this.frontend.wssSendSnackbarMessage(`${storeId} is offline`, 5, 'warning');
1474
1472
  });
@@ -1485,16 +1483,13 @@ export class Matterbridge extends EventEmitter {
1485
1483
  this.log.notice(`Server node for ${storeId} is already commissioned. Waiting for controllers to connect ...`);
1486
1484
  this.advertisingNodes.delete(storeId);
1487
1485
  }
1488
- this.frontend.wssSendRefreshRequired('plugins');
1489
- this.frontend.wssSendRefreshRequired('settings');
1490
1486
  this.frontend.wssSendRefreshRequired('matter', { matter: { ...this.getServerNodeData(serverNode) } });
1491
1487
  this.frontend.wssSendSnackbarMessage(`${storeId} is online`, 5, 'success');
1492
1488
  this.emit('online', storeId);
1493
1489
  });
1494
1490
  serverNode.lifecycle.offline.on(() => {
1495
1491
  this.log.notice(`Server node for ${storeId} is offline`);
1496
- this.frontend.wssSendRefreshRequired('plugins');
1497
- this.frontend.wssSendRefreshRequired('settings');
1492
+ this.advertisingNodes.delete(storeId);
1498
1493
  this.frontend.wssSendRefreshRequired('matter', { matter: { ...this.getServerNodeData(serverNode) } });
1499
1494
  this.frontend.wssSendSnackbarMessage(`${storeId} is offline`, 5, 'warning');
1500
1495
  this.emit('offline', storeId);