- bump OpenClaw.Tray and OpenClaw.Tray.WinUI project versions from 0.4.3 to 0.4.4
- bump WinUI MSIX package identity version from 0.4.3.0 to 0.4.4.0
- validated with win-arm64 Release builds for WinUI and Tray plus full OpenClaw.Shared.Tests pass
- synchronize App session preview cache reads/writes/removal with a dedicated lock to avoid cross-thread Dictionary access races between gateway events and tray menu rendering
- reset unsupported-method capability flags on successful gateway reconnect so usage.status, usage.cost, sessions.preview, and node.list can recover after transient or older-gateway errors
- add focused OpenClawGatewayClient regression test covering unsupported-flag reset behavior
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- bump OpenClaw.Tray and OpenClaw.Tray.WinUI project Version from 0.4.2 to 0.4.3
- bump WinUI MSIX manifest identity version from 0.4.2.0 to 0.4.3.0
- validated with win-arm64 Release builds for WinUI and Tray plus full OpenClaw.Shared.Tests pass
- add shared models and gateway client handling for session, usage, and node.list telemetry
- add ActivityStreamService plus ActivityStreamWindow flyout with filtering, clear, and dashboard jump actions
- wire WinUI tray actions/status surfaces for activity, node/session/usage updates, and one-time discoverability tip
- document exec-policy troubleshooting in README, including Windows policy path and powershell.exe argv[0] matching
- expand shared tests for model parsing and gateway client behavior
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Set OpenClaw.Tray and OpenClaw.Tray.WinUI project Version to 0.4.1\n- Set Package.appxmanifest identity version to 0.4.1.0\n- Keeps local/debug version metadata aligned so updater comparisons are less confusing
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add shared GatewayUrlHelper for ws/wss/http/https validation and normalization\n- Use helper in OpenClawGatewayClient and WindowsNodeClient\n- Reuse helper in WinForms/WinUI settings validation and NodeService A2UI URL derivation\n- Add gateway URL normalization tests for helper, gateway client, and node client
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Rewrite UpdateDialog as proper WindowEx (fixes black square and XamlRoot crash)
- Size and center DownloadProgressDialog
- Add Debug level to IOpenClawLogger interface and all implementations
- Downgrade raw JSON, response payloads, channel health, and debug spew from Info to Debug
- Debug messages still visible in dbgview.exe via System.Diagnostics.Debug
- Delete 10 stale remote branches
- Update Package.appxmanifest Publisher to match Azure Trusted Signing cert subject
- Make build-msix continue-on-error so release isn't blocked by MSIX failures
- Add fail-fast: false to build-msix matrix
- Make MSIX artifact downloads in release job continue-on-error
Replace keyword-only classification with a layered pipeline:
structured metadata (intent/channel) > user rules > keyword fallback.
- Add Channel, Agent, Intent, Tags fields to OpenClawNotification
- Extract NotificationCategorizer class with layered pipeline
- Add NotifyChatResponses toggle to suppress chat toasts
- Add UserNotificationRule model for custom regex/keyword rules
- Map error notifications to urgent setting
- Add 30+ unit tests for categorizer pipeline
- Document categorization system in docs/
Per the official OpenClaw spec (nodes-tool.ts), the 'command' param
for system.run is an argv array (e.g. ["echo","Hello"]), not a string.
Our handler was rejecting array format, causing the first invoke
attempts from the agent to fail with 'Missing command parameter'.
Changes:
- Accept command as array (primary, per spec) or string (fallback)
- Support 'timeoutMs' param name (spec) alongside legacy 'timeout'
- Preserve backward compat for string command + separate args array
- Add 6 new tests for array/string/single-element/error/timeout cases
All 180 tests pass.
Add MSIX packaging support alongside existing Inno Setup/ZIP distribution.
The build now supports both packaged (MSIX) and unpackaged (EXE) modes
via the PackageMsix MSBuild property.
MSIX packaging enables:
- Native Windows camera/microphone consent prompts
- Package identity for OS integration
- Protocol activation for openclaw:// deep links via manifest
Changes:
- csproj: Conditional WindowsPackageType (None vs MSIX) toggled by
-p:PackageMsix=true. Self-contained in both modes. ApplicationVersion
synced from Version property for MSIX.
- Package.appxmanifest: Declares webcam, microphone, internetClient
capabilities. Protocol handler for openclaw://. Visual assets.
- PackageHelper.cs: Runtime detection of packaged vs unpackaged mode
via Windows.ApplicationModel.Package.Current
- App.xaml.cs: Protocol activation handling via AppInstance lifecycle API
for MSIX deep links. Works alongside existing command-line deep links.
- DeepLinkHandler.cs: Skip registry URI registration when packaged
(manifest handles it)
- ci.yml: New build-msix job (x64 + ARM64) parallel to existing build.
MSIX signing via Azure Trusted Signing. MSIX artifacts in releases.
Null-check on MSIX find step.
- Visual assets: Generated PNG logos for MSIX package tiles
- README: Added MSIX build instructions
Build modes:
dotnet build -r win-arm64 # Unpackaged (default)
dotnet build -r win-arm64 -p:PackageMsix=true # MSIX package
Note: MSIX Publisher in Package.appxmanifest must match the Azure
Trusted Signing certificate subject exactly. Currently set to
'CN=Scott Hanselman' - update if cert subject differs.
Add 56 new tests covering all 4 capabilities (system, canvas, screen, camera),
NodeCapabilityBase arg parsing, DeviceIdentity keypair/signing (integration),
and fix default JsonElement crash in arg helpers.
Unit tests (135): always run in CI and locally
Integration tests (9): opt-in via OPENCLAW_RUN_INTEGRATION=1
Total: 144 tests, 0 failures
Implement node protocol, pairing, and invoke result handling.
Add canvas/screen/camera capabilities with WebView2, GDI capture, and MediaCapture frame reader fallback.
Expose node mode toggle/status in tray settings and update Windows node docs/testing guide.
The WinUI project has WindowsAppSDKSelfContained=true which requires
a runtime identifier to be specified during build. Updated the test job
to include -r win-x64 flag, matching the approach used in the build job.
Co-authored-by: shanselman <2892+shanselman@users.noreply.github.com>
- Fix JSON parsing for chat events (payload.message.content[].text)
- Remove 500 char limit - truncate long messages to 200 chars with ...
- Add 'Open Chat' button on chat notifications
- Add claw icon as app logo in toast notifications
- Add IsChat property to OpenClawNotification model
- Add explanatory text for keyword filters in Settings
- Only notify on state:'final' to avoid streaming spam
Related: #12 (enhanced categorization)
- Move CODE_REVIEW.md, TEST_COVERAGE.md, XAML_COMPILER_BUG.md to docs/
- Add WINDOWS_NODE_ARCHITECTURE.md - comprehensive plan for evolving
tray app into a first-class Windows node with canvas, camera, screen
capture, and more
- Enable WindowsAppSDKSelfContained for registration-free WinRT activation
- Build script auto-detects architecture (win-arm64 / win-x64)
- WebChatWindow shows error details instead of silently falling back
- Remove conditional self-contained (always needed for WebView2)
The issue: WebView2 COM activation fails in unpackaged apps because
WinRT registration isn't available. Self-contained mode bundles the
'Undocked RegFree WinRT' which enables COM activation without MSIX.
- build.ps1 now checks for WebView2 Runtime
- README lists all prerequisites for WinUI build
- WebView2 check is informational (app falls back to browser)
- build.ps1 checks for .NET 9, .NET 10, Windows SDK
- Provides clear guidance on what's missing
- Supports building individual projects or all
- Fix README: correct dotnet run command (needs full .csproj path)
- Expanded Quick Start section with multiple build options
Fixes#10
- Add build target to copy WebView2Loader.dll to output root
- Add logging to WebChatWindow for debugging
- Fall back to opening chat in browser when WebView2 fails
- WebView2 currently fails with 'module not found' on WinUI/ARM64
See issue for investigation details.
- Fix crash caused by IsTitleBarVisible=false (Bug 57667927)
Use Win32 SetWindowLong to remove WS_CAPTION instead of WinUI's
SetBorderAndTitleBar which destroys TitleBar HWND and causes
fail-fast in WndProc during dictionary enumeration
- Add SWP_FRAMECHANGED after style change to fix rendering issues
(black background, clipped content)
- Improve session data loading with cache-first approach:
- Show cached data immediately (50ms delay) for snappy UX
- Only wait 200ms on first load when no cached data exists
- Clean up code: remove debug logging, simplify ShowAtCursor