matterbridge 3.4.3-dev-20251207-3ce5a0e → 3.4.3-dev-20251208-0c8a552

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
@@ -33,6 +33,7 @@ Advantages:
33
33
  ### Added
34
34
 
35
35
  - [frontend]: Added homepage icon and link to https://matterbridge.io/.
36
+ - [matterbridge]: Added more frontend messages on start when a plugin is in error state. It is more clear when the bridge will not start for plugin errors.
36
37
 
37
38
  ### Changed
38
39
 
@@ -43,7 +44,7 @@ Advantages:
43
44
  - [frontend]: Changed changelog link to https://matterbridge.io/CHANGELOG.html.
44
45
  - [frontend]: Changed changelog icon to HistoryOutlinedIcon.
45
46
  - [frontend]: Removed column Url from Devices panel in the Home page. It is available on the Devices page.
46
- - [frontend]: Mobile mode starts below 1200 x 900 and is fully responsive till a width of 340 pixel.
47
+ - [frontend]: Mobile mode starts below 1200 x 900 and is fully resizable and responsive till a width of 360 pixel.
47
48
 
48
49
  ### Fixed
49
50
 
package/README.md CHANGED
@@ -499,6 +499,16 @@ Then, from the dots menu in the frontend, download the `matterbridge.log` and `m
499
499
 
500
500
  Don't forget to unselect the debug mode when is no more needed. The network traffic and cpu usage is very high in debug mode.
501
501
 
502
+ ## Race condition on start / restart
503
+
504
+ We have a race condition when, after a blackout or with docker compose or with other systems that start more then one process, Matterbridge starts before other required system or network components.
505
+
506
+ Race condition can cause missing configuration or missed devices on the controller side. All Matterbridge official plugins already wait for system and network components to be ready so there is no need of delay.
507
+
508
+ To solve the race condition on blackout, use the --delay parameter. There is no delay on normal restart cause the delay is applied only in the first 5 minutes from system reboot.
509
+
510
+ To solve the race condition on docker compose, use the --fixed_delay parameter. The start will always be delayed.
511
+
502
512
  # Known general issues
503
513
 
504
514
  ## Session XYZ does not exist or Cannot find a session for ID XYZ
@@ -1149,6 +1149,10 @@ export class Matterbridge extends EventEmitter {
1149
1149
  this.log.debug('Starting start matter interval in bridge mode...');
1150
1150
  let failCount = 0;
1151
1151
  this.startMatterInterval = setInterval(async () => {
1152
+ if (failCount && failCount % 10 === 0) {
1153
+ this.frontend.wssSendSnackbarMessage(`The bridge is still starting...`, 10, 'info');
1154
+ this.frontend.wssSendRefreshRequired('plugins');
1155
+ }
1152
1156
  for (const plugin of this.plugins) {
1153
1157
  if (!plugin.enabled)
1154
1158
  continue;
@@ -1160,6 +1164,8 @@ export class Matterbridge extends EventEmitter {
1160
1164
  this.log.error('The bridge will not start until the problem is solved to prevent the controllers from deleting all registered devices.');
1161
1165
  this.log.error('If you want to start the bridge disable the plugin in error state and restart.');
1162
1166
  this.frontend.wssSendSnackbarMessage(`The plugin ${plugin.name} is in error state. Check the logs.`, 0, 'error');
1167
+ this.frontend.wssSendSnackbarMessage(`The bridge is offline. Startup halted due to plugin errors.`, 0, 'error');
1168
+ this.frontend.wssSendRefreshRequired('plugins');
1163
1169
  return;
1164
1170
  }
1165
1171
  if (!plugin.loaded || !plugin.started) {
@@ -1225,6 +1231,10 @@ export class Matterbridge extends EventEmitter {
1225
1231
  this.log.debug('Starting start matter interval in childbridge mode...');
1226
1232
  let failCount = 0;
1227
1233
  this.startMatterInterval = setInterval(async () => {
1234
+ if (failCount && failCount % 10 === 0) {
1235
+ this.frontend.wssSendSnackbarMessage(`The bridge is still starting...`, 10, 'info');
1236
+ this.frontend.wssSendRefreshRequired('plugins');
1237
+ }
1228
1238
  let allStarted = true;
1229
1239
  for (const plugin of this.plugins.array()) {
1230
1240
  if (!plugin.enabled)
@@ -1237,6 +1247,8 @@ export class Matterbridge extends EventEmitter {
1237
1247
  this.log.error('The bridge will not start until the problem is solved to prevent the controllers from deleting all registered devices.');
1238
1248
  this.log.error('If you want to start the bridge disable the plugin in error state and restart.');
1239
1249
  this.frontend.wssSendSnackbarMessage(`The plugin ${plugin.name} is in error state. Check the logs.`, 0, 'error');
1250
+ this.frontend.wssSendSnackbarMessage(`The bridge is offline. Startup halted due to plugin errors.`, 0, 'error');
1251
+ this.frontend.wssSendRefreshRequired('plugins');
1240
1252
  return;
1241
1253
  }
1242
1254
  this.log.debug(`Checking plugin ${plg}${plugin.name}${db} to start matter in childbridge mode...`);