Skip to content

Improve Node capability summary UX - #891

Merged
shanselman merged 2 commits into
openclaw:mainfrom
bkudiess:bkudiess-node-capabilities-ux
Jun 30, 2026
Merged

Improve Node capability summary UX#891
shanselman merged 2 commits into
openclaw:mainfrom
bkudiess:bkudiess-node-capabilities-ux

Conversation

@bkudiess

@bkudiess bkudiess commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Problem: The Connection page Node card exposed a dense raw capability / command / permission dump directly in the default UI.
  • Why it matters: Users could not quickly understand what the node is sharing, and the raw gateway contract text made the primary settings surface look broken/noisy.
  • What changed: Replaced the default dump with stateful capability pills, moved raw capability/command/permission details into a collapsed Show technical details expander, and improved theme/High Contrast/accessibility handling.
  • User impact: The Node card is easier to scan, shows active/pending/off capability states, and still preserves technical debugging details on demand.
  • What did NOT change (scope boundary): No gateway protocol, capability registration, approval semantics, settings storage, or node execution behavior changed.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor
  • Docs / instructions
  • Tests / validation
  • Security hardening
  • Chore / infra

Scope (select all touched areas)

  • Tray / WinUI UX
  • Windows node capability
  • Local MCP / winnode
  • Gateway / connection / pairing
  • Setup / onboarding
  • Permissions / privacy / security
  • Tests / CI / docs

Linked Issue/PR

  • Closes #
  • Related #
  • Related to a bug or regression

Validation

  • Maintainer patch 1e9aa5e3 — exposed Node capability pill state through the visible TextBlock automation peer.
  • Maintainer validation: ./build.ps1 — ✅ all projects built after test-project restore for fresh worktree assets.
  • Maintainer validation: dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore — ✅ 2629 passed / 31 skipped.
  • Maintainer validation: dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --no-restore — ✅ 1433 passed.
  • Maintainer rubber-duck review — ✅ no blocking findings.
  • ./build.ps1 — ✅ all projects built
  • dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --no-restore — ✅ 1432 passed
  • dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore — ✅ 2629 passed / 31 skipped
  • Rubber-duck review — ✅ no blocking findings after follow-up fixes
  • Autoreview attempted with Codex — blocked by auth (401 Unauthorized: Missing bearer or basic authentication); fallback code-review agent found no significant issues.

Real behavior proof

  • Environment tested: Original UI proof on local Windows ARM64, non-isolated tray app using real settings/gateway state; maintainer patch validation on local Windows x64 isolated worktree.
  • PR head / commit tested: 5637a479 visual proof plus maintainer accessibility patch 1e9aa5e3.
  • Exact steps or command run: Original proof used ./run-app-local.ps1 -NoBuild -AllowNonMain, then opened Companion Settings → Connection. Maintainer patch used automated source regression test NodeCapabilityPills_ExposeStateThroughReadableTextPeer plus full required validation.
  • Evidence after fix: Screenshot below shows the unchanged visual Node card capability pills and technical details expander; maintainer patch has no visual change and exposes each pill label/state through the visible TextBlock automation peer for screen readers.
  • Observed result: Node card shows capability pills by state and raw gateway capability/command/permission details only inside Show technical details. The accessibility patch keeps decorative icons raw and moves the combined label/state automation name from the Border container to the readable TextBlock peer.
  • Screenshot/artifact links verified? (Yes/No/N/A): Yes image
  • Not verified / blocked: Manual screen-reader pass not separately captured; automation peer invariant is covered by the added source regression test.

Security Impact (required)

  • New permissions/capabilities? (Yes/No): No
  • Secrets/tokens handling changed? (Yes/No): No
  • New/changed network calls? (Yes/No): No
  • Command/tool execution surface changed? (Yes/No): No
  • Data access scope changed? (Yes/No): No
  • If any Yes, explain risk + mitigation: N/A

Compatibility / Migration

  • Backward compatible? (Yes/No): Yes
  • Config/env changes? (Yes/No): No
  • Migration needed? (Yes/No): No
  • If yes, exact upgrade steps: N/A

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only conversations that still need reviewer or maintainer judgment.

If a bot review conversation is addressed by this PR, resolve that conversation yourself. Do not leave bot review conversation cleanup for maintainers.

Replace the Connection page Node card raw capability dump with stateful capability pills and a collapsed technical-details disclosure. Preserve raw gateway capability, command, and permission details for debugging while improving default scanability, theme handling, and accessibility.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@clawsweeper

clawsweeper Bot commented Jun 30, 2026

Copy link
Copy Markdown

Codex review: needs maintainer review before merge. Reviewed June 29, 2026, 8:48 PM ET / 00:48 UTC.

Summary
The PR replaces the Connection page Node card’s default raw capability dump with stateful capability pills, a collapsed technical-details expander, localization entries, and source regression coverage.

Reproducibility: not applicable. this is a PR for a user-facing tray UX improvement rather than a reproducible bug report. The relevant proof path is PR-head UI evidence, and the inspected screenshot shows the changed Node card state.

Review metrics: 2 noteworthy metrics.

  • Changed surface: 10 files, +518/-125. The PR is a moderate WinUI UX change spanning XAML, code-behind, a helper panel, locale resources, and tests.
  • Deferred locale keys: 6 keys across 5 locales. New visible strings are English-seeded in every supported locale and explicitly added to the localization validation allowlist.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P2] Let the Build and Test rollup finish before merge, then have a maintainer accept the pending-state and High Contrast UX coverage.

