phimpal-tv 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/mod.js +16 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -120,6 +120,14 @@ swallow all input — that looked like a frozen cursor with a dead Return key. S
|
|
|
120
120
|
- (0.2.2) a navigation scope (dialog/menu) now has to be on screen **and** contain something
|
|
121
121
|
focusable; an element merely carrying `role="dialog"` cannot trap the keys any more, and a
|
|
122
122
|
scope that refuses to close is ignored afterwards.
|
|
123
|
+
- (0.2.3) **low-gfx rendering** on the TV: all CSS transitions, `backdrop-filter`, and the
|
|
124
|
+
filters/shadows on the card popup and the player are removed. A freeze with no error and no
|
|
125
|
+
trace points at the renderer, not at the script — TV compositors are known to stall on
|
|
126
|
+
`backdrop-blur` and on a 500 ms transform over a row of 4K posters. Restore the site's
|
|
127
|
+
effects with `localStorage['tv-gfx'] = 'full'`.
|
|
128
|
+
- (0.2.3) the running **version is announced** bottom-right for 2 s at startup
|
|
129
|
+
(`PhimPal TV 0.2.3 · low-gfx`). If you don't see the version you just published, TizenBrew
|
|
130
|
+
is still serving a cached module: remove and re-add it in the module manager.
|
|
123
131
|
|
|
124
132
|
## Known limits
|
|
125
133
|
|
package/mod.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// PhimPal TV v0.2.
|
|
1
|
+
// PhimPal TV v0.2.3 — generated by build.js from phimpal-tv.user.js, do not edit.
|
|
2
2
|
// TizenBrew site-modification module for https://phimpal.com/
|
|
3
3
|
(function registerRemoteKeys() {
|
|
4
4
|
try {
|
|
@@ -13,9 +13,11 @@
|
|
|
13
13
|
|
|
14
14
|
// ------------------------------------------------------------------ config
|
|
15
15
|
const CFG = {
|
|
16
|
+
version: '0.2.3',
|
|
16
17
|
keyboardEmulation: false, // remote key codes only
|
|
17
18
|
debug: (function () { try { return localStorage.getItem('tv-debug') === '1'; } catch (e) { return false; } })(), // badge off unless asked
|
|
18
19
|
hideCursor: true, // the D-pad replaces the pointer
|
|
20
|
+
lowGfx: (function () { try { return localStorage.getItem('tv-gfx') !== 'full'; } catch (e) { return true; } })(), // flat rendering unless tv-gfx=full
|
|
19
21
|
seekSteps: [10, 30, 60, 300], // seconds per press, accelerates while you keep pressing
|
|
20
22
|
seekAccelWindow: 800, // ms between presses to accelerate
|
|
21
23
|
chanSeek: 300, // Channel up/down step inside seek mode, seconds
|
|
@@ -332,7 +334,7 @@
|
|
|
332
334
|
trace('page settled target=' + describe(t));
|
|
333
335
|
if (t) setFocus(t); else badge('page: no card');
|
|
334
336
|
trace('page done');
|
|
335
|
-
}), CFG.carouselAnimMs);
|
|
337
|
+
}), CFG.lowGfx ? 80 : CFG.carouselAnimMs); // no transition to wait for in low-gfx mode
|
|
336
338
|
return true;
|
|
337
339
|
}
|
|
338
340
|
function rowsOnPage() {
|
|
@@ -962,7 +964,15 @@
|
|
|
962
964
|
pointer-events: none; opacity: 0; transition: opacity .3s; }
|
|
963
965
|
#tv-badge { position: fixed; top: 12px; right: 12px; z-index: 2147483647; font: 13px/1.2 ui-monospace, monospace; padding: 6px 10px;
|
|
964
966
|
background: rgba(0,0,0,.75); color: #fff; border-radius: 6px; pointer-events: none; opacity: 0; transition: opacity .3s; white-space: pre; }
|
|
965
|
-
` + (CFG.hideCursor ? '\n html, body, * { cursor: none !important; }' : '')
|
|
967
|
+
` + (CFG.hideCursor ? '\n html, body, * { cursor: none !important; }' : '')
|
|
968
|
+
+ (CFG.lowGfx ? `
|
|
969
|
+
/* TV compositors stall on backdrop-filter, large filters and animated transforms over
|
|
970
|
+
a dozen 4K posters: render everything flat and instant. */
|
|
971
|
+
*, *::before, *::after { transition: none !important; animation-duration: 0s !important;
|
|
972
|
+
backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }
|
|
973
|
+
.group.tv-focus .group-hover\\:block, .video-js, .video-js * { filter: none !important; box-shadow: none !important; }
|
|
974
|
+
header { background: rgba(10, 12, 20, .96) !important; }
|
|
975
|
+
.tv-focus-ring { box-shadow: none; }` : '');
|
|
966
976
|
// Chromium < 90 ignores `overflow-x: clip`, which would spill every carousel across the
|
|
967
977
|
// page; `hidden` is the closest thing it understands.
|
|
968
978
|
let clipOk = true; try { clipOk = CSS.supports('overflow-x', 'clip'); } catch (e) { clipOk = false; }
|
|
@@ -985,7 +995,9 @@
|
|
|
985
995
|
if (window.__tvNav && window.__tvNav.destroy) window.__tvNav.destroy(); // hot re-install (dev)
|
|
986
996
|
injectCSS();
|
|
987
997
|
showPreviousTrace();
|
|
988
|
-
trace('init ' + location.pathname + ' ' + innerWidth + 'x' + innerHeight);
|
|
998
|
+
trace('init ' + CFG.version + ' ' + location.pathname + ' ' + innerWidth + 'x' + innerHeight);
|
|
999
|
+
// always announce the running build once, so a stale module cache is obvious
|
|
1000
|
+
setTimeout(() => badge('PhimPal TV ' + CFG.version + (CFG.lowGfx ? ' · low-gfx' : ''), true), 800);
|
|
989
1001
|
addEventListener('keydown', onKeySafe, true);
|
|
990
1002
|
patchHistory();
|
|
991
1003
|
const onRouteSafe = safe('route', checkRoute);
|
package/package.json
CHANGED