(public) Support for SUPRA controller applet playback
(public) Whitelabel branding for deployment app builds: when the application-builder passes SOS_BRANDING_TITLE and/or SOS_BRANDING_ICON_PATH environment variables, the packaged app gets a custom title (appinfo.json) and icon; without them the build is unchanged
(public) webOS 6.1 devices (XE3P, XE4P, UL3Q & UL5Q) are now officially supported
(public) The cloud-control snippet can initialize without an organization (init() with no autoVerification): the device registers unverified for later bulk-provisioning by hardware serial.
(public) Assigned runners and plugins now resume from the last known device configuration when a display boots without a network connection.
(public) MDC sendOne and sendOneRaw failures now report the Luna service error text instead of [object Object].
(public) File downloads now fall back to the LG firmware SCAP path in cloud-control mode (where the signageOS management service is not installed), instead of failing. crc32 and archive-extract-size are skipped in that mode.
(public) Orientation on webOS 8 UP5Q now rotates correctly while maintaining the target resolution
(public) P2P synchronizer: reconnect cycle was a no-op because the local WebSocket to ws://localhost:8082 was never closed nor re-opened on close() → connect(). Applet retries surfaced as "Unable to properly connect for synchronized playback after 3 tries" with empty lastError.
(public) P2P synchronizer: connect() now awaits the WebSocket open handshake (10 s timeout) so initial group-status messages from the native service are not dropped.
(public) P2P synchronizer: WebSocket error/close drive exponential-backoff reconnect (1/2/4/8/16 s) and emit SynchronizerEvent.Closed once retries are exhausted or close() completes so the polymorphic layer can tear down cleanly.
(public) P2P synchronizer: SynchronizerServiceHelper no longer rejects with an empty Error('') when the luna service returns blank errorCode/errorText; a labeled fallback message is used instead.
(public) P2P synchronizer: initService() rejects on onFailure instead of hanging forever.
(public) Restore Content-Type: image/jpeg header in screenshot upload and merge with custom headers
(public) Fix double rotation on webOS 8/9 UP5Q — delegate to inherited setOrientation() to prevent CSS rotation when native IDCAP rotation is active
(public) PMMode is enforced from webOS 4.0 and above during startup and initial configuration
(public) Toggling debug mode multiple times no longer produces a com.lg.app.signage.debug.debug.ipk URL launcher address that fails to install; existing devices stuck in this state self-heal on the next toggle
(public) Longer deprovisioning timeout before reboot to give the display enought time to delete all cached data and files
(public) Use smaller resolution videos in acceptance tests that play multiple videos side by side because some platforms struggle to process more than one full HD video at a time
(public) The built-in browser now loads websites that enforce same origin policy
(public) When proprietary timers are disabled while the display and content are off, the display and content will be turned on
(public) Reboot device automatically when App or FW upgrade is performed in open management
(public) When device is offline, increase the interval between reconnect attempts progressively from 5s up to 5 mins
(public) Device registration occasionally failing during first boot
(public) Make longer and configurable check interval on platform configuration (30s -> 60s)
(public) Native debug will always do the configuration check interval 30s
(public) Default PIN code is 0000 until device is connected to internet
(public) PIN code set/get support for JS management API
(public) Removed dependency on navigator.onLine for websocket connections management. Navigator.onLine in certain edge cases doesn't provide accurate information if the device can access internet or not.
(public) Possible memory leak in video player when one gapless video is playing in infinite loop
(public) ACL domains support for the built-in browser
(public) New OSD dark blue design
(public) Front applet debug isEnabled API support
(public) Remote management of multi-file applets (applet packages). Applets originally designed for Open users can be used by Platform users now as well.
(public) When acceptance tests are running, mute applet so it doesn't conflict with the tests
(public) Video API supports video playing in the background with HTML in the foreground
(public) Video API supports 4K video
(public) New capability to set/get timezone and time
(public) On device deprovisioning handler
(public) It's possible now to configure the application build to use a local applet file instead of getting applet timings from the cloud
(public) signageOS Open - build with an applet bundled inside the package and make the device automatically verify against the owner's organization on the server
(public) Use proprietary timer if native is not supported
(public) New full featured API of FileSystem
(public) Low level file system support for front applet
(public) File System API supports writeFile (text (string) value only)
(public) File System API supports copyFile, writeFile
(public) Applet DISABLE/ENABLE power actions
(public) Key codes for media buttons on a remote control (play, pause, stop, backward, forward)