π€ *Repo Assist here β I'm an automated AI assistant for this repository.* ## Activity for March 2026 ## Suggested Actions for Maintainer **Comprehensive list** of all pending actions requiring maintainer attention (excludes items already actioned and checked off). * [ ] **Review PR** #122: fix β respect `sound=false` in `system.notify` node notifications (`PlaySound` field was silently ignored) β [Review](https://github.com/openclaw/openclaw-windows-node/pull/122) * [ ] **Review PR** #123: eng β add `global.json` to pin .NET SDK to `10.0.x` (`rollForward: latestFeature`); resolves tracking issues #106 and #116 β [Review](https://github.com/openclaw/openclaw-windows-node/pull/123) * [ ] **Review PR** #120: Voice Mode (first-pass) by `@NichUK` β Windows STT/TTS, configurable providers, compact repeater window β [Review](https://github.com/openclaw/openclaw-windows-node/pull/120) * [ ] **Review PR** #121: fix β null `_gatewayClient` after dispose in `OnSettingsSaved` (guards bypassed when switching to node mode) β [Review](https://github.com/openclaw/openclaw-windows-node/pull/121) * [ ] **Review PR** #119: perf β skip StringBuilder in single-frame WebSocket receive; fix double `payload.ToString()` β [Review](https://github.com/openclaw/openclaw-windows-node/pull/119) * [ ] **Review PR** #118: refactor β eliminate `ToLowerInvariant` allocations in `ChannelHealth`; use `TryGetValue` in `UpdateTrackedSession` β [Review](https://github.com/openclaw/openclaw-windows-node/pull/118) * [ ] **Review PR** #117: Feature/ssh tunnel gateway by `@sytone` β major feature: SSH tunneling, improved Quick Chat/Quick Send pairing, new CLI tool (~2043 insertions) β [Review](https://github.com/openclaw/openclaw-windows-node/pull/117) * [ ] **Review PR** #115: fix β reset node/gateway state on settings save; clear `_isPendingApproval` on disconnect (closes #114) β [Review](https://github.com/openclaw/openclaw-windows-node/pull/115) * [ ] **Review PR** #113: fix β add `operator.write` scope to gateway connect handshake (closes #112 QuickSend broken) β [Review](https://github.com/openclaw/openclaw-windows-node/pull/113) * [ ] **Review PR** #111: refactor β extract `ModelFormatting` helper; deduplicate `FormatTokenCount`/`FormatCount` β [Review](https://github.com/openclaw/openclaw-windows-node/pull/111) * [ ] **Review PR** #110: docs β add SETUP.md and POWERTOYS.md; fix stale CommandPalette section in README (closes #103) β [Review](https://github.com/openclaw/openclaw-windows-node/pull/110) * [ ] **Review PR** #109: fix β prevent double `PairingStatusChanged` fire in `hello-ok` handler; 2 regression tests β [Review](https://github.com/openclaw/openclaw-windows-node/pull/109) * [ ] **Review PR** #108: refactor β DeepLinkHandler: use pre-parsed `result.Parameters` instead of re-parsing query string β [Review](https://github.com/openclaw/openclaw-windows-node/pull/108) * [ ] **Review PR** #107: eng β add `.editorconfig` to enforce consistent C# code style β [Review](https://github.com/openclaw/openclaw-windows-node/pull/107) * [ ] **Review PR** #105: perf β cache HTML sanitize regex; replace `ToLowerInvariant` with `FrozenDictionary`; fix `GetRawText` double-call β [Review](https://github.com/openclaw/openclaw-windows-node/pull/105) * [ ] **Review PR** #104: fix β honour `PreferStructuredCategories` setting in notification categorizer β [Review](https://github.com/openclaw/openclaw-windows-node/pull/104) * [ ] **Review PR** #101: perf β eliminate string allocations in `ClassifyByKeywords` and `ClassifyTool` β [Review](https://github.com/openclaw/openclaw-windows-node/pull/101) * [ ] **Review PR** #100: add zh_tw localization by `@Tim0320` β [Review](https://github.com/openclaw/openclaw-windows-node/pull/100) * [ ] **Review PR** #98: refactor β remove dead `ClassifyNotification` method, fix reflection tests β [Review](https://github.com/openclaw/openclaw-windows-node/pull/98) * [ ] **Review PR** #97: eng β sync `xunit.runner.visualstudio` to 3.1.4 and add `coverlet.collector` to Tray.Tests β [Review](https://github.com/openclaw/openclaw-windows-node/pull/97) * [ ] **Review PR** #96: refactor β extract `TryParseArgv` helper in SystemCapability, fix operator precedence β [Review](https://github.com/openclaw/openclaw-windows-node/pull/96) * [ ] **Review PR** #95: fix β apply `NotificationSound` setting to all toast notifications (closes #71) β [Review](https://github.com/openclaw/openclaw-windows-node/pull/95) * [ ] **Review PR** #93: fix β pass `UserRules` to `NotificationCategorizer` (user rules were silently ignored) β [Review](https://github.com/openclaw/openclaw-windows-node/pull/93) * [ ] **Review PR** #83: Tray menu overflow / scroll fix by `@NichUK` β multi-monitor handling confirmed correct β [Review](https://github.com/openclaw/openclaw-windows-node/pull/83) * [ ] **Review PR** #80: Stabilize tray pairing and reconnect behavior by `@andyeskridge` β all Repo Assist feedback addressed, ready to merge β [Review](https://github.com/openclaw/openclaw-windows-node/pull/80) * [ ] **Review PR** #69: French localization by `@rundredoffi` β 163 keys, structurally complete β [Review](https://github.com/openclaw/openclaw-windows-node/pull/69) * [ ] **Check comment** #112: Repo Assist diagnosed timing/sequencing issue for custom client β [View](https://github.com/openclaw/openclaw-windows-node/issues/112) * [ ] **Check comment** #114: Repo Assist identified two root causes and created fix PR #115 β [View](https://github.com/openclaw/openclaw-windows-node/issues/114) * [ ] **Check comment** #82: Repo Assist confirmed MonitorFromPoint multi-monitor handling is correct; PR #83 is ready to merge β [View](https://github.com/openclaw/openclaw-windows-node/issues/82) * [ ] **Check comment** #61: Repo Assist commented with translation PR status (PRs #69, #100 open for review) β [View](https://github.com/openclaw/openclaw-windows-node/issues/61) * [ ] **Check comment** #81: Repo Assist commented with root cause analysis for deviceToken issue β [View](https://github.com/openclaw/openclaw-windows-node/issues/81) * [ ] **Check comment** #99: Repo Assist commented with voice capability architecture sketch and Windows speech API guide β [View](https://github.com/openclaw/openclaw-windows-node/issues/99) * [ ] **Moderate spam** on #71 and PR #69: user `@wisdomdaoleo` posted cryptocurrency bot spam on both * [ ] **Close issue** #102: NuGet cache CI improvement β blocked on protected `.github/workflows/ci.yml`; human must apply patch manually β [View](https://github.com/openclaw/openclaw-windows-node/issues/102) * [ ] **Close issue** #106: global.json tracking issue β now addressed by PR #123 β [View](https://github.com/openclaw/openclaw-windows-node/issues/106) * [ ] **Close issue** #116: duplicate global.json tracking issue β now addressed by PR #123 β [View](https://github.com/openclaw/openclaw-windows-node/issues/116) ## Future Work for Repo Assist - Implement localization key parity tests (issue #70) once #69 and #100 land - Review PR #120 (Voice Mode by `@NichUK`) for code quality / architecture notes ## Run History ### 2026-03-31 12:48 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23798045645) - π§ Created PR #122: fix β respect `sound=false` in `system.notify` node notifications (`PlaySound` field ignored in `OnNodeNotificationRequested`) - π§ Created PR #123: eng β add `global.json` to pin .NET SDK to `10.0.x`; resolves tracking issues #106 and #116 ### 2026-03-31 01:00 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23775303670) - π§ Created PR #121: fix β null `_gatewayClient` after dispose in `OnSettingsSaved` (guards bypassed in node mode; 596 tests pass) - π¬ Commented on #82: confirmed multi-monitor handling via MonitorFromPoint; noted PR #83 ready to merge - π Noted new community PR #120 (Voice Mode first-pass by `@NichUK`) β added to Suggested Actions ### 2026-03-30 12:48 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23745438793) - π¬ Commented on #112: explained timing/sequencing issue (must wait for `hello-ok` before sending); noted `sessionKey` parameter may be unrecognised - π Task 6: All 17 open Repo Assist PRs (#93β#119) verified `mergeable_state: clean` β no CI failures, no merge conflicts ### 2026-03-30 01:03 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23723485865) - π§ Created PR #119: perf β skip StringBuilder in single-frame WebSocket receive; fix double `payload.ToString()` (503 tests pass) - π Task 6: All 16 open Repo Assist PRs (#93β#118) verified `mergeable_state: clean` ### 2026-03-29 12:46 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23709345968) - π§ Created PR #118: refactor β eliminate `ToLowerInvariant` allocations in `ChannelHealth`; use `TryGetValue` in `UpdateTrackedSession` (503+93 tests pass) - π Noted new community PR #117 (Feature/ssh tunnel gateway by `@sytone`) β added to Suggested Actions ### 2026-03-29 01:03 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23698205808) - π§ Created PR #115: fix β reset node/gateway state on settings save; clear _isPendingApproval on disconnect (closes #114) - π Created issue #116: eng β add global.json to pin .NET SDK to 10.0.x (tracking issue) - π¬ Commented on #114: identified two root causes; linked to fix PR #115 ### 2026-03-28 12:46 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23685513371) - π·οΈ Labelled #114 with `bug`, `needs investigation` - π¬ Commented on #114: diagnosed node mode disconnect; asked for log details; noted PR #80 as relevant - π Task 6: All 14 open Repo Assist PRs verified clean ### 2026-03-28 00:55 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23673756269) - π Task 6: All 14 open Repo Assist PRs checked β all `mergeable_state: clean` - π¬ Commented on PR #80: all 4 prior observations addressed; marked ready to merge ### 2026-03-27 12:48 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23646871252) - π·οΈ Labelled #112 with `bug`, `needs investigation` - π¬ Commented on #112: identified missing `operator.write` scope as root cause; posted workaround - π§ Created PR #113: fix β add `operator.write` scope to gateway connect handshake (closes #112; 503 tests pass) ### 2026-03-27 01:00 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23625760654) - π§ Created PR #111: refactor β extract `ModelFormatting` helper; deduplicate `FormatTokenCount`/`FormatCount` (503 tests pass) ### 2026-03-26 12:48 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23595054022) - π§ Created PR #110: docs β add SETUP.md, POWERTOYS.md, fix stale README CommandPalette section (closes #103) - π¬ Commented on #103: linked to submitted docs PR ### 2026-03-26 01:00 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23572116398) - π§ Created PR #109: fix β prevent double `PairingStatusChanged` fire in `hello-ok` handler; 2 regression tests (505 pass) - π¬ Commented on #99: voice mode capability architecture sketch + Windows speech API tier guide ### 2026-03-25 12:48 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23541721419) - π¬ Commented on #61: noted open translation PRs #69 and #100; encouraged more contributors - π§ Created PR #108: refactor β DeepLinkHandler uses pre-parsed `result.Parameters` (596 tests pass) ### 2026-03-25 00:57 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23519623545) - π·οΈ Labelled #99 with `enhancement`, #103 with `documentation` + `enhancement` - π¬ Commented on #103: docs gap analysis; identified missing setup + PowerToys guides - π§ Created PR #107: eng β add `.editorconfig` enforcing C# code style ### 2026-03-24 12:48 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23490148084) - π§ Created PR #105: perf β cache HTML sanitize regex; FrozenDictionary for notification type; fix `GetRawText()` double-call - π Created issue #106: eng β add `global.json` to pin .NET SDK ### 2026-03-24 00:51 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23467652448) - π§ Created PR #104: fix β honour `PreferStructuredCategories` setting in notification categorizer (508 tests pass) ### 2026-03-23 12:47 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23437978904) - π§ Created PR #101: perf β eliminate string allocations in `ClassifyByKeywords` and `ClassifyTool` - π Created tracking issue #102: eng β NuGet cache CI (blocked on protected workflows) ### 2026-03-23 00:58 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23416875078) - π§ Created PRs #95 (NotificationSound fix), #96 (TryParseArgv refactor), #97 (test tooling sync), #98 (remove dead ClassifyNotification) ### 2026-03-22 12:46 UTC β [Run](https://github.com/openclaw/openclaw-windows-node/actions/runs/23403342045) - π§ Created PR #93: fix β pass UserRules to NotificationCategorizer (503 tests pass) - π¬ Reviewed PR #80: posted code review with 4 observations ### 2026-03-18 β Earlier runs - π§ Created PRs #65 (cache JsonSerializerOptions) **merged β **, #66 (NuGet caching) **merged β **, #58 (Tray.Tests to CI) **merged β ** - π¬ Commented on #55 (root cause), #71, #81, #82; π§ Fixed #55 (channel list refresh) **merged β ** > Generated by [Repo Assist](https://github.com/openclaw/openclaw-windows-node/actions/runs/23798045645) Β· [β·](https://github.com/search?q=repo%3Aopenclaw%2Fopenclaw-windows-node+is%3Aissue+%22gh-aw-workflow-call-id%3A+openclaw%2Fopenclaw-windows-node%2Frepo-assist%22&type=issues) > > To install this [agentic workflow](https://github.com/githubnext/agentics/tree/cbb46ab386962aa371045839fc9998ee4e97ca64/workflows/repo-assist.md), run > ``` > gh aw add githubnext/agentics/workflows/repo-assist.md@cbb46ab386962aa371045839fc9998ee4e97ca64 > ``` <!-- gh-aw-agentic-workflow: Repo Assist, engine: copilot, id: 23798045645, workflow_id: repo-assist, run: https://github.com/openclaw/openclaw-windows-node/actions/runs/23798045645 --> --- *Closing β April 2026 Monthly Activity issue created to continue tracking.* > Generated by [Repo Assist](https://github.com/openclaw/openclaw-windows-node/actions/runs/23826881473) Β· [β·](https://github.com/search?q=repo%3Aopenclaw%2Fopenclaw-windows-node+is%3Aissue+%22gh-aw-workflow-call-id%3A+openclaw%2Fopenclaw-windows-node%2Frepo-assist%22&type=issues) > > To install this [agentic workflow](https://github.com/githubnext/agentics/tree/cbb46ab386962aa371045839fc9998ee4e97ca64/workflows/repo-assist.md), run > ``` > gh aw add githubnext/agentics/workflows/repo-assist.md@cbb46ab386962aa371045839fc9998ee4e97ca64 > ``` <!-- gh-aw-agentic-workflow: Repo Assist, engine: copilot, id: 23826881473, workflow_id: repo-assist, run: https://github.com/openclaw/openclaw-windows-node/actions/runs/23826881473 -->
π€ Repo Assist here β I'm an automated AI assistant for this repository.
Activity for March 2026
Suggested Actions for Maintainer
Comprehensive list of all pending actions requiring maintainer attention (excludes items already actioned and checked off).
sound=falseinsystem.notifynode notifications (PlaySoundfield was silently ignored) β Reviewglobal.jsonto pin .NET SDK to10.0.x(rollForward: latestFeature); resolves tracking issues [Repo Assist] eng: add global.json to pin .NET SDK to 10.0.x (rollForward: latestFeature)Β #106 and [Repo Assist] eng: add global.json to pin .NET SDK to 10.0.x (rollForward: latestFeature)Β #116 β Review@NichUKβ Windows STT/TTS, configurable providers, compact repeater window β Review_gatewayClientafter dispose inOnSettingsSaved(guards bypassed when switching to node mode) β Reviewpayload.ToString()β ReviewToLowerInvariantallocations inChannelHealth; useTryGetValueinUpdateTrackedSessionβ Review@sytoneβ major feature: SSH tunneling, improved Quick Chat/Quick Send pairing, new CLI tool (~2043 insertions) β Review_isPendingApprovalon disconnect (closes Node mode not workΒ #114) β Reviewoperator.writescope to gateway connect handshake (closes I developed a client to send messages to openclaw, but it consistently fails to send. Even using the demo's quick send feature also fails to workΒ #112 QuickSend broken) β ReviewModelFormattinghelper; deduplicateFormatTokenCount/FormatCountβ ReviewPairingStatusChangedfire inhello-okhandler; 2 regression tests β Reviewresult.Parametersinstead of re-parsing query string β Review.editorconfigto enforce consistent C# code style β ReviewToLowerInvariantwithFrozenDictionary; fixGetRawTextdouble-call β ReviewPreferStructuredCategoriessetting in notification categorizer β ReviewClassifyByKeywordsandClassifyToolβ Review@Tim0320β ReviewClassifyNotificationmethod, fix reflection tests β Reviewxunit.runner.visualstudioto 3.1.4 and addcoverlet.collectorto Tray.Tests β ReviewTryParseArgvhelper in SystemCapability, fix operator precedence β ReviewNotificationSoundsetting to all toast notifications (closes [Repo Assist] bug: NotificationSound setting has no effect β sound is never applied to toast notificationsΒ #71) β ReviewUserRulestoNotificationCategorizer(user rules were silently ignored) β Review@NichUKβ multi-monitor handling confirmed correct β Review@andyeskridgeβ all Repo Assist feedback addressed, ready to merge β Review@rundredoffiβ 163 keys, structurally complete β Review@wisdomdaoleoposted cryptocurrency bot spam on both.github/workflows/ci.yml; human must apply patch manually β ViewFuture Work for Repo Assist
@NichUK) for code quality / architecture notesRun History
2026-03-31 12:48 UTC β Run
sound=falseinsystem.notifynode notifications (PlaySoundfield ignored inOnNodeNotificationRequested)global.jsonto pin .NET SDK to10.0.x; resolves tracking issues [Repo Assist] eng: add global.json to pin .NET SDK to 10.0.x (rollForward: latestFeature)Β #106 and [Repo Assist] eng: add global.json to pin .NET SDK to 10.0.x (rollForward: latestFeature)Β #1162026-03-31 01:00 UTC β Run
_gatewayClientafter dispose inOnSettingsSaved(guards bypassed in node mode; 596 tests pass)@NichUK) β added to Suggested Actions2026-03-30 12:48 UTC β Run
hello-okbefore sending); notedsessionKeyparameter may be unrecognisedmergeable_state: cleanβ no CI failures, no merge conflicts2026-03-30 01:03 UTC β Run
payload.ToString()(503 tests pass)mergeable_state: clean2026-03-29 12:46 UTC β Run
ToLowerInvariantallocations inChannelHealth; useTryGetValueinUpdateTrackedSession(503+93 tests pass)@sytone) β added to Suggested Actions2026-03-29 01:03 UTC β Run
2026-03-28 12:46 UTC β Run
bug,needs investigation2026-03-28 00:55 UTC β Run
mergeable_state: clean2026-03-27 12:48 UTC β Run
bug,needs investigationoperator.writescope as root cause; posted workaroundoperator.writescope to gateway connect handshake (closes I developed a client to send messages to openclaw, but it consistently fails to send. Even using the demo's quick send feature also fails to workΒ #112; 503 tests pass)2026-03-27 01:00 UTC β Run
ModelFormattinghelper; deduplicateFormatTokenCount/FormatCount(503 tests pass)2026-03-26 12:48 UTC β Run
2026-03-26 01:00 UTC β Run
PairingStatusChangedfire inhello-okhandler; 2 regression tests (505 pass)2026-03-25 12:48 UTC β Run
result.Parameters(596 tests pass)2026-03-25 00:57 UTC β Run
enhancement, Improve Windows Node setup documentation and PowerToys guideΒ #103 withdocumentation+enhancement.editorconfigenforcing C# code style2026-03-24 12:48 UTC β Run
GetRawText()double-callglobal.jsonto pin .NET SDK2026-03-24 00:51 UTC β Run
PreferStructuredCategoriessetting in notification categorizer (508 tests pass)2026-03-23 12:47 UTC β Run
ClassifyByKeywordsandClassifyTool2026-03-23 00:58 UTC β Run
2026-03-22 12:46 UTC β Run
2026-03-18 β Earlier runs
Closing β April 2026 Monthly Activity issue created to continue tracking.