Skip to content

Fix tool output accessibility labels#650

Merged
shanselman merged 1 commit into
masterfrom
ranjeshj/a11y-tool-output-header-subtree
Jun 7, 2026
Merged

Fix tool output accessibility labels#650
shanselman merged 1 commit into
masterfrom
ranjeshj/a11y-tool-output-header-subtree

Conversation

@ranjeshj

@ranjeshj ranjeshj commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add explicit automation text to TaskList tool-output headers with summary, step count, status, and expanded/collapsed state.
  • Add an automation name to the expanded TaskList body that summarizes the tool steps while preserving the header-only button/body sibling structure.
  • Add a source-level regression test to keep the TaskList header/body automation labels in place.

Closes #590.

Review notes

  • Fix size: small, confidence >=95% after two critical review passes.
  • The change is intentionally limited to automation metadata and does not restructure the click target, preserving the text-selection behavior.

Validation

  • ./build.ps1 from the direct long worktree path still hits a Windows App SDK PRI path-length/generated-file failure in WinUI (CommunityToolkit.WinUI.Controls.SettingsControls.pri.xml). The same worktree passed ./build.ps1 with OPENCLAW_REPO_ROOT set to the real worktree and cwd shortened through a temporary C:\oc590 junction.
  • dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore passed: 2074 total, 0 failed, 2045 succeeded, 29 skipped.
  • dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore passed: 935 total, 0 failed.

Add accessible names to the TaskList tool burst header and expanded body so screen readers can announce both the summary and step output without changing the header-only click target.

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

clawsweeper Bot commented Jun 2, 2026

Copy link
Copy Markdown

Codex review: needs maintainer review before merge. Reviewed June 2, 2026, 7:43 PM ET / 23:43 UTC.

Summary
This PR adds FunctionalUI automation names to TaskList tool-output headers and expanded bodies, plus a tray source contract test for those labels.

Reproducibility: no. high-confidence runtime reproduction was established in this read-only review. Source inspection does show the current TaskList body is a sibling outside the header Button and lacks an explicit automation name, matching the linked accessibility report.

Review metrics: 2 noteworthy metrics.

  • Patch surface: 2 files changed, +40/-13. The diff is bounded to tray TaskList rendering and one tray source contract test.
  • Reported validation: 3 required commands reported. The PR body reports the AGENTS-required build, shared tests, and tray tests, with the build run from a shortened Windows path.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🌊 off-meta tidepool
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] Optionally add a short Windows Narrator or Inspect proof showing the expanded TaskList header and body automation output.

Mantis proof suggestion
A desktop Narrator or Inspect recording would verify the automation output that source-level tests cannot observe. A maintainer can ask Mantis to capture proof by posting a new PR comment that starts with the OpenClaw Mantis account mention, followed by:

visual task: verify that an expanded TaskList tool-output card announces the header summary, step count/status, expanded state, and body step summaries with Narrator or Inspect.

Risk before merge

  • [P1] This read-only review did not run the WinUI app or Narrator, so runtime screen-reader reading order remains covered by source review, existing automation plumbing, and the contributor's reported validation rather than observed live proof.

Maintainer options:

  1. Decide the mitigation before merge
    Land a narrow automation-metadata fix that preserves the header-only click target and, if maintainers want extra assurance, verify the expanded TaskList card with Windows Narrator or Inspect.
  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; the remaining action is normal maintainer review of a collaborator-authored accessibility fix and any desired live a11y proof.

Security
Cleared: The diff only changes WinUI automation labels and a source-level test; it does not touch credentials, dependencies, workflows, or code execution paths.

Review details

Best possible solution:

Land a narrow automation-metadata fix that preserves the header-only click target and, if maintainers want extra assurance, verify the expanded TaskList card with Windows Narrator or Inspect.

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

No high-confidence runtime reproduction was established in this read-only review. Source inspection does show the current TaskList body is a sibling outside the header Button and lacks an explicit automation name, matching the linked accessibility report.

Is this the best way to solve the issue?

Yes, the PR is a narrow maintainable solution: it adds explicit automation metadata through the existing FunctionalUI AutomationName path without restructuring the click target or body selection behavior.

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against bfeb3b5c90be.

Label changes

Label changes:

  • add P2: The PR addresses a bounded tray chat accessibility bug affecting tool-output screen-reader context without a core runtime outage or security impact.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🌊 off-meta tidepool and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: The contributor real-behavior-proof gate is not applied because the PR author association is COLLABORATOR; the PR body reports validation but no live Narrator proof.

Label justifications:

  • P2: The PR addresses a bounded tray chat accessibility bug affecting tool-output screen-reader context without a core runtime outage or security impact.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🌊 off-meta tidepool and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: The contributor real-behavior-proof gate is not applied because the PR author association is COLLABORATOR; the PR body reports validation but no live Narrator proof.
Evidence reviewed

What I checked:

Likely related people:

  • RBrid: Git blame ties the TaskList header/body sibling implementation and FunctionalUI AutomationName plumbing to commit 7d9152f, and the linked issue was opened by RBrid. (role: introduced current behavior and linked issue reporter; confidence: high; commits: 7d9152f427a3, 08cab69a038c; files: src/OpenClaw.Tray.WinUI/Chat/OpenClawChatTimeline.cs, src/OpenClawTray.FunctionalUI/FunctionalUI.cs)
  • ranjeshj: Beyond authoring this PR, ranjeshj has prior merged history touching OpenClawChatTimeline.cs for native chat UX work. (role: recent adjacent contributor; confidence: medium; commits: 131154c13013, ca8c6772db81; files: src/OpenClaw.Tray.WinUI/Chat/OpenClawChatTimeline.cs)
  • Scott Hanselman: Recent history shows Scott Hanselman changed the same timeline and added the existing ChatToolCallsToggleContractTests source contract test pattern. (role: recent adjacent contributor; confidence: medium; commits: 50837d79ecc2, 704a04b4fe0b; files: src/OpenClaw.Tray.WinUI/Chat/OpenClawChatTimeline.cs, tests/OpenClaw.Tray.Tests/ChatToolCallsToggleContractTests.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: 🐚 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. P2 Normal priority bug or improvement with limited blast radius. labels Jun 2, 2026
@shanselman shanselman merged commit 58639f6 into master Jun 7, 2026
24 checks passed
@shanselman shanselman deleted the ranjeshj/a11y-tool-output-header-subtree branch June 7, 2026 18:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal priority bug or improvement with limited blast radius. 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.

A11y: tool-output body is outside the header Button's automation subtree

2 participants