Skip to main content

Samsung TV (Tizen)

Samsung Tizen is a first-class Hosanna Web DOM target. It shares views, AppConfig, layout, storage, networking, and debugger protocol with Browser, while its initializer supplies Samsung remote input, lifecycle, Voice Guide, and AVPlay integration.

The production-ready target includes the native playback, PlayReady, captions, Voice Guide, persistence, lifecycle, packaging, and device workflows described below. The supported baseline is Tizen 5.5 (2020 TV, Chromium 69); older televisions are outside the supported range.

Run the target​

Use desktop emulation for the fast feedback loop:

npx hst run tizen dev emulator

Build without contacting a television:

npx hst build tizen prod device --non-interactive \
--signing-profile samsung-tv-prod

After Samsung Developer Mode, device trust, and signing are configured, install and launch on a named device:

npx hst run tizen dev device --device "living-room-samsung" \
--signing-profile samsung-tv-dev

hst build returns the .wgt artifact and stops. hst run ... device adds discovery, install, and launch through Samsung's CLI. Inspection and termination are explicit operations:

npx hst device:inspect tizen --device "living-room-samsung"
npx hst device:terminate tizen --device "living-room-samsung"

The inspector command uses the manifest's full application ID, forwards Samsung's returned debug port to loopback through SDB, and opens the printed local URL. Inspector availability depends on Developer Mode and the selected TV model.

Runtime boundaries​

ConcernImplementation
RenderingShared Web DOM SceneGraph implementation
InputTizenRemoteInputAdapter; browser preview uses WebKeyboardTizenInputAdapter
VideoShared SGVideo semantics over a Samsung AVPlay slot
CaptionsShared Hosanna-rendered sidecar WebVTT overlay; in-stream tracks come from AVPlay
Audio guideSamsung Voice Guide adapter and setting observation
LifecycleVisibility plus unload/before-unload signals normalized to Hosanna lifecycle state
StorageShared Web storage and package-relative filesystem implementation
DebuggingExisting Remote Debug/MCP WebSocket protocol over the TV-to-development-machine LAN route

The Tizen target does not bundle Shaka, hls.js, or dash.js. Browser keeps its browser streaming engines; Tizen delegates adaptive playback and PlayReady translation to AVPlay. Applications should advertise PlayReady only when their content service, license configuration, privileges, and target models support it.

The PlayReady implementation maps static content.drmHeaders to AVPlay. Callback-driven drmHttpAgent handling is not available on this slot and emits a diagnostic instead of pretending the callback ran.

Input and Back​

Directional keys, OK, and Back are normalized to HsInputEvent. Optional media and color keys are registered through tizen.tvinputdevice. Back key code 10009 enters the dedicated Tizen adapter directly; the old synthetic Roku event and delayed key-up workaround are not part of this target.

Long-press Back can be reserved by the TV operating system. Validate tap, hold, and app-exit behavior on every model family the application intends to claim.

Media and captions​

The AVPlay slot implements playback state, current time, duration, seeking, audio/subtitle tracks, display rectangle, PlayReady translation, and suspend/restore. Hosanna keeps the public SGVideo content, control, playlist, state, and error contract. Desktop preview exercises the shared contract; device runs use AVPlay and the television's decoder and video plane.

Sidecar subtitle metadata uses content.subtitleTracks; TrackName contains the WebVTT URI. The shared caption renderer follows native player time. Verify the application's caption layout over Samsung's hardware video plane on its target models.

See TV video and sidecar captions.

Accessibility​

The Tizen audio-guide adapter updates a retained focusable ARIA proxy for Samsung Voice Guide and observes the system Voice Guide setting through TV Info. Enable use.voiceguide metadata and the tvinfo privilege in config.xml.

Samsung does not expose the same arbitrary-utterance completion callback as browser speech synthesis. Hosanna uses bounded completion timing to keep its queue moving; listen for stale, clipped, or overlapping announcements on hardware.

Release checklist​

For each application release, verify on representative target models:

  • signed .wgt install, launch, explicit HST terminate/inspect operations, and no-argument test relaunch through Tizen driver terminate/launch;
  • bounded same-file MCP query reload for test-rig navigation, without representing it as a Samsung launch-CLI deep link;
  • relative file:// assets, fonts, AppConfig, localStorage, and IndexedDB after a cold restart;
  • remote press/release/repeat/long-press behavior;
  • MP4, HLS MPEG-TS, HLS fMP4, track selection, configured PlayReady streams and license flow, and lifecycle recovery;
  • WebVTT synchronization and overlay z-order;
  • Voice Guide enabled before launch and toggled after launch;
  • TV-to-Mac debugger/MCP connectivity under the exact development CSP, plus proof that production CSP excludes debugger origins; and
  • the current Samsung certification checklist.

Continue with Building for Samsung TV.

Talk to us