diff --git a/CHANGELOG.md b/CHANGELOG.md
index fe88e06..f7e7138 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
# Changelog
+## 0.4.1 — RemoteApp PowerShell/CLIXML robustness
+
+- RemoteApp PowerShell execution now keeps stderr separate from JSON stdout.
+- Suppresses PowerShell progress/information/verbose/debug/warning streams for machine-readable RemoteApp calls.
+- Forces UTF-8 console output where supported.
+- JSON decoder defensively extracts the first valid JSON object/array and tolerates CLIXML/banner noise before or after the payload.
+- Added regression tests for the `#< CLIXML` contamination observed on Windows PowerShell 5.1.
+- Protocol remains version 4; no Master/Agent schema migration is required.
+
## 0.4.0 — Agent-managed RemoteApps
- Added a farm-scoped RemoteApp desired-state model to Published Resources.
diff --git a/README.md b/README.md
index 80447c5..31b8a02 100644
--- a/README.md
+++ b/README.md
@@ -2,10 +2,14 @@
SessionGuard is a Go-based **RDS control plane** for Windows Remote Desktop Session Hosts. It is designed to complement Apache Guacamole: Guacamole remains the HTML5/RDP gateway, while SessionGuard provides Citrix-like broker, Director, policy, profile-lifecycle and operations functions.
-**Current development version: 0.4.0 (RemoteApp control plane)**
+**Current development version: 0.4.1 (RemoteApp PowerShell/CLIXML robustness)**
> SessionGuard is not an ICA/HDX implementation and does not replace the Windows RDS runtime. It deliberately reuses standard RDP/WTS, Guacamole and PocketID/OIDC.
+## 0.4.1 RemoteApp robustness
+
+Windows PowerShell auxiliary streams are now isolated from the JSON protocol used by RemoteApp discovery/reconciliation. CLIXML/progress noise no longer breaks RemoteApp status decoding.
+
## 0.4.0 RemoteApp control plane
- The Master can define RemoteApp desired state per Published Resource/Farm.
diff --git a/guacamole-extension/pom.xml b/guacamole-extension/pom.xml
index 2ca3a78..6e0b3ae 100644
--- a/guacamole-extension/pom.xml
+++ b/guacamole-extension/pom.xml
@@ -5,7 +5,7 @@
4.0.0info.hilden.sessionguardsessionguard-guacamole
- 0.4.0
+ 0.4.1jar11
diff --git a/internal/agent/agent.go b/internal/agent/agent.go
index d5603bd..0a34ecc 100644
--- a/internal/agent/agent.go
+++ b/internal/agent/agent.go
@@ -25,7 +25,7 @@ import (
"github.com/example/sessionguard/internal/windowsx"
)
-const Version = "0.4.0"
+const Version = "0.4.1"
type App struct {
cfg config.Agent
diff --git a/internal/agent/ui.go b/internal/agent/ui.go
index 0decccb..9e80057 100644
--- a/internal/agent/ui.go
+++ b/internal/agent/ui.go
@@ -36,7 +36,7 @@ button{display:inline-flex;align-items:center;justify-content:center;gap:6px;bac
@media(max-width:720px){.agent-metrics{grid-template-columns:repeat(2,1fr)}.app-shell{display:block}.sidebar{position:fixed;left:0;top:0;transform:translateX(-102%);width:min(290px,86vw);transition:transform .2s ease;box-shadow:var(--shadow)}body.nav-open .sidebar{transform:translateX(0)}body.nav-open .mobile-overlay{display:block;position:fixed;inset:0;background:rgba(0,0,0,.48);z-index:25}.menu-toggle{display:inline-flex}.topbar{height:60px}.live-pill{display:none}.page{padding:14px}.metrics{grid-template-columns:repeat(2,1fr)}.section-heading{align-items:flex-start;flex-direction:column}.table th,.table td{white-space:nowrap}.form{padding:13px}}
@media(max-width:430px){.metrics{grid-template-columns:1fr 1fr}.metric-card,.card{min-height:88px;padding:12px}.value{font-size:22px}.topbar-actions .theme-top{display:none}}
-
+
Lokaler Agent
Lokaler Terminalserver
Live · 5s
Local Control
Terminalserver-Status
Sitzungen, Profil-Pipeline und Master-Verbindung lokal überwachen.
Aktiv▶
–
GetrenntⅡ
–
Sitzungen◎
–
Profil-Jobs↕
–
Cleanup⌫
–
RemoteApps◇
–
Master⇄
–
RDS
Sitzungen
Aktive und getrennte Benutzer sowie administrative Aktionen.