watch-tizenbrew
v1.0.1
Published
TizenBrew wrapper for the self-hosted Watch app (watch.macr0.dev)
Readme
Watch — TizenBrew wrapper
The September 20 TV update adds a full-width hero, red focus, smoother navigation, explicit input editing and Live TV channel zapping. Relaunch Watch for the hosted UI update. Update the TizenBrew module to 1.0.1 to ensure Channel Up/Down are registered before the hosted app opens. The hosted client also attempts key registration when Tizen exposes its API there.
Live TV: choose country/category, select Save country & category, then Watch live. CH+/CH− change channels within that lineup. Return closes an open menu first, then returns to the guide. See TV update and validation notes.
A tiny TizenBrew app module that launches
the self-hosted Watch app (watch.macr0.dev) full-screen on a Samsung TV,
registers the remote's media keys, and forces the TV-safe playback path.
It is intentionally thin: it just opens the hosted web app. All the real code lives in the main project — this only makes it a launchable TV app instead of a URL you type into the TV browser.
Why the wrapper (vs. just opening the site in the TV browser)
- Forces proxied playback. It appends
?wrapper=tizen, which tells the app to fetch every stream through the server proxy. The Samsung TV browser's TLS fingerprint gets fed corrupt segments by hoster CDNs (VOE/cloudwindow) — the endless "Recovering playback…" loop — so the app must never fetch them directly on a TV. - Always fresh. A cache-buster on launch means the TV can't get stuck on an old cached build.
- Real app UX. Full-screen, app icon, no browser chrome or URL bar, and the remote's Back button steps back through screens and asks before leaving Home. More also offers Exit Watch. Hosted pages may not expose native exit APIs; the prompt shows hardware-exit instructions when automatic closing is blocked.
Install (TizenBrew)
TizenBrew loads modules from npm by package name.
Publish this folder as an npm package (from inside
tizen/):cd tizen npm publish --access public(Bump
versioninpackage.jsoneach time you republish. If you prefer a scoped name, set e.g."name": "@yourname/watch-tizenbrew".)On the TV, open TizenBrew → Add module and enter the package name (
watch-tizenbrew, or your scoped name). Launch it.
To update later: npm version patch && npm publish, then in TizenBrew remove
and re-add the module (or bump and reload).
Files
package.json— TizenBrew module manifest (packageType: "app").app/index.html— loading splash +<meta refresh>fallback.app/main.js— registers media keys and navigates to the hosted app.icon.png— 512×512 app icon.
Notes / next steps
- If a stream still fails to play inside the wrapper (same web engine as the browser), the next step is a native AVPlay player, which bypasses the web media pipeline entirely. That needs on-device iteration (no emulator here), so it's deliberately not in this first version.
- The app already reads
?wrapper=tizen(seefrontend/src/lib/platform.ts) to force proxy mode and enable TV Back-button navigation.
