diff --git a/PLAN.md b/PLAN.md index 861614e..181b765 100644 --- a/PLAN.md +++ b/PLAN.md @@ -852,6 +852,16 @@ something long in one, switch away and back, refresh — it's all still there. - 360 files: the look-around view, zoom 8°–300° (ordinary lens into stereographic, the "little planet"), drag/pinch/wheel, phone motion. Full screen is the element's, or the whole window on an iPhone. + - **Video previews follow the setting too** (same day, asked for as "it should use the + same video generation device"). On the device's own machine the hub says which device + by header (`X-Hamlab-Device`); for a file elsewhere the hub asks the file's machine's + cache first (`?cached=1`), else has the device's machine make it from the hub's one-file + URL (`POST /api/files/thumb-from`) and keeps it in the file's machine's cache (`PUT + /api/files/thumb`, refused if the file changed since its listing), so each is made once. + A failure is kept as a failure. Unreachable → made where the file is, as before. Images + and audio covers stay on the file's machine's CPU (a JPEG is cheaper there than a GPU + round trip). Measured: a `hamtv` video previewed on grid's A380 in 0.22 s, then 2 ms + from hamtv's cache. The previews button's tooltip names the device. - Measured (`web/scripts/e2e-player.mjs`, Chromium): an iPhone HLG clip on `core` made on grid's A380 — 3.2 s to play, a seek 1.0 s, a quality change 1.5 s; the 8K 360 Disney day on grid — 3.1 s, 2160s on Auto, a seek 4.9 s (10 s source keyframes). diff --git a/web/src/Settings.tsx b/web/src/Settings.tsx index 0960797..8957afd 100644 --- a/web/src/Settings.tsx +++ b/web/src/Settings.tsx @@ -298,7 +298,8 @@ function TranscodeDevice() { {err &&