Releases: FoggyBytes/StreamTweak
StreamTweak v5.3.1
Version 5.3.1 (30/03/2026)
✨ NEW FEATURES:
• Network tab — Tailscale detection: if Tailscale is active, the Network tab shows the host's Tailscale IP (100.x.x.x range) with a one-click copy-to-clipboard button and fade-in/out "Copied" feedback
StreamTweak v5.3.0
Version 5.3.0 - The "Cover Art Update" (29/03/2026)
🎨 UI — GAMES TAB:
• Game Library tab redesigned: the text-based DataGrid has been replaced with a 4-column cover art grid; each card shows the game's cover image, a store badge overlay (bottom-right), a sync toggle, and a Remove button
• Store badge overlays: per-game store badge (icon + name) rendered as a semi-transparent pill using SVG path data ported from StreamLight's store_*.svg assets — zero additional dependencies
• 2:3 aspect ratio normalization: all cover images are normalized to Steam's native 2:3 portrait ratio before display; covers from other stores that are wider than 2:3 are center-cropped left/right so every card has the same height regardless of the source image dimensions
• Fluent Emoji 3D icons: all Segoe MDL2 Assets private-use-area characters in the UI (tab icons, panel headers, alert windows, Glossary category headers) have been replaced with Microsoft Fluent Emoji 3D PNGs — same rendering as Windows 11 system UI and GitHub/Claude Code
• App Manager list: each entry now shows the application's own .exe icon (extracted via SHGetFileInfo / Shell32) next to the app name for instant visual identification
🐛 BUG FIXES:
• Sparkline duration display — sessions longer than 10 minutes showed "10m 00s" on the X-axis of all four charts and in the session header, regardless of actual duration. Root cause: the time series are downsampled to 600 points before persistence; SparklineControl interpreted the point count (always ≤600) as seconds, capping every session at 10 minutes. Fixed by adding a DurationSeconds dependency property to SparklineControl; the real duration (EndTime − StartTime) is now passed via binding for charts in the session overlay and directly in ChartDetailWindow for the fullscreen chart view. TelemetryDurationDisplay in SessionEntry updated to use the same source. The underlying data was never affected — all 600 bucket-averaged points already represented the full session.
• Game Library — removed games re-added on startup sync: when a game was removed via the Remove button, the next auto-sync at startup would re-discover it from the store scanner and add it back. Removed games are now blacklisted in a persisted ExcludedGames list (gamelibrarystate.json); auto-sync silently skips any game whose key appears in the list. Clicking "Sync Now" manually clears the exclusion list and restores full discovery, so the user can intentionally re-add a previously removed game by doing an explicit sync.
StreamTweak v5.2.2
Version 5.2.2 - The "Telemetry Fix" (28/03/2026)
🐛 BUG FIXES:
• Session telemetry — drop rate denominator: the drop rate was previously calculated against the target FPS per second rather than actual frames received. It now uses rendered + dropped frames as the denominator, giving an accurate rate even when the decoder runs below target (VRR, throttling, static screens)
• Session telemetry — RTT=0 filtering: samples where LiGetEstimatedRttInfo had not yet produced an RTT estimate (first tick after connection) were included in the average, pulling it down. These samples are now excluded from all RTT/jitter accumulators and the sparkline series
• Session telemetry — time series cap: sparkline data was persisted with one raw sample per second and no size limit. Time series are now downsampled to 600 points via bucket averaging before persistence, preventing sessions.json from growing unbounded on long sessions
• Session telemetry — file concurrency: SessionLogger Load() and Save() are now guarded by a static lock, preventing sessions.json corruption if a concurrent write races (e.g. OS session-ending event vs. session stop)
• Session quality grade — RTT spike sensitivity: a session with a good average RTT but at least one spike above 200 ms now has its RTT grade downgraded by one level, reflecting the perceptible lag experienced by the user
• SparklineControl — Y-axis label mismatch: the max and midpoint labels showed the raw data range before the margin was added, while the polyline was drawn on the margin-padded range. On low-variance data (e.g. RTT 1–3 ms) both labels collapsed to the same integer (e.g. "2" top and "2" midpoint). Labels now reflect the actual visible scale
• Home panel — HDR / Auto HDR status: the HDR and Auto HDR pills were not updated in real-time. They now refresh on every Home tab click (live read from Windows), on Display tab open/refresh, and on toggle. Opening the window during an active streaming session also triggers a live read, correctly reflecting virtual display HDR state
• Internal cleanup: removed unused _fpsTimeSeries accumulator that was collecting one float per second for the entire session duration without ever being persisted or displayed
StreamTweak v5.2.1
Version 5.2.1 - The "Chart Update" (28/03/2026)
🔧 IMPROVEMENTS:
• Session telemetry — charts revised: the four sparklines now show RTT (ms), Frame Drops, Bitrate (Mbps), and Decode Latency (ms). FPS has been replaced by Decode Latency because FPS drops to near-zero on static screens and loading screens regardless of actual streaming quality, making it an unreliable indicator. The four retained metrics jointly cover the full quality picture: RTT measures network latency; Frame Drops quantify packet loss at the transport layer; Bitrate reflects encoder output and available bandwidth headroom; Decode Latency captures client-side hardware load.
• Jitter: RTT variance is now collected per sample from StreamLight and stored per session as jitter_avg and jitter_max; displayed in the CLIENT stats panel of the session detail overlay alongside RTT
• SparklineControl: bucket-average downsampling applied when data points exceed the chart's pixel width, keeping long sessions readable without distortion; chart label rendered above the polyline with a semi-transparent background so it remains legible at all times
• Glossary tab: new dedicated tab in Settings with definitions of all technical terms used across the StreamTweak and StreamLight UIs, grouped by category in a terminal-style panel
StreamTweak v5.2.0
Version 5.2.0 - The "Session Quality Update" (27/03/2026)
✨ NEW FEATURES:
• Session quality report: clicking the chart button on any session row in the Logs tab opens a full-panel telemetry overlay — CLIENT stats (FPS, Drops, RTT, Decode, Bitrate) and HOST stats (GPU, Encoder, GPU Temp, CPU, Net TX) side by side, four sparkline charts, and a quality grade badge, all in a single animated popup that covers the Logs panel
• Four sparkline charts: FPS, RTT (ms), Drops, and Bitrate (Mbps) displayed as time-series charts with Cartesian axes, Y-scale labels (max/mid/min), and X-axis time labels — all grouped under a "CLIENT (StreamLight)" header to distinguish them from host-side data
• Quality grade system: each session is graded Excellent, Accettable, or Poor based on drop rate, round-trip time, and GPU encoder utilization; FPS is intentionally excluded because static screens and loading screens produce artificially low frame counts that do not reflect actual streaming quality
🎨 UI IMPROVEMENTS:
• Telemetry overlay opens and closes with a smooth animation (CubicEase, 200 ms open / 150 ms close) and covers the full Logs panel with an opaque background — no content visible behind it
• Telemetry button: the row-level trigger is a styled button with a monochrome chart icon, hidden for sessions with no telemetry data
StreamTweak v5.1.1
5.1.1 is the first public release of the 5.1.x line — it ships together with the internal 5.1.0 milestone. The two entries in the changelog cover everything since 5.0.1.
Version 5.1.1 - The "Code Quality Update" (25/03/2026)
🔧 IMPROVEMENTS:
• Code quality: removed dead code (unused IsDolbyAtmosAvailableAsync method, orphan variables and comments)
• Minor hardening: fixed several low-risk bugs (resource leaks, thread-safety issues, sync reentrancy guards, injection prevention in WQL/PowerShell commands, atomic file writes for cover art cache)
Version 5.1.0 - The "Dashboard Update" (25/03/2026)
🎨 UI IMPROVEMENTS:
• Home panel: new dashboard section with real-time status tiles for Auto Streaming Mode, NIC Speed, Spatial Audio, Spatial Format, HDR/Auto HDR, and Game Library Sync — all six settings visible at a glance without switching tabs
• About section merged into Home: app icon, version, build date, update check, GitHub link and Donate button are now displayed directly in the Home panel; the separate About tab has been removed
• Section headers: Network, Audio, and Logs panels now have a labelled header with a separator line, consistent with the Display, Apps, and Games panels
• Audio panel: headphones icon restored below the Spatial Audio Control header; improved spacing distribution throughout the panel
• Games sidebar icon: updated to a gamepad glyph for better visual clarity
🔧 IMPROVEMENTS:
• Tray icon now reflects streaming session state: the active icon appears when a session is detected rather than only when the NIC is throttled, so the icon stays active for all sessions regardless of whether Auto Streaming Mode is in use
🐛 BUG FIXES:
• Session duration missing on host shutdown: StreamTweak now intercepts the Windows shutdown and logoff signal (WM_ENDSESSION) and saves the current session's end time before the process exits — sessions are no longer recorded with a blank duration when the PC is shut down during a stream
StreamTweak v5.0.1
Version 5.0.1 - The "Reliability Update" (21/03/2026)
🔧 IMPROVEMENTS:
• Session detection at startup: when StreamTweak opens while a streaming session is already in progress, the sidebar now correctly shows "Streaming" and spatial audio activates as expected
• Sidebar sync on window open: opening the settings window during an active session now reflects the real session state immediately, without requiring a reconnect
StreamTweak v5.0.0
Version 5.0.0 - The "Game Library Update" (21/03/2026)
✨ NEW FEATURES:
• New FoggyBytes icon: StreamTweak now sports a new icon that visually unifies the FoggyBytes suite — the same icon is shared with StreamLight for a consistent identity across both apps
• Game Library Sync: StreamTweak automatically discovers installed games across Steam, Epic Games, GOG, Ubisoft Connect, Xbox App, EA App, and Battle.net — and syncs them to Sunshine (and compatible forks: Apollo, Vibeshine, Vibepollo) without touching manually created entries; uninstalled games are removed on the next sync
• Cover art from native sources: cover images are fetched from each store's own CDN (Steam CDN, Epic metadata, GOG API, Battle.net aggregate.json) and cached locally as PNG — Sunshine displays them natively; no third-party service involved
• Battle.net integration: Battle.net games are detected via the local aggregate.json file; all entries launch via the Battle.net client (Battle.net.exe), so any installed game is automatically included without needing per-game exe paths
• Manual game management: use the Add button in the Games tab to include any executable not auto-detected; manual entries survive re-syncs and are removed individually with the − button per row
• APPSTORES TCP command: StreamTweak serves the game→store map to StreamLight via the new APPSTORES command on port 47998, enabling per-game store badge display in the StreamLight client
🔧 IMPROVEMENTS:
• Game list sorted alphabetically after each sync for a consistent, predictable order
• Manual games persist across re-syncs: only auto-discovered games are refreshed; manually added entries are preserved until explicitly removed
• Single-entry Sunshine sync: adding or removing a manual game updates only that entry in apps.json — no other entries are touched; compatible with apps created outside StreamTweak
StreamTweak v4.4.0
Version 4.4.0 - The "Telemetry Update" (20/03/2026)
✨ NEW FEATURES:
• Host metrics collection: StreamTweak now collects real-time host PC metrics — GPU usage %, GPU encoder usage %, GPU temperature (°C, NVIDIA only via NVML), VRAM used (MB), VRAM total (MB, NVIDIA only), CPU usage %, and network TX (Mbps) — and serves them to StreamLight via a new STATS command on the TCP bridge (port 47998)
• STATS command: the TCP bridge accepts a new STATS command that returns a JSON payload (e.g. {"gpu":45,"gpu_enc":12,"gpu_temp":62,"vram_used":4096,"vram_total":8192,"cpu":18,"net_tx":80}) for consumption by StreamLight's overlay
• Cross-vendor GPU metrics via PDH PerformanceCounters: GPU utilization (3D engine), GPU encoder utilization, and VRAM used are read with System.Diagnostics.PerformanceCounter using the GPU Engine and GPU Process Memory performance counters — works on NVIDIA, AMD, and Intel Arc
• NVML P/Invoke for GPU temperature and total VRAM (NVIDIA only): temperature and total VRAM capacity are read directly from nvml.dll (shipped with NVIDIA drivers) via P/Invoke; on non-NVIDIA systems these fields report -1 and no error is raised
• Metrics unavailable for StreamLight: if StreamTweak is not reachable or metrics are not available, StreamLight's overlay omits the host metrics section entirely — no fallback values, no placeholders
🔧 IMPROVEMENTS:
• HostMetricsCollector initialises asynchronously on a background Task to avoid any impact on WPF startup time
• GPU Engine PDH counter list is rebuilt every 60 seconds to handle processes appearing and disappearing at runtime (instances are per-process and ephemeral)
• VRAM reads use RawValue (int64) instead of NextValue (float) to avoid precision loss on systems with more than 2 GB of dedicated VRAM
StreamTweak v4.3.0
Version 4.3.0 - The "App Manager Update" (19/03/2026)
✨ NEW FEATURES:
• Streaming App Manager: a user-configurable list of executables that StreamTweak automatically terminates when a streaming session starts and relaunches when it ends — ideal for apps like Hue Sync that conflict when running on both host and client simultaneously; each entry has an independent AutoManage toggle so individual apps can be excluded from automation while staying in the list
• App Manager manual controls: each listed app can also be killed or restarted on demand from the Apps tab, without waiting for a streaming session to trigger the automation
🔧 IMPROVEMENTS:
• Session logging now tracks all streaming sessions regardless of whether NIC throttle was applied: previously only sessions that triggered a speed change were logged; now every session is recorded with a NIC Throttle column (Yes/No) and an Original NIC Speed column; the old Mode column has been removed
• Session date format now includes the year (dd/MM/yyyy) for unambiguous historical records
• Dolby Atmos retry loop: after the initial 30-second wait, DolbyAudioMonitor now retries device discovery every 5 seconds for up to 3 minutes — handles the case where the Windows Audio service is still initializing when StreamTweak starts on an early auto-login