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