Skip to content

feat(ui): brand and recognize more agent CLIs (14 logos; Junie, OpenHands, OpenClaw, Crush identity) - #517

Open
WilliamWang1721 wants to merge 2 commits into
Kuddev:mainfrom
WilliamWang1721:feat/agent-icons-20261007
Open

WilliamWang1721 wants to merge 2 commits into
Kuddev:mainfrom
WilliamWang1721:feat/agent-icons-20261007

Conversation

@WilliamWang1721

@WilliamWang1721 WilliamWang1721 commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Result / 用户结果

Terminal tabs and sidebar entries show a brand logo for Gemini, Amp, Cursor, GitHub Copilot, Goose, Qwen Code, Cline, Devin, Kiro, Kilo Code, Qoder, Junie, OpenHands and OpenClaw. The first eleven were already identified but showed a generic glyph. Junie, OpenHands, OpenClaw and Crush are new to AgentKind, so a pane running one of them now carries an AI identity (close warning, notification title); Crush has no mark in the icon package and keeps its glyph. A side fix: the legacy logo cache is keyed on whether a logo tints with the theme ink, so Kimi's luminance-map logo no longer reuses the first theme's ink.

Design / 设计边界

  • Responsibility and affected modules: ai_agents.rs owns identity (slug, display name, executable aliases junie, openhands, openclaw, crush, verified against each project's install documentation); display/program_identity.rs owns AiLogo and the program-to-logo mapping; display/mod.rs only derives its cache key from AiLogo. No new dependency, setting or persisted format. None of the four gets screen rules, hooks, resume or fork commands.
  • Assets are 256px PNG exports of unmodified LobeHub marks (@lobehub/icons-static-svg 1.95.0, MIT), with source names and SHA-256 in extra/logo/README.md and an entry in THIRD-PARTY-NOTICES. 256px rather than the 1024px used elsewhere because every logo is decoded for both themes at startup and drawn at tab-icon size.
  • Single-colour marks (including OpenHands, whose colour version draws black outlines that vanish on dark themes) are alpha masks tinted with the theme ink. Qoder mixes theme ink with a fixed accent, so it ships dark and light files selected like Grok's.
  • A bare agent command does not get the Cursor logo: Grok installs the same name. Hermes is not embedded (illustration unreadable at tab size); agents without a LobeHub mark keep their glyph.
  • Compatibility: existing logos and mappings are unchanged.

Evidence / 验证依据

  • Fork CI (not upstream CI), Full native tests at the first head 1f5c6607: lint and all five native jobs passed (https://github.com/WilliamWang1721/pebrel/actions/runs/37601781252). The later commit that adds Junie, OpenHands, OpenClaw and Crush is running at the time of writing (https://github.com/WilliamWang1721/pebrel/actions/runs/37606390697): lint passed, native jobs pending. Upstream checks on this PR show the current state.
  • Tests: mapping test including the bare agent negative and the new commands, asset decode and per-theme variant test, tint classification, the unique-texture count in logos.rs (now 36), and the existing "every registered agent" tests in ai_agents.rs and notify.rs, which iterate AgentKind::ALL.
  • Not run: no screenshots of rendered tabs at multiple DPI or on light/dark themes; the PNGs were only inspected on a light/dark contact sheet outside the app.
  • No local builds or tests were run.

Required Review / 必须确认

  • I followed CONTRIBUTING.md, docs/architecture.md, and docs/project-constraints.md.
  • I split responsibilities, not arbitrary line ranges; no duplicate behavior authority was added.
  • Architecture contracts passes; budgets were not changed.
  • Tests cover success and the bare-agent negative; the native matrix for the latest head is pending and nothing was checked on screen.
  • No new messages; no i18n change.
  • No governance change.

AI assistance: implemented with Claude Sonnet 5.5 (claude-sonnet-5-5); reasoning effort not confirmed.

…en, Cline, Devin, Kiro, Kilo and Qoder

Embed LobeHub marks as 256px PNGs for agents Pebrel already identifies but showed as a glyph. Single-colour marks take the theme ink; Qoder bakes its mixed body per theme like Grok. A bare `agent` command keeps its glyph because Grok installs the same name.

Key the legacy logo cache on whether a logo tints, which also fixes Kimi's luminance-map logo reusing the first theme's ink.
…e first three

Add the four agents to AgentKind so their running commands carry an AI identity. Junie and OpenClaw keep their colours, OpenHands uses its monochrome outline because the colour mark draws black outlines that vanish on dark themes, and Crush has no mark in the icon package so it keeps its glyph.
@WilliamWang1721 WilliamWang1721 changed the title feat(ui): add brand logos for Gemini, Amp, Cursor, Copilot, Goose, Qwen, Cline, Devin, Kiro, Kilo and Qoder feat(ui): brand and recognize more agent CLIs (14 logos; Junie, OpenHands, OpenClaw, Crush identity) Oct 7, 2026
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