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_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: 26.05.0-rc1...26.05.0-rc2