Fixed
- Sets with no thermal sensor reported 0 °C. webOS 3.x exposes no temperature source at all, and that null was pushed into the history ring where
Math.min/maxcoerce it to zero — so a sensorless set showed a confident 0 °C and a permanentMIN 0 MAX 0. Reported and fixed by @Molotovsk in #15. It also affected every set for the first ~80 seconds after a reboot, while the sensor is still warming up. - The server could freeze and stay frozen. A child process deadlocking between
forkandexecleft the event loop blocked inside libuv's spawn path: the process stayed alive, the port stayed open, nothing was logged, and the dashboard and MQTT both went dead until someone noticed. The server now writes a heartbeat and a watchdog restarts it when that stops, recording why intvweb.restarts. - eMMC wear claimed
>90% (Healthy)when the wear counters could not be read at all. It reports unknown now, as does apre_eol_infooutside the spec's0x01–0x03. - Entities that can never have a value are withheld rather than sitting at unknown in Home Assistant — SoC temperature and flash wear/health, joining the ambient light and OLED-only entities.
Changed
- Far fewer process spawns. Every Luna read is a
fork+exec, and stats collection made ten per pass against a 2s dashboard tick that never hit its own cache. Reads are cached by how fast each value actually moves, and the HDMI and Processes panels load on open instead of polling. Measured on a B8: 162 spawns in 30s before, 34 after. - The dashboard handles absent readings. The temperature hero drops to an ordinary size when there is no number instead of rendering a dash at 208px, and a section whose readings have all gone is dropped rather than leaving a heading over blank space.
- The compatibility table carries a Notes column, since what differs between sets is rarely pass or fail.
Tested on OLED65B8SLC (webOS 4.4.3), OLED65C9AUA (4.9.x), OLED55C1PUB (6.x), OLED55G42LW (24), OLED65B7V-Z (3.9.3) and 55UH6030-UC (3.4.3, LCD).
Known issue, fixed in v0.6.1: waking from standby suspends the watchdog along with everything else, so it sees a stale heartbeat on resume and restarts the server unnecessarily. Harmless — a few seconds, then it reconnects — but it will show up in tvweb.restarts.