OpenClaw Windows Hub v0.5.0
Downloads
- Installer (x64):
OpenClawTray-Setup-x64.exe- Intel/AMD 64-bit - Installer (ARM64):
OpenClawTray-Setup-arm64.exe- Windows on ARM (Surface, etc.) - Portable x64:
OpenClawTray-0.5.0-win-x64.zip - Portable ARM64:
OpenClawTray-0.5.0-win-arm64.zip - MSIX x64:
OpenClawTray-0.5.0-win-x64.msix- Packaged (camera/mic consent) - MSIX ARM64:
OpenClawTray-0.5.0-win-arm64.msix- Packaged (camera/mic consent)
Features
- 🦞 System tray integration with gateway status
- 🎯 PowerToys Command Palette extension (optional)
- 🔄 Auto-updates from GitHub Releases
- ✅ Code-signed with Azure Trusted Signing
- 📦 MSIX package available for native camera/microphone consent prompts
Requirements
- Windows 10 version 1903 or later
- WebView2 Runtime
- OpenClaw gateway running locally
- PowerToys (for Command Palette extension)
Quick Start
- Run the installer for your architecture (or sideload the MSIX for camera consent)
- Optionally enable Command Palette extension during install
- Launch from Start Menu or system tray
- Right-click tray icon → Settings to configure
What's Changed
- Security: ExecApprovalPolicy bypass, thread safety, dispose races by @shanselman in #62
- Refactor: Extract WebSocketClientBase (DRY #63) by @shanselman in #64
- ci: add NuGet package caching to test job by @shanselman in #67
- perf: cache JsonSerializerOptions and compiled Regex in WindowsNodeClient by @shanselman in #68
- chore: quick-win triage — global.json, test tooling, localization tests by @shanselman in #124
- fix: notification sound + TryParseArgv refactor (closes #91, #92, #71) by @shanselman in #125
- add zh_tw by @Tim0320 in #100
- feat: complete french localization by @rundredoffi in #69
- [Repo Assist] fix: null _gatewayClient after dispose in OnSettingsSaved by @github-actions[bot] in #121
- [Repo Assist] eng: add .editorconfig to enforce consistent C# code style by @github-actions[bot] in #107
- [Repo Assist] refactor: remove dead ClassifyNotification method, fix reflection tests by @github-actions[bot] in #98
- [Repo Assist] refactor: use result.Parameters in DeepLinkHandler instead of re-parsing query by @github-actions[bot] in #108
- [Repo Assist] refactor: extract ModelFormatting helper; deduplicate FormatTokenCount/FormatCount by @github-actions[bot] in #111
- [Repo Assist] fix: add operator.write scope to gateway connect handshake (closes #112) by @github-actions[bot] in #113
- [Repo Assist] fix: add ReDoS timeout to ExecApprovalPolicy glob matching by @github-actions[bot] in #126
- Bugfix/issue 82 tray menu overflow by @NichUK in #83
- [Repo Assist] fix: pass UserRules to NotificationCategorizer in OpenClawGatewayClient by @github-actions[bot] in #93
- [Repo Assist] fix: prevent double PairingStatusChanged fire in hello-ok handler by @github-actions[bot] in #109
- [Repo Assist] fix: reset node/gateway state on settings save; clear _isPendingApproval on disconnect by @github-actions[bot] in #115
- [Repo Assist] perf: cache HTML sanitize regex; replace ToLowerInvariant with FrozenDictionary; fix GetRawText double-call by @github-actions[bot] in #105
- [Repo Assist] perf: eliminate string allocations in ClassifyByKeywords and ClassifyTool by @github-actions[bot] in #101
- [Repo Assist] perf: skip StringBuilder in single-frame WebSocket receive; fix double payload.ToString() by @github-actions[bot] in #119
- [Repo Assist] refactor — eliminate ToLowerInvariant allocations in ChannelHealth; use TryGetValue in UpdateTrackedSession by @github-actions[bot] in #118
- [Repo Assist] docs: add SETUP.md and POWERTOYS.md; fix stale CommandPalette README by @github-actions[bot] in #110
- Feature/ssh tunnel gateway by @sytone in #117
- fix: honour PreferStructuredCategories in notification pipeline by @shanselman in #128
- [Repo Assist] refactor: modernize string operations in GatewayUrlHelper and SettingsData by @github-actions[bot] in #129
- [Repo Assist] eng: enhance .editorconfig with modern C# idiom preferences by @github-actions[bot] in #130
- ci: add NuGet cache to build and build-msix CI jobs (closes #135) by @shanselman in #140
- fix: signature fallback retries connect + SSH tunnel auto-restart (closes #131, #132) by @shanselman in #141
- [Repo Assist] perf: make ExecApprovalPolicy regex cache thread-safe (ConcurrentDictionary) by @github-actions[bot] in #136
- [Repo Assist] perf: replace List.Insert(0) with LinkedList.AddFirst in ActivityStreamService by @github-actions[bot] in #137
- fix: use invariant culture in numeric display formatting by @AlexAlves87 in #158
- [Repo Assist] test: add MenuSizingHelper unit tests + ShellQuoting edge cases by @github-actions[bot] in #142
- [Repo Assist] test: add BuildMissingScopeFixCommands and BuildPairingApprovalFixCommands unit tests by @github-actions[bot] in #145
- [Repo Assist] fix: ClassifyByKeywords recognises CI/CD patterns (ci/ prefix) by @github-actions[bot] in #147
- [Repo Assist] improve: SettingsData.FromJson null safety + GatewayUrlHelper static array by @github-actions[bot] in #148
- [Repo Assist] improve: extract FormatAge into ModelFormatting, removing duplicate logic by @github-actions[bot] in #154
- [Repo Assist] test: expand WindowsNodeClient coverage with 10 new unit tests by @github-actions[bot] in #157
- [Repo Assist] improve: remove debug scaffolding and double-serialization from WindowsNodeClient by @github-actions[bot] in #150
- feat: add Dutch (nl-NL) localization for OpenClaw Tray by @PrincNL in #155
- ci: collect coverage and upload test results in CI by @shanselman in #160
- fix: handle node pairing approval events safely by @shanselman in #163
- [Repo Assist] eng: add tests/Directory.Build.props to DRY up shared test project config by @github-actions[bot] in #162
- [Repo Assist] improve: add GetStringArrayArg helper and expand test coverage by @github-actions[bot] in #161
- [Repo Assist] refactor: remove write-only _nodes dictionary from OpenClawGatewayClient by @github-actions[bot] in #168
- [Repo Assist] perf: use ArrayPool(byte) in WebSocketClientBase.SendRawAsync to eliminate per-send heap allocs by @github-actions[bot] in #165
- test: cover websocket auto-reconnect regression by @shanselman in #169
- ci: add NuGet cache to build-extension job by @shanselman in #170
- [Repo Assist] improve: use FrozenDictionary for NotificationCategorizer lookup tables by @github-actions[bot] in #171
- security: harden system.run against env injection and shell-wrapper bypass by @shanselman in #188
- [Repo Assist] eng: fix three compiler/analyzer warnings in test suite by @github-actions[bot] in #177
- [Repo Assist] test: add ParseChannelHealth status-derivation and property-parsing coverage by @github-actions[bot] in #174
- [Repo Assist] improve: eliminate List(T) allocation in GatewayNodeInfo.DetailText; +2 edge-case tests by @github-actions[bot] in #178
- [Repo Assist] perf: eliminate List(T) allocation in SessionInfo.RichDisplayText by @github-actions[bot] in #176
- [Repo Assist] perf: eliminate List(T) allocations in SessionInfo.DisplayText and GetSessionListInternal by @github-actions[bot] in #172
- [Repo Assist] perf: eliminate List(T) allocation in BuildProviderSummary by @github-actions[bot] in #173
- [Repo Assist] perf: FrozenSet/FrozenDictionary for ChannelHealth status lookups; eliminate List(T) in GatewayUsageInfo.DisplayText by @github-actions[bot] in #175
- [Repo Assist] improve: use SearchValues(char) in ShellQuoting.NeedsQuoting for SIMD metachar scan by @github-actions[bot] in #182
- [Repo Assist] fix: use integer truncation in FormatAge to prevent rounding past display boundaries by @github-actions[bot] in #183
- [Repo Assist] perf: eliminate LINQ allocations in command execution path by @github-actions[bot] in #185
- feat: add setup wizard with pairing-aware connection test by @shanselman in #201
- fix: address WinUI3 code review findings (159 issues) by @shanselman in #203
New Contributors
- @Tim0320 made their first contribution in #100
- @rundredoffi made their first contribution in #69
- @github-actions[bot] made their first contribution in #121
- @NichUK made their first contribution in #83
- @sytone made their first contribution in #117
- @AlexAlves87 made their first contribution in #158
- @PrincNL made their first contribution in #155
Full Changelog: v0.4.7...v0.5.0