Skip to content

Refine tool access controls#71405

Merged
steipete merged 13 commits intomainfrom
meow/tool-access-panel-polish
Apr 25, 2026
Merged

Refine tool access controls#71405
steipete merged 13 commits intomainfrom
meow/tool-access-panel-polish

Conversation

@BunsDev
Copy link
Copy Markdown
Member

@BunsDev BunsDev commented Apr 25, 2026

Summary

  • Redesign the agent Tool Access panel around compact live-tool chips and expandable tool groups
  • Keep group rows collapsed by default while surfacing tool previews, counts, and live availability in headers
  • Add chat header icon tooltips and subtle hover behavior without dramatic card background changes

Validation

  • pnpm format:check ui/src/styles/components.css ui/src/styles/layout.css ui/src/ui/app-render.helpers.ts ui/src/ui/app-render.helpers.browser.test.ts ui/src/ui/views/agents-panels-tools-skills.ts ui/src/ui/views/agents-panels-tools-skills.browser.test.ts
  • OPENCLAW_LOCAL_CHECK=0 pnpm check:changed

@openclaw-barnacle openclaw-barnacle Bot added app: web-ui App: web-ui size: XL maintainer Maintainer-authored PR labels Apr 25, 2026
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 25, 2026

Greptile Summary

This PR redesigns the agent Tool Access panel, replacing flat tool rows with collapsible <details>-based group and card components, adding live-tool runtime chips, compact summary facts, and CSS-driven tooltips for chat header icon buttons. Two new browser test files validate the chip navigation and tooltip rendering.

The implementation is clean overall, with good responsive breakpoints, reduced-motion support, and thorough test coverage. One noteworthy behaviour: the enable/disable toggle for each tool is placed after </summary> in the DOM, so it is hidden by native <details> behaviour when the card is collapsed — users must expand a card before they can toggle that tool's access state.

Confidence Score: 4/5

Safe to merge — no functional bugs or security issues found; all changes are UI/style with good test coverage.

The PR is a substantial but well-executed UI redesign. No P0 or P1 issues were found. The only noteworthy behaviour (toggle only accessible when card is expanded) is an intentional design decision. Tests cover the new navigation and collapse cascading logic correctly.

No files require special attention.

Reviews (1): Last reviewed commit: "fix(ui): tighten tool access scanning" | Re-trigger Greptile

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2d59f17757

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +443 to +446
<a
class="agent-tools-runtime-chip"
href="#${anchorId}"
@click=${(event: Event) => handleRuntimeToolJump(event, anchorId)}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Render non-catalog live tools without jump links

tools.catalog groups only include core|plugin tools, while tools.effective can include channel tools, so some live entries can never have a matching row in the section list. This block renders every live tool as a clickable anchor, but handleRuntimeToolJump immediately returns when no matching id exists, leaving channel chips as dead links that only mutate the URL hash instead of opening anything. Consider rendering a non-link chip (or a disabled link) when there is no matching catalog row.

Useful? React with 👍 / 👎.

Comment on lines +600 to +603
<label
class="cfg-toggle agent-tool-toggle"
@click=${(event: Event) => event.stopPropagation()}
>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep toggle control inside the details summary

This toggle is rendered as a sibling of <summary> inside <details>, and closed <details> only expose the summary while other children are hidden by default browser behavior. Because each tool row is collapsed by default, the checkbox is not visible/clickable until the row is expanded, which regresses quick enable/disable control on the main list view. Move the toggle into the summary (with propagation guarded) or explicitly account for closed-details rendering.

Useful? React with 👍 / 👎.

@BunsDev BunsDev self-assigned this Apr 25, 2026
Copy link
Copy Markdown
Contributor

@steipete steipete left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Codex review/fixup: looks good after the follow-up patch.

I fixed two small regressions before landing:

  • kept each per-tool access toggle inside the collapsed tool summary so the primary control stays reachable without expanding the card
  • preserved section-level plugin provenance in the expanded Source detail when a catalog tool inherits source metadata from its group