Risk before merge

  • [P1] GitHub still reports the PR as UNSTABLE because the Build and Test test/e2e jobs are in progress, so merge should wait for the required check rollup to finish.
  • [P1] Pending-state and High Contrast visuals are mostly supported by code inspection and tests rather than separate visible media, so maintainer UX acceptance should cover those states.

Maintainer options:

  1. Decide the mitigation before merge
    Land the focused Connection page UX change after maintainer acceptance and completed checks, preserving raw gateway details behind the expander.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • No automated repair is needed; maintainers should complete UX acceptance and wait for required checks before merging.

Security
Cleared: No concrete security or supply-chain concern was found; the diff changes WinUI display code, resources, and tests without changing secrets, network calls, command execution, or permissions.

Review details

Best possible solution:

Land the focused Connection page UX change after maintainer acceptance and completed checks, preserving raw gateway details behind the expander.

Do we have a high-confidence way to reproduce the issue?

Not applicable; this is a PR for a user-facing tray UX improvement rather than a reproducible bug report. The relevant proof path is PR-head UI evidence, and the inspected screenshot shows the changed Node card state.

Is this the best way to solve the issue?

Yes, with maintainer UX review; the implementation stays inside the existing ConnectionPage applicator pattern, preserves raw details for debugging, and does not change protocol, storage, or execution behavior.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against a3c5e0bf6fce.

Label changes

Label justifications:

  • P3: This is a low-risk tray UX improvement with limited blast radius and no identified correctness blocker.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The PR body includes a Windows run and the inspected screenshot directly shows the Node card pills and technical-details expander; the later accessibility tweak is non-visual and covered by source regression coverage.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes a Windows run and the inspected screenshot directly shows the Node card pills and technical-details expander; the later accessibility tweak is non-visual and covered by source regression coverage.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body includes a Windows run and the inspected screenshot directly shows the Node card pills and technical-details expander; the later accessibility tweak is non-visual and covered by source regression coverage.
Evidence reviewed

What I checked:

  • AGENTS policy read and applied: AGENTS.md was read fully; its UI proof guidance and ConnectionPage.xaml.cs guardrails apply because the PR touches tray UX, Windows node capability display, and the Connection page code-behind. (AGENTS.md:35, a3c5e0bf6fce)
  • Current main still has the raw surface text path: Current main renders NodeCapabilityText, NodeCommandText, and NodePermissionText directly for active node surfaces, so the requested UX is not already implemented on main. (src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml.cs:887, a3c5e0bf6fce)
  • PR head adds pill and expander slots: PR head replaces the default raw TextBlocks with NodeCapabilityPillsHost and NodeTechnicalDetailsExpander inside the Node card. (src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml:426, 1e9aa5e3e3f1)
  • PR head builds stateful capability pills: PR head builds pills from effective, pending, and local settings state, then keeps raw capability/command/permission details inside the technical expander. (src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml.cs:931, 1e9aa5e3e3f1)
  • Accessibility follow-up has focused regression coverage: The second PR commit moves the automation name onto the visible TextBlock peer, and the added source regression asserts that the pill border no longer owns the accessible name. (tests/OpenClaw.Tray.Tests/ConnectionRegressionSourceTests.cs:67, 1e9aa5e3e3f1)
  • Screenshot proof inspected: The downloaded GitHub attachment is a 1114x852 PNG showing the Connection page Node card with capability pills and the expanded technical-details area. (5637a4792336)

Likely related people:

  • bkudiess: Current-main blame shows the existing Node card capability summary path in ConnectionPage.xaml.cs was last authored by Barbara Kudiess, and GitHub search shows adjacent merged node-state PRs by the same contributor. (role: recent area contributor; confidence: high; commits: a3c5e0bf6fce; files: src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml.cs, src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml)
  • Ranjesh Jaganathan: Git history for ConnectionPage.xaml and ConnectionPage.xaml.cs shows prior gateway terminal, capability-count, and connection UX work in the same page area. (role: earlier Connection page contributor; confidence: medium; commits: 0b2f9fea3dd9, 7d59d8d52f47, eecc97e3b09f; files: src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml, src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml.cs)
  • Christine Yan: Git history for Resources.resw shows recent localization-system work in the locale resource files this PR updates. (role: adjacent localization contributor; confidence: medium; commits: 85445c78066b; files: src/OpenClaw.Tray.WinUI/Strings/en-us/Resources.resw, src/OpenClaw.Tray.WinUI/Strings/fr-fr/Resources.resw, tests/OpenClaw.Tray.Tests/LocalizationValidationTests.cs)
  • shanselman: The PR head includes a follow-up accessibility commit moving the pill state announcement to the visible TextBlock peer and adding source regression coverage. (role: PR follow-up contributor; confidence: medium; commits: 1e9aa5e3e3f1; files: src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml.cs, tests/OpenClaw.Tray.Tests/ConnectionRegressionSourceTests.cs)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. proof: sufficient Contributor real behavior proof is sufficient. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 30, 2026
Move the capability pill automation name onto the visible TextBlock so screen readers can announce the capability label and state through a real text peer instead of relying on a named Border container.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@shanselman
shanselman merged commit b4a8d49 into openclaw:main Jun 30, 2026
17 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants