Commit Graph

100 Commits

Author SHA1 Message Date
Scott Hanselman
6eb2142da6 chore(release): prepare v0.4.4
Some checks failed
Build and Test / test (push) Has been cancelled
Build and Test / build (win-x64) (push) Has been cancelled
Build and Test / build (win-arm64) (push) Has been cancelled
Build and Test / build-msix (ARM64, win-arm64) (push) Has been cancelled
Build and Test / build-msix (x64, win-x64) (push) Has been cancelled
Build and Test / build-extension (arm64) (push) Has been cancelled
Build and Test / build-extension (x64) (push) Has been cancelled
Build and Test / release (push) Has been cancelled
- 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
2026-02-23 21:55:26 -08:00
copilot-swe-agent[bot]
f8fab84a3f Fix UnobservedTaskException crash when gateway is unreachable at startup
Co-authored-by: shanselman <2892+shanselman@users.noreply.github.com>
2026-02-22 01:35:28 +00:00
copilot-swe-agent[bot]
e177462e89 Initial plan 2026-02-22 01:31:07 +00:00
Scott Hanselman
ab61f0f3b1 fix(winui): harden preview threading and reconnect capability recovery
Some checks failed
Build and Test / test (push) Has been cancelled
Build and Test / build (win-arm64) (push) Has been cancelled
Build and Test / build (win-x64) (push) Has been cancelled
Build and Test / build-msix (ARM64, win-arm64) (push) Has been cancelled
Build and Test / build-msix (x64, win-x64) (push) Has been cancelled
Build and Test / build-extension (arm64) (push) Has been cancelled
Build and Test / build-extension (x64) (push) Has been cancelled
Build and Test / release (push) Has been cancelled
- 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>
2026-02-16 23:29:58 -08:00
Scott Hanselman
e3d6a01bb4 chore(release): prepare v0.4.3
- 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
2026-02-16 23:11:34 -08:00
Scott Hanselman
3025daaa71 feat(winui): add activity stream and richer node observability
- 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>
2026-02-16 23:02:57 -08:00
Scott Hanselman
4d8d43bcfe Improve web chat security UX and bump to 0.4.2
Some checks failed
Build and Test / test (push) Has been cancelled
Build and Test / build (win-arm64) (push) Has been cancelled
Build and Test / build (win-x64) (push) Has been cancelled
Build and Test / build-msix (ARM64, win-arm64) (push) Has been cancelled
Build and Test / build-msix (x64, win-x64) (push) Has been cancelled
Build and Test / build-extension (arm64) (push) Has been cancelled
Build and Test / build-extension (x64) (push) Has been cancelled
Build and Test / release (push) Has been cancelled
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-16 21:49:13 -08:00
Scott Hanselman
c5e5a291e9 Fix issue #18 README allowCommands docs
Some checks failed
Build and Test / test (push) Has been cancelled
Build and Test / build (win-arm64) (push) Has been cancelled
Build and Test / build (win-x64) (push) Has been cancelled
Build and Test / build-msix (ARM64, win-arm64) (push) Has been cancelled
Build and Test / build-msix (x64, win-x64) (push) Has been cancelled
Build and Test / build-extension (arm64) (push) Has been cancelled
Build and Test / build-extension (x64) (push) Has been cancelled
Build and Test / release (push) Has been cancelled
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-16 21:22:08 -08:00
Scott Hanselman
92d9d389b1 Bump fallback versions to 0.4.1
- 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>
2026-02-16 21:10:43 -08:00
Scott Hanselman
f78d2ed27e Fix issue #19 gateway URL normalization
- 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>
2026-02-16 20:40:17 -08:00
Copilot
0aebcc24f2
Fix auto-updater loop by removing hardcoded FileVersion and AssemblyVersion (#17) 2026-02-10 00:17:47 -08:00
Scott Hanselman
665425c612 fix: use non-deprecated signing-account-name in trusted-signing-action 2026-02-07 20:21:39 -08:00
Scott Hanselman
50ffbb8828 Fix Debug method name collision in WinForms Logger
Some checks failed
Build and Test / test (push) Has been cancelled
Build and Test / build (win-arm64) (push) Has been cancelled
Build and Test / build (win-x64) (push) Has been cancelled
Build and Test / build-msix (ARM64, win-arm64) (push) Has been cancelled
Build and Test / build-msix (x64, win-x64) (push) Has been cancelled
Build and Test / build-extension (arm64) (push) Has been cancelled
Build and Test / build-extension (x64) (push) Has been cancelled
Build and Test / release (push) Has been cancelled
2026-02-07 18:46:14 -08:00
Scott Hanselman
ad1409ca68 Fix update dialog black square, add Debug log level, reduce log noise
- 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
2026-02-07 18:24:19 -08:00
Scott Hanselman
ca681c7e55 feat: implement system.which capability - resolve executable names via PATH with PATHEXT support on Windows 2026-02-07 17:56:57 -08:00
Scott Hanselman
019d6e0e89 fix: MSIX publisher mismatch and resilient release pipeline
- 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
2026-02-07 17:38:14 -08:00
Scott Hanselman
199f855729
feat: enhanced notification categorization pipeline (#12) (#15)
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/
2026-02-07 17:24:11 -08:00
Scott Hanselman
5d95042ff3 chore: remove unused uap3 namespace from MSIX manifest 2026-02-07 16:56:39 -08:00
Scott Hanselman
45921b07e6 fix: accept system.run command as argv array per OpenClaw spec
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.
2026-02-07 16:49:46 -08:00
Scott Hanselman
3fc96748d5 feat: MSIX dual-distribution packaging
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.
2026-02-07 15:34:49 -08:00
Scott Hanselman
4003e58d8f feat: system.run + exec approval policy
Implement system.run command execution with swappable ICommandRunner
interface and glob-pattern-based exec approval policy for security.

ICommandRunner abstraction:
- ICommandRunner interface with CommandRequest/CommandResult models
- LocalCommandRunner: Process.Start with pwsh/cmd/powershell support
- Supports shell selection, cwd, timeout, env vars, args
- Designed for future DockerCommandRunner/WslCommandRunner swap-in

Exec approval policy:
- ExecApprovalPolicy engine with glob-pattern matching (*, ?)
- First-match-wins rule evaluation with Allow/Deny/Ask actions
- JSON persistence to exec-policy.json in data directory
- Default policy: allows read-only commands (echo, Get-*, hostname),
  denies destructive ops (rm, shutdown, Format-*, registry)
- system.execApprovals.get: retrieve current policy rules
- system.execApprovals.set: update policy remotely

Node integration:
- SystemCapability checks approval policy before executing commands
- Denied commands return error with policy rule explanation
- NodeService wires LocalCommandRunner + ExecApprovalPolicy

Tests (191 total, all passing):
- 30 exec approval tests: policy evaluation, persistence, patterns,
  SystemCapability integration, default rules validation
- system.run unit + integration tests
- Fixed: NodeCapabilityBase arg helpers guard default(JsonElement)

Docs updated:
- README: exec approvals commands, usage examples, gateway config
- Architecture doc: capability matrix, roadmap checkboxes updated
2026-02-07 14:16:15 -08:00
Scott Hanselman
8928993cd7 fix: address code review issues
- Sanitize HTML in canvas.present to strip iframe/object/embed/applet tags

- Make CameraCaptureService IDisposable, dispose SemaphoreSlim

- Fix WindowsNodeClient.Dispose race: don't dispose CTS immediately
2026-02-06 16:45:40 -08:00
Scott Hanselman
6740cae85c test: add node capability and device identity tests
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
2026-02-06 16:08:38 -08:00
Scott Hanselman
5e347155af test: add opt-in integration test attributes 2026-02-03 21:35:00 -08:00
Scott Hanselman
b814a9eb65 docs: add Windows node roadmap 2026-02-03 21:25:46 -08:00
Scott Hanselman
e3eeef3367 feat: add Windows node mode capabilities
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.
2026-02-03 21:25:46 -08:00
Scott Hanselman
92326f7f9b
Merge pull request #13 from shanselman/copilot/fix-github-actions-workflow-test
Fix CI: Add runtime identifier to WinUI build
2026-02-01 23:28:28 -08:00
copilot-swe-agent[bot]
80474fc348 Fix CI workflow: Add runtime identifier to WinUI build
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>
2026-02-02 07:26:28 +00:00
copilot-swe-agent[bot]
09dec672e7 Initial plan 2026-02-02 07:24:47 +00:00
Scott Hanselman
caad33fa59
Merge pull request #8 from shanselman/copilot/add-development-docs
Add DEVELOPMENT.md — contributor setup and architecture docs
2026-02-01 23:20:17 -08:00
Scott Hanselman
22377b0cb0 Bump version to 0.3.0
Some checks failed
Build and Test / test (push) Has been cancelled
Build and Test / build (win-arm64) (push) Has been cancelled
Build and Test / build (win-x64) (push) Has been cancelled
Build and Test / build-extension (arm64) (push) Has been cancelled
Build and Test / build-extension (x64) (push) Has been cancelled
Build and Test / release (push) Has been cancelled
2026-02-01 22:24:45 -08:00
Scott Hanselman
57b929ce59 Fix chat notifications and improve UX
- 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)
2026-02-01 22:24:13 -08:00
Scott Hanselman
c658b1f517 Organize docs and add Windows Node architecture roadmap
- 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
2026-02-01 21:26:10 -08:00
copilot-swe-agent[bot]
03c9128e55 Update DEVELOPMENT.md to require .NET 10 SDK
Co-authored-by: shanselman <2892+shanselman@users.noreply.github.com>
2026-02-02 05:21:18 +00:00
Scott Hanselman
e7068351a3 Bump version to 0.2.0
Some checks failed
Build and Test / test (push) Has been cancelled
Build and Test / build (win-arm64) (push) Has been cancelled
Build and Test / build (win-x64) (push) Has been cancelled
Build and Test / build-extension (arm64) (push) Has been cancelled
Build and Test / build-extension (x64) (push) Has been cancelled
Build and Test / release (push) Has been cancelled
2026-02-01 19:12:46 -08:00
Scott Hanselman
cf54851752 Security: Don't log tokens in navigation events
Strip query parameters from URIs before logging to prevent
token leakage in log files.
2026-02-01 19:11:52 -08:00
Scott Hanselman
06e2f8dcbc Show friendly error when gateway is unreachable
Instead of WebView2's default 'localhost refused to connect' page,
show helpful message with VPN/SSH tunnel instructions.
2026-02-01 15:23:57 -08:00
Scott Hanselman
bb06fb12c4 Fix WebView2 in unpackaged WinUI on ARM64
- 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.
2026-02-01 15:14:55 -08:00
Scott Hanselman
93fb8ea158 Update Windows App SDK to 1.8.4 (Jan 2026 stable) 2026-02-01 14:41:06 -08:00
Scott Hanselman
7b63816368 Add Windows SDK and WebView2 to prerequisites
- build.ps1 now checks for WebView2 Runtime
- README lists all prerequisites for WinUI build
- WebView2 check is informational (app falls back to browser)
2026-02-01 14:35:35 -08:00
Scott Hanselman
758ce08cf0 Upgrade all projects to .NET 10
- OpenClaw.Tray.WinUI: net9.0 -> net10.0
- OpenClaw.Shared: multi-target -> net10.0 single target
- Updated build.ps1 to only require .NET 10
- Updated README with .NET 10 only prerequisites
- Updated issue #10 comment
2026-02-01 14:34:50 -08:00
Scott Hanselman
5f18e7b530 Add build.ps1 script with prerequisite detection
- 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
2026-02-01 14:29:51 -08:00
Scott Hanselman
2f8bac396d Fix WebView2 loading and add browser fallback
- 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.
2026-01-31 22:56:38 -08:00
copilot-swe-agent[bot]
8d4193d48b Remove hardcoded test count to reduce maintenance overhead
Co-authored-by: shanselman <2892+shanselman@users.noreply.github.com>
2026-02-01 06:55:20 +00:00
copilot-swe-agent[bot]
398c2b25b6 Add note clarifying naming history (Moltbot → OpenClaw)
Co-authored-by: shanselman <2892+shanselman@users.noreply.github.com>
2026-02-01 06:54:31 +00:00
copilot-swe-agent[bot]
f272e470c0 Add comprehensive DEVELOPMENT.md with architecture and build instructions
Co-authored-by: shanselman <2892+shanselman@users.noreply.github.com>
2026-02-01 06:53:51 +00:00
copilot-swe-agent[bot]
1f95004d42 Initial plan 2026-02-01 06:49:07 +00:00
Scott Hanselman
2954a45ed2 Rename repo references to openclaw-windows-hub
- Update Updatum manager in both WinForms and WinUI trays
- Update GitHub link in settings dialog
2026-01-31 22:07:17 -08:00
Scott Hanselman
e784fcdd39 Bump version to 0.1.0
Some checks failed
Build and Test / test (push) Has been cancelled
Build and Test / build (win-arm64) (push) Has been cancelled
Build and Test / build (win-x64) (push) Has been cancelled
Build and Test / build-extension (arm64) (push) Has been cancelled
Build and Test / build-extension (x64) (push) Has been cancelled
Build and Test / release (push) Has been cancelled
- Update WinForms tray from hardcoded 1.0.0 to 0.1.0
- Add explicit version to WinUI tray project
2026-01-30 23:29:59 -08:00
Scott Hanselman
44b398b94e Fix WinUI tray menu crash and improve reliability
- 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
2026-01-30 22:50:39 -08:00