You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+38-4Lines changed: 38 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -92,22 +92,49 @@ StreamTweak automatically locates the streaming server log file at startup and r
92
92
→ config\sunshine.log (static)
93
93
```
94
94
95
-
### Session Logging (v3.0.0+)
96
-
Every speed-change event — whether triggered automatically or manually — is recorded as a `SessionEntry` and persisted to `%LOCALAPPDATA%\StreamTweak\sessions.json`. The Logs tab reads this file and displays the last 10 sessions in real time.
95
+
### Session Logging (v3.0.0+, overhauled in v4.3.0)
96
+
Every streaming session — regardless of whether NIC throttle was applied — is recorded as a `SessionEntry` and persisted to `%LOCALAPPDATA%\StreamTweak\sessions.json`. The Logs tab reads this file and displays the last 10 sessions in real time.
97
97
98
98
```
99
99
SessionEntry {
100
100
Id → short unique identifier
101
101
StartTime → when the session began
102
-
EndTime → when the original speed was restored (null if active or interrupted)
102
+
EndTime → when the session ended (null if active or interrupted)
103
103
TriggerMode → "Auto" | "Manual"
104
-
OriginalSpeed → the speed key that will be restored on session end
104
+
OriginalSpeed → the speed key that will be restored on session end (null if no throttle)
105
105
EndReason → "User" | "Disconnected" | "Interrupted" (null if still active)
106
106
}
107
107
```
108
108
109
+
`NicThrottleDisplay` and `OriginalNicSpeedDisplay` are computed display properties derived from `OriginalSpeed`: if it is set the session involved a speed change (Yes / the original speed); otherwise the NIC was not throttled (No / N/A). Session tracking (`_isAutoSessionActive`) is independent of the NIC throttle state (`isAutoStreamingActive`), so every detected stream is logged even when Auto Streaming Mode is off.
110
+
109
111
The same discovery pipeline used for log monitoring (`LogParser.FindStreamingAppInfo`) is surfaced in the Logs tab, so the user can verify at a glance which streaming server StreamTweak has detected and navigate directly to its log folder.
110
112
113
+
### Streaming App Manager (v4.3.0+)
114
+
`ManagedAppController` is a shared static class that reads `%LOCALAPPDATA%\StreamTweak\managedapps.json` and provides kill/relaunch logic used both by the manual buttons in the Apps tab and by the automated session lifecycle hooks in `App.xaml.cs`.
115
+
116
+
```
117
+
Stream start detected
118
+
│
119
+
▼
120
+
ManagedAppController.KillRunning()
121
+
│ filters AutoManage = true
122
+
├─ Process.GetProcessesByName(nameNoExt) → kill all matching processes
123
+
└─ fallback: full process scan by MainModule.FileName → handles Electron / renamed hosts
124
+
│
125
+
▼
126
+
_appsToRelaunch ← paths of processes that were actually running
127
+
128
+
Stream end detected
129
+
│
130
+
▼
131
+
ManagedAppController.StartApps(_appsToRelaunch)
132
+
│ Process.Start with UseShellExecute = true
133
+
└─ best-effort, silent — each app restarted independently
134
+
```
135
+
136
+
The kill step runs at all three session-start entry points (`HandleAutoStreamStart`, manual Start button, TCP bridge `PREPARE` command), ensuring consistent behavior regardless of how the session was initiated.
137
+
111
138
### Auto Dolby Atmos for Headphones (v3.1.0+)
112
139
When a streaming session is detected and remains active for 30 continuous seconds, `DolbyAudioMonitor` queries the Windows Spatial Audio API (`SpatialAudioDeviceConfiguration`) on Steam Streaming Speakers and sets Dolby Atmos for Headphones as the active spatial audio format. Detection of [Dolby Access](https://apps.microsoft.com/detail/9n0866fs04w8) also uses the same API — if any render device reports `DolbyAtmosForHeadphones` as a supported format, the feature is considered available.
0 commit comments