legacy-arrflix/bin
s8n 452ce68d7a isolate video player against opaque-bg regressions (recurring INC class)
Two-layer defense for the recurring "black screen during playback"
bug class (5+ occurrences in 24h per doc 26/28/30):

L1 (prevention): scope every black-bg rule with
:not(:has(.htmlVideoPlayer)):not(:has(#videoOsdPage)) so the rules
self-disable while a player is in the DOM. Covers body,
#reactRoot, .skinBody, .backgroundContainer, .mainAnimatedPage,
.mainAnimatedPages, .pageContainer.

L2 (override): when JS-toggled body.arrflix-video-active is set,
high-specificity (0,3,2 + tag) transparent rule wins against any
ancestor opaque-bg rule (including future regressions someone adds
without scoping). Covers all known wrappers, the
videoPlayerContainer + videoPlayerContainer-onTop, #videoOsdPage,
.libraryPage, .htmlVideoPlayer.

L3 (z-index lift): force .htmlVideoPlayer + child <video> to
z-index:9999 + isolation:isolate during playback so it floats above
any opaque ancestor that still leaks through.

Verified in playwright: with arrflix-video-active + .htmlVideoPlayer
mounted, all 7 ancestors return rgba(0,0,0,0). Without — all 7
return rgb(0,0,0). Self-disabling works.

Lesson reinforced (doc 30 roadmap open): add darkPct assertion to
bin/headless-test-v2.py + xmllint CI gate. Five recurrences without
those gates says we keep relearning this. TODO next.
2026-05-09 22:18:31 +01:00
..
add-jellyfin-user.sh force English everywhere on all 9 users + wrapper 2026-05-08 23:46:13 +01:00
apply-26-incident-fixes.sh doc 28 INC7-final: CSS overlay covering <video> was actual cause 2026-05-09 03:04:41 +01:00
english-lockdown-runner.sh docs+bin: English-only lockdown — re-apply runner + doc 20 2026-05-08 17:04:12 +01:00
force-english-all-users.sh doc 15: force English UI for all users (plan + script) 2026-05-08 04:22:04 +01:00
headless-test-v2.py doc 26 INC4: black band + 4K HDR slow transcode + v2 test + methodology audit 2026-05-09 01:46:47 +01:00
headless-test.py doc 26 INC2+INC3: pin backdrop, transparent sub-sections 2026-05-09 01:21:01 +01:00
inject-middle-theme.py isolate video player against opaque-bg regressions (recurring INC class) 2026-05-09 22:18:31 +01:00
inject-shim.py web: english-lockdown shim — pin locale + hide switchers 2026-05-08 17:04:03 +01:00
prod-vs-dev-compare.py doc 28 INC7-final: CSS overlay covering <video> was actual cause 2026-05-09 03:04:41 +01:00