github NortheBridge/luminalshine 26.05.0-rc2

latest releases: 26.08.4, 26.08.3, 26.08.2...
pre-release3 months ago

LuminalShine 26.05.0 Update Release Candidate 2

Caution

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_store abstraction 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.json file, 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=1 opts out). New crypto::secure_wipe helper wipes intermediate plaintext credential buffers at every load/save/verify call site. Pairings live in sunshine_state.json and 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.json in 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_*.acf across all Steam library folders, writes steam_apps.json, surfaces games in Moonlight under a dedicated "Steam Games" section. 30-second background polling means new installs appear automatically. Launch via steam://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-encoder endpoint. Native probe of amfrt64.dll reports 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_encode config option exposed in the Settings UI with Auto / Enabled / Disabled modes — 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_encode default flipped to Auto so 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 (closeVDisplayDeviceinitVDisplayDriver); 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+B for 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 cannot SendInput into the interactive session, so the keystroke is routed through display_settings_helper, which already runs in the user session. New IPC frame type WddmReset = 9, 15-minute per-process cooldown to prevent runaway escalation, sleeps 3 seconds for Windows to settle, then recycles the SudoVDA handle so the next AddVirtualDisplay opens 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_PATH MSI property defaulted to a literal [SystemFolder]\WindowsPowerShell\v1.0\powershell.exe placeholder that MSI's one-level property formatter never recursively expanded, causing every PS-launching deferred custom action — including the SudoVDA install.ps1 post-step and installer-migrations.ps1 — to spawn a path that didn't exist (0x80070002 ERROR_FILE_NOT_FOUND). Now resolved via two ordered SetProperty Type-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 / awk commands fixed for improved Troubleshooting log parsing on locales that previously produced truncated output (a1386cf6).
  • Build: forward-declare check_content_type so the Windows test build compiles cleanly when the function is used before its definition in confighttp.cpp (f96b7e37).
  • Build: sunshine_t aggregate initialiser converted to C++20 designated initialisers and OSSL_KDF_NAME_ARGON2ID replaced with its canonical string literal so the credential-hardening series compiles under the MSYS2 UCRT64 / clang 16.1 / gnu++23 toolchain used by the coverage CI (c4be3a43).
  • Build: #include <cstdint> added to the src/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: 26.05.0-rc1...26.05.0-rc2

Don't miss a new luminalshine release

NewReleases is sending notifications on new releases.