Skip to content

Commit fd224c1

Browse files
committed
Update 5.3.1 - See changelog.txt for details
1 parent 2dfe0d9 commit fd224c1

File tree

6 files changed

+116
-10
lines changed

6 files changed

+116
-10
lines changed

Installer.iss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
; =====================================================
2-
; StreamTweak v5.3.0 - GitHub Release Installer
2+
; StreamTweak v5.3.1 - GitHub Release Installer
33
; =====================================================
44
#define MyAppName "StreamTweak"
5-
#define MyAppVersion "5.3.0"
5+
#define MyAppVersion "5.3.1"
66
#define MyAppPublisher "FoggyBytes"
77
#define MyAppExeName "StreamTweak.exe"
88
#define MyAppURL "https://github.com/FoggyBytes/StreamTweak"

README.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ Works with [Moonlight](https://github.com/moonlight-stream/moonlight-qt), [Sunsh
2525
- Auto Streaming Mode — monitors Sunshine/Apollo/Vibeshine/Vibepollo logs and throttles the host NIC to 1 Gbps on client connect; restores original speed on disconnect
2626
- Manual streaming control — one-click throttle/restore without waiting for log events
2727
- UAC-free — a LocalSystem Windows Service handles all speed changes via Named Pipe; no prompts ever
28+
- [Tailscale](https://tailscale.com) detection — if Tailscale is running, the Network tab shows the host's Tailscale IP with a copy button. Useful for remote streaming: instead of the local LAN address, connect StreamLight to the Tailscale IP to reach your PC from outside your home network — no port forwarding needed
2829

2930
**🖥️ Display**
3031
- HDR toggle — enable or disable HDR per monitor from StreamTweak, without opening Windows Settings
@@ -50,7 +51,12 @@ Works with [Moonlight](https://github.com/moonlight-stream/moonlight-qt), [Sunsh
5051
- Quality report — click any session row to open a telemetry overlay: CLIENT stats, HOST stats, four sparkline charts (RTT, drops, bitrate, decode latency), and a quality grade (Excellent / Good / Poor)
5152
- Home dashboard — real-time status tiles for all six managed settings at a glance
5253

53-
## ✨ What's New in 5.3.0 — The "Cover Art Update"
54+
## ✨ What's New in 5.3.1
55+
56+
- **Tailscale detection** — if [Tailscale](https://tailscale.com) is running, the Network tab shows the host's Tailscale IP with a copy-to-clipboard button
57+
58+
<details>
59+
<summary>5.3.0 — The "Cover Art Update"</summary>
5460

5561
- **Game Library redesigned** — 4-column cover art grid replaces the text DataGrid; each card shows the cover image, store badge overlay, sync toggle, and Remove button
5662
- **Store badge overlays** — per-game store icon + name (Steam, Epic, GOG, Ubisoft, Xbox, Battle.net, EA) rendered as SVG geometry, same assets as StreamLight
@@ -59,6 +65,7 @@ Works with [Moonlight](https://github.com/moonlight-stream/moonlight-qt), [Sunsh
5965
- **App Manager exe icons** — each entry in the Streaming App Manager now shows the app's own .exe icon
6066
- **Session chart duration fixed** — sparklines and session headers showed "10m 00s" for any session longer than 10 minutes due to the downsampled point count being interpreted as seconds; now uses the real `EndTime − StartTime`
6167
- **Removed games no longer re-added on startup** — games removed via the Remove button are now blacklisted in a persisted exclusion list; auto-sync at startup skips them; a manual Sync Now clears the list and restores full discovery
68+
</details>
6269

6370
For full version history see [changelog.txt](changelog.txt).
6471

@@ -70,7 +77,7 @@ StreamLight communicates with StreamTweak over a plain TCP bridge on **port 4799
7077

7178
## 📝 Installation
7279
1. Go to the **Releases** page of this repository.
73-
2. Download the latest `StreamTweak_5.3.0_Installer.exe` and run it.
80+
2. Download the latest `StreamTweak_5.3.1_Installer.exe` and run it.
7481

7582
## 🙏 Support the Project
7683
[![Donate with PayPal](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://paypal.me/foggypunk)

StreamTweak/SettingsWindow.xaml

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -772,13 +772,14 @@
772772
<RowDefinition Height="Auto"/>
773773
<RowDefinition Height="0.5*"/>
774774
<RowDefinition Height="Auto"/>
775-
<RowDefinition Height="*"/>
775+
<RowDefinition Height="0.5*"/>
776+
<RowDefinition Height="Auto"/>
777+
<RowDefinition Height="Auto"/>
778+
<RowDefinition Height="0.5*"/>
776779
<RowDefinition Height="Auto"/>
777780
<RowDefinition Height="Auto"/>
778-
<RowDefinition Height="16"/>
779781
<RowDefinition Height="Auto"/>
780782
<RowDefinition Height="Auto"/>
781-
<RowDefinition Height="*"/>
782783
</Grid.RowDefinitions>
783784

784785
<StackPanel Grid.Row="0">
@@ -844,6 +845,35 @@
844845
TextAlignment="Center" TextWrapping="Wrap" Margin="0,20,0,0">
845846
<Run Text="Streaming Mode auto-sets the Target Link Speed to 1Gbps. Stop to revert to original Speed."/>
846847
</TextBlock>
848+
849+
<Separator Grid.Row="15" Margin="0,12,0,10" Background="{DynamicResource BorderColor}"/>
850+
851+
<!-- Tailscale detection -->
852+
<StackPanel Grid.Row="16" Orientation="Horizontal" HorizontalAlignment="Center"
853+
VerticalAlignment="Center">
854+
<Viewbox Width="14" Height="14" Margin="0,0,5,0" VerticalAlignment="Center">
855+
<Canvas Width="24" Height="24">
856+
<Path Fill="White"
857+
Data="M24 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0zm-9 9a3 3 0 1 1-6 0 3 3 0 0 1 6 0zm0-9a3 3 0 1 1-6 0 3 3 0 0 1 6 0zm6-6a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM3 24a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zm18 .5a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM6 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0zm9-9a3 3 0 1 1-6 0 3 3 0 0 1 6 0zm-3 2.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM6 3a3 3 0 1 1-6 0 3 3 0 0 1 6 0zM3 5.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
858+
</Canvas>
859+
</Viewbox>
860+
<TextBlock Text="Tailscale" FontWeight="Medium" VerticalAlignment="Center" Margin="0,0,8,0"/>
861+
<TextBlock x:Name="TailscaleIpTextBlock" VerticalAlignment="Center"
862+
Foreground="{DynamicResource SecondaryTextForeground}"/>
863+
<Button x:Name="TailscaleCopyButton" Click="TailscaleCopyButton_Click"
864+
Width="18" Height="18" Padding="0" Margin="6,0,0,0"
865+
Background="Transparent" BorderThickness="0"
866+
VerticalAlignment="Center" Cursor="Hand"
867+
Visibility="Collapsed" ToolTip="Copy IP"
868+
Style="{StaticResource ModernButtonAnimOnly}">
869+
<Path Fill="{DynamicResource SecondaryTextForeground}" Stretch="Uniform"
870+
Data="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/>
871+
</Button>
872+
<TextBlock x:Name="TailscaleCopiedText" Text="Copied"
873+
FontSize="11" Opacity="0"
874+
VerticalAlignment="Center" Margin="6,0,0,0"
875+
Foreground="{DynamicResource SecondaryTextForeground}"/>
876+
</StackPanel>
847877
</Grid>
848878
</Border>
849879

StreamTweak/SettingsWindow.xaml.cs

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public partial class SettingsWindow : Window
3232
private bool isAutoStreamingEnabled = true;
3333
private bool _updateAvailable = false;
3434
private string currentAdapterName = string.Empty;
35+
private CancellationTokenSource? _copiedFeedbackCts;
3536

3637
public event EventHandler? SpeedApplied;
3738
public event EventHandler? StreamingModeChanged;
@@ -694,6 +695,7 @@ private void LoadNetworkAdapters()
694695
}
695696

696697
UpdateStreamingButtonAppearance();
698+
UpdateTailscaleStatus();
697699
}
698700

699701
private void AdapterComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
@@ -725,6 +727,67 @@ private void UpdateCurrentSpeedDisplay(string adapterName)
725727
catch { CurrentSpeedTextBlock.Text = "Unknown"; }
726728
}
727729

730+
private void UpdateTailscaleStatus()
731+
{
732+
var (detected, ip) = GetTailscaleInfo();
733+
if (detected)
734+
{
735+
TailscaleIpTextBlock.Text = ip;
736+
TailscaleIpTextBlock.FontWeight = FontWeights.Bold;
737+
TailscaleIpTextBlock.Foreground = (System.Windows.Media.Brush)FindResource("AccentColor");
738+
TailscaleCopyButton.Visibility = Visibility.Visible;
739+
}
740+
else
741+
{
742+
TailscaleIpTextBlock.Text = "Not detected";
743+
TailscaleIpTextBlock.FontWeight = FontWeights.Normal;
744+
TailscaleIpTextBlock.Foreground = (System.Windows.Media.Brush)FindResource("SecondaryTextForeground");
745+
TailscaleCopyButton.Visibility = Visibility.Collapsed;
746+
}
747+
}
748+
749+
private static (bool detected, string ip) GetTailscaleInfo()
750+
{
751+
try
752+
{
753+
foreach (var ni in NetworkInterface.GetAllNetworkInterfaces())
754+
{
755+
if (!ni.Name.Contains("Tailscale", StringComparison.OrdinalIgnoreCase) &&
756+
!ni.Description.Contains("Tailscale", StringComparison.OrdinalIgnoreCase))
757+
continue;
758+
759+
foreach (var addr in ni.GetIPProperties().UnicastAddresses)
760+
{
761+
if (addr.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork &&
762+
addr.Address.ToString().StartsWith("100."))
763+
return (true, addr.Address.ToString());
764+
}
765+
return (true, "IP unknown");
766+
}
767+
}
768+
catch { }
769+
return (false, string.Empty);
770+
}
771+
772+
private async void TailscaleCopyButton_Click(object sender, RoutedEventArgs e)
773+
{
774+
Clipboard.SetText(TailscaleIpTextBlock.Text);
775+
776+
_copiedFeedbackCts?.Cancel();
777+
_copiedFeedbackCts?.Dispose();
778+
_copiedFeedbackCts = new CancellationTokenSource();
779+
var token = _copiedFeedbackCts.Token;
780+
781+
TailscaleCopiedText.BeginAnimation(UIElement.OpacityProperty,
782+
new System.Windows.Media.Animation.DoubleAnimation(0, 1, TimeSpan.FromMilliseconds(200)));
783+
784+
try { await Task.Delay(3000, token); }
785+
catch (OperationCanceledException) { return; }
786+
787+
TailscaleCopiedText.BeginAnimation(UIElement.OpacityProperty,
788+
new System.Windows.Media.Animation.DoubleAnimation(1, 0, TimeSpan.FromMilliseconds(300)));
789+
}
790+
728791
private void LoadAdapterSpeeds(string adapterName)
729792
{
730793
SpeedComboBox.Items.Clear();

StreamTweak/StreamTweak.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
<UseWPF>true</UseWPF>
1010
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
1111
<ApplicationIcon>Resources\streamtweak.ico</ApplicationIcon>
12-
<Version>5.3.0</Version>
13-
<AssemblyVersion>5.3.0.0</AssemblyVersion>
14-
<FileVersion>5.3.0.0</FileVersion>
12+
<Version>5.3.1</Version>
13+
<AssemblyVersion>5.3.1.0</AssemblyVersion>
14+
<FileVersion>5.3.1.0</FileVersion>
1515
</PropertyGroup>
1616

1717
<ItemGroup>

changelog.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ StreamTweak - ChangeLog - Developed by FoggyBytes
44

55
https://github.com/FoggyBytes/StreamTweak
66

7+
Version 5.3.1 (30/03/2026)
8+
------------------------------------------
9+
10+
✨ NEW:
11+
• 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
12+
713
Version 5.3.0 - The "Cover Art Update" (29/03/2026)
814
------------------------------------------
915

0 commit comments

Comments
 (0)