Skip to content

refactor(web): move the ACP agent glyph into its own module

MacroscopeApp / Macroscope - UI Consistency failed Sep 2, 2026 in 2m 21s

UI Consistency: 1 issue found

  • apps/web/src/components/AcpAgentIcon.tsx:18 β€” the new provider glyph hardcodes text-black dark:text-white. Because the paths stroke with currentColor, the dark: variant survives the cn/tailwind-merge against call-site tones (ProviderInstanceCard passes iconClassName="size-4 text-foreground/80"), so in dark mode the ACP mark renders pure white while its peers and the initials fallback stay at text-foreground/80; it also keeps this generic glyph outside the semantic --foreground token, so themes and the contrast setting never reach it. Suggested fix posted inline (text-foreground base).

Previously reported findings in scope are resolved: the wide ACPRegistryIcon was replaced with a square mark for the square icon slots, the text-generation provider filter is now owned by a single exported filterTextGenerationProviders helper used by every read and write call site, and the Providers settings-search row now carries the ACP keywords. The Icons.tsx Antigravity data-URL change was reverted.

Details

Note

Your check run agent prompt is: .macroscope/check-run-agents/ui-consistency.md
More information about how Check Run Agents work can be found in our Help Center.

Files examined in scope (apps/web/src/**): components/AcpAgentIcon.tsx, components/Icons.tsx, components/chat/providerIconUtils.ts, components/settings/providerDriverMeta.ts, components/settings/ProviderSettingsPanel.tsx, components/settings/SettingsPanels.tsx, components/settings/SourceControlWritingSettings.tsx, components/settings/settingsSearch.ts, modelSelection.ts, modelSelection.test.ts, session-logic.ts.

Methodology:

  • Traced every consumer of PROVIDER_ICON_BY_PROVIDER and PROVIDER_CLIENT_DEFINITIONS to its render sink (ProviderInstanceIcon, ProviderInstanceCard, ModelPickerSidebar, Sidebar, ThreadCommandSubtitle, ProviderModelPicker) to check icon geometry and the class-merge order for the tone passed at each call site.
  • Compared the new driver's badge metadata (badgeLabel: "Early Access", pickerSidebarBadge: "new") with the existing cursor/grok entries β€” consistent, no finding.
  • Re-verified the text-generation selection rule now resolves through one shared filter for both reads and updateSettings writes.
  • Server-side and docs changes were used only as context.

πŸ” Agent activity β€” 10 tool calls

πŸ’­ I'm checking whether the icon file, now split out into AcpAgentIcon.tsx, still carries the same hardcoded text-black dark:text-white styling I flagged before in Icons.tsx, since it seems the issue just moved location rather than getting resolved. I'm also weighing whether Tailwind's dark: variant class differs from raw CSS .dark selectors for the theme-variant rule, and tracing how tailwind-merge would resolve text-black against a call site passing text-foreground/80 to see if the override actually breaks the intended styling.

1. browse_code β€” apps/web/src/components/AcpAgentIcon.tsx

2. git_tools β€” AcpAgentIcon|ACPRegistryIcon

πŸ’­ The code just moved files without changing in response to my flagged issue, so this feels like it'd be a duplicate comment rather than a new one β€” I should hold off on re-posting at the new location.

3. browse_code β€” apps/web/src/components/Icons.tsx

4. git_tools β€” d027779..a6106a5

πŸ’­ The AcpAgentIcon code moved to its own file since d027779, and the same text-black dark:text-white issue persists there now at line 18, though my earlier comment was on the old Icons.tsx location which no longer has that code. Since the code moved but the underlying issue wasn't fixed, I should re-post the comment at its new location rather than treat it as a duplicate. Before doing that, I want to check whether the author already replied to my original comment thread β€” there's no visible reply, but some of the 38 omitted comments might contain one, so let me look at the review comment thread to confirm.

5. github_api_read_only β€” repos/{owner}/{repo}/pulls/{pull_number}/comments?per_page=100&page=3&sort=created&direction=desc

πŸ’­ Let me pull page 1 sorted descending to see the most recent comments.

6. github_api_read_only β€” repos/{owner}/{repo}/pulls/{pull_number}/comments?per_page=30&page=1&sort=created&direction=desc

πŸ’­ My comment on Icons.tsx:705 is now anchored to an outdated line since the icon was moved into its own module, but the author kept the same color classes I flagged, so the issue is still unresolved just detached from the current diff. I'm weighing whether to re-post the color finding on the new AcpAgentIcon.tsx:18 location where the code now actually lives, since that's the live anchor point. But first I want to double-check whether the finding is even valid by looking at how sibling icon components handle this pattern, and checking whether ProviderInstanceCard passes down a className that would override the hardcoded dark:text-white.

7. git_tools β€” iconClassName|ProviderInstanceIcon

πŸ’­ I confirmed the icon class override still applies at head, since ProviderInstanceCard's props let dark:text-white survive tailwind-merge, and Sidebar's grayscale is a no-op on monochrome icons. Since my previous comment on this is now outdated, I need to re-post it. I'm also double-checking whether other in-scope files introduce new issues β€” badge label wording between "new" in session-logic and "Early Access" in providerDriverMeta looks inconsistent, so I want to see how other providers handle badge conventions before flagging it.

8. browse_code β€” apps/web/src/session-logic.ts

9. browse_code β€” apps/web/src/components/settings/providerDriverMeta.ts

πŸ’­ That leaves the hardcoded black/white colors in AcpAgentIcon.tsx overriding the call-site tone as the one remaining in-scope finding. I'll post a brief inline comment on line 18 noting it was carried over from the previous Icons.tsx location, keeping the suggestion concise and self-contained.

10. modify_pr β€” Submitted review with 1 inline comment


Agent Credits: 209 credits

Token usage: 16 uncached input Β· 1,279,260 cache-read input Β· 193,131 cache-write input Β· 5,589 output
Agent Credits may also include non-token charges from external tools such as web research.