Skip to content

fix: give each desktop Agent its own mark, and grid the Provider/Profile cards - #72

Merged
yujiezhang-ops merged 1 commit into
mainfrom
fix/desktop-agent-icon-and-card-grid
Aug 6, 2026
Merged

fix: give each desktop Agent its own mark, and grid the Provider/Profile cards#72
yujiezhang-ops merged 1 commit into
mainfrom
fix/desktop-agent-icon-and-card-grid

Conversation

@yujiezhang-ops

Copy link
Copy Markdown
Collaborator

Fixes two issues found while auditing the Provider and Profile pages.

WorkBuddy displayed OpenAI's mark (#66)

DesktopAppSection passed agentId="codex" as a literal for every desktop Agent it renders. There are two, and only one of them is OpenAI's — so WorkBuddy, a Tencent product, showed the Codex logo. That is a trademark problem rather than a cosmetic one, in a shipped desktop app whose icon provenance is otherwise tracked asset-by-asset in asset-rights.json.

The literal also bypassed AgentIcon's fallback, which is exactly the path that handles an Agent with no mark of its own.

Passing desktopApp.id fixes it:

  • ChatGPT Desktop keeps the OpenAI mark through a new chatgpt-desktop entry, since it is OpenAI's own app and already shares Codex's configuration. It reuses the registered asset rather than adding a second copy.
  • WorkBuddy falls through to the generic Lucide symbol. No new asset, no NOTICE change.

I looked for a licensed WorkBuddy mark to prefer instead and found none: it is absent from lobe-icons, devicon and svgl, and absent from cc-switch. A CodeBuddy glyph exists in lobe-icons under MIT, but CodeBuddy and WorkBuddy are sibling products, so shipping it here would be licence-clean and factually wrong. simple-icons has one but carries no per-icon licence, which does not meet the bar the other five marks are held to.

Provider and Profile cards were single-column bands (#67)

.provider-list and .profile-list declared display: grid with no grid-template-columns, so every card spanned the full pane and both pages read as tables with rounded corners. Every other card grid in this stylesheet declares its columns; these two were the exception, and appeared in no media query, so 900px and 1900px looked identical.

repeat(auto-fill, minmax(340px, 1fr)) scales the column count with the pane and collapses to one below roughly 790px without a breakpoint. align-items: start keeps each card at its natural height, which matters because the Anthropic endpoint row only renders when that endpoint is set — stretched rows would show ragged bottoms.

Verification

go test ./..., go vet ./..., pnpm run test (205 passed), pnpm run build, and scripts/check-docs.py all pass. Rebased onto current main, so this sits on top of the Profile/Provider delete work in #70.

Layout measured in the running app at 600 / 860 / 1280 / 1900px: column count 1 / 2 / 2 / 4, no card overflow, no horizontal page scroll, and the grid still holds with #70's new delete buttons in the cards.

Two new tests cover the icon bug at both levels: agents.test.tsx asserts WorkBuddy resolves to the fallback and matches no licensed asset, and DesktopAppSection.test.tsx asserts two desktop Agents render different marks — the component-level regression that would have caught the original literal.

Closes #66
Closes #67

🤖 Generated with Claude Code

…le cards out as a grid

DesktopAppSection rendered agentId="codex" as a literal for every desktop
Agent, so WorkBuddy -- a Tencent product -- displayed OpenAI's mark. That is a
trademark problem rather than a styling one, and it also bypassed AgentIcon's
fallback, the path that exists precisely for an Agent with no mark of its own.

Passing desktopApp.id fixes it. ChatGPT Desktop keeps the OpenAI mark through a
new chatgpt-desktop entry, because it is OpenAI's own app sharing Codex's
configuration; WorkBuddy now falls through to the generic Lucide symbol, which
needs no new asset and no NOTICE change. No licensed WorkBuddy mark was found
to prefer instead.

.provider-list and .profile-list declared `display: grid` with no
grid-template-columns, so every card was a full-width band and both pages read
as tables with rounded corners. auto-fill with a 340px floor gives two to four
columns as the pane grows and collapses to one below roughly 790px without a
media query; align-items: start keeps cards at their natural height, which
matters because the Anthropic endpoint row only renders when that endpoint is
set.

Verified at 600/860/1280/1900px: column count 1/2/2/4, no card overflow, no
horizontal page scroll.

Closes #66
Closes #67

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@yujiezhang-ops
yujiezhang-ops merged commit b98fdff into main Aug 6, 2026
4 checks passed
@yujiezhang-ops
yujiezhang-ops deleted the fix/desktop-agent-icon-and-card-grid branch August 7, 2026 09:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant