Skip to content

feat(staged): add per-provider agent icons to picker and Doctor pane - #772

Merged
matt2e merged 2 commits into
mainfrom
agent-icons
Jun 9, 2026
Merged

feat(staged): add per-provider agent icons to picker and Doctor pane#772
matt2e merged 2 commits into
mainfrom
agent-icons

Conversation

@matt2e

@matt2e matt2e commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds per-provider agent icons that render in the agent picker and the Doctor pane.

  • Introduces a new AgentIcon.svelte component that renders the appropriate icon per agent provider, with all variants marked decorative (aria-hidden).
  • Wires the icon into AgentSelector, DoctorCheckRow, and DoctorSettingsPanel.
  • Adds a masked Goose icon asset.

Changes

  • AgentIcon.svelte — new component mapping providers to icons
  • AgentSelector.svelte — show provider icon in the picker
  • DoctorCheckRow.svelte / DoctorSettingsPanel.svelte — show provider icon in the Doctor pane
  • public/icons/agents/goose-icon-mask.png — new asset

🤖 Generated with Claude Code

matt2e and others added 2 commits June 9, 2026 13:46
Introduce a shared AgentIcon component that maps an ACP provider id to its
brand mark, falling back to the Lucide Bot icon for unknown ids (including
pi, which has no brand icon). Wire it into the agent picker (trigger + each
dropdown row) and the Doctor settings Agents section (leading provider logo
alongside a smaller status glyph).

Icons are inline SVG ported faithfully from squareup/goose-internal
(Claude, Codex, Amp, Copilot, Cursor) keeping their brand colors; Codex
uses a per-instance unique gradient id to avoid collisions. Goose is the
goose-internal PNG tinted with currentColor via a CSS mask, fetched into
public/icons/agents/. No SVGR/build-config changes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Matt Toohey <contact@matttoohey.com>
Every AgentIcon call site renders the icon beside a visible text label
(picker trigger/rows, Doctor row), so the icons are purely decorative.
Make accessibility handling consistent across all branches: the Goose
<span> now uses aria-hidden="true" instead of role="img" + aria-label
(which announced "Goose" redundantly next to its label), and the Bot
fallback passes aria-hidden="true" instead of inheriting Lucide's
default. The brand SVGs already carried aria-hidden="true".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Matt Toohey <contact@matttoohey.com>
@matt2e
matt2e requested review from baxen and wesbillman as code owners June 9, 2026 05:33
@matt2e
matt2e merged commit 5b8ccae into main Jun 9, 2026
5 checks passed
@matt2e
matt2e deleted the agent-icons branch June 9, 2026 05:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant