Releases: FoggyBytes/StreamLight
StreamLight v3.4.1
Version 3.4.1 - Frame Pacing Modes (11/06/2026)
✨ IMPROVEMENTS:
• Frame Pacing is now a four-way choice (Settings → Video) instead of a single on/off switch — Off, Automatic, Matched, Multiple. Automatic keeps the previous behaviour (hardware pacing when your display's refresh rate is a whole multiple of the stream's FPS, software otherwise). Matched forces software pacing, best when your screen runs at the stream's frame rate (e.g. 60 Hz for 60 FPS). Multiple uses hardware pacing only, with no software fallback — for a screen running a multiple of the stream (e.g. 120 Hz = 2× or 240 Hz = 4× for 60 FPS). Choosing Multiple guarantees the software pacer never engages, for anyone who wants only the lowest-latency hardware cadence
🙏 THANKS:
• Thanks again to @Soladus (#2) — the explicit Matched/Multiple modes come straight from your feedback after testing the 3.4.0 frame-pacing fix
StreamLight v3.4.0
Version 3.4.0 - The Smooth Motion Update (10/06/2026)
✨ NEW FEATURES:
• Smoother motion on high-refresh displays — the Frame Pacing option (Settings → Video) now automatically uses hardware frame pacing when your display's refresh rate is an exact multiple of the stream's frame rate (e.g. 60 FPS on a 120 Hz screen). Each frame is held on screen for the right number of refresh cycles directly in hardware, giving a perfectly even cadence and removing the panning judder that previously required external tools like NVIDIA Inspector or Special-K — with no extra setting to manage. Hardware pacing applies to the Direct3D 11 renderer (the Windows default); everything else falls back to software pacing exactly as before
• Frame pacing visible in the performance overlay — the overlay now shows the active frame-pacing mode (Hardware / Software / Off) so you can see exactly what's happening under the hood
• Overlay profiles — a new Overlay tab in Settings lets you choose how much the in-stream performance overlay shows: Off, Minimal (resolution, FPS, bitrate, latency and network drops at a glance), Default (a balanced set plus a compact host-metrics summary) or Full (every stat StreamLight collects, including the host's GPU / encoder / temperature / VRAM / CPU). A live preview shows exactly how the overlay will look for the chosen profile. The overlay control moved here from the Network tab, and bitrate is now shown in the overlay. The overlay hotkey now cycles through the profiles — Off → Minimal → Default → Full → Off — each press of Ctrl+Alt+O (keyboard) or Select+L1+R1+X (gamepad) jumps to the next one, and the Settings selector follows along
• Automatic reconnect on a slow host start — when a stream fails because no video ever arrives (the host's virtual display or HDR/AV1 encoder is still warming up on a cold start, which often required a manual second attempt), StreamLight now quietly retries once instead of showing an error. A brief "Host is starting up — reconnecting…" message appears and the resume usually connects immediately. Can be turned off in Settings → Network (on by default)
🎨 UI:
• A new Overlay tab in Settings (see above), with the performance-overlay control and a live mockup of each profile
• Settings rows are slightly more compact across every tab
• The grey/green highlight ring that appears around a toggle switch on hover, focus or press is now half the size — less obtrusive
🐛 FIXES:
• Fixed a visual glitch in the bottom status bar: while a host Windows-update job was running, the "Update" progress chip could overlap the version number in the bottom-right corner, leaving the text garbled. The chip and the version are now laid out together so they can never collide
• "X · Shutdown" always works now: pressing X (or clicking the shortcut) on the My Hosts screen opens the Power chooser to shut down this PC even when the highlighted host is offline — or when no hosts are configured at all. Host shutdown still requires an online, approved host
• Fixed a freeze that could lock up the whole PC when closing StreamLight while its window was in fullscreen mode, forcing a hard power-off. StreamLight now leaves fullscreen before shutting down so the graphics driver tears the window down cleanly
🙏 THANKS:
• Huge thanks to @Soladus for reporting the high-refresh judder (#2) and for thoroughly beta-testing the frame-pacing fix on both NVIDIA and AMD clients — your logs and measurements made this release possible
StreamLight v3.3.0
Version 3.3.0 - The "Patch Tuesday Update" (06/06/2026)
✨ NEW FEATURES:
• Update host: a new "Check Windows Update on host…" option (Options menu, approved hosts) checks the host for Windows updates, shows them classified (security & critical, Defender, optional — feature/version upgrades are listed separately and not installed remotely), and lets you choose "Security + Defender" or "All updates" before installing. The host installs and restarts itself if required — perfect for a headless PC
• Runs in the background: the update keeps going on the host even if you close the dialog. A status chip appears in the bottom bar (host + phase + progress); press RB (or click it) to reopen the full view at any time. No cancel once installing has started, to avoid corrupting the update. Download shows a live percentage; install shows progress until the host restarts
• Update and shut down: the Power… chooser can install pending Windows updates before powering off. It checks both the host and this PC and shows their update status (🟠 updates pending / ✓ up to date), and the "install updates first" option enables only when the selected device actually has updates waiting — otherwise it's greyed out, pointing you to the full "Windows Update" flow. Off by default; installing can make shutdown take noticeably longer
• Quicker access: the My Hosts status bar now has an "X · Shutdown" shortcut that opens the Power… chooser for the highlighted host directly — no need to dig into Options (gamepad X / click)
🎨 UI:
• Options chooser redesigned: the per-host "Options" menu is now a wide popup with a grid of tiles (an emoji and a short label each) instead of a long text list — quicker to scan and to navigate with a controller
• Tailscale unified into one tile: a host reachable both on your LAN and over Tailscale is now a single tile (no more duplicate "(Tailscale)" tile). When Tailscale is detected on the host the tile shows a "TAILSCALE — AVAILABLE" badge and lists both the local IP and the Tailscale IP; an "AVAILABLE" line means the LAN path is also up, while just "TAILSCALE" means it's currently reachable only over Tailscale. A new "Tailscale" option opens the host's apps over the 100.x address (greyed out if Tailscale isn't installed on this client); opening the host normally or "All Apps" uses the local connection. Existing Tailscale tiles are merged automatically on first launch
🙏 THANKS:
• Thanks again to @SolemnDucc for the follow-up suggestions (#1)
• Requires StreamTweak 7.3.0 or later on the host for the new update features. Update both apps together
StreamLight v3.2.0
Version 3.2.0 - The "Power Update" (05/06/2026)
✨ NEW FEATURES:
• Power… menu: a paired, online host now has a "Power…" option that opens a chooser to shut down the host PC, this (client) PC, or both. "Host" sends a power-off command to StreamTweak over the authenticated bridge; "Both" shuts the host down and then powers off this PC a moment later. Fully gamepad- and keyboard-navigable, with Cancel focused by default for safety
• Host shutdown requires approval: "Host" and "Both" are available only when the host has approved this device (AUTHORIZED badge); otherwise they are greyed out with a hint and only "Client" remains. The shutdown is sent signed, so an unapproved device can never power off your host
🙏 THANKS:
• Thanks to @SolemnDucc for suggesting this feature (#1)
• Requires StreamTweak 7.2.0 or later for the new power-off feature. From 7.2.0 the StreamTweak↔StreamLight authentication is mandatory (the host no longer has an option to turn it off) — update both apps together
StreamLight v3.1.0
Version 3.1.0 - The "Secure Bridge Update" (04/06/2026)
✨ NEW FEATURES:
• Authenticated StreamTweak bridge: StreamLight now signs every command it sends to StreamTweak (NIC control, host metrics, store map, session telemetry) with its existing Moonlight identity certificate — no password to type. The first time you open a paired host, StreamLight enrolls automatically and StreamTweak shows a one-time "Allow this client?" prompt displaying a 4-digit PIN to confirm against the one StreamLight shows. This closes the previously unauthenticated bridge, so a stranger on your network can no longer command your host or read its metrics
• Per-host access badge: each host card shows its StreamTweak access state at a glance — AUTHORIZED (green), PENDING (amber, waiting for approval on the host) or DENIED (red). The badge is hidden for hosts without StreamTweak. A new "Request StreamTweak access" option in the host's menu re-sends the approval request
🎨 UI:
• Dialog buttons: the affirmative action (Yes / OK / Add) is now on the LEFT and the dismissive one on the right; the green accent is reserved for the focused button, so the keyboard/gamepad selection is always unambiguous (previously the affirmative button looked highlighted even when focus was elsewhere)
• Rebranding: remaining user-facing "Moonlight" references replaced with "StreamLight" (Quit prompt, network-test, decoder and pairing messages, streaming window title), keeping "Moonlight" only where it refers to the upstream project/engine and the unchanged settings-storage location
🔧 IMPROVEMENTS (the 3.0.1 "Bridge Fix" work, now part of 3.1.0):
• Store badges sometimes missing: APPSTORES replies split across multiple TCP packets were truncated because the client read only the first packet; the bridge now buffers each reply until the protocol's newline terminator, so large game libraries always arrive complete
• Wrong host's data on rapid actions: concurrent bridge requests shared a single response signal and could deliver one host's reply to another (e.g. store badges from the wrong PC); each request now owns its own socket and callback, so responses can no longer cross over
• Store-badge cache mismatch: the cached store map was keyed by the host's position in the list, so adding or removing a host (or inserting a Tailscale tile) could attach it to the wrong PC; it is now keyed by host UUID
• Host metrics overlay could freeze: if the host accepted the STATS connection but never replied, the per-second poller waited indefinitely and stopped updating; a 3-second per-request watchdog now guarantees every poll completes
• Remote pause reliability: the host's stop signal was matched as a raw substring in the STATS response; it is now read from the parsed JSON field, so whitespace or field ordering can never miss — or falsely trigger — a session stop
• Bridge sockets are now parented to the bridge object, preventing dangling sockets if a request is still in flight when its owner is destroyed
ℹ️ Authorization never blocks streaming. If a host has not authorized this client, you can still stream from it normally — only the StreamTweak integration is unavailable: host metrics overlay, NIC speed & one-click Streaming Mode, store badges on covers, session quality reports & live charts, Tailscale dual-tile, and remote pause. The per-host badge shows PENDING/DENIED and a PIN popup guides approval; use "Request StreamTweak access" from the host's options to retry.
StreamLight v3.0.0
Version 3.0.0 - The "Big UI Update" (27/05/2026)
🎨 UI REDESIGN:
• Complete flat redesign inspired by the Xbox and Steam Big Picture interfaces; the old sidebar and toolbar are gone and every screen is now full-width
• Gamepad-first navigation: D-pad moves across host cards, app grid, settings tabs and dialogs; a clickable bottom status bar shows contextual prompts (A / B / X / Y / LB / RB), each also usable with the mouse
• Gamepad glyphs swap automatically between Xbox and PlayStation icons based on the connected controller (DualSense / DualShock / Xbox / generic)
• Home: portrait host cards with per-host coloured gradient headers, an inline "+ Add Hosts" tile and a square Refresh button; per-card Options dropdown (View All Apps, Test Network, Rename, Delete, View Details, StreamTweak Streaming Mode, Wake) with no background dim; NIC speed polled live every 2 seconds (e.g. 2.5 Gbps → 1 Gbps when Streaming Mode kicks in)
• App grid: compact one-row header (hostname · ONLINE · IP · NIC speed · resolution · FPS), 200×267 covers with store badges and a tight bright-green focus border; the running app's cover gets a thicker, pulsing border; app-name tooltip appears instantly below the cover; in-cover Play / Stop replaced by A "Resume" / X "Stop" prompts in the status bar
• Settings: 6 tabs (Video / Audio / Input / Decoder / Network / Session) with bold uppercase labels and LB/RB tab cycling; pill-style segmented selectors replace every dropdown (D-pad ◀ / ▶ pick the value, no popup); inline subtitles replace hover tooltips; bitrate slider with hold-to-accelerate and an X / □ "Default" prompt; auto-scroll keeps the focused row in view; initial focus lands on the first control of the active tab
• Redesigned Pair dialog (hero-size bright-green PIN) and Add Host dialog (large IP field, D-pad navigation), both without background dim
• Unified bright green #00E676 accent across the whole UI (focus cursor, TabBar underline, ONLINE badge, slider handle, accent borders, hyperlinks), ambient charcoal → deep green gradient background, DM Sans + JetBrains Mono fonts embedded
• Min window size raised to 1280×720
✨ NEW FEATURES:
• Tailscale dual-tile: after pairing via LAN IP, StreamLight asks the host (new TAILSCALE bridge command) whether Tailscale is installed; if so, a one-time popup offers a second host tile pinned to the host's 100.x.y.z address. The LAN and Tailscale tiles coexist permanently and the Tailscale tile is address-pinned, so LAN mDNS rediscovery cannot collapse it back onto the parent; the Moonlight UUID and certificate are shared with the parent so no second pairing is needed; the popup is dismissible permanently per-host
• Auto-start Tailscale on launch (Network tab): launches tailscale-ipn.exe in the background at every startup so remote hosts are reachable via their 100.x.y.z IP without keeping the Tailscale tray open; enabling shows a one-shot RESTART REQUIRED dialog, disabling leaves the running instance untouched, and it is skipped silently when Tailscale is already running. The official Windows installer from https://tailscale.com/download is required; the Microsoft Store package is not supported
• Windows Xbox app integration: branded 1024×1024 tile artwork in the Xbox app's "My apps" section instead of the default grey square; an optional install task (default ON) pre-populates the tile so StreamLight appears on first open; a QFileSystemWatcher re-applies the artwork within ~250 ms whenever the Xbox app rewrites the tile, and a boot-time check refreshes it if needed; diagnostic log at %TEMP%\streamlight-xbox-tile.log
• Single-instance guard: launching StreamLight while it is already running brings the existing window to the foreground and exits the second invocation; CLI subcommands (stream / quit / pair / list) remain re-entrant
🔧 IMPROVEMENTS:
• Capability gate before launch: fixes the long-standing first-launch fallback to H.264 / SDR when HDR or AV1 was enabled but the host's cached codec/HDR capability bits were stale (e.g. display powered off during the last serverinfo poll, or the host just booted). Session::initialize now does a synchronous serverinfo refresh right before codec/HDR negotiation, so the first launch always sees the current host state; bounded to at most 2 s on cold launch, skipped when H.264 SDR is forced, and falls back to the cached state if every address times out
• Streaming engine (FFmpeg / D3D11VA / DXVA2 / libplacebo / moonlight-common-c) untouched — same protocol and decoder pipeline as 2.3.1
• Settings storage unchanged from 2.x (HKCU\Software\Moonlight Game Streaming Project\Moonlight) — upgrades preserve paired hosts, preferences and certificates with no migration step
• 7 dead 2.3.1 UI files and 11 orphan SVG icons removed from the build
StreamLight v2.3.1
Version 2.3.1 - The "Live Charts Update" (25/04/2026)
🔧 IMPROVEMENTS:
• Session telemetry send interval: reduced from 10 seconds to 1 second — SESSIONDATA is now sent once per second (one sample per connection) instead of batching 10 samples every 10 seconds; StreamTweak's live session charts on the Home page now update every second as intended
StreamLight v2.3.0
Version 2.3.0 - The "Remote Pause Update" (17/04/2026)
✨ NEW FEATURES:
• Remote session pause from host: StreamTweak's Home page now shows a Pause button when a streaming session is active; pressing it embeds a one-shot stop signal in the next STATS response; StreamLight detects the signal and terminates the session exactly as if the user had pressed Pause locally — no UI changes on the StreamLight side
• Pause signal transport: the signal is piggybacked on the existing per-second STATS polling channel as an additional "stop":1 JSON field, requiring no new TCP connection or protocol change; the field is silently ignored by older StreamLight versions
StreamLight v2.2.0
Version 2.2.0 - The "Hue Sync Update" (08/04/2026)
✨ NEW FEATURES:
• Philips Hue Sync integration: a new toggle in Settings automatically starts Philips Hue Sync on the client PC when a streaming session begins and closes it when the session ends; the app is launched silently in the background with no window appearing
• Smart discovery: Hue Sync is located by querying the Windows Uninstall registry (handles custom install paths and per-user Electron installations); falls back to well-known paths if the registry entry is absent
• Silent launch: uses HueSyncStarter.exe — the dedicated background launcher shipped with Hue Sync — to start the app without any visible window
StreamLight v2.1.1
Version 2.1.1 - The "Jitter Update" (28/03/2026)
🔧 IMPROVEMENTS:
• Session telemetry — jitter reporting: RTT variance (jitter) is now collected from LiGetEstimatedRttInfo and included in every SESSIONDATA batch alongside RTT; StreamTweak stores jitter_avg and jitter_max per sample and can use them in future quality analysis