Skip to main content

26.05.0-beta.5

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 (saveusercreds) and the pairings-save path (savestate), both targeting sunshinestate.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. saveusercreds, reloadusercreds, 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 sunshinecredentials.json next to sunshinestate.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


Original GitHub release