Repository navigation
v3.16.3 — Split Theater Live Header
Fixes the split theater live-stream experience: a dedicated video info header, pinned native subscribe / like controls, and a neutral divider.
Fixes
Split theater live header (extension + standalone userscript)
- New `ytkit-split-live-header` surface shows the live video title, channel, and date/info beside the chat instead of leaving them buried in the collapsed metadata panel.
- `_pinSplitLiveHeaderActions()` visually pins the native subscribe/like controls with `position: fixed` so YouTube's own menus keep working instead of moving the DOM nodes.
- Cleanup order is now deterministic: restore moved controls → restore pinned controls → remove the live header. Prevents ghost styles from sticking to native controls on theater exit.
- `dataset.ytkitSplitLivePinned` tag lets teardown find every pinned control even if the page re-renders.
Video type detection (`VideoTypeDetector.refresh`)
- DOM live signals (`.ytp-live-badge`, `ytd-watch-flexy[is-live]`) now override a stale `ytInitialPlayerResponse` that still reports VOD. Fixes split treating a just-started live stream as VOD.
Divider colors
- Base bumped to `#0a0d13` (opaque) so the accent gradient no longer bleeds through into the layout behind it.
- Hover now uses neutral gray `#111827` instead of the old blue-purple, and the grip uses a quieter `rgba(148,163,184,0.64)`.
Tests
- 60 JS tests pass (1 new cross-surface regression in `tests/bugfix-validation.test.js` asserts both the extension and standalone userscript stay in lockstep)
- 15 Python tests pass
- Syntax check clean
Install
- Chrome: `astra-deck-chrome-v3.16.3.crx` (drag onto `chrome://extensions/` with Developer Mode on) or the `.zip` for unpacked loading
- Firefox: `astra-deck-firefox-v3.16.3.xpi` (drag onto `about:addons`) or the `.zip`