Changelog¶
LuminalShine release notes are mirrored from github.com/NortheBridge/luminalshine/releases and regenerated on every documentation build. For installer downloads, asset checksums, and the source diff for any release, follow the tag link in that release’s entry below.
Releases are listed newest first. Both GA and pre-release versions appear — pre-releases are tagged accordingly in each entry’s metadata line.
LuminalShine 26.08.0-beta.5¶
Tag: 26.08.0-beta.5 · Released: 2026-07-27 · Pre-release
LuminalShine 26.08.0-beta.5¶
Changes since 26.08.0-beta.4:
Fixed¶
Valid admin password rejected mid-uptime (web UI login, local and remote). Every configuration hot-apply — which happens on every stream start with per-app overrides — reset the in-memory credential record’s key-derivation fields, so password checks fell back to a legacy hash path and rejected the correct password until the service restarted. The credential record now survives config applies intact, guarded by a regression test. (#95)
Crash (heap corruption,
0xc0000374) when capture started against a virtual display that never activated. The capture path could be handed an empty display name and tore down mid-start; it now re-resolves the display, refuses the empty name, and falls back to WGC/DDA capture instead of crashing. (#97)Slight lag when starting to move the cursor. The frame-claim loop was blind to cursor motion for up to ~200 ms at motion onset; it now wakes on cursor movement and re-syncs the cursor before every blend, matching the responsiveness of the classic desktop-duplication path. (#98)
About page “Driver version: -” and empty Troubleshooting readouts for LuminalVGD. The installed-driver query matched on a field that is identical for every UMDF driver and never found the device; it now matches the hardware ID. The Troubleshooting page additionally reports the bundled driver package version, its Authenticode signer, and signature trust. (#94)
Faster session start. Third-party integration work (RTSS / NVIDIA Control Panel ladder) no longer runs on the stream-announce path, reclaiming seconds of the client’s no-video deadline on slow starts. (#99)
Added¶
Redesigned Session Details view. Clicking the active session or a recent session on the Home page opens a right-hand slideout with: status pills (RTSP, codec, HDR10, YUV 4:4:4, and live stream health); an identity panel (host and client device names, stream resolution, direct-to-encode mode, encode bitrate, duration, running app, audio channels, CPU/GPU model, RAM, VRAM, LuminalVGD driver identity, and LuminalShine version); and charts for connectivity quality and bitrate, direct-to-encode timing, frame rate, and host CPU/GPU and RAM/VRAM usage over Full Session / 3 min / 5 min / 15 min ranges, with Export as JSON. The Session View Only login gets a full-screen version covering the last 10 sessions. (#100)
GPU driver-reset (TDR) recovery hardening. Encoder stalls are now detected and marked ~100 ms after a GPU hang; the LuminalVGD capture path drops its shared textures and reinitializes cleanly after a reset; the service self-configures Windows to restart it if it is ever killed during recovery; and a session end that follows a leaked encoder teardown schedules a clean host restart. GPU resets are charted as markers on the Session Details connection graph. (#101)
Changed¶
Virtual-display defaults. New installs (and unset settings) default to: Virtual display backend Automatic, Virtual display mode Per client, Display layout Exclusive, Activate virtual display On, Revert display config on disconnect On, Refresh doubling On. Also fixes Control Panel switches that could render On while the setting was off. (#93)
Internal¶
The config-consistency test suite now actually runs in CI and gates merges (it previously failed silently and was advisory). (#96)
Notes¶
Bundles LuminalVGD v0.1.0-alpha.3 “Milestone 1 Update 2” (driver build 13,
0.1.0.13) — brings the cold-boot display-activation fix and the fix for the black box around the text-caret (I-beam) cursor. Existing installs are upgraded by the installer. (#102)Requires Windows 11; 24H2+ for full HDR support.
LuminalShine 26.08.0-beta.4¶
Tag: 26.08.0-beta.4 · Released: 2026-07-26 · Pre-release
LuminalShine 26.08.0-beta.4¶
Changes since 26.08.0-beta.3:
Fixed¶
False “LuminalVGD driver setup failed” warning on systems without PowerShell 7. The installer’s PowerShell 5.1 fallback resolved to the 32-bit interpreter, where driver tooling cannot run (
pnputilis unavailable in WOW64) — so the driver install/update/uninstall step failed on every run and the SudoVDA cleanup never completed, while any previously installed driver kept working untouched. The fallback is now always the 64-bit interpreter, the driver script relaunches itself 64-bit if ever started 32-bit, and a SudoVDA cleanup failure can no longer abort the driver install. (#92)
If previous versions showed the driver warning on your machine: simply run this installer — the driver step now completes, and stale SudoVDA remnants are removed.
Notes¶
Bundles LuminalVGD v0.1.0-alpha.2 (driver build 11,
0.1.0.11) — unchanged from beta.2/beta.3.Requires Windows 11; 24H2+ for full HDR support.
LuminalShine 26.08.0-beta.3¶
Tag: 26.08.0-beta.3 · Released: 2026-07-25 · Pre-release
LuminalShine 26.08.0-beta.3¶
Changes since 26.08.0-beta.2:
Fixed¶
Installs and updates no longer take 20+ minutes. The MSI’s driver install/uninstall scripts scanned every PnP device on the system with a per-device query (~0.8 s each — about 6.5 minutes per scan, and an update runs several scans). Device discovery is now narrowed to Display-class devices; the whole driver step completes in seconds. (#91)
The driver package is now staged and bound in a single device-install pass (previously an existing devnode went through the install transaction twice).
Notes¶
Bundles LuminalVGD v0.1.0-alpha.2 (driver build 11,
0.1.0.11) — unchanged from beta.2.Requires Windows 11; 24H2+ for full HDR support.
LuminalShine 26.08.0-beta.2¶
Tag: 26.08.0-beta.2 · Released: 2026-07-24 · Pre-release
LuminalShine 26.08.0-beta.2¶
Changes since 26.08.0-beta.1.
Critical fix — streaming restored¶
26.08.0-beta.1 could not stream and should not be used. Its bundled LuminalVGD driver (build 8) refused every control request, so per-client virtual displays were never created: streams silently fell back to capturing the physical desktop (wrong resolution / black bars) with the host monitors left on.
The bundled driver is now LuminalVGD v0.1.0-alpha.2 — Milestone 1 Proto Driver (0.1.0.11) with working control-surface authorization (SYSTEM / elevated Administrators, evaluated at request time, fail closed, fully ETW-traced). (#89, #90)
The host now opens the driver’s control device with the security opt-in UMDF requires to evaluate the caller, and logs the exact failing step and Win32 error if the driver is ever unreachable — this failure class can no longer hide. (#89)
Verified end to end on the installed service: per-client 4K HDR virtual display, exclusive display topology, direct frame-ring capture, hardware-cursor composition — streaming to LG C2 (webOS) and macOS Moonlight clients at native resolution.
SudoVDA fully retired at runtime¶
The runtime never selects or touches SudoVDA anymore: no registry recreation of SudoMaker keys, no legacy open/retry ladder against a driver that cannot exist. Legacy
virtual_display_backendvalues (sudovda,mtt) map to auto with a warning. (#87)Driver status recovery: a transient startup failure no longer pins the About page at “Failed to initialize” — the status probe retries (rate-limited) until the driver responds, and the Audio/Video “Re-check driver” button works. (#87)
Web UI¶
LuminalVGD is presented as the only virtual display backend: About page shows its proper name, the backend dropdown no longer offers SudoVDA, and help text no longer steers users toward it. (#88)
Upgrade notes¶
The installer bundles and installs the LuminalVGD Milestone 1 driver and removes SudoVDA (driver, certificates, registry) if detected — on new installs, updates, and reinstalls alike.
If you installed 26.08.0-beta.1: simply run this installer over it.
26.07.1-beta.2¶
Tag: 26.07.1-beta.2 · Released: 2026-07-19 · Pre-release
LuminalShine 26.07.1-beta.2¶
The second beta of the 26.07.1 series, on top of 26.07.1-beta.1shfx01. This release readies the LuminalShine UI for the LuminalVGD driver and adds per-commit nightly builds.
General¶
New: LuminalVGD Options in the header. The Web UI header gains a “LuminalVGD Options” dropdown (also in the mobile menu) with two new pages:
LuminalVGD Control Panel — the full configuration surface LuminalShine will expose for the LuminalVGD (Luminal Video Graphics Display) driver, straight from the driver design documentation: backend selection, monitor caps and lease watchdog, stable display identity, the permanent display pool, multi-mode lists and refresh doubling, bit depth/HDR, render-adapter and frame-ring settings, EDID/physical size, and the recovery/restore behavior. Because the driver is still in prototype, every control is disabled and rendered grey instead of the usual sun-gold, beneath a notice linking to apps.northebridge.com/en/LuminalVGD.
About LuminalVGD — the driver’s identity (status, design protocol version, device and provider), its pairing with the running LuminalShine build, and a working Check for LuminalVGD updates action against the driver’s public release feed. It reports the prototype status today and will surface real driver versions the moment a first release ships.
New: nightly builds. Every merge to
mainnow produces an unsigned portable ZIP, permanently addressable at nightly.link/NortheBridge/luminalshine/workflows/nightly-windows/main/luminalshine-nightly-portable.zip. Nightlies are versioned0.0.xso they sort below every real release, and are for testing only — signed installers remain exclusive to tagged releases.
Windows 11¶
No changes in this release.
Windows 11 Experimental Preview¶
No changes in this release.
Security Fixes¶
No changes in this release.
Hotfixes¶
No changes in this release.
Upgrade notes: existing installs upgrade in place from 26.07.1-beta.1 / 26.07.1-beta.1shfx01, 26.07.0, or 26.06.x; the MSI upgrade path is verified by the release pipeline’s compatibility gate.
Full changelog: https://github.com/NortheBridge/luminalshine/compare/26.07.1-beta.1shfx01…26.07.1-beta.2
26.07.1-beta.1.shfx01¶
Tag: 26.07.1-beta.1shfx01 · Released: 2026-07-15 · Pre-release
LuminalShine 26.07.1-beta.1.shfx01¶
An emergency patch on top of 26.07.1-beta.1. If you are on 26.07.1-beta.1, upgrade directly to this build; there are no other changes.
General¶
No changes in this release.
Windows 11¶
No changes in this release.
Windows 11 Experimental Preview¶
No changes in this release.
Security Fixes¶
No changes in this release.
Hotfixes¶
Fixed: first-run password fields shown on every sign-in. When signing in to a host that already has credentials — the normal case when connecting from another device on the LAN, for either a normal login or the new stats-only view — the login dialog incorrectly displayed the first-run New password and Confirm new password fields alongside the regular username/password fields. This was a display defect introduced with 26.07.1-beta.1’s stats-only login UI (a template conditional chained to the wrong branch); it looked like the host was offering to reset the admin password, but it was not: values typed in those fields were never transmitted during a normal login, and the server-side first-run overwrite guard shipped in 26.07.1-beta.1 is unaffected. The fields now render only during genuine first-run setup, when no credentials exist on the host yet.
Upgrade notes: existing installs upgrade in place from 26.07.1-beta.1, 26.07.0, or 26.06.x; the MSI upgrade path is verified by the release pipeline’s compatibility gate.
Full changelog: https://github.com/NortheBridge/luminalshine/compare/26.07.1-beta.1…26.07.1-beta.1shfx01
26.07.1-beta.1¶
Tag: 26.07.1-beta.1 · Released: 2026-07-14 · Pre-release
LuminalShine 26.07.1-beta.1¶
The first beta of the 26.07.1 series, on top of 26.07.0. This release addresses a critical field report — the Web GUI becoming unreachable from other systems on the LAN, and the admin password held in Windows Credential Manager appearing corrupted after such an access attempt — and adds a restricted stats-only login for remote monitoring.
General¶
New: Stats-only login. A “Stats view only” toggle on the login screen signs you in with a restricted session that can watch the active stream’s statistics — the new read-only /stats page with session history and per-session details — but cannot administer the host. The restriction is enforced server-side by a default-deny allowlist (read-only session, metadata, and locale endpoints; everything else answers 403
insufficient_role); the Web UI hides the admin navigation and all destructive controls for the session. Intended for checking on a stream from another LAN system without exposing a full admin login.Fixed: blocked access now explains itself. When the host’s origin policy (Web UI allowed origins: PC / LAN / WAN) denies a connection, the API now returns a structured
origin_forbiddenerror naming the allowed class, and the login screen shows an actionable message pointing at the setting — instead of a dead page or a misleading “wrong password” failure. Denials are also logged at warning level on the host.
Windows 11¶
Fixed: Web GUI unreachable from other LAN systems on IPv6-enabled networks. IPv6 peers with global-unicast addresses were classified as WAN even when they sat on the same link, so the default
lanorigin policy rejected them with a 403 before credentials were checked. The host now checks whether the peer is on-link for one of its own adapters — using each adapter’s real per-address prefix length (never an assumed /64), preferred addresses only, with a 60-second cache — and classifies on-link peers as LAN.
Windows 11 Experimental Preview¶
LuminalVGD (Luminal Video Graphics Display) driver seed advanced to proto v0.3: session model, capture controller, and the libvirtualdisplay fold-in. Groundwork only — nothing ships in the installer yet.
Security Fixes¶
Closed the admin-credential corruption path. Root cause: at boot, a race with the TPM could leave the credential record in Windows Credential Manager present but momentarily unreadable; LuminalShine then believed no credentials existed and silently entered first-run mode, where the unauthenticated first-user setup endpoint could overwrite the real stored record — observed in the field as a “corrupted” password after accessing the host from another LAN system. The fix closes this at every layer:
Startup now probes the credential store non-destructively (absent / loadable / locked). A locked store never counts as first-run: setup and login are refused with an explicit “credentials locked” state (HTTP 503) while a bounded background retry (30 attempts × 10 s) waits for the store to become readable.
The first-user setup path re-probes the store under lock before accepting anything, and refuses with recovery guidance (the Start Menu Reset LuminalShine Admin Password shortcut) if the record is locked.
Any legitimate self-heal that replaces the stored record first preserves the previous bytes in a quarantine slot (
LuminalShine/AdminCredentials.quarantine); an intentional admin reset clears the slot.
Fixed a data race in password verification. The verifier read the in-RAM credential fields lock-free while upgrade-on-login and background reloads reassigned them; it now snapshots them under a shared lock.
Hotfixes¶
No changes in this release.
Upgrade notes: existing installs upgrade in place from 26.07.0 or 26.06.x; the MSI upgrade path is verified by the release pipeline’s compatibility gate.
Full changelog: https://github.com/NortheBridge/luminalshine/compare/26.07.0…26.07.1-beta.1
LuminalShine 26.07.0: The MoonDeck Compatibility Release¶
Tag: 26.07.0 · Released: 2026-07-11
LuminalShine 26.07.0: The MoonDeck Compatibility Release¶
The Gold release of the 26.07 series, consolidating beta.1, beta.2, and beta.3. This cycle’s theme is making LuminalShine a first-class host for handheld clients — a Steam Deck running MoonDeck can now sleep and resume mid-session without killing the stream, and reach the host’s Steam overlay without a forwardable Guide button — while also eliminating LuminalShine’s interference with games on the host, whether streaming or idle.
New since 26.07.0-beta.3: YUV 4:4:4 streaming with auto-engage and in-flight 4:2:0 fallback, the public binary-signing card on the Troubleshooting page, and removal of the non-functional LB+RB+Start Guide combo (the other five combinations are unchanged).
General¶
YUV 4:4:4 Streaming (Settings → Capture, default on). Full-resolution chroma — noticeably sharper text and UI — auto-engages: when the encoder probe confirms the GPU can encode 4:4:4 (NVENC, QuickSync, or software), it is advertised and capable Moonlight clients negotiate it automatically with no interaction required. On GPUs without 4:4:4 support (or unknown capability) the switch reads off and is locked, and nothing is advertised. The Session Details panel shows a YUV444 chip reflecting the effective chroma of each session.
Sunshine-glass Web UI rebrand with a complete session telemetry pipeline: per-stream encode latency, throughput, FPS, and host CPU/GPU/RAM/VRAM history rendered in the new Session Details panel.
MTT VDD has been removed entirely. SudoVDA is now the only shipped virtual display backend. A configured
virtual_display_backend = mttlogs a warning and selects SudoVDA; pre-existing MTT driver installations are left untouched (removable via Device Manager orpnputil). The installer no longer offers or ships the MTT driver.Announcing LuminalVGD — the first-party Luminal Video Graphics Display Driver (NortheBridge/LuminalVGD, AGPL-3.0 with commercial licensing under the NortheBridge Access License Agreement). Pre-development; tracked in-tree at
src/drivers/luminal-display, it will supersede SudoVDA as the default backend when it ships. The Troubleshooting page now carries a reserved identity block that will show the driver’s version, paired LuminalShine release, build time, and signing information.Native frame-generation handling. LuminalShine detects DLSS Frame Generation in the streamed game and engages the frame-generation capture fix automatically — no per-app configuration required. The per-app toggles remain as manual overrides.
Frame limiter is scoped to the streamed game. The RTSS frame cap targets a per-game application profile instead of the RTSS Global profile, so nothing else on the host gets capped. Profiles created by LuminalShine are cleanly removed when the stream ends.
Public signing information on the Troubleshooting page: publisher (NortheBridge Foundation), signing method (Authenticode via SSL.com eSigner), how to verify a download, and the running build’s version, commit, and build date.
Documentation refreshed with the new Learn Dark theme and sunshine palette.
Windows 11¶
New: per-app “Keep virtual display while paused.” Each application’s Setting Overrides section has an Application Runtime toggle that keeps the LuminalShine virtual display active when the client disconnects or the device sleeps mid-session — for example a Steam Deck suspending via MoonDeck. On wake, the stream resumes cleanly instead of failing with an RTSP error. The physical display configuration is restored when the app quits, and global revert-on-disconnect behavior stays untouched for every other application.
New: Home/Guide Button Combo (Settings → Input). Emulate a Home/Guide press on the virtual controller by holding a chosen button combination on the streamed gamepad — opening the host’s Steam overlay from clients that cannot forward a real Guide press (on a Steam Deck running MoonDeck, the Steam button is consumed locally, previously leaving the host overlay unreachable mid-session). Available combinations: Start+Back, Back+X, Back+Y, D-Pad Right+X, D-Pad Left+Y. Off by default, once per press with a one-second debounce, works on both classic Moonlight and WebRTC sessions, and can be scoped per application via Setting Overrides.
In-flight YUV 4:4:4 → 4:2:0 fallback. If a negotiated 4:4:4 session fails at encoder start (for example the GPU driver or display path rejects it), LuminalShine logs a clear error naming the failed stage and retries the session at YUV 4:2:0 instead of failing the stream; the session stats update to reflect the effective chroma.
Fixed: games could fail to launch while LuminalShine ran in the background. RTSS is no longer kept alive across paused sessions — its hooks inject into every starting process, which prevented some anti-tamper titles from launching at all. Any RTSS instance LuminalShine starts is terminated at every limiter teardown and relaunched on resume.
Fixed: severe system-wide GPU performance loss while LuminalShine idled (benchmarks and games dropping from 120+ to ~20 FPS). Two causes addressed: a temporary virtual display retained after a failed encoder probe is reaped after 3 idle minutes instead of persisting indefinitely, and the process’s REALTIME GPU scheduling priority is restored to normal after the startup probe and at stream stop.
Fixed: streamed GPU-bound titles losing significant frame rate. The frame cap no longer applies machine-wide, and an idle host no longer outranks the foreground game at the GPU scheduler.
Windows 11 Experimental Preview¶
With MTT VDD removed, the guidance for SudoVDA’s known WUDFHost hang on Insider Preview channels has changed: use Troubleshooting → Restart Virtual Display Driver, which PnP-disables and re-enables the SudoVDA device scoped to that device only. The Web UI warning text points there instead of suggesting a driver switch.
The SudoVDA reliability caveat on current release and Insider Preview builds remains the primary motivation for LuminalVGD (see General).
Security Fixes¶
Reduced shipped driver and supply-chain surface: the vendored third-party MTT VDD signed driver binary (DLL/INF/CAT) has been removed from the repository and the installer payload, leaving a single virtual display driver pending the first-party LuminalVGD.
Process-injection surface hardening: LuminalShine-started RTSS never outlives the frame limiter session, so its injection hooks cannot persist into processes launched after a stream ends.
Hotfixes¶
Encoder probe: the H.264 YUV 4:4:4 capability test silently validated 4:2:0 due to a struct-initializer mismatch, so H.264 4:4:4 could be advertised on GPUs unable to encode it — the concrete cause of mid-flight 4:4:4 session failures. The probe now tests what it advertises.
Gamepad: the LB+RB+Start Guide-combo option introduced in beta.3 did not function and has been removed; configs referencing it fall back to disabled with a logged warning.
RTSS: a mid-session limiter refresh could silently fall back from the per-game profile to the Global profile — fixed.
NVIDIA Control Panel limiter users: the frame-generation auto-fix no longer removes an NVCP frame cap without replacement when RTSS is unavailable.
Virtual display: fixed a race where the idle-display reaper could remove a display that an incoming launch had just claimed.
RTSS crash-recovery snapshots record per-game profiles created by LuminalShine, so a crash cannot orphan them.
Release pipeline: the MSI compatibility gate no longer fails on UI-only changes — content-hashed web bundle renames are normalized while genuine file additions, removals, and identifier drift on stable files still fail the gate.
Upgrade notes: existing installs upgrade in place from any 26.07.0-beta.x or 26.06.x; the MSI upgrade path is verified by the release pipeline’s compatibility gate. If you previously selected MTT VDD, LuminalShine switches to SudoVDA automatically on first start.
Full changelog: https://github.com/NortheBridge/luminalshine/compare/26.06.4…26.07.0
26.07.0-beta.3¶
Tag: 26.07.0-beta.3 · Released: 2026-07-10 · Pre-release
LuminalShine 26.07.0-beta.3¶
An incremental beta on top of 26.07.0-beta.2, focused on keeping the host’s Steam overlay reachable from clients that cannot send a Guide button press.
General¶
No changes in this release.
Windows 11¶
New: Home/Guide Button Combo (Settings → Input). Emulate a Home/Guide button press on the virtual controller by holding a chosen button combination on the streamed gamepad — opening the host’s Steam overlay from clients that cannot forward a real Guide press. On a Steam Deck running MoonDeck, the Steam button is consumed locally by the Deck, which previously left the host’s Steam overlay unreachable mid-session (no accepting game invites, no switching to a friend’s lobby). Available combinations:
Start (Menu) + Back (View)
Back (View) + X, Back (View) + Y
D-Pad Right + X, D-Pad Left + Y
LB + RB + Start — three buttons, the hardest to trigger accidentally
The feature is off by default, triggers once per press with a one-second debounce, works on both classic Moonlight and WebRTC sessions, and can be scoped per application via Setting Overrides (e.g. only your MoonDeck entry). Note: the combo buttons still reach the game in the moment before the overlay opens, so pick a combination your game doesn’t use.
Windows 11 Experimental Preview¶
No changes in this release.
Security Fixes¶
No changes in this release.
Hotfixes¶
No changes in this release.
Upgrade notes: existing installs upgrade in place from 26.07.0-beta.x or 26.06.x; the MSI upgrade path is verified by the release pipeline’s compatibility gate.
Full changelog: https://github.com/NortheBridge/luminalshine/compare/26.07.0-beta.2…26.07.0-beta.3
26.07.0-beta.2¶
Tag: 26.07.0-beta.2 · Released: 2026-07-08 · Pre-release
LuminalShine 26.07.0-beta.2¶
An incremental beta on top of 26.07.0-beta.1, focused on client sleep/resume resilience for handhelds.
General¶
No changes in this release.
Windows 11¶
New: per-app “Keep virtual display while paused.” Each application’s Setting Overrides section now has an Application Runtime toggle that keeps the LuminalShine virtual display active when the client disconnects or the device sleeps mid-session — for example a Steam Deck suspending via MoonDeck. On wake, the stream resumes cleanly instead of failing with an RTSP error. Your physical display configuration is restored when the app quits, and the global revert-on-disconnect behavior stays untouched for every other application. Under the hood the toggle manages the
dd_config_revert_on_disconnectanddd_paused_virtual_display_timeout_secsoverrides, which remain visible and editable in the overrides list.
Windows 11 Experimental Preview¶
No changes in this release.
Security Fixes¶
No changes in this release.
Hotfixes¶
Release pipeline: the MSI compatibility gate no longer fails on UI-only changes — content-hashed web bundle renames are normalized while genuine file additions, removals, and identifier drift on stable files still fail the gate.
Upgrade notes: existing installs upgrade in place from 26.07.0-beta.1 or 26.06.x; the MSI upgrade path is verified by the release pipeline’s compatibility gate.
Full changelog: https://github.com/NortheBridge/luminalshine/compare/26.07.0-beta.1…26.07.0-beta.2
26.07.0-beta.1¶
Tag: 26.07.0-beta.1 · Released: 2026-07-07 · Pre-release
LuminalShine 26.07.0-beta.1¶
This beta focuses on eliminating LuminalShine’s interference with games — whether a stream is active or the host is idling in the background — and begins the transition to a first-party virtual display driver.
General¶
Sunshine-glass Web UI rebrand with a complete session telemetry pipeline: per-stream encode latency, throughput, FPS, and host CPU/GPU/RAM/VRAM history rendered in the new Session Details panel.
MTT VDD has been removed entirely. SudoVDA is now the only shipped virtual display backend. A configured
virtual_display_backend = mttlogs a warning and selects SudoVDA; pre-existing MTT driver installations on your machine are left untouched (removable via Device Manager orpnputil). The installer no longer offers or ships the MTT driver.Announcing LuminalVGD — the first-party Luminal Video Graphics Display Driver (NortheBridge/LuminalVGD, AGPL-3.0 with commercial licensing under the NortheBridge Access License Agreement). Pre-development; it is now tracked in-tree at
src/drivers/luminal-displayand will supersede SudoVDA as the default backend when it ships.Native frame-generation handling. LuminalShine now detects DLSS Frame Generation in the streamed game and engages the frame-generation capture fix automatically — no per-app configuration required. The per-app toggles remain as manual overrides, and the settings UI now says so.
Frame limiter is scoped to the streamed game. The RTSS frame cap now targets a per-game application profile instead of the RTSS Global profile, so nothing else on the host gets capped. Profiles created by LuminalShine are cleanly removed when the stream ends.
Documentation refreshed with the new Learn Dark theme and sunshine palette.
Windows 11¶
Fixed: games could fail to launch while LuminalShine ran in the background. RTSS is no longer kept alive across paused sessions — its hooks inject into every starting process, which prevented some anti-tamper titles from launching at all. Any RTSS instance LuminalShine starts is now terminated at every limiter teardown and relaunched on resume.
Fixed: severe system-wide GPU performance loss while LuminalShine idled (benchmarks and games dropping from 120+ to ~20 FPS). Two causes addressed: a temporary virtual display retained after a failed encoder probe is now reaped after 3 idle minutes instead of persisting indefinitely, and the process’s REALTIME GPU scheduling priority is restored to normal after the startup probe and at stream stop instead of persisting for the process lifetime.
Fixed: streamed GPU-bound titles losing significant frame rate. The frame cap no longer applies machine-wide (see per-game scoping above), and an idle host no longer outranks the foreground game at the GPU scheduler.
Windows 11 Experimental Preview¶
With MTT VDD removed, the guidance for SudoVDA’s known WUDFHost hang on Insider Preview channels (WUDFHostProblem2) has changed: use Troubleshooting → Restart Virtual Display Driver, which PnP-disables and re-enables the SudoVDA device scoped to that device only. The Web UI warning text now points there instead of suggesting a driver switch.
The SudoVDA reliability caveat on current release and Insider Preview builds remains the primary motivation for LuminalVGD (see General).
Security Fixes¶
Reduced shipped driver and supply-chain surface: the vendored third-party MTT VDD signed driver binary (DLL/INF/CAT) has been removed from the repository and the installer payload, leaving a single virtual display driver pending the first-party LuminalVGD.
Process-injection surface hardening: LuminalShine-started RTSS never outlives the frame limiter session, so its injection hooks cannot persist into processes launched after a stream ends.
Hotfixes¶
RTSS: a mid-session limiter refresh could silently fall back from the per-game profile to the Global profile — fixed.
NVIDIA Control Panel limiter users: the frame-generation auto-fix no longer removes an NVCP frame cap without replacement when RTSS is unavailable.
Virtual display: fixed a race where the idle-display reaper could remove a display that an incoming launch had just claimed.
RTSS crash-recovery snapshots now record per-game profiles created by LuminalShine, so a crash cannot orphan them.
Upgrade notes: existing installs upgrade in place; the MSI Upgrade path from 26.06.x is verified by the release pipeline’s compatibility gate. If you previously selected MTT VDD, LuminalShine switches to SudoVDA automatically on first start.
Full changelog: https://github.com/NortheBridge/luminalshine/compare/26.06.4…26.07.0-beta.1
26.06.4¶
Tag: 26.06.4 · Released: 2026-06-26
LuminalShine 26.06.4 (Gold)¶
Danger
Although this release closes all current memory heap issues with Windows 11 Future Platforms, please update at your own risk as this is only against the latest builds at the time of writing.
A stability and security hardening release. It eliminates a class of shutdown/restart crashes and closes a batch of memory-safety and input-validation issues found in an internal security audit. Recommended for all users. (26.06.3 was skipped.)
General¶
Major crash-resilience and memory-safety hardening of the streaming host — details under Windows 11 (stability) and Security Fixes (memory safety) below.
Windows 11¶
Eliminated shutdown/restart heap-corruption crashes (
STATUS_HEAP_CORRUPTION/0xC0000374). Long-lived background threads — the system tray, the SudoVDA virtual-display watchdog, the update checker, and the paused-display cleanup / display-recovery monitors — are now reliably stopped and joined before the process exits, instead of being torn down mid-flight by the C runtime (which could double-free the heap and crash the host on exit or on a service restart).Safer fatal-error diagnostics: a teardown-safe crash handler now records the actual cause of any remaining fatal exception instead of masking it as a generic C-runtime fault.
Update checks no longer hang shutdown: the GitHub update check now has connect/total network timeouts and aborts immediately when the host is shutting down.
More graceful failure: the audio-capture and RTSP threads now contain unexpected errors and degrade instead of taking down the whole host.
Windows 11 Experimental Future Platforms¶
The crash-resilience fixes above are most impactful on Windows 11 Insider Preview (Canary/Dev) builds, where the display-driver / virtual-display instability that drives these restart and teardown paths occurs far more often.
Security Fixes¶
All from an internal adversarial audit. These are memory-safety, input-validation, and denial-of-service hardening in a SYSTEM-privileged service; most require a paired/connected client or local access (no known remote-unauthenticated exploit).
Use-after-free in credential storage (a dangling buffer was handed to the Windows Credential Manager) — fixed.
Paired-client denial-of-service: an unvalidated client
packetSizecould trigger a divide-by-zero or an enormous allocation; it is now range-validated.Out-of-bounds reads in the streaming control path (malformed/short control packets, reference-frame-invalidation and input-data payloads) and on an undersized decoded stream key — now bounds-checked.
Data races causing use-after-free / double-free in the WebRTC media thread and the Playnite IPC pipe — now properly synchronized.
Double-
CloseHandlerace in the named-pipe IPC and a NULL-dereference in audio-device enumeration — fixed.Local stack-exhaustion DoS via unbounded Steam VDF parser recursion (behind the off-by-default Steam auto-sync) — now depth-limited.
Hotfixes¶
Rolls up the shutdown/restart heap-corruption elimination (Windows 11) and the audit-driven memory-safety / DoS fixes (Security Fixes) above.
Automated release for 26.06.4.
What’s Changed
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.06.2…26.06.4
26.06.2¶
Tag: 26.06.2 · Released: 2026-06-25
LuminalShine 26.06.2 (Gold)¶
Note
This release improve performance of the Virtual Display Drivers with NVIDIA RTX 40/50 hosts. It is recommended to update.
Tip
This is a Gold Release and has been signed by the NortheBridge Foundation.
A stability point release for 26.06.0 that hardens the streaming host against GPU/display-driver failures and low-memory conditions. No feature or behavior changes.
General¶
Improved crash resilience under display-driver failures and low-memory pressure (see Windows 11 for specifics).
Windows 11¶
Fixed two resource leaks that accumulated while the display stack was wedged (repeated GPU TDR / device-removed recovery, or a virtual display failing to enumerate):
The SudoVDA virtual-display driver handle was re-opened without closing the previous one — leaking a kernel handle on every recovery attempt. Re-opens are now idempotent.
The D3D11 device-creation retry path could orphan a partially-created device/context on each retry; these are now released before retrying.
Bounded the encoder-teardown backlog so a sustained reinit storm against an unresponsive GPU can no longer grow memory without limit.
Hardened the audio-capture and HTTP control threads so an allocation failure under memory pressure no longer terminates the whole host.
Diagnosable aborts: any abort that does still occur now logs the underlying exception instead of pointing only at the C runtime.
Windows 11 Experimental Future Platforms¶
These fixes are most impactful on Windows 11 Insider Preview (Canary/Dev) builds, where the display-stack wedges that drive the leaks above (
QueryDisplayConfigfailures, SudoVDA enumerate timeouts) occur far more often. If you still hit a blank-screen / no-recovery state on an Insider build, the recommended workaround remains: switch SudoVDA → MTT Virtual Display Driver (“Reconfigure LuminalShine”) and reboot to clear the wedged display API.
Security Fixes¶
Resource-exhaustion and abort hardening of the SYSTEM-privileged host: the unbounded leaks and unbounded teardown backlog above are closed, and a process-wide terminate handler plus per-thread exception barriers prevent an uncaught exception from hard-aborting the service. Availability/robustness improvements; no attacker-controlled input is involved.
Hotfixes¶
Rolls up the GPU-display-recovery leak fixes and low-memory crash-resilience hardening detailed under Windows 11.
What’s Changed¶
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.06.0…26.06.2
26.06.0¶
Tag: 26.06.0 · Released: 2026-06-23
LuminalShine 26.06.0 - Gold Release¶
Tip
This is a “Gold Release,” also known as a release that is intended for publication and download as the “stable” version.
Note
LuminalShine’s “Gold Releases” are signed by the NortheBridge Foundation Authenticode Certificate and are available on WinGet as well as the Microsoft Store.
LuminalShine version 26.06 “Gold” Release
Automated release for 26.06.0.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-rc7…26.06.0
26.05.0-rc7¶
Tag: 26.05.0-rc7 · Released: 2026-06-22 · Pre-release
LuminalShine 26.05.0-rc7¶
A hotfix release addressing a host crash that could leave the screen blank and the stream disconnected.
General¶
No changes in this release.
Windows 11¶
Host no longer crashes when the Windows display stack is wedged. See Hotfixes below — the streaming host now degrades gracefully and stays running instead of fast-failing when no display can be acquired.
Windows 11 Experimental Future Platforms¶
This release specifically hardens behavior on Windows 11 Insider Preview (Canary/Dev) builds (e.g. build 29613), where the display stack and the SudoVDA virtual-display driver are more prone to wedging (
QueryDisplayConfigreturningERROR_NOT_SUPPORTED, virtual-display enumerate timeouts). If you hit a blank-screen/no-display state on an Insider build, the recommended workaround remains: run “Reconfigure LuminalShine” and switch SudoVDA → MTT Virtual Display Driver, then reboot to clear the wedged display API.
Security Fixes¶
Eliminated an uncaught-exception →
std::terminateabort in the SYSTEM-privileged host. A C++ exception thrown during encoder/display acquisition could unwind out of a service thread and fast-fail the entire process (STATUS_STACK_BUFFER_OVERRUN,0xC0000409). This is the same fix as the Hotfix below, noted here for its availability/robustness impact on a process that runs as SYSTEM. No attacker-controlled input is involved.
Hotfixes¶
Never let an encoder probe abort the host on a wedged display stack. When the Windows display stack was wedged — no enumerable monitors,
QueryDisplayConfig→ERROR_NOT_SUPPORTED, a SudoVDA virtual-display enumerate timeout, or a sustainedDXGI_ERROR_DEVICE_REMOVED(0x887A0004) loop — the encoder-acquisition path could throw a C++ exception that escaped its thread and fast-failed the whole service (0xC0000409). The host crashed and did not recover: monitors went blank and the stream dropped (the client’s “TLS error” was just the control connection being torn when the host died — there was no actual TLS/certificate fault). This was not a GPU hardware TDR (nonvlddmkm/ Kernel-Power events) — it was a display-stack/virtual-display wedge the host should survive.probe_encoders()now treats any thrown exception as a normal probe failure, so every code path (startup, the nvhttp control plane, and the WebRTC signaling path) takes its graceful “no display → wait and retry” route and the daemon stays alive.The WebRTC client-connect path’s direct display-acquisition call is now wrapped so it refuses the session cleanly instead of aborting.
Note: this fixes the host-side crash/non-recovery. It does not prevent the underlying display-stack/SudoVDA wedge itself — see Windows 11 Experimental Future Platforms for the environmental mitigation.
Automated release for 26.05.0-rc7.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-rc6…26.05.0-rc7
26.05.0-rc6¶
Tag: 26.05.0-rc6 · Released: 2026-06-22 · Pre-release
LuminalShine 26.05.0-rc6¶
A small, focused pre-release: one streaming-stability fix and a documentation refresh.
General¶
Documentation site redesign. The docs now use a light, content-first layout modeled on Microsoft Learn — Segoe UI typography, a breadcrumb trail, an “In this article” rail, and cleaner code blocks, tables, admonitions, and landing-page cards — rebranded with NortheBridge “Aurora Blue” accents (the previous purple accents are retired).
Windows 11¶
Fixed a host crash during GPU resets (TDR) while streaming. Under heavy GPU load — e.g. 4K HDR AV1 with DLSS Frame Generation on RTX 40/50-series cards — a GPU Timeout Detection & Recovery event could trigger several encoder teardowns at once. Those concurrent teardowns raced on the shared NVIDIA driver heap and corrupted it, killing the LuminalShine host process (
STATUS_HEAP_CORRUPTION) and dropping the stream — sometimes leaving the display in a bad state. Encoder teardown is now serialized, so a GPU reset degrades to a brief interruption instead of a host crash. (Builds on the per-teardown drain/leak hardening from rc5.)Note: this fixes the host-side crash, not the GPU reset itself. If you hit frequent TDRs, also consider updating your NVIDIA driver, switching the codec to HEVC, or disabling DLSS Frame Generation.
Windows 11 Experimental Future Platforms¶
The streaming-stability fix above directly addresses host crashes seen on Windows 11 Insider Preview (Canary / Dev) builds, where GPU driver TDRs occur more often on bleeding-edge graphics stacks. No changes exclusive to experimental/future platforms in this release.
Security Fixes¶
Hardened memory safety in the SYSTEM-privileged host service. Eliminated the heap-corruption fail-fast (
STATUS_HEAP_CORRUPTION/0xC0000374) that could occur during GPU-TDR encoder teardown. This is the same underlying change as the Windows 11 stability fix above, called out here because it removes a memory-corruption condition in a process that runs as SYSTEM. No attacker-controlled input is involved; impact is availability/robustness rather than a remotely exploitable vulnerability.
Automated release for 26.05.0-rc6.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-rc5…26.05.0-rc6
26.05.0-rc5¶
Tag: 26.05.0-rc5 · Released: 2026-06-19 · Pre-release
LuminalShine 26.05.0 RC 5¶
General¶
WiX 7 installer migration complete. LuminalShine’s MSI is now built through the modern WiX 7 toolchain (replacing the CPack WiX generator + WiX 3 stack). A permanent CI gate asserts the upgrade-critical tables stay byte-identical across builds, so the migration is invisible to existing installs.
Third-party dependency refresh. Including a switch from the forked
nvapisnapshot to NVIDIA’s official upstream repository.Session History card now bounded at 25 ended sessions. Both the in-memory store and the on-disk archive at
%ProgramData%\LuminalShine\sessions\are pruned oldest-first when the cap is exceeded. Live sessions are never pruned and never counted toward the limit.Duplicate-session bug fixed. Recorded session IDs are now intrinsically unique across
luminalshine.exerestarts, so newly recorded streams no longer overwrite previously-persisted entries on the Dashboard.Session Details drawer — Connection / Host tabs render again. The per-session uPlot charts on the Connection and Host tabs now paint correctly on first open for ended sessions, not just live ones.
High Performance Streaming card aligned with the README. Recommended-spec bullets (OS / CPU / GPU / RAM / Display / Host net / Client net) now mirror the README’s System Requirements table row-for-row, including the WDDM 3.2+ / HDR-capable / 240 Hz display requirement for frame-generation capture.
Windows 11¶
MSI upgrade no longer fails on held-open files. LuminalShine services are stopped cleanly before file replacement during a major upgrade, so the bootstrapper no longer requires a reboot to swap binaries on a hot install.
Pre-MSI Vibeshine installs are now caught. The conflict-removal step in the WiX bootstrapper recognises the NSIS-era Vibeshine
DisplayNameand removes it before the new install. (Post-MSI Vibeshine was already handled via the sharedUpgradeCode.)Render-stack-aware NVENC encode timeout. When DLSS Frame Generation or DLAA is detected in the foreground process, LuminalShine raises the encode-wait ceiling from 100 ms to 250 ms — preventing legitimately slow frames on RTX 40/50 + AV1 + 4K HDR workloads from being misclassified as a TDR-class event.
Streaming-host heap-corruption crash on disconnect fully closed. A four-part NVENC fix eliminated the
STATUS_HEAP_CORRUPTION(0xC0000374) that could fire ~minutes after a Moonlight client disconnected from an active stream:Drain the NVENC async completion event before destroying the encoder.
ResetEventbefore eachnvEncEncodePictureso a stale signal from a previously timed-out wait cannot satisfy the next wait early.Defer
nvEncUnmapInputResourceon the encode-wait-timeout path; finish the unmap indestroy_encoderafter the drain confirms the GPU is done reading the resource.Combine with the render-stack-aware timeout above so timeouts are rare in the first place.
Windows 11 Future Platforms (Previously Insider)¶
Especially validated on Build 29599 (Canary). The heap-corruption series above was originally reproduced on Windows 11 Insider Preview Canary 29599 with AV1 + HDR + 10-bit +
split-frame=auto. The fix has been validated across both stable Windows 11 24H2 and the Canary / Dev channels.RTX 50 + DLSS Frame Generation + Path Tracing. The Blackwell-class combination of AV1 split-frame encoding with frame-generated content — the worst-case path for the heap fast-fail — now tears down cleanly when the client disconnects.
Security Fixes¶
TPM-bound credential store no longer rotates the wrapping key on every read. The previous behaviour silently rotated the persisted RSA wrapping key on each open, which could orphan the WebUI admin password if a rotation raced an unclean shutdown. The reported symptom was “I have to reset the password to log in from another PC on the network.” The cred store now opens the existing TPM key without rotating, and self-heals orphan credential blobs left behind by previous rotation races.
ResetAdminCredentialsupgrade-exclusion permanently gated in CI. A regression test asserts that the “Reset LuminalShine Admin Password” Start Menu shortcut and its underlying custom action cannot fire during an MSI upgrade — preserving an existing user’s WebUI password across upgrade installs. The conditioning was already correct; this lock-in prevents future regressions.
Automated release for 26.05.0-rc5.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-rc4…26.05.0-rc5
26.05.0-rc4¶
Tag: 26.05.0-rc4 · Released: 2026-05-26 · Pre-release
LuminalShine 26.05.0 Release Candidate 4 (RC4)¶
Danger
This release ships CVE-2026-32253 / GHSA-ph75-mgxh-mv57 (Critical, CVSS 9.8) — an upstream cert-chain authentication bypass that allowed network-reachable attackers to impersonate paired Moonlight clients and reach /launch with input injection on a SYSTEM-level service. All LuminalShine hosts should upgrade immediately. See the Security section below for details. We have posted seperate Security Advisory as GHSA-8gq2-8vfv-fqx7
Danger
This release ships GHSA-52q6-5x97-2747 (Moderate, CVSS 6.3) — The protection is incidental, not enforced. There is no <util:PermissionEx> in packaging/windows/wix/custom_actions.wxs, no SetNamedSecurityInfo call anywhere, and the code in src/config.cpp / src/file_handler.cpp creates the file with no security descriptor. Off-default conditions break it: OEM gold images with loosened ProgramData DACLs, plugins running as non-SYSTEM that pre-create the directory, manual user copies into ProgramData, etc. If write access ever exists, src/process.cpp reads cmd/elevated:true with no integrity check and src/platform/windows/misc.cpp launches via CreateProcessAsUserW with the linked admin token → non-admin → Administrator EoP. All LuminalShine hosts should upgrade immediately. See the Security section below for details.
Note
Existing installs migrate transparently. sunshine_credentials.json is renamed in place to luminalshine_credentials.json on first launch after upgrade, with the original archived as sunshine_credentials.json.deprecated-<UTC> for forensic recovery. Paired Moonlight clients, the Windows Credential Manager admin entry, and the apps list are unaffected.
General¶
New: Session Details panel + Session History card. The Dashboard now records every streaming session you run. A new
LuminalShineSessionMonitorWindows service captures per-session metadata (client, codec, resolution, FPS, bitrate, HDR / YUV4:4:4 flags) along with 1Hz host CPU + RAM samples, persists them under%ProgramData%\LuminalShine\sessions\, and serves them back to the Web UI. The Session History card on the Dashboard lists every recorded session (active sessions float to the top with a LIVE pulse; ended sessions follow in reverse chronological order). Clicking a row opens a right-edge slide-out drawer with live uPlot charts grouped under three tabs — Stream / Connection / Host — plus Disconnect, Export JSON, and Delete actions. The monitor service is independent from the streaming hot path: it runs in its own process with SYSTEM-only named-pipe ingest, a kernel-assigned ephemeral localhost port, and a fire-and-forget producer that can never block encoding or stream delivery.New: Per-session recording opt-out (Settings → Capture →
session_monitor, default on). When off, the producer is muted but the sidecar service stays running, so toggling the setting back on resumes recording immediately.New: “Clear Session History” gesture on the Troubleshooting page. Wipes the on-disk archive while leaving the sidecar’s in-memory ring buffer intact (so the Web UI repopulates from live state). The MSI uninstall now removes the session archive by default; opt-out via
msiexec /x ... KEEPSESSIONDATA=1for migration scenarios.TypeScript toolchain bump to TypeScript 6.0.3 and vue-tsc 3.3.1. No user-visible behavior change.
README badges: release version, commits-since-release, GitHub downloads, code size, stars, license, and CI status are now surfaced at the top of the project README for repo navigation.
Windows 11 General Availability¶
No GA-channel-specific items this release. GA hosts pick up everything in Security and Hotfixes below.
Windows 11 Insider Preview¶
No Insider-Preview-specific items this release. Insider Preview Canary / Dev hosts pick up everything in Security and Hotfixes below.
Security¶
CVE-2026-32253 / GHSA-ph75-mgxh-mv57 (Critical, CVSS 9.8) — fixed. Closes the upstream Sunshine cert-chain authentication bypass that let a network-reachable attacker present a self-signed leaf chained to a self-generated CA and be accepted as a paired Moonlight client. From there, the attacker could call
/launchor/resumeand stream — with input injection — under the SYSTEM service identity. Two layered changes ship:Removed the
X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLYfast-path inopenssl_verify_cb, mirroring upstream Sunshinev2026.516.143833.Added a leaf-signature pin in the Moonlight HTTPS verify lambda: after the OpenSSL chain verifier accepts a peer, its leaf signature must also exactly match an entry in
client_root.named_devices. Defense-in-depth — any future regression in the verify callback cannot grant access to an unpaired peer.Regression coverage added in
tests/unit/test_cert_chain.cpp.
ProgramData config-directory hardening. The files under
%ProgramData%\LuminalShine\config\(apps.json, sunshine.conf, the paired-clients store, the credentials file) include paths and command lines that the SYSTEM service trusts atCreateProcessAsUserWtime. Default Windows ACL inheritance happens to keepUsersnon-writable on a vanilla install, but the protection was incidental rather than enforced. Layered defense now ships:PROTECTED DACL (SYSTEM and Administrators Full, Users Read+Execute) and a System mandatory integrity label are applied at every service start via
SetNamedSecurityInfoW. Self-repairing — incorrect ACLs from OEM gold images, prior tooling, or BIOS-image deployments are corrected on the next service start.HMAC-SHA256 tamper detection on
apps.jsonwith a sidecar.sigfile. The HMAC key is sealed via the TPM 2.0 (Microsoft Platform Crypto Provider KSP) when available, and falls back to DPAPI-LocalMachine otherwise. The active backend (tpm/dpapi-lm/unavailable) is logged once at startup. On HMAC mismatch the suspect file is renamed to<file>.tamper-<UTC>and the service seeds defaults rather than load attacker-supplied content.sunshine_credentials.json→luminalshine_credentials.json(flag-day rename) with one-shot in-place migration so existing installs never lose admin credentials. The original is archived as.deprecated-<UTC>.Per the threat-model review: no install-time TPM gate. DPAPI-LocalMachine fallback covers TPM-less hosts (BIOS-disabled TPM, vTPM-less VMs, Insider Preview registry-bypass installs) without weakening the security ceiling for the same-machine-tamper threat model.
Hotfixes¶
No Hotfixes-specific items this release. Insider Preview Canary / Dev hosts pick up everything above.
Automated release for 26.05.0-rc4.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-rc3.hfx4…26.05.0-rc4
26.05.0-rc3.hfx4¶
Tag: 26.05.0-rc3.hfx4 · Released: 2026-05-24 · Pre-release
LuminalShine 26.05.0 Update Release Candidate 3 Hotfix 4¶
Important
LuminalShine 26.05.0 RC3 is a substantial release to prepare for Authenticode. Please be aware that there are changes such as installing to %ProgramFiles%\NortheBridge\LuminalShine and %ProgramData%\LuminalShine\.
Danger
Changes in this release may break LuminalShine if it doesn’t migrate properly. Re-run the installer if this happens in order to resolve the issue. If your issue isn’t resolved, submit an issue for further guidance.
Tip
LuminalShine Credentials, which are stored in the Windows Credential Manager via use of the TPM 2.0, seamlessly transition to the Authenticode version of LuminalShine. If you encounter a lockout from the Admin Interface, run "C:\Program Files\NortheBridge\LuminalShine" --reset-admin-credentials to reset the Admin Credentials to “First Run” state. You will not lose any device pairings or settings.
General¶
The platform layer now exposes a dedicated
log_dir()accessor parallel toappdata(). Today it forwards to the existing data directory on Linux and macOS, and resolves to a separate logs subtree on Windows. Cross-platform callers route through a single API so any future log-location change on other platforms is a one-line implementation flip.
Windows 11 General Availability¶
Install location moved to
C:\Program Files\NortheBridge\LuminalShine\. Previous installs atC:\Program Files\Sunshine\are migrated transparently by MSI MajorUpgrade — service registration, firewall rules, Start Menu shortcuts, the Reconfigure shortcut, and the registryDisplayIconall retarget without manual intervention. TheNortheBridge\parent directory is removed on uninstall if no other NortheBridge product owns it.Upgrade dialog now defaults to the new install path. A previously installed copy at
C:\Program Files\Sunshine\(or any other path containing\Sunshine\) is automatically relocated toC:\Program Files\NortheBridge\LuminalShine\on upgrade. Both the interactive BrowseDlg suggestion and silentmsiexec /quietinstalls honor the new path, so the new binaries land at the new location without manual intervention. Custom install paths that do not contain\Sunshine\are preserved as user choices.Pinned taskbar, desktop, and user-Start-Menu shortcuts are repointed during upgrade. A new
Repoint-LegacyShortcutsstep in the installer walks every user profile on the machine and rewrites any.lnkwhose target path or filename referenced the prior install. Rewrites are best-effort and never block the upgrade.Logs split into
%ProgramData%\LuminalShine\logs\(sibling of the existingconfig\directory). Existing*.logand rollover*.log.N/*.bakfiles migrate in place on first launch after upgrade. The in-app log viewer, log-export endpoint, and helper-log enumeration all follow the new root automatically.Executables renamed for brand consistency and to namespace generic tool names out of collisions with anything else on a user’s
PATH:sunshine.exe→luminalshine.exesunshinesvc.exe→luminalshinesvc.exesunshine_display_helper.exe→luminalshine_display_helper.exesunshine_wgc_capture.exe→luminalshine_wgc_capture.exedxgi-info.exe→luminalshine-dxgi-info.exeaudio-info.exe→luminalshine-audio-info.exeplaynite-launcher.exe→luminalshine-playnite-launcher.exe
Windows service renamed from
SunshineServicetoLuminalShineService. Autostart, service account, and ServiceInstall metadata are preserved across the rename; the priorsunshinesvcandSunshineServiceregistrations are cleaned up automatically during upgrade.TPM-sealed admin credentials and paired-client list are unaffected by the rename. The Windows Credential Manager entry (
LuminalShine/AdminCredentials) and the TPM-bound key (LuminalShineAdminCredentialsKey) were already brand-neutral; theResetAdminCredentialsaction remains gated onNOT UPGRADINGPRODUCTCODEso the MajorUpgrade sequence never wipes the vault.New Start Menu shortcut: “Reset LuminalShine Admin Password”. If the saved Web UI admin login ever ends up in an unauthenticable state, you can recover with one click: launch the shortcut, confirm the prompt, and your next visit to
https://localhost:47990will show a fresh first-time setup screen. Paired Moonlight clients, the apps list, and all other settings are preserved — only the admin login is reset.Service self-heal on unreadable admin credential. If the stored admin credential is ever found in a broken state (empty WCM blob, unparseable JSON, missing required fields), the service now logs a warning, erases the bad entry, and presents first-time setup on next browser visit instead of presenting an un-authenticable login form. TPM unseal failures are not auto-erased — those can be transient, and the new Reset Admin Password shortcut handles that case explicitly.
Named system objects renamed so a LuminalShine install coexists cleanly on a host that also has an upstream Sunshine-family product running:
Single-instance mutexes →
Global\LuminalShineDisplayHelper/Local\LuminalShineDisplayHelperDisplay-helper IPC pipe →
luminalshine_display_helperDisplay-event window class →
LuminalShineDisplayEventWindowNVAPI per-app profile →
LuminalShineStream(keyed onluminalshine.exe)Scheduled task author / trigger ID →
LuminalShine Display Helper/LuminalShineDisplayHelperLogonTrigger
Display-helper IPC pipe name is now a single shared constant in
display_settings_client.h, eliminating the prior risk of client and server drifting apart when the literal was spelled independently on each side.Crash-dump bundle generation recognises both the new
luminalshine_*filenames and the legacysunshine_*filenames, so a bundle assembled immediately after upgrade still includes any pre-migration.dmpfiles that Windows hasn’t aged out yet. The diagnostic log-collection helper now probes both the newNortheBridge\LuminalShine\config\logs\install location and the legacySunshine\config\logs\for older logs you may want to attach to a bug report.Log export and helper-log lookup walk both the new
LuminalShine\and legacySunshine\per-user appdata subdirectories. Logs from helpers that ran before the rename remain discoverable.Display-helper process cleanup matches both new and legacy helper executable names. A stale pre-upgrade helper is terminated reliably before the new helper takes its single-instance mutex.
Service launch path hardened.
luminalshinesvc.exenow resolves the main host binary via an absolute path derived from its own module location, instead of relying on the SCM’s current-working-directory inheritance. This removes an occasional silent launch failure observed on hosts where the service’s effective CWD was not the install root.MSI process-kill list now covers both new and legacy executable names. Upgrades from a prior install and reinstalls on a host already running the new binaries both kill the right processes before file replacement, so neither path leaves files mapped through reboot.
NVIDIA per-app driver profile is created/updated automatically on first launch as
LuminalShineStreamkeyed onluminalshine.exe, carrying the same GPU power-mode behaviour as before. A pre-existingSunshineStreamprofile from a prior install becomes a cosmetic entry in NVIDIA Control Panel that no longer matches any running process and can be removed manually if desired.
Windows 11 Insider Preview¶
No Insider-specific changes in this release. The general-availability migration applies identically on Insider Preview hosts, and the upgrade-time process-kill / display-helper-cleanup hardening above incidentally addresses several edge cases that surfaced most often on Insider builds.
Hotfixes¶
MSI upgrade dialog defaulted to the legacy
C:\Program Files\Sunshine\path instead of the newNortheBridge\LuminalShine\location. Root cause:WIXUI_INSTALLDIRmakes Windows Installer persist the prior install’sARPINSTALLLOCATIONacross upgrades andAppSearchre-seedsINSTALL_ROOTfrom it, overriding CMake’s new Directory-table default. Without an explicit override, both interactive BrowseDlg and silentmsiexec /quietupgrades would have laid the new binaries down at the legacy path — new brand, legacy location. Fixed with a Type-51SetPropertythat fires afterAppSearchand only whenINSTALL_ROOTstill contains\Sunshine\, so fresh installs and post-26.05.1 upgrades remain no-ops.Bootstrapper UI default install path also showed the legacy
C:\Program Files\Sunshine\even on fresh installs. The bootstrapper resolved its default from a hardcoded\Sunshineconstant that was missed in the rename, and pre-existing installs registered at the legacy path bled through into the BrowseDlg textbox. Now reflects the canonicalNortheBridge\LuminalShinepath; legacy-path detection mirrors the MSISetPropertyso the UI and the actual install behaviour converge.Web UI returned 404s on every asset; the encoder failed to start. The service binary, when launched by the Service Control Manager, inherited
C:\Windows\System32as its working directory. Relative asset paths (assets/web/index.html,assets/shaders/directx/*.hlsl,assets/desktop.png, etc.) resolved against System32 and were not found, producing a broken login form and a Platform-init failure with HRESULT0x80070003. The main host now anchors its working directory to the executable’s install root at startup before any relative-path lookup runs.Bootstrapper “Browse” button silently did nothing on hosts where the modern Windows shell folder picker (
IFileOpenDialog) failed to instantiate — most commonly observed under certain RDP configurations and on hosts with non-standard COM registration. The button now falls back to the classicFolderBrowserDialogif the modern picker errors out, and surfaces a diagnostic dialog if both pickers fail rather than appearing dead.The
--reset-admin-credentialsCLI subcommand worked, but every shipped invocation of it didn’t. The argument dispatcher only recognises subcommands prefixed with--, but the WiX uninstall action’sResetAdminCredentialscustom action and the bundled documentation both invoked it as a barereset-admin-credentials. As a result the manual-uninstall credential-clear path was a silent no-op in every release through26.05.0-rc3.hfx3. Both invocations now route correctly through the dispatcher; the new Start Menu “Reset LuminalShine Admin Password” shortcut provides a discoverable in-product alternative to ever needing the CLI.
Automated release for 26.05.0-rc3.hfx4.
Contributors¶
@NorthernLights
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-rc2…26.05.0-rc3.hfx4
26.05.0-rc2¶
Tag: 26.05.0-rc2 · Released: 2026-05-20 · Pre-release
LuminalShine 26.05.0 Update Release Candidate 2¶
Danger
LuminalShine now requires the Windows Credential Store and the Trusted Platform Module (TPM 2.0).
Important
This Release Candidate is being considered for the first Stable Release. Please report any issues you encounter so we can determine if this Release Candidate will be the first Stable Release.
General¶
Argon2id KDF for admin credentials, replacing single-round SHA-256. Parameters:
m=64 MiB,t=3,p=1, tuned for ~100 ms login latency. Versioned record format with transparent SHA-256 → Argon2id upgrade on the next successful login (5b3fa207).cred_storeabstraction decouples credential storage from the file backend, enabling per-platform storage drivers (a7953f5a).Windows Credential Manager backend stores the credential blob in the per-machine vault (DPAPI-sealed under the SYSTEM master key, TPM-bound by default on Windows 11). One-shot migration from the legacy
sunshine_credentials.jsonfile, plus a “Reset Admin Credentials” card in Troubleshooting (2f61739b).Linux libsecret + macOS Keychain backends with silent file-backend fallback on Linux when the Secret Service is unreachable (
eec5d7b9).TPM-bound credential sealing on Windows via the Microsoft Platform Crypto Provider — non-exportable RSA-2048 key wraps the AES-256-GCM credential key. Default ON; opt-out toggle in Settings → Files. An attacker who acquires the raw WCM bytes cannot decrypt them without the original TPM device (
dc661c80).MSI uninstall clears the WCM entry + TPM key by default (
KEEPADMINCREDENTIALS=1opts out). Newcrypto::secure_wipehelper wipes intermediate plaintext credential buffers at every load/save/verify call site. Pairings live insunshine_state.jsonand are preserved across every credential reset (f29b3564).Playnite auto-sync default flipped from ON to OFF — fresh installs no longer auto-publish a Playnite library without an explicit opt-in.
Steam Library Integration: VDF parser + Steam path discovery + multi-file app loader. The Moonlight app list now merges
apps.json+steam_apps.json+nonsg_apps.jsonin canonical display order: Desktop → Steam → user-added apps.json entries → Steam Games → Non-Steam Games (cddb4813).Steam library auto-sync scans every installed Steam game via
appmanifest_*.acfacross all Steam library folders, writessteam_apps.json, surfaces games in Moonlight under a dedicated “Steam Games” section. 30-second background polling means new installs appear automatically. Launch viasteam://rungameid/<appid>. New “Steam Library” Settings tab placed above Playnite with master toggle, family-share inclusion sub-toggle, and a “Clear Steam Library Cache” Troubleshooting card. Default OFF (3942c19b).Non-Steam shortcuts auto-sync scans every Steam user’s
shortcuts.vdf(binary VDF parsing), surfaces “Add a Non-Steam Game” entries under a “Non-Steam Games” section. Independent toggle in the same Settings tab. Default OFF (ff87cfa1).AMD AMF capability probe +
/api/health/amd-encoderendpoint. Native probe ofamfrt64.dllreports per-codec hardware encoder instance counts so the UI can offer codec-specific options only when the active GPU actually supports them (654b6975).amd_split_encodeconfig option exposed in the Settings UI withAuto/Enabled/Disabledmodes — surfaces only when an AMD adapter is active (f4d963b6).AMD dual-VCN split frame encoding wired into the AV1 and HEVC AMF paths so RDNA 3 7900-series and RDNA 4 9070-series cards encode each frame on both hardware encoder instances in parallel; single-VCN parts silently fall back to single-tile (
6b25f4bb).amd_split_encodedefault flipped toAutoso users on dual-VCN cards get the latency win without having to opt in (a1d396b7).DLSS / DLSS Frame Generation / DLAA detection at session start with a soft, one-shot informational tip when 4K HDR + NVENC + AI render modules are detected in the foreground game. Tone is helpful, not a warning (
6239a62b).Log extraction enhancements for the Troubleshooting page — richer filtering and surfacing for diagnostic logs (
d5c28cc5).PowerShell 5.1 minimum / PowerShell 7 recommended is now documented in the System Requirements table, with a link to Microsoft’s official PowerShell 7 GitHub repo (
2ff05a09).Release artifact naming standardised to
LuminalShine_x64-*:LuminalShine_x64-installer.exe,LuminalShine_x64-portable.zip,LuminalShine_x64-debuginfo.7z. The raw MSI is built every run but stays in the CI artifact bundle rather than being attached to the public release page (15d11f53,9ca08ccb).
Windows 11 General Availability¶
SudoVDA recovery ladder (Phase 3 of the TDR remediation plan) — new in-place two-level recovery for SudoVDA when a GPU TDR wedges the display stack. Level 1 recycles the SudoVDA user handle (
closeVDisplayDevice→initVDisplayDriver); Level 2 does a PnP disable + enable on the SudoVDA root device (root\sudomaker\sudovda), equivalent to the Device Manager right-click. Scoped to the SudoVDA HWID only; MTT VDD and other devices are never touched. New “Restart Virtual Display Driver” escape hatch added to the Troubleshooting page so users can fire Level 1 + Level 2 manually without waiting for the auto-recovery branch (84550135).
Windows 11 Insider Preview¶
WDDM reset recovery (Phase 4 of the TDR remediation plan) — new Level 3 recovery via
Ctrl+Win+Shift+Bfor when SudoVDA Level 1 + Level 2 cannot bring the display stack back, usually because the WDDM context itself is stuck mid-TDR-recovery rather than anything wrong with SudoVDA. SYSTEM-context callers cannotSendInputinto the interactive session, so the keystroke is routed throughdisplay_settings_helper, which already runs in the user session. New IPC frame typeWddmReset = 9, 15-minute per-process cooldown to prevent runaway escalation, sleeps 3 seconds for Windows to settle, then recycles the SudoVDA handle so the nextAddVirtualDisplayopens a fresh kernel binding against the recovered display port. The auto-recovery ladder escalates Level 1 → 2 → 3; the manual “Restart Virtual Display Driver” button still tops out at Level 2 so the user’s desktop never gets blanked without a less-disruptive remedy having been tried first (1eff52a3).Pre-flight D3D11 health check at session start (Phase 5 of the TDR remediation plan) — detects a stuck WDDM context before the first frame is captured and triggers the recovery ladder proactively instead of failing into a black stream (
1eff52a3).
Hotfixes¶
MSI installer: SudoVDA driver installation no longer silently fails on PowerShell 5.1-only hosts. The
POWERSHELL_PATHMSI property defaulted to a literal[SystemFolder]\WindowsPowerShell\v1.0\powershell.exeplaceholder that MSI’s one-level property formatter never recursively expanded, causing every PS-launching deferred custom action — including the SudoVDAinstall.ps1post-step andinstaller-migrations.ps1— to spawn a path that didn’t exist (0x80070002 ERROR_FILE_NOT_FOUND). Now resolved via two orderedSetPropertyType-51 immediate CAs that anchor PS 5.1 first, then override to PS 7 when detected. Affected installs can recover by running an MSI Repair after upgrading (87c262b1).Settings UI: log extraction
grep/awkcommands fixed for improved Troubleshooting log parsing on locales that previously produced truncated output (a1386cf6).Build: forward-declare
check_content_typeso the Windows test build compiles cleanly when the function is used before its definition inconfighttp.cpp(f96b7e37).Build:
sunshine_taggregate initialiser converted to C++20 designated initialisers andOSSL_KDF_NAME_ARGON2IDreplaced with its canonical string literal so the credential-hardening series compiles under the MSYS2 UCRT64 / clang 16.1 /gnu++23toolchain used by the coverage CI (c4be3a43).Build:
#include <cstdint>added to thesrc/steam/TUs so the Steam Library Integration compiles on libstdc++ 16 (which does not transitively include<cstdint>via<algorithm>/<optional>). Non-WebRTC test-build-Wunused-*warnings silenced via[[maybe_unused]](141fa1b7).
Automated release for 26.05.0-rc2.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-rc1…26.05.0-rc2
26.05.0-rc1¶
Tag: 26.05.0-rc1 · Released: 2026-05-18 · Pre-release
LuminalShine 26.05.0 Update Release Candidate 1 (RC1)¶
Note
This is the first Release Candidate release of LuminalShine. Depending on extensive testing, this may be released as the first “Release” version.
This release lands the full GPU TDR (Timeout Detection and Recovery) remediation plan as four cooperating layers: detect the failure unambiguously, bound the session-shutdown window, recover the SudoVDA virtual display in place without ever falling back to a different driver, and warn proactively when the at-risk workload pattern is present. The driver-level interaction between sustained AV1 NVENC streaming, DLSS / DLAA / Frame Generation, and 4K HDR — which has been the dominant cause of mid-session black screens on RTX 40 / 50 series — is now addressed at every layer LuminalShine controls.
General¶
Streams no longer freeze for minutes after a GPU crash. When the encoder hits the post-TDR
D3D11CreateDeviceretry exhaustion, the session unwinds within ~10 seconds and the Moonlight client receives an immediate, intelligible failure instead of staring at a frozen image. Previously the recovery loop could leave the session wedged for ~2.5 minutes before the 10-second hang watchdog fired.New “GPU / Display Stack Health” card in the Troubleshooting view. Shows the count of TDR-class events recorded since the process started, when the most recent one fired, which subsystem detected it (encoder D3D11, Desktop Duplication probe, virtual-display enumeration, or QueryDisplayConfig), and the underlying HRESULT. Refreshes on login and on demand.
Recovery-aware session gate. New streaming sessions are refused while LuminalShine is mid-recovery from a TDR, so reconnects don’t pile up against a stuck display stack. The client sees a clean disconnect and retries cleanly once the recovery completes.
Single high-signal log line for every TDR escalation. Each incident emits one
GPU TDR escalated to WDDM stack failureline tagged with the source subsystem so support readers can grep one symptom instead of correlating five.New
/api/health/tdrand/api/health/render-stackendpoints. Power users and dashboards can poll the same data the Troubleshooting card surfaces.
Windows 11 General Availability¶
SudoVDA auto-recovery ladder. When the display stack is wedged, LuminalShine now escalates through a two-level in-place recovery sequence keyed on SudoVDA’s hardware ID — the user-mode driver handle is recycled first; if that’s not enough, the SudoVDA root device is PnP-disabled and re-enabled (the equivalent of right-clicking the device in Device Manager, but run from the SYSTEM service). Cooldown-gated: 15 seconds for the cheap recycle, 5 minutes for the disable/enable. MTT VDD and unrelated UMDF drivers are never touched.
“Restart Virtual Display Driver” recovery button in Troubleshooting. A one-click escape hatch that runs the PnP disable+enable on demand, ignoring the auto-recovery cooldowns. Useful when you suspect SudoVDA is wedged but the auto-recovery hasn’t fired yet. Includes a confirmation dialog because it tears down any active streaming session bound to the virtual display.
“Show Diagnostic” support button in Troubleshooting. Opens a modal with the full SudoVDA PnP status — device-present flag, instance ID, hardware IDs, parsed CM_PROB status, last recovery attempt and outcome — with a Copy-to-clipboard action. Replaces “open Device Manager and screenshot it” for support tickets.
“Virtual Display Adapter Failure detected” banner. Persistent warning across the top of the Troubleshooting view whenever the GPU / WDDM stack is mid-recovery, so the user sees what’s happening before scrolling to the cards.
Pre-flight D3D11 health check at session start. Before launching the encoder thread, LuminalShine runs a single
D3D11CreateDeviceprobe (~5 ms) to confirm the GPU stack is healthy. If it returnsDXGI_ERROR_UNSUPPORTEDorDXGI_ERROR_DEVICE_REMOVED, the session is refused with a clear log line — no more sessions hanging in display init after sleep/wake or after a TDR the recovery-recent flag has already aged out.Streaming environment tip when DLSS / DLAA / Frame Generation is detected alongside 4K HDR NVENC. LuminalShine walks foreground processes for
nvngx_dlss.dll,nvngx_dlssg.dll,nvngx_dlaa.dlland, when found alongside a 4K HDR 10-bit NVENC session, emits a single soft tip per (codec, resolution, HDR) tuple: a friendly heads-up that the combined Tensor + NVENC workload is a known driver-level interaction (not a LuminalShine defect), with a suggestion that switching to HEVC sometimes rides out concurrent workloads more smoothly. Surfaces as a system-tray toast plus a compact “Streaming environment” card in Troubleshooting. No action is required from the user — it’s an FYI, not a warning.System-tray notification on TDR detection. One toast per 2-minute cooldown so a single incident doesn’t fire repeatedly.
Windows 11 Insider Preview¶
WDDM reset (Ctrl + Win + Shift + B) as recovery Level 3. When the cheaper recovery levels can’t bring SudoVDA back — the canonical fingerprint of the WUDFHostProblem2 / HostTimeout pattern on Insider Preview channels — LuminalShine now synthesises the Windows built-in graphics-driver-reset keystroke. The request is routed through the existing display helper process (which runs in the user’s interactive session and has the desktop integrity level required for
SendInput) so SYSTEM-context callers can trigger it safely. After the keystroke is dispatched, the SudoVDA user handle is recycled and the nextAddVirtualDisplayopens a fresh kernel binding against the recovered display port.Rate-limited at 15 minutes per process. A permanently broken adapter is never hammered in a tight loop — but a single in-session wedge that survives Levels 1 and 2 of the ladder will be cleared without the user reaching for their keyboard.
Manual recovery button never triggers WDDM reset unprompted. The “Restart Virtual Display Driver” button caps at the PnP-cycle level (Level 2) because Level 3 momentarily blanks the entire desktop. Auto-recovery still escalates all the way to Level 3 when needed.
The previously-stuck install pattern (TDR followed by a 2.5-minute frozen reconnect) is now handled end to end. Detect → bound shutdown → ladder recovery → pre-flight gate on the next attempt. The Moonlight client should never see a multi-minute black screen again after a single TDR.
Automated release for 26.05.0-rc1.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-beta.7…26.05.0-rc1
26.05.0-beta.7¶
Tag: 26.05.0-beta.7 · Released: 2026-05-16 · Pre-release
LuminalShine 26.05.0 Update Beta 7¶
Tip
This is the final Beta version before we enter the Release Candidate Stage.
Important
Update to this version as soon as possible. It resolves a critical bug with pairings not being retained by LuminalShine.
General¶
Pairings now persist through a corrupted state file.
nvhttp::save_statepreviously short-circuited and returned the moment it couldn’t parse the existingsunshine_state.json— which meant that on a broken install, every new pair was silently dropped before the atomic write and the rotating.bakhad a chance to fire. The save path now flows through the same recovery-aware loader as the read path: if both the primary and.bakare unusable, an empty tree is used and the corrupt file is overwritten with valid new content. New pairings stick.Stacked brand-mark in the navigation header. The web UI’s top-left identity block now stacks “LuminalShine” over “NortheBridge Foundation” in the gitdocs.northebridge.com type style, with the Sunshine logo on the left wearing a soft cyan halo. Product name leads; foundation attribution stays visible without dominating the nav.
“Reset Stored Pairings” escape hatch in Troubleshooting. New
POST /api/state/resetendpoint (auth-gated) and matching button in the Troubleshooting view. Archives the currentsunshine_state.json,luminalshine_state.json, and their.baksiblings to.corrupt-<UTC-timestamp>(kept on disk for forensics), clears in-memory pairings, generates a new host UUID, and writes a fresh empty state. Admin credentials are NOT touched — login survives the reset. Use this when the auto-recovery paths can’t resolve a corruption on their own.
Windows 11 General Availability¶
Upgrades no longer race the running service. The installer now stops the LuminalShine service unconditionally on every upgrade and repair, not just on basic/silent (
UILevel < 5) installs. The previous gating meant interactive upgrades had to rely on Windows Restart Manager to detect file-in-use, which is unreliable when Defender holds a scan handle onsunshine.exe. The result was sporadic “Access Denied” rollbacks of the whole MSI transaction, leaving LuminalShine in an unusable state.Service stop retries with backoff. The PowerShell stop block retries
Stop-Serviceup to 5 times with 1-second backoff so transientStoppingstates from SCM can’t leak past file replacement. The companion process kill list now also includessunshine_display_helperanddisplay_helper, both of which were observed holdingsunshine_*.dllopen across upgrades.Migration failures can no longer roll back an install.
RunInstallerMigrationsis now flaggedReturn="ignore", so a best-effort config migration that hits a sharing violation or transient error never tears down the MSI transaction. The C++ runtime carries the same migration logic as a safety net on first launch.Runtime migration refuses to import corrupt JSON.
platf::appdata()now validates each*.jsonfile before copying it from the legacy<INSTALL_ROOT>\config\directory into%ProgramData%\LuminalShine\config\. Zero-byte and unparseable files are skipped with aWarning: appdata: skipping unparseable JSON during migration: ...log line, so a corrupt state file from a previous broken install doesn’t propagate into the new location.Self-heal for a stuck install. When
sunshine_state.jsonexists at exactly zero bytes AND no.bakis present, LuminalShine now deletes the empty file on startup so the next save can write cleanly. Targets the exact stuck signature produced by the previous beta’s silent-abort bug — no manual elevation or File Explorer surgery needed.Visible migration diagnostics. Every
std::filesystem::copyfailure (Access Denied, sharing violation, antivirus quarantine, disk full) is now logged throughBOOST_LOGinstead of being silently swallowed. The installer’s PowerShell migration script also tees its full output to%TEMP%\luminalshine-installer-migration.logso the next install incident is diagnosable from a single file.
Windows 11 Insider Preview¶
Interactive-UI upgrades on Insider Preview no longer hit “Access Denied” during the install routine. The combination of the unconditional service stop, the retry/backoff loop, the broadened process kill list, and the non-fatal migration flag closes the exact MSI rollback path that left LuminalShine in an unusable state on flight upgrades. The fix is concentrated at the points where Insider Preview servicing and Defender are most likely to be holding scan handles or staged-file replacements: just before
InstallFiles, and aroundRunInstallerMigrations.Corrupt state files from a prior broken upgrade no longer follow you forward. Earlier flight cycles could leave a zero-byte
sunshine_state.jsoninC:\Program Files\Sunshine\config\that the installer would faithfully copy into the new%ProgramData%\LuminalShine\config\location. The runtime migration now validates each JSON file before copying — and if a previous install already deposited an empty file at the new location, the self-heal on next launch removes it so the first new pair can write a clean state plus a fresh.bak.The previously-stuck installation self-recovers on first launch. No manual cleanup is required: the empty
sunshine_state.jsonis removed, the next pair attempt writes valid state, the.bakchain finally bootstraps, and every subsequent boot is protected by the recovery loader. If anything else ever wedges it again, the new “Reset Stored Pairings” button in Troubleshooting is the manual lever.
Automated release for 26.05.0-beta.7.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-beta.6…26.05.0-beta.7
26.05.0-beta.6¶
Tag: 26.05.0-beta.6 · Released: 2026-05-15 · Pre-release
LuminalShine 26.05.0 Update Beta 6¶
Important
It is recommended to update to this version ASAP, as it resolves a critical issue where pairings of devices are lost.
Tip
This is a potential release to become Release Candidate 1.
General¶
Aurora-glass Web UI. The Vue web interface (
https://localhost:47990) has been redesigned to match the NortheBridge Foundation brand at gitdocs.northebridge.com. New deep-navy aurora background with cyan/violet/teal halos, frosted-glass cards and modals, Inter typography, gradient-text headings, and a brand-mark pill in the header. The light theme has been retired; the UI is now dark-only with the “Alexa+ Cyan” accent throughout.Crash-safe state writes. All persistent state (pairings, admin credentials, web session tokens, API tokens, snapshot exclusions, apps) is now written atomically with an fsync barrier before rename, so a power loss or sudden shutdown mid-write can never surface a zero-byte file on the next boot. Every successful save also refreshes a sibling
.bakcopy.Automatic recovery from corrupted state. When a state file fails to parse — whether from a torn write, a Windows servicing reboot, or external interference — LuminalShine now transparently falls back to the most recent
.bak, restores it to the primary location, and continues. The previous build silently treated an unreadable state file as “empty,” which could wipe pairings on the next save.Publisher metadata corrected. CI-built installers and binaries now identify their publisher as NortheBridge Foundation consistently (previously some CI artifacts shipped as just “NortheBridge”). The Windows registry “Publisher” string, the in-app “Package Publisher” log line, and the WiX installer manifest all match.
Windows 11 General Availability¶
Config moved to
%ProgramData%\LuminalShine\config\. State files (sunshine_state.json,luminalshine_state.json,sunshine_credentials.json,apps.json,sunshine.conf) no longer live underC:\Program Files\Sunshine\config\. The new location sidesteps UAC VirtualStore redirection — previously, files written by the SYSTEM service and files written by user-context tools could end up in two different views of the same path, producing confusing “credentials reset” or “lost pairings” symptoms.One-time automatic migration. On the first launch after upgrade, LuminalShine copies your existing pairings, credentials, apps, and configuration from the legacy location into the new one. The copy is idempotent and never overwrites existing data — if you’ve already started the new build, your current configuration is preserved.
Installer-side migration. The MSI/EXE installer also runs the same migration during upgrade, so users who run the installer twice (or who reinstall over an existing install) get their pairings in place immediately on first launch — no first-run handoff window.
Windows 11 Insider Preview¶
Pairings now survive flight upgrades. The most disruptive symptom on Insider Preview builds — pairings disappearing overnight after a Windows Update or servicing reboot — is fixed at the root cause. Cumulative updates and Insider Preview flight installs can stage Program Files subdirectories using rename/replace operations that briefly leave files at zero bytes; with config in
%ProgramData%, those operations don’t touch LuminalShine state at all.Belt-and-suspenders recovery for servicing windows. Even when the new location is touched (e.g. by Defender quarantining or a third-party “cleanup” tool), the new
.bakrotation and recovery path automatically restore the last known-good state on the next boot, with aWarning:log line so you can see recovery happened. The previous build would silently start with empty pairings and then immediately overwrite the.bakon the first save, sealing the loss.Faster diagnosis of remaining state issues. Write failures now log specifically through the
statefile:channel (e.g.statefile: atomic rename failed: …,statefile: recovered <path> from backup), and theSessionTokenManager/ApiTokenManagerwrite paths route through the same atomic helper, so the recurringfailed writing state file: write errorlines that appeared in Insider Preview logs are addressed by the same fix that protects pairings.
Automated release for 26.05.0-beta.6.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-beta.5…26.05.0-beta.6
26.05.0-beta.5¶
Tag: 26.05.0-beta.5 · Released: 2026-05-14 · Pre-release
LuminalShine 26.05 Update Beta 5¶
Important
It is recommended to update to this version of LuminalShine as soon as possible. It corrects a critical bug that may cause loss of LuminalShine Pairings and Administrative Access.
General¶
No General changes in this build.
Windows 11 General Availability¶
Critical fix: admin credentials and Moonlight pairings no longer reset on service restart. Two separate failure modes were corrupting the host state file: a write race between the credentials-save path (save_user_creds) and the pairings-save path (save_state), both targeting sunshine_state.json with inconsistent locking, and non-atomic file writes that could leave a truncated file behind if a concurrent operation interrupted the write. Concurrent pair events landing in the window between the credentials handler’s read and write would silently roll back any pairings added in that window, and a partial write would cause the next startup to reject the file outright — wiping credentials, the unique host ID, and every paired device.
Atomic writes. State and credentials file writes now go through a temp-file-plus-rename path (MoveFileExW on NTFS). Concurrent readers and crash recovery see either the full prior contents or the full new contents — never a partial file.
Mutex coverage. save_user_creds, reload_user_creds, and the password-change HTTP handler now all serialize against the same lock that save_state already used. Pair events and credential changes can no longer interleave destructively.
Defensive read-back. After saving a new password the host immediately re-hashes the supplied password against the salt it just wrote, compares it to in-memory state, and returns a 500 “Failed to persist new credentials” if they don’t match — so a write that succeeded on the API surface but failed at the filesystem (permissions, antivirus quarantine, etc.) is now reported at save time instead of silently failing at the next login.
Separate credentials file. Admin credentials now live in their own sunshine_credentials.json next to sunshine_state.json instead of sharing the file with pairings. Existing installs are migrated automatically on first launch: any legacy username/salt/password at the top of sunshine_state.json is moved to the new file and stripped from the state file. Idempotent — once the dedicated file exists, the migration is skipped forever.
Regression coverage. New unit suite locks down the atomic-write contract (replaces target, leaves no .tmp, creates parent dirs), the migration round-trip (creds moved, legacy keys removed, paired devices under root.named_devices preserved), and migration idempotency.
Windows 11 Insider Preview¶
No Insider-specific changes in this build. The credentials fix applies equally to GA and Insider hosts.
Automated release for 26.05.0-beta.5.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-beta.4…26.05.0-beta.5
26.05.0-beta.4¶
Tag: 26.05.0-beta.4 · Released: 2026-05-13 · Pre-release
LuminalShine 26.05.0 Update Beta 4¶
Note
LuminalShine is currently pre-release software. Please report any issues on GitHub Issues.
General¶
Render GitHub release notes on the Dashboard as Markdown. The “Release Notes” panel that pops out from the update banner used to display the raw Markdown source (bold, # headings, link). It now renders proper formatting — headings, lists, bold/italic, links, tables, task lists, syntax-highlighted code blocks (via highlight.js with GitHub-dark colors), and GitHub-style autolinks for @username and #issue references — all sanitized through DOMPurify so untrusted release-body content can never inject script. Links open in a new tab so the Dashboard never gets navigated away from.
About page with diagnostics, accessible from the navigation. A new read-only page that surfaces, in copy-friendly form: version / commit / branch, GPU vendor and VRAM, driver versions and dates, encoder probe results (H.264 / HEVC / AV1 with YUV444), reference-frame-invalidation support, virtual display backend status, HDR state on each connected display, Windows OS version and edition, and the Windows Insider channel and ring when applicable. Designed to be screenshotted or copied straight into a support ticket or GitHub issue.
High Performance Streaming card on the Dashboard. New one-click profile that retunes virtual display, display automation, double-refresh workaround, encoder preset, NVENC HAGS, and minimum CPU thread count for high-end host setups. Vendor-aware: NVENC settings on NVIDIA, AMF analogs on AMD, QuickSync analogs on Intel. Snapshots the user’s prior settings to local storage on enable, with explicit “Restore Previous User Settings” and “Restore to Default” actions on the card. Tested on an NVIDIA Blackwell 5080-class GPU, Intel Core i9-12900KS, 64 GB RAM, Wi-Fi 6E to Wi-Fi 5 Moonlight clients, and 10 Gbps host networking.
Correct “Windows 11” labeling in diagnostics. On Windows 11 hosts, the About page (and any other consumer of the platform product-name metadata, including support bundles) was showing “Windows 10 Pro” / “Windows 10 Enterprise” / etc. because Microsoft deliberately leaves the registry’s ProductName value as “Windows 10 X” on Windows 11 for application-compatibility reasons. The product name now disambiguates by build number (≥ 22000 → Windows 11) and rewrites the marketing prefix accordingly. Idempotent: if Microsoft ever updates the registry value natively, the rewrite becomes a no-op.
Web UI dark palette swap. Dark theme accent moved from Indigo to Alexa Cyan to align with the LuminalShine brand identity.
Windows 11 General Availability¶
Wix bootstrapper sticky-footer layout. The Install / Update / Uninstall / Close buttons in the installer’s bootstrapper window are now always visible. Previously, when the install section grew (driver chooser, currently-installed banner, tips, status), the content card pushed the footer row past the visible window bottom. Content above now scrolls; the footer stays pinned. Window minimum width was bumped 760 → 880 px (target 920 px) so the worst-case button row no longer clips the rightmost actions.
Wix bootstrapper UI accent. The installer’s accent color is swapped from Indigo to Alexa Cyan to match the web UI’s brand direction.
Streamlined installer downloads. The standalone .msi is no longer published as a separate release artifact. The bootstrapper .exe already contains the MSI as its embedded payload, so end users get a single installer (LuminalShine-Windows-AMD64-installer.exe) and the portable archive (LuminalShine-Windows-AMD64-portable.zip). No behavior change — installing the .exe writes the same Windows Installer database that the MSI did.
Windows 11 Insider Preview¶
No Insider-specific changes in this build. All recent stability work for Canary builds (D3D11CreateDevice TDR backoff, SudoVDA/MTT QueryDisplayConfig handle reset, progressive WGC helper handshake) shipped in the previous release. This build’s user-facing changes apply equally to GA and Insider hosts.
Automated release for 26.05.0-beta.4.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-beta.3…26.05.0-beta.4
LuminalShine 26.05.0 (Beta 3)¶
Tag: 26.05.0-beta.3 · Released: 2026-05-09 · Pre-release
LuminalShine 26.05 Update Beta 3¶
General¶
Rebranded to NortheBridge Foundation across the build system, MSI publisher metadata, README, contributing docs, system-tray strings, and Playnite plugin author. The earlier “NortheBridge North America” identity is preserved as a historical footnote in the README.
System-tray context menu entry renamed: “Open Sunshine” → “Open LuminalShine”. The auto-comment template that asks users to export logs from a GitHub issue was updated to match the new menu label.
Pre-Release and General Availability updates are now both queried by default. The setting description explains that Windows Insider Preview builds may require a Pre-Release version to be installed; the toggle is still available if you want to restrict to stable channel only.
New About page at /about, reachable from the navigation bar. Surfaces a screenshot-friendly diagnostics snapshot — LuminalShine version + commit, OS edition + channel + version, per-GPU driver info (vendor, model, VRAM, driver version, driver date, graphics API), encoder availability (H.264 / HEVC / AV1 / YUV444), per-display HDR support and current state, virtual-display backend + version + status, hostname / port / active stream count. Two action buttons copy the full set as either plain text or fenced Markdown for issue templates.
Update checks now succeed on Windows hosts with a busy root certificate store. schannel rejected the previously-built CA bundle when it crossed 1 MiB. The bundle is now deduplicated by SHA-256 fingerprint, filtered to actual trust anchors (BasicConstraints + KeyUsage.keyCertSign), and size-capped, with CURLSSLOPT_NATIVE_CA preferred up front so most builds skip materializing a bundle entirely.
Cleaner support logs at startup. The NVENC encoder probe’s expected “GPU doesn’t support AV1 YUV444” + “NvEncUnregisterAsyncEvent: NV_ENC_ERR_DEVICE_NOT_EXIST” pairs no longer log at Error level on every cold boot — the YUV444-not-supported message is now Warning (still visible but not alarming), and the cleanup-after-aborted-init NV_ENC_ERR_DEVICE_NOT_EXIST case is filtered to Debug. The // Ignore any errors mentioned above // workaround comment that papered over the noise is no longer needed.
Build infrastructure overhaul. GitHub Actions workflows migrated to Node.js 24 ahead of the 16 September 2026 deprecation deadline (msys2/setup-msys2 → v2.31.1, softprops/action-gh-release → v3.0.0, vmactions/freebsd-vm → v1.4.5, LizardByte/actions/* → v2026.417.35446). The Web UI build step now uses the official MSVC-built Windows Node.js binary from actions/setup-node instead of MSYS2’s mingw-w64 nodejs, eliminating a std::bad_weak_ptr crash class affecting npm ci and vite build — relevant for anyone building from source.
Windows General Availability¶
Wix Bootstrapper action buttons are now always visible. Earlier revisions used Auto-sized rows on a Top-aligned card, which let tall content push the Install / Update / Remove / Quit buttons below the visible window — buttons existed in the visual tree (still focusable via Tab + Enter) but rendered off-screen. The card is now a sticky-footer layout: content area scrolls if needed, action buttons stay anchored at the bottom. Window minimum width also bumped to 880 px so the wide reconfigure-mode “Switch virtual display driver” button row no longer clips on the right edge.
Wix Bootstrapper defaults to SudoVDA with rewritten explanatory descriptions for both SudoVDA and MTT VDD radio options. The text spells out which driver to pick for which Windows build, and the installer’s pre-existing detection of an already-installed driver continues to pre-select that option on upgrade or reconfigure.
Driver detection in the web interface now returns a real status instead of perpetually showing “unknown.” On a typical desktop host (physical monitor present, no active stream yet), the virtual-display driver status was never updated from its initial UNKNOWN state until streaming actually started. The metadata endpoint now lazy-probes the driver on first hit, and the Audio/Video tab re-fetches metadata on backend selection change plus exposes a “Re-check driver” button next to the status indicator.
D3D11 device creation now survives a transient post-TDR window. When the GPU recovers from a Timeout Detection and Recovery event, D3D11CreateDevice returns DXGI_ERROR_UNSUPPORTED (0x887A0004) for several seconds while the kernel rebuilds the driver state. The previous one-shot calls in both the encoder bringup path and the Desktop Duplication test path treated this as a hard failure, ending streaming sessions in a recovery loop. A new D3D11CreateDeviceWithRecovery helper retries those transient HRESULTs with exponential backoff (1 s → 2 s → 4 s → 8 s, ~15 s budget) before giving up. A successful retry logs an info-level “recovered after N attempts” line for triage.
Slow-start streaming sessions take seconds, not 14 seconds. The WGC capture helper handshake used a fixed 3-second budget per attempt, and a slow process spawn (antivirus inspection, slow user-token resolution) was being treated as a deadlock — the parent process would terminate the helper and relaunch in a loop until something stuck. The first attempt of each session keeps the tight 3 s budget so a real deadlock still fails fast; once a timeout has been observed in this process, subsequent attempts use a 6 s budget that catches the slow-start case in one retry instead of four.
Encode-wait timeout log lines now carry diagnostic context. A new info-level line is emitted just before the existing error, reporting session age, current frame index vs last successfully-encoded frame index, time since the previous successful encode, configured frame shape (resolution, buffer format), and the force-IDR flag. Paired with the new D3D11 retry log it makes “GPU hung mid-stream and recovered” a single visible trace in support bundles instead of “we suddenly stopped getting packets and don’t know why.”
Windows Insider Preview¶
The OS display config API stall after a NVENC TDR is now self-healing. On Insider Preview channels, QueryDisplayConfig returns ERROR_NOT_SUPPORTED (Win32 50) for several seconds after a GPU TDR — long enough that the libdisplaydevice submodule’s internal 9-attempt retry loop runs out and reports failure, leaving LuminalShine unable to resolve the active virtual display on resume. Previously this caused the resume loop to spin until the user killed the process. When the device-enumeration call returns nullopt three times in a row, LuminalShine now closes and reopens the SudoVDA / MTT VDD handle (which on Windows triggers a device-stack rebuild that frees QDC from its post-TDR stuck state) and retries enumeration once. Rate-limited to once per 30 seconds so a permanently-broken driver can’t be bounced in a tight loop.
Stream sessions now survive the Blackwell + Insider Preview NVENC TDR cascade end-to-end. This release ships the full recovery chain: when NVENC hangs on a long-running 4K@120 AV1 HDR session, the timeout-context telemetry records what state the encoder was in, the D3D11 retry helper waits out the kernel’s TDR window instead of failing on the first re-create, the virtual-display reset path rescues the OS display API from its ERROR_NOT_SUPPORTED stuck state, and the helper-handshake backoff keeps the subsequent reconnect from cold-starting into a deadlock loop. The four pieces work together; in isolation each only addresses part of the failure pattern.
Wix Bootstrapper now warns about Insider Preview encoder constraints. The SudoVDA radio button description in the installer and reconfigure flows now explicitly calls out: on Windows Insider Preview builds, SudoVDA only supports HEVC and AV1 encoding (with or without HDR). The MTT VDD description and tooltip mirror this — if you plan to stream using H.264 on an Insider build, choose the MTT Virtual Display Driver instead. SudoVDA remains the default selection.
About page detects the Insider channel and reports it correctly. On a Canary, Dev, Beta, or Release Preview host the page shows the channel name as a status badge and reports the OS version as Build NNNNN (the meaningful number on Insider) rather than a stale 24H2-style identifier. On a GA host the badge reads “Release (GA)” and the version uses the standard display-version format.
Automated release for 26.05.0-beta.3.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-beta.2…26.05.0-beta.3
LuminalShine Code Architecture: @NorthernLights
26.05.0-beta.2¶
Tag: 26.05.0-beta.2 · Released: 2026-05-09 · Pre-release
LuminalShine 26.05 Update Beta 2¶
General¶
Update checks now succeed on Windows hosts that have a busy root certificate store. The Windows trust store loader used to dump every cert from LOCAL_MACHINE\ROOT and CURRENT_USER\ROOT (commonly ~1,260 entries with heavy duplication) into a CA bundle that exceeded curl’s 1 MiB schannel limit, breaking GitHub release queries with schannel: CA file exceeds max size of 1048576 bytes. The bundle is now deduplicated by SHA-256 fingerprint, filtered to actual trust anchors (BasicConstraints CA: TRUE + KeyUsage keyCertSign), and size-capped — and CURLSSLOPT_NATIVE_CA is preferred up front so most builds skip materializing a bundle entirely. Boot-time log now reports trust-anchor count plus how many certs were filtered out for visibility into future regressions. (commit 0fadd32b)
Cleaner support logs at startup. The NVENC encoder probe deliberately tries AV1 + YUV444 first, expects it to fail on consumer GeForce hardware, and falls back to YUV420. That benign path used to produce six Error-level log lines per cold boot — papered over with a literal // Ignore any errors mentioned above // comment in the log itself. The two specific messages from this path (gpu doesn’t support YUV444 encode and NvEncUnregisterAsyncEvent failed: NV_ENC_ERR_DEVICE_NOT_EXIST during cleanup-after-aborted-init) have been demoted to warning and debug respectively. Real session-time encoder failures still surface at error. (commit 2cb79875)
System-tray context-menu entry now reads “Open LuminalShine”. Right-clicking the taskbar icon previously surfaced “Open Sunshine” — leftover from the upstream fork. The auto-comment that tells users how to export logs from a GitHub issue was updated to match. (commit 8783f15e)
Windows GA¶
D3D11 device creation now survives a transient post-TDR window. When the GPU recovers from a Timeout Detection and Recovery event, D3D11CreateDevice returns DXGI_ERROR_UNSUPPORTED (0x887A0004) or DXGI_ERROR_DEVICE_REMOVED (0x887A0005) for several seconds while the kernel rebuilds the driver state. The previous one-shot calls in both the encoder bringup path and the Desktop Duplication test path treated this as a hard failure, which under sustained encode load reliably ended streaming sessions in a recovery loop. A new D3D11CreateDeviceWithRecovery helper retries those two transient HRESULTs with exponential backoff (1s → 2s → 4s → 8s, ~15s total budget) before giving up. Non-transient failures still return immediately. A successful retry logs an info-level “recovered after N attempts” line for triage. (commit d529912f)
Slow-start streaming sessions take seconds, not 14 seconds. The WGC capture helper handshake used a fixed 3-second budget per attempt, and a slow process spawn (antivirus inspection of the helper exe, slow user-token resolution) was being treated as a deadlock — the parent process would terminate the helper and relaunch in a loop until something stuck. Fix: per-process consecutive-timeout tracker. The first attempt of each session keeps the tight 3-second budget so a real deadlock still fails fast; once a timeout has been observed in this process, subsequent attempts use a 6-second budget that catches the slow-start case in one retry instead of four. Counter resets on a successful handshake. (commit ac5dfeb7)
Encode-wait timeout log lines now carry diagnostic context. When NVENC stops returning packets, the previous one-line error gave no signal about whether the timeout was a transient bubble or the leading edge of a TDR. A new info-level line emitted just before the error reports session age, frame index vs last successfully-encoded frame index, time since the previous successful encode, the configured frame shape (resolution + buffer format), and the force-IDR flag — paired with the new D3D11 retry log it makes “GPU hung mid-stream and recovered” a single visible trace in support bundles. (commit 63d47022)
Windows Insider Preview¶
The OS display config API stall after a NVENC TDR is now self-healing. On Insider Preview channels, QueryDisplayConfig returns ERROR_NOT_SUPPORTED (Win32 50) for several seconds after a GPU TDR — long enough that the libdisplaydevice submodule’s internal 9-attempt retry loop runs out and reports failure to LuminalShine, which then can’t resolve the active virtual display on resume. Previously this caused the resume loop to spin until the user killed the process. Fix: when the device-enumeration call returns nullopt three times in a row, LuminalShine now closes and reopens the SudoVDA / MTT VDD handle (which on Windows triggers a device-stack rebuild that frees QDC from its post-TDR stuck state) and retries enumeration once. The reset is rate-limited to once per 30 seconds so a permanently-broken driver can’t be bounced in a tight loop. (commit ad1b8e58)
Stream sessions now survive the Blackwell + Insider Preview NVENC TDR cascade end-to-end. This release ships the full recovery chain: when NVENC hangs on a long-running 4K@120 AV1 HDR session (the failure observed in the 2026-05-08 support logs), the timeout-context telemetry (B6) records what state the encoder was in, the D3D11 retry helper (B1) waits out the kernel’s TDR window instead of failing on the first re-create, the virtual-display reset path (B2) rescues the OS display API from its ERROR_NOT_SUPPORTED stuck state, and the helper-handshake backoff (B4) keeps the subsequent reconnect from cold-starting into a deadlock loop. (commits 63d47022, d529912f, ad1b8e58, ac5dfeb7)
Automated release for 26.05.0-beta.2.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.05.0-beta.1…26.05.0-beta.2
26.05.0-beta.1¶
Tag: 26.05.0-beta.1 · Released: 2026-05-01 · Pre-release
LuminalShine 26.05 Update Beta 1¶
This is the initial release foundation of LuminalShine, featuring 26.04.0-alpha.7’s features, updates, and improvements in addition to the following general maintenance fixes:
General Changes
Update README.md for LuminalShine
Added SECURITY.md and Revised Supported Version of LuminalShine
Revised Contributing Guidelines
Revised Localization Details
Updated Preferred IDE to VSCode
Update Publisher Handling to “NortheBridge Software Foundation”
Windows General Availability & Windows Insider Preview Changes
Increase the size of the Wix Bootstrapper Installation / Update / Uninstallation Runtime
Enhanced Driver Status Handling
Automated release for 26.05.0-beta.1.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.04.0-alpha.7…26.05.0-beta.1
26.04.0-alpha.7¶
Tag: 26.04.0-alpha.7 · Released: 2026-04-30 · Pre-release
LuminaryShine Release 26.04 Update Alpha 7¶
General Fixes
Added SEH Handling for a number of features that openly required it for thread safety
Updated LuminaryShine to use NortheBridge Linking
Non-Windows Platform Support is deprecated (Going forward, LuminaryShine will support Windows on x64 for now)
Refactored “dead code” from the original code base of LuminaryShine
Windows (24H2 and Main Release Branch)
Resolved issues with LuminaryShine’s Installer, preventing the entire executable from being viewable
Added MTT VDD as a Display Driver Option in case a fallback is required. View Roadmap for LuminaryShine VDA
Windows Insider Preview Builds (Canary, Dev, Beta)
Resolved an issue with DXGI to allow Windows Canary Builds 28957 or later and current Windows Insider Preview Builds to stream using LuminaryShine (Note: You must use either HEVC or AV1. The thread dies when using H.264, and that is a Microsoft issue.)
Roadmap
Complete the transition of initial documentation to LuminaryShine
Examine H.264 Incompatibility
Replace SudoVDA and MTT VDD with LuminaryShine Virtual Display Adapter
Sign all Code Releases with a Codesigning Certificate
Automated release for 26.04.0-alpha.7.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.04.0-alpha.6…26.04.0-alpha.7
26.04.0-alpha.6¶
Tag: 26.04.0-alpha.6 · Released: 2026-04-30 · Pre-release
Automated release for 26.04.0-alpha.6.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.04.0-alpha.5…26.04.0-alpha.6
26.04.0-alpha.5¶
Tag: 26.04.0-alpha.5 · Released: 2026-04-29 · Pre-release
Automated release for 26.04.0-alpha.5.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.04.0-alpha.4…26.04.0-alpha.5
26.04.0-alpha.4¶
Tag: 26.04.0-alpha.4 · Released: 2026-04-29 · Pre-release
Pre-Alpha Early Access Software
Foundation for mutli-VDD Support. Use the latest LuminalShine in order to experience a modern Sunshine game host experience.
Automated release for 26.04.0-alpha.4.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.04.0-alpha.3…26.04.0-alpha.4
26.04.0-alpha.3¶
Tag: 26.04.0-alpha.3 · Released: 2026-04-29 · Pre-release
Pre-Alpha Early Access Software
Alpha 3 contains the foundation for the installation system and should not be used due to an error installing virtual display drivers. Please use Alpha 4 instead.
Automated release for 26.04.0-alpha.3.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.04.0-alpha.2…26.04.0-alpha.3
26.04.0-alpha.2¶
Tag: 26.04.0-alpha.2 · Released: 2026-04-29 · Pre-release
Pre-Alpha Early Access Software
This Alpha contains the foundation for all fixes related to Windows 11 Insider Preview and the current Windows 11 25H2 Builds butt does not expose them. Please use Alpha 3.
Automated release for 26.04.0-alpha.2.
Full Changelog: https://github.com/NortheBridge/luminalshine/compare/26.04.0-alpha.1…26.04.0-alpha.2
26.04.0-alpha.1¶
Tag: 26.04.0-alpha.1 · Released: 2026-04-29 · Pre-release
Pre-Alpha Early Access Software
Automated release for 26.04.0-alpha.1.
Full Changelog: https://github.com/NortheBridge/luminalshine/commits/26.04.0-alpha.1