From f2997a04c80a1c00c321c979a4011999e478c1b3 Mon Sep 17 00:00:00 2001 From: Mitchell-Johnson Date: Fri, 23 Oct 2026 16:09:28 -0700 Subject: [PATCH] Settings, PLAN: video previews follow the Transcode device Co-Authored-By: Claude Opus 5.5 --- PLAN.md | 10 ++++++++++ web/src/Settings.tsx | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) 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 &&
{err}
}
Opening a video in Files plays it YouTube's way — Auto picks the quality the connection takes, any quality can be picked by hand, - or the file as it is — and every quality is made on the fly, from wherever you seek to, on this device. When it is on another + or the file as it is — and every quality is made on the fly, from wherever you seek to, on this device. Video previews + (thumbnails) are made on it too; image previews stay on each machine's CPU. When it is on another machine than the file, that machine reads the file through this hub. If it can't be reached, the file's own machine makes it instead.