Release candidate 2 for the 26.08.0 line. Covers everything since 26.08.0-beta.7 and bundles LuminalVGD build 15 (v0.1.0-alpha.5).
This candidate exists because the first rc.2 build carried a host crash that only showed up in the field. It was found, root-caused and fixed before publication, so rc.2 ships as a single corrected build rather than a broken release followed by a hotfix.
⚠️ Behaviour change: virtual displays no longer black out your monitors by default
virtual_display_layout now defaults to extended instead of exclusive.
Previously the default deactivated every physical monitor, leaving the virtual display as the machine's only active output. That turned out to be the single configuration variable common to every machine-wide display-stack failure we have logs for — and the reason those failures needed a reboot instead of recovering:
- With no hardware-backed output active, a display-driver reset has nothing to recompose onto. In one 2026-07-29 incident a user pressed
Win+Ctrl+Shift+Bto recover a hung game; 27 seconds laterQueryDisplayConfigbegan failing and the display stack never came back. Windows logged no TDR at all — adapter loss with no recovery cycle. - The TDR topology lifeboat is supposed to light up a physical display when it detects a hang, but it enumerates through the same display API the failure removes. Under
exclusiveit had neither a target nor a working query.
extended keeps your monitors on and adds the virtual display alongside them.
The tradeoffs, plainly: your desk monitors stay powered during a stream, and because the desktop genuinely extends, an unconfined mouse can leave the streamed surface.
To restore the old behaviour, set it explicitly:
virtual_display_layout = exclusive
If you want the extended desktop without mouse wander, use extended_primary_isolated — the virtual display stays primary but sits far away in coordinate space.
Existing configs that already set this key are untouched. The High Performance preset still applies exclusive deliberately; switching it back off now restores extended.
Fixed
Host crash roughly 50 seconds after a boot-time start. crypto::signature() accepted an owning smart pointer where callers passed a raw certificate handle, and the smart pointer's converting constructor was implicit — so every TLS handshake released a certificate reference it did not own. The over-release was deterministic on each handshake; the resulting access violation was probabilistic, which is why it surfaced as occasional unexplained restarts rather than a reliable failure. Also fixes a double release of every stored client certificate on each authenticated request. The whole bug class is now a compile error rather than a silent free. (#123)
Streams killed by a GPU "TDR" that never happened. The NVENC completion wait had a 100 ms budget, and exceeding it was reported as a GPU hang — terminating the session, dropping the virtual display's frame ring, and refusing reconnects for ~30 seconds. Every field escalation examined was false: stalls of 100–105 ms, no device-removal status, and zero GPU resets in telemetry. The budget measured the wrong thing — the encoder's input texture is also the colour-conversion render target, so the wait tracks game GPU load, not encoder throughput. The deadline is now derived from Windows' own TDR constants (TdrDelay + TdrDdiDelay, 7 s on a stock system), polled in 100 ms slices so genuine faults are still caught promptly, and a GPU-reset verdict now requires the device to actually report removal. (#122)
HDR virtual displays came back as SDR after a recovery. Display recovery recreated the monitor without carrying the HDR flag through. (#121)
Added
Automatic WGC → VGD transition. If the host starts before the LuminalVGD driver is ready it would previously stay in WGC fallback until a service restart. It now re-checks, promotes itself to VGD mode automatically, and can retarget an already-running stream. A "Transition to VGD now" button was added to the VGD Control Panel, and Troubleshooting gained a live capture-backend indicator. (#121)
Updated
- NVENC SDK 13.1, FFmpeg 8.1.2, SVT-AV1 4.2.0. (#120)
Internal
- Release tags are now pinned to the exact commit their binaries were built from, so a release can no longer be mis-tagged by work merged between the build and publication. (#125)
- The test suite no longer writes runtime state into the source tree, and now runs to completion. (#124)
Known issues
Grand Theft Auto V Enhanced can still crash when a stream starts or ends. The game has a fault in its own device-change handling that Windows converts into an unrecoverable process exit, and it can be triggered by any monitor arriving or departing — including a virtual display being created. Setting virtual_display_mode = shared reduces how often the host changes monitor identity and makes this materially less likely. Work to stop the host touching the display device while a game is running is tracked for the next candidate.
Avoid Win+Ctrl+Shift+B while streaming if the virtual display is your only active output. That hotkey resets the graphics driver, and with no physical monitor active the reset can fail in a way that requires a reboot. The new extended default largely removes this exposure.