# 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.