[3.10.13] - 2026-10-09
Added
- [thread]: Add the Backend thread entry point.
- [test-utils]: Add
resetTest()(vitest, jest and bun): it restores the spies,process.argvandprocess.env, and letssetupTest()run again for the same name. - [test-utils]: Add
getFreePort(): it returns a free TCP, UDP4 or UDP6 port from the OS. - [test-utils]: Add the
/vitest/setup,/vitest/matter,/jest/setup,/jest/matter,/buntest/setupand/buntest/mattersubpaths:setuploads only the setup helpers and spies, without matter.js. The/vitest,/jestand/buntestsubpaths still export both. - [core]: Re-export the new
test-utilssubpaths asmatterbridge/test-utils/{vitest,jest,buntest}/{setup,matter}. - [core]: Export the ffmpeg helpers (
hasFfmpeg,runFfmpeg,redactSource) frommatterbridge/behaviors. - [core]: Add
listWebcams()to the ffmpeg helpers: it discovers the webcams with avfoundation (macOS), dshow (Windows) or v4l2 (Linux). - [core]: Add
playWebcam()andgetPlayWebcamArgs()to the ffmpeg helpers: they play a webcam in an ffplay window with the input format of the current platform. - [core]: Add
installFfmpeg()to the ffmpeg helpers: on Linux with root privileges it installs the full ffmpeg package withapkorapt-getand resolves it again.
Changed
- [thread]: Run zip.js without web workers, so the ArchiveCommand thread exits right away on Bun instead of 5 seconds later.
- [core]: Import the test helpers from the
test-utils/vitest/setupand/vitest/mattersubpaths instead of/vitest. - [dgram]: Use
@matterbridge/test-utilsin the tests instead of the localvitest/setupTest.tsandvitest/freePort.ts, and add it to the devDependencies. - [utils]: Use
@matterbridge/test-utilsin the tests instead of the localvitest/setupTest.ts, and add it to the devDependencies. - [thread]: Use
@matterbridge/test-utilsin the tests instead of the localvitest/setupTest.ts,vitest/freePort.tsandvitest/flushAsync.ts, and add it to the devDependencies. - [test-utils]:
setupTest()(vitest, jest and bun) throws on names shorter than four characters or with characters other than letters, digits,_and-. - [test-utils]:
setupTest()andsetDebug()(vitest, jest and bun) share one spy installer that restores every spy first, sosetupTest(name, true)after a mocked setup no longer keeps the output silenced. - [test-utils]:
setupTest()(vitest, jest and bun) ignores a second call with the same suite name, andsetDebug()ignores calls made beforesetupTest(); both write a warning to stderr. - [utils]: Bump Tracker to 1.1.0.
- [utils]: Use Bun process memory footprint in tracker RSS readings when available, with a safe RSS fallback.
- [utils]: Add
memoryFootprint()to runtimeBun (Bun memory footprint, falling back toprocess.memoryUsage().rss). - [core]: Use
memoryFootprint()for the system information RSS. - [core]: Refresh the variable system information (memory, uptime) in
Matterbridge.getApiSettings(). - [frontend]: Enable https and wss with
--ssl,--tlsor--mtls(same as the backend);--mtlsalone now also enables https and wss. - [core]: Remove the unused
lastOsCpuUsage,lastProcessCpuUsageand their setters fromcliEmitter;Frontend.getApiSettings()reports 0 cpu usage likeMatterbridge.getApiSettings(). - [thread]: Include the worker thread ID in periodic status logs.
- [matterbridge]: Bump
matterbridgeversion to v.3.10.13. - [scripts]: Sync the generic scripts (
clean,deep-clean,prepublish-clean,create-release,downloads,git-status,git-sync-dev,prune-releases,prune-tags,remove-workflows,version) to v.2.0.0 and addbun-bundlefrom matterbridge-native. - [matterbridge]: Bump
@types/nodeto v.26.6.4. - [core]: Bump
@types/nodeto v.26.6.4. - [dgram]: Bump
@types/nodeto v.26.6.4. - [jest-utils]: Bump
@types/nodeto v.26.6.4. - [test-utils]: Bump
@types/nodeto v.26.6.4. - [thread]: Bump
@types/nodeto v.26.6.4. - [types]: Bump
@types/nodeto v.26.6.4. - [utils]: Bump
@types/nodeto v.26.6.4. - [vitest-utils]: Bump
@types/nodeto v.26.6.4. - [frontend]: Bump
frontendversion to v.3.6.4. - [frontend]: Bump
@rjsfto v.6.11.0. - [frontend]: Bump
@types/nodeto v.26.6.4. - [frontend]: Bump
globalsto v.17.13.0. - [frontend]: Bump
viteto v.8.3.2. - [core]: Reachability of devices without
BridgedDeviceBasicInformationreads the owner server nodebasicInformation.reachableinstead of returning true in childbridge mode. - [core]: The session
lastInteractionTimestampandlastActiveTimestampin the matter API data are now ISO 8601 strings (empty when not available).
Fixed
- [core]: Fix the missing space after the illuminance value in the device cluster text.
- [core]: Fix the mode label in the device cluster text: read the
supportedModesof the same mode cluster instead of relying on the attribute order. - [devcontainer]: Fix
post-create.shcreatingapps/frontend/node_moduleswhen it does not exist; only chown it if present. - [core]: Fix
MatterNode.removeBridgedEndpoint()for server mode endpoints: stop, destroy and remove the dependant MatterNode instead of deleting the endpoint. - [core]: Fix the the global node_modules check when switching from bun to node.