Local proof:

  • pnpm test ui/src/ui/views/agents-panels-tools-skills.browser.test.ts ui/src/ui/app-render.helpers.browser.test.ts
  • pnpm format:check CHANGELOG.md ui/src/ui/views/agents-panels-tools-skills.ts ui/src/ui/views/agents-panels-tools-skills.browser.test.ts
  • pnpm check:changed passed through typecheck/lint/guards; the broadened test batch was SIGTERM'd locally without an assertion failure after the branch rebased in unrelated main changes, so I split and reran the affected test targets successfully.

@openclaw-barnacle openclaw-barnacle Bot added the gateway Gateway runtime label Apr 25, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the gateway Gateway runtime label Apr 25, 2026
@steipete steipete merged commit 982230f into main Apr 25, 2026
65 checks passed
@steipete steipete deleted the meow/tool-access-panel-polish branch April 25, 2026 06:22
@steipete
Copy link
Copy Markdown
Contributor

Landed via squash: 982230f

Thanks @BunsDev. I kept the Tool Access panel polish, added the visible-toggle/provenance fixups, synced with current main, and verified the final head.

Proof:

  • Local pnpm check:changed on final head: 80 files / 889 tests passed
  • Local focused tests: pnpm test src/daemon/launchd.test.ts ui/src/ui/views/agents-panels-tools-skills.browser.test.ts ui/src/ui/app-render.helpers.browser.test.ts
  • GitHub CI on 4c2563502261d420794d926a3ca6ae397ebba93d: all required checks passed

I also searched open issues/PRs for related tool access / tool controls duplicates and did not find anything to close.

vincentkoc added a commit that referenced this pull request Apr 25, 2026
- Remove duplicate #66884 alexlomt entry from top Unreleased > Fixes;
  the canonical entry already lives under 2026.4.24 (Unreleased) per
  Mason Huang's earlier 'move #66884 entry to 2026.4.24' commit.
- Reflow the wrapped 3-line Tool Access bullet (#71405) onto a single
  line so it matches every other bullet in the section.
steipete pushed a commit to MonkeyLeeT/openclaw that referenced this pull request Apr 25, 2026
- Remove duplicate openclaw#66884 alexlomt entry from top Unreleased > Fixes;
  the canonical entry already lives under 2026.4.24 (Unreleased) per
  Mason Huang's earlier 'move openclaw#66884 entry to 2026.4.24' commit.
- Reflow the wrapped 3-line Tool Access bullet (openclaw#71405) onto a single
  line so it matches every other bullet in the section.
Angfr95 pushed a commit to Angfr95/openclaw that referenced this pull request Apr 25, 2026
* feat(ui): refine tool access controls

* fix(ui): tighten tool access scanning

* fix(ui): keep tool access toggles visible (openclaw#71405)

* test(daemon): cover launchd restart fallback plist reads (openclaw#71405)

* test(daemon): drop duplicate launchd read mock (openclaw#71405)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Angfr95 pushed a commit to Angfr95/openclaw that referenced this pull request Apr 25, 2026
- Remove duplicate openclaw#66884 alexlomt entry from top Unreleased > Fixes;
  the canonical entry already lives under 2026.4.24 (Unreleased) per
  Mason Huang's earlier 'move openclaw#66884 entry to 2026.4.24' commit.
- Reflow the wrapped 3-line Tool Access bullet (openclaw#71405) onto a single
  line so it matches every other bullet in the section.
ayesha-aziz123 pushed a commit to ayesha-aziz123/openclaw that referenced this pull request Apr 26, 2026
- Remove duplicate openclaw#66884 alexlomt entry from top Unreleased > Fixes;
  the canonical entry already lives under 2026.4.24 (Unreleased) per
  Mason Huang's earlier 'move openclaw#66884 entry to 2026.4.24' commit.
- Reflow the wrapped 3-line Tool Access bullet (openclaw#71405) onto a single
  line so it matches every other bullet in the section.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui maintainer Maintainer-authored PR size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants