LG TV (webOS)
LG webOS is a first-class Hosanna Web DOM target. It shares Hosanna views and browser infrastructure while its initializer supplies Magic Remote input, webOS lifecycle, audio guidance, and native TV media integration.
The production-ready target includes native HLS and PlayReady integration,
captions, audio guidance, storage, lifecycle recovery, packaging, and device
workflows. The supported baseline is webOS 5.0+ (2020 TV, Chromium 68).
Unlike the Tizen manifest requirement, neither appinfo.json nor HST enforces
that baseline. Older televisions are outside the supported range.
Run the target
npx hst run webos dev emulator
npx hst build webos prod device --non-interactive
npx hst run webos dev device --device living-room
The build command returns an .ipk without contacting a TV. The device run
uses the configured ares device for install and launch. Inspect and terminate
are separate commands:
npx hst device:inspect webos --device living-room
npx hst device:terminate webos --device living-room
The inspector command invokes ares-inspect --open for the resolved alias and
application ID. Inspector availability depends on Developer Mode and the
selected TV model.
Runtime boundaries
| Concern | Implementation |
|---|---|
| Rendering | Shared Web DOM SceneGraph implementation |
| Input | WebOsRemoteInputAdapter; browser preview uses WebKeyboardWebOsInputAdapter |
| Video | Shared SGVideo semantics over the native webOS HTML media implementation |
| DRM | PlayReady through the webOSTV.js/Luna initiator path |
| Captions | Shared Hosanna-rendered sidecar WebVTT plus native in-stream tracks |
| Audio guide | ARIA focus proxy synchronized with the webOS audioGuidance setting |
| Lifecycle | webOSLaunch, webOSRelaunch, visibility, and before-unload signals normalized to Hosanna lifecycle state |
| Storage/debugging | Shared Web storage, package-relative filesystem, WebSocket, Remote Debug, and MCP protocol |
LG's native application path is HTML media plus vendor media options and Luna services; it is not a Samsung AVPlay analogue. The webOS target does not import Shaka, hls.js, or dash.js.
The vendor DRM integration accepts PlayReady through the Luna
initiator contract. It fails clearly if content.drmHeaders or a
callback-based drmHttpAgent is supplied, because that vendor contract cannot
represent either requirement. Applications should advertise PlayReady only
when their content service, license configuration, and target models support
the Luna initiator path.
Remote and Back
Magic Remote directional, OK, color, media, and Back events enter Hosanna's canonical input pipeline. appinfo.json sets disableBackHistoryAPI: true so Back key 461 reaches the application. Long-press/platform-exit behavior remains owned by the TV and must be tested on hardware.
Accessibility and lifecycle
The app declares accessibility.supportsAudioGuidance and uses the vendor settings service to observe audio-guidance changes. Hosanna announcements still originate from focused views and the shared TTS queue.
handlesRelaunch: true lets the webOS lifecycle adapter receive the vendor
relaunch event without discarding Hosanna's shared launch model. In physical
tests, no-argument relaunch uses the webOS driver to terminate and launch, then
waits for MCP reconnection. Query-bearing rig navigation uses a bounded
same-package-file MCP reload; it is not an ares-launch deep-link capability.
Test vendor launch arguments, Home/background, foreground, and termination
separately on hardware.
Release checklist
Validate the same TV contract as Tizen, including package workflow, relative assets, persistence, real remote timing, clear and encrypted playback, caption overlay, audio guidance, lifecycle recovery, LAN debugging, and the current LG app self-checklist. webOS Developer Mode credentials and keys remain outside source and release packages.
Continue with Building for LG webOS and TV video and sidecar captions.