Release Notes
Notice: Vibepollo can trigger false positive antivirus alerts. See the details and workarounds here: #29
1.13.1
- Fixed a bug that caused some machines to report they did not support HDR or HEVC until restarting the service.
- Fixed a bug that caused Artemis clients to apply the wrong FPS limit in some scenarios.
1.13.0
- Sunshine now supports per‑app and per‑client Settings Overrides, letting you override global settings without
touching your main config. - Overrides are searchable and type‑aware (toggles, selects, numbers, JSON), with guardrails to prevent unsafe system/
network changes. - Priority order is crystal‑clear and consistent:
- Client Overrides (highest priority)
- App Overrides
- Global Config (default baseline)
- You can now tailor encoding, capture, frame limiting, HDR behavior, and more—per client and per app—without breaking
global defaults.
Cold‑Boot Resilience
- Commands, app launches, and Playnite flows can start while no user is signed in.
- Streams can begin on the lock screen; display/app actions apply automatically after sign‑in without terminating the
stream.
New Features & Major Systems
- Per‑client display control: set a client‑specific display mode (e.g., 1920x1080x60), choose physical vs. virtual
display, and override virtual display mode/layout in the Clients UI. - Per‑client HDR color profile selection (Windows): pick a specific HDR calibration profile per client; Sunshine
applies it to virtual display creation and physical outputs during a stream. - Client session tracking: “Connected” status and last‑seen timestamps are tracked and shown; clients can be sorted by
recent activity or name. - Frame limiter FPS override: global FPS cap added (0 = use requested stream FPS), including UI support.
- Pre‑release notification flow: pre‑release builds now show pre‑release update notifications even if the checkbox is
off.
Quality of Life
- Client Management UI rebuilt for editing: inline edit/save/cancel, disconnect button, display selection helpers, HDR
profile picker, 10‑bit SDR preference override, plus overrides in one place. - App editor now includes a full Settings Overrides section (search, filter, type‑aware editors, JSON validation).
- Virtual display HDR guidance updated to point users to the new per‑client HDR selector.
- API token manager updated to expose the new client endpoints.
Detailed Bug Fixes & Stability
- Virtual display recovery:
- More reliable recovery monitor with active/inactive detection, abort controls, and retry limits.
- Recovery now re‑applies display configuration with retries and re‑initializes capture after recreation.
- Shorter driver restart timeout plus cooldown to avoid repeat failures; clearer error messaging.
- Display helper resilience:
- Fast DISARM path to stop restore loops during session start; hard‑restart helper when required.
- Deferred APPLY when no user session is available; retries with backoff.
- Adds restore grace windows to prevent thrash during quick reconnects.
- Output selection robustness:
- Detects inactive outputs and falls back to virtual displays when a user session can’t activate the target.
- Skips display configuration changes if virtual display creation failed (prevents unwanted disruptions).
- RTSS / NVCP frame limiter:
- Fixes NVCP limiter targeting (supports current global profile and base profile behavior).
- Can disable NV frame limit when RTSS is active to avoid fighting limiters.
- Refresh path to re‑apply RTSS limiter settings mid‑stream.
- Respects per‑app/provider overrides (gen1 framegen no longer stomps explicit NVCP choice).
- WGC (Windows Graphics Capture) stability:
- Prevents deadlocks with finite mutex timeouts.
- Protects against keyed‑mutex abandonment and pipe stalls.
- Avoids use‑after‑free during shutdown by waiting on in‑flight frames.
- Adds timeouts for helper process connection and config delivery.
- IPC capture session reliability:
- Destructor now does safe best‑effort cleanup.
- Keyed‑mutex errors trigger reinit rather than soft failure.
- Safer shared texture interface queries and size validation.
- Display helper snapshot restore:
- Properly accepts inactive but present displays (no longer requires active display names).
- Logs missing devices clearly and avoids invalid topology restores.
- Input polish:
- DualShock 4 motion data timeout extended (250ms → 750ms) to reduce false stale detection.
- Other correctness fixes:
- std::once_flag init made static to avoid repeated DPI init on Windows.
- Additional D3D multithread protection for encoder teardown.