Goal
Build a real installable LG webOS TV client for UplinkWitness rather than relying on the TV browser or automatic startup.
Primary validation target: LG OLED55E8PLA, webOS TV 4.x generation.
The TV client is a presentation layer only. Monitoring, incident classification, SQLite persistence and FRITZ!/generic probing remain on the Linux UplinkWitness host.
v0.1 architecture
Use a deliberately thin installable webOS shell under clients/webos/:
- launcher icon and native LG app entry
- first-run UplinkWitness server configuration persisted with localStorage
- fullscreen app container loading the host-served
/wallboard?webos=1
- TV-first 1920x1080 wallboard with Overview, Network, Router and Incidents sections
- Magic Remote clickable tabs plus directional remote navigation
- clear unreachable-host state and automatic data refresh
- no external JavaScript/CDN dependencies
- Chromium 53-safe HTML/CSS/JavaScript: no CSS Grid, modules, arrow functions or
fetch
The hosted wallboard performs /api/status, /api/history and /api/events requests from the Raspberry/Linux host origin. Therefore v0.1 does not add CORS to the API: same-origin hosting is simpler, avoids broadening the local API surface, and lets TV presentation updates ship with normal UplinkWitness host updates without reinstalling the IPK.
/wallboard remains the universal browser fallback when the LG package is not installed.
Packaging and CI
appinfo.json uses the UplinkWitness application ID and 1920x1080 resolution
- 80x80 and 130x130 launcher icons are packaged
- CI installs the LG webOS CLI, packages the app with
ares-package, and publishes the exact .ipk as the uplinkwitness-tv-ipk workflow artifact
- Python regression tests also validate metadata, icon dimensions, launcher persistence and legacy-safe wallboard syntax
Developer Mode deployment
Document and physically validate:
- Developer Mode + Key Server on the TV
- pairing through
ares-setup-device / ares-novacom --getkey
.ipk installation through ares-install
- launch through
ares-launch
- server URL persistence after closing/reopening the app
Developer Mode renewal automation from the Raspberry Pi is a separate deployment task after the client is proven on the physical TV.
Non-goals
- no automatic launch at TV power-on
- no rooting or Homebrew requirement
- no monitoring logic duplicated on the TV
- no LG Content Store submission in the first milestone
- no public exposure of the UplinkWitness dashboard/API
Acceptance criteria
- CI packages a valid IPK successfully
- app installs and launches from the LG launcher
- server URL survives normal app restart
- hosted
/wallboard renders live /api/status, /api/history and /api/events data
- Overview / Network / Router / Incidents are usable with the Magic Remote and directional controls from sofa distance
- settings can be reopened without reinstalling the app
- physical validation completed on OLED55E8PLA before claiming webOS support
Goal
Build a real installable LG webOS TV client for UplinkWitness rather than relying on the TV browser or automatic startup.
Primary validation target: LG OLED55E8PLA, webOS TV 4.x generation.
The TV client is a presentation layer only. Monitoring, incident classification, SQLite persistence and FRITZ!/generic probing remain on the Linux UplinkWitness host.
v0.1 architecture
Use a deliberately thin installable webOS shell under
clients/webos/:/wallboard?webos=1fetchThe hosted wallboard performs
/api/status,/api/historyand/api/eventsrequests from the Raspberry/Linux host origin. Therefore v0.1 does not add CORS to the API: same-origin hosting is simpler, avoids broadening the local API surface, and lets TV presentation updates ship with normal UplinkWitness host updates without reinstalling the IPK./wallboardremains the universal browser fallback when the LG package is not installed.Packaging and CI
appinfo.jsonuses the UplinkWitness application ID and 1920x1080 resolutionares-package, and publishes the exact.ipkas theuplinkwitness-tv-ipkworkflow artifactDeveloper Mode deployment
Document and physically validate:
ares-setup-device/ares-novacom --getkey.ipkinstallation throughares-installares-launchDeveloper Mode renewal automation from the Raspberry Pi is a separate deployment task after the client is proven on the physical TV.
Non-goals
Acceptance criteria
/wallboardrenders live/api/status,/api/historyand/api/eventsdata