ARRFLIX/docs
s8n 917d21b3be doc 28 + INC7: fix prod black-screen via SW cache pin
Five sibling agents converged on root cause:
jellyfin-asset-immutable Traefik router (priority 90) was matching
/web/serviceworker.js (Jellyfin PWA's actual SW filename), pinning it
with Cache-Control: public, max-age=31536000, immutable. The
priority-100 jellyfin-html-nocache router only excluded the literal
path /web/sw.js, missing serviceworker.js.

Stale SWs from earlier ARRFLIX iterations intercepted /Videos/* and
/web/* fetch events, returning cached/empty bytes. Result:
MediaSource appendBuffer got bad data -> black <video>. INC6's
Clear-Site-Data: "cache" couldn't fix it (per MDN spec, "cache"
excludes SW registrations; "storage" would have worked).

Fix: added jellyfin-sw-nocache router at priority 250 in
/opt/docker/traefik/config/dynamic.yml on nullstone, forcing
cache-no-store@file on /web/serviceworker.js + /web/sw.js. Hot-reload
via Traefik file provider, no docker restart.

Verified at the wire (curl -I /web/serviceworker.js now returns
no-cache, no-store, must-revalidate; main.jellyfin.bundle.js still
immutable as intended) and via headless Chromium probe of MNS S1E4
(33s of currentTime advance, readyState 4, videoWidth 1920x1080,
no errors, both s8n admin and guest user).

bin/prod-vs-dev-compare.py also lands as a one-shot diff helper used
during the investigation.
2026-05-09 02:50:00 +01:00
..
IMPORT-LOG import-log: youtube-sassy-the-sasquatch 2026-05-08 — eps 1-5 (ep6 age-restricted) 2026-05-08 22:03:42 +01:00
00-overview.md drop tv.s8n.ru — arrflix.s8n.ru is canonical 2026-05-08 16:46:26 +01:00
01-artwork-and-images.md redact: scrub leaked Jellyfin admin API token from public repo 2026-05-08 15:36:14 +01:00
02-metadata-and-titles.md redact: scrub leaked Jellyfin admin API token from public repo 2026-05-08 15:36:14 +01:00
03-subtitles.md redact: scrub leaked Jellyfin admin API token from public repo 2026-05-08 15:36:14 +01:00
04-theming-and-users.md drop tv.s8n.ru — arrflix.s8n.ru is canonical 2026-05-08 16:46:26 +01:00
05-file-structure-rules.md redact: scrub leaked Jellyfin admin API token from public repo 2026-05-08 15:36:14 +01:00
06-per-library-themes.md redact: scrub leaked Jellyfin admin API token from public repo 2026-05-08 15:36:14 +01:00
07-pre-import-cleanup.md Rename: nasflix → ARRFLIX + apply Cineplex theme 2026-05-08 02:57:34 +01:00
08-filename-normalization.md Rename: nasflix → ARRFLIX + apply Cineplex theme 2026-05-08 02:57:34 +01:00
09-wan-exposure.md Restrict non-admin users + 3 imports landed 2026-05-08 03:18:58 +01:00
10-spa-runtime-shim.md shim: nukeSettings() drops drawer Settings link for non-admins 2026-05-08 03:51:48 +01:00
11-neutralfin-audit.md strip: remove Claude attribution from ROADMAP + audit docs 2026-05-08 16:44:49 +01:00
12-dev-instance.md redact: scrub leaked Jellyfin admin API token from public repo 2026-05-08 15:36:14 +01:00
13-optimization-audit.md doc 13: read-only optimization audit 2026-05-08 04:24:21 +01:00
14-theme-audit.md strip: remove Claude attribution from ROADMAP + audit docs 2026-05-08 16:44:49 +01:00
15-force-english.md docs+bin: English-only lockdown — re-apply runner + doc 20 2026-05-08 17:04:12 +01:00
16-jellyfin-branding-leaks.md strip: remove Claude attribution from ROADMAP + audit docs 2026-05-08 16:44:49 +01:00
17-dev-mirror-and-settings-fix.md doc 17: dev mirror + Settings drawer leak fix (dev only, no prod swap) 2026-05-08 13:34:04 +01:00
19-english-only-audit.md doc 19: english-only lockdown audit (read-only baseline) 2026-05-08 17:05:11 +01:00
20-english-only-lockdown.md docs+bin: English-only lockdown — re-apply runner + doc 20 2026-05-08 17:04:12 +01:00
21-rick-and-morty-color-audit.md audit: rick-and-morty color/HDR diagnosis 2026-05-08 17:45:34 +01:00
22-jellyfin-runtime-perf-audit.md doc 22: jellyfin runtime perf audit (read-only) 2026-05-08 17:51:06 +01:00
23-arrflix-edge-perf-audit.md doc 23: arrflix edge / network / browser-load-path perf audit (read-only) 2026-05-08 17:50:52 +01:00
24-storage-io-audit.md audit: storage I/O for arrflix media path 2026-05-08 17:47:19 +01:00
25-english-leak-deep-dive-2026-05-08.md doc 25: english leak deep-dive (Abspielen post-lockdown) 2026-05-08 22:09:59 +01:00
26-incident-2026-05-09-page-unresponsive-and-playback.md doc 26 INC6: Clear-Site-Data cache-only for shim deploy 2026-05-09 02:10:52 +01:00
27-status-snapshot-2026-05-09.md doc 27: status snapshot 2026-05-09 visual 2026-05-09 02:23:53 +01:00
28-prod-vs-dev-playback-divergence-2026-05-09.md doc 28 + INC7: fix prod black-screen via SW cache pin 2026-05-09 02:50:00 +01:00