Build system migrated from webpack 4 to rspack and Node.js 16 to 24
Network tests use XMLHttpRequest directly instead of the Node.js https client emulation
Code style tooling migrated from TSLint to ESLint + Prettier (@signageos/codestyle)
Menu navigation refactor for better navigation between elements and menu itself - no more random bugged switching pages
Keyboard focus is shown by the same yellow ring everywhere - menu, buttons, inputs, selects and the console - instead of a different color per element; the yellow fill now only ever means active
Network Test page checks every signageOS cluster endpoint - the EU or US cluster, switchable, plus the shared configuration CDN - and a custom URL typed in by the technician, streaming each result into a live console with its status, HTTP status and response time
Connection test tells an endpoint the browser hid from one that is genuinely unreachable, so a red row now really means the device cannot reach the platform
Ethernet setup can switch the interface back to automatic (DHCP)
Ethernet setup validates the address, netmask, gateway and DNS before writing them, and refuses to apply a gateway that is outside the subnet it would be reached through
Navigable input fields can carry a hint under the field, shown in gray and replaced by the validation message in red once the value has been submitted
Internet Speed Test page redesigned into a grid of metric boxes colored by how good each result is, with live download and upload charts, per-transfer-size results, latency and jitter spread, TCP retransmits, a network quality verdict and a comparison against the previous run
Speed test shows the Cloudflare edge it measured against, the public address and the device's own network
Speed test can be stopped while it is running
Speed test measures downloads up to 50MB and uploads of 100KB, 1MB and 10MB; the large transfers trim their number of passes to fit a time budget, so a slow link cannot keep the test running for many minutes
Saving network settings reported "Saved" even when the device rejected them
After saving network settings the form reloaded whichever interface came back first rather than the one just configured, so it could display another interface's addresses
"Saving..." appeared only after the save had already finished instead of while it was running, and the button never returned to "Save" for a second edit
Ethernet setup showed "Loading network info. Please wait." forever on a device with no Ethernet interface, while the status line simultaneously claimed a state it had not checked
Only the first DNS server was ever shown on the network settings, and an empty DNS list turned the field into an uncontrolled input
Fields on the Ethernet and Wi-Fi setup pages were stacked flush against each other and against their labels
Rows touching with no gap also left spatial navigation comparing exactly equal edges, which could make the arrow keys skip a field such as Gateway
Missing background icons on Wi-Fi and Ethernet setup pages
Missing legacy vendor prefixes (e.g. flexbox) in CSS for old devices
Speed test latency, jitter and upload speed showed NaN because Cloudflare changed the server-timing response header format
Speed test reported upload speeds tens of times too high and latency measured as client overhead, because the metrics Cloudflare sends in the server-timing header today time server processing instead of the whole request
Speed test average speeds were skewed by the 100KB transfer, which is too small to measure throughput
Speed test could stay stuck showing a run in progress when every download failed
Speed test showed no Cloudflare edge location and no public IP address after Cloudflare retired the /locations endpoint the edge was looked up through