every.channel/evolution/proposals/ECP-0099-nbc-hidden-native-worker-mode-instead-of-true-headless-chrome.md

50 lines
1.9 KiB
Markdown

# ECP-0099: NBC Hidden Native Worker Mode Instead of True Headless Chrome
Status: Proposed
## Decision
Do not target true Chrome headless mode for NBC playback in `every.channel`.
Instead, add a macOS hidden native-worker mode for the existing `WKWebView` path so NBC playback
can run without a visible browser window when the session is already authenticated.
The desktop app will:
- allow the native NBC webview windows to start hidden behind `EVERY_CHANNEL_NBC_HIDE_WINDOWS=1`
- surface those hidden windows only when the navigation flow reaches an interactive auth page
- refuse the visible Chrome fallback when hidden native mode is explicitly requested
## Motivation
On this Mac, local Google Chrome in true headless mode does not expose EME / `requestMediaKeySystemAccess`,
which makes Widevine-backed NBC playback non-viable in a real headless browser process.
That means the practical path to future unattended playback is not “headless Chrome,” but an
invisible native browser surface with a warm authenticated session and explicit surfacing only
when auth has expired.
## Scope
In scope:
- macOS hidden-window behavior for the existing NBC `WKWebView` path
- auth-page detection that reveals the hidden window when user interaction is required
- blocking visible Chrome fallback when hidden mode is requested
Out of scope:
- automating Verizon credential entry in this cut
- making Chrome headless support Widevine / EME
- guaranteeing unattended runs when the MVPD session has expired
## Alternatives Considered
- Use true Chrome headless. Rejected because local testing showed no EME path.
- Keep only the visible native/Chrome flows. Rejected because a warm session should be able to run
without putting browser chrome on screen.
## Rollout / Reversibility
- The change is opt-in behind `EVERY_CHANNEL_NBC_HIDE_WINDOWS=1`.
- Roll back by removing the hidden-window flag and retaining the visible native flow from ECP-0098.