management() returns the application's stop again — a refactor left return { stop } pointing at the global DOM stop(), which crashed Node.js consumers (e.g. display-linux) with ReferenceError: stop is not defined and stopped page loading in browsers
Set the correct Content-Type on applet files extracted from a package so module-based bundles (e.g. Angular) load correctly instead of failing with a MIME type error on <script type="module">
Browser-runtime custom scripts are delegated to the platform driver's scripts.execute (with appletJsFile) when no DOM is available, so platforms with a Node.js management runtime (e.g. windows) can route them to a real browser; in-page BrowserRuntime execution is kept where a DOM exists
Custom script execution failures are logged with console.warn instead of only the debug channel, so they are visible in device logs
Harden plugin/runner execution: reliable startup, no duplicate or leaked runners, trusted and bounded telemetry, driver-routed config changes, and a resilient Node.js bootstrap
P2P sync: make WaitService resilient to dropped messages and timing races — re-send wait state every 5 s and on MemberJoined, credit recent (≤ 10 s) matching peer waits at the start of a new wait, and resolve with own data after 60 s so the applet keeps playing instead of hanging on a black screen
Muted overlay (proprietary timer OFF window with keepAppletRunning) now blurs the running applet on WebOS by applying a CSS filter to the content elements instead of backdrop-filter, which WebOS' Chromium reports as supported but never paints
Power off the display panel when a proprietary timer enters its OFF window with keepAppletRunning=true, so the applet keeps running while the panel turns off instead of staying lit on the muted overlay
Show a translucent blurred overlay over the running applet when a proprietary timer enters its OFF window with keepAppletRunning=true, signalling that the display is scheduled off while content keeps running
sendUdp support in network management driver interface and message handler
Shared sendUdpPacket dgram utility for platform drivers
Periodic telemetry cache invalidation now persists its target time, re-checks it on every startup and also fires from an in-process timer so long-running devices invalidate without needing a reboot or reconnect
HTMLVideo prepare promise now rejects immediately on native video error, preventing video player slots from being permanently locked when playback fails
Restore sos.config for archive custom scripts — addConfigToSos() was missing from the archive execution, causing sos.config to be undefined for all CLI-pushed scripts
Handle hug.ping messages in custom script message handler to prevent DataCloneError when front-applet sends periodic ping messages
Removed old dependency circular-json which broke the returned values from functions like getStorageUnits() or getListFiles(). Returned JSON values linked to themselves which lead to errors in testing and telemetry values.
Improve console.js on-screen console (on-screen console is now rendered in iframe, add support for Date objects, add query string settings, improve indentation, prevent pollution of global scope)
Auto reconnecting (autoReconnect: boolean) stream edge cases and race conditions. 1) Some platforms and streams can emit events error and ended at the same time. This case was fixed. 2) Multiple streams with reconnect enabled is fixed now.
Improved P2P sync resilience against network issues. Reliability of P2P synchronization heavily depends on being able to deliver all message to all devices in the group, because each device has to hold the state of the entire network and constantly update it. If a device misses a message, it will have an inconsistent state and will not be able to recover from it. This change improves the reliability of the P2P synchronization by adding a mechanism that ensures that all messages are delivered to all devices in the group.