Repository navigation
UI Consistency: 1 issue found
1 finding
apps/web/src/components/chat/providerIconUtils.ts:11— the newpientry maps toPiAgentIcon, which paints an opaque#000rounded tile with a hardcoded white glyph. Every other entry inPROVIDER_ICON_BY_PROVIDERis a transparent glyph with light/dark fill variants (fill-black dark:fill-white,fill-[#0F0F0F] dark:fill-[#F5F5F5]). Consumers render these bare (ProviderInstanceIconatsize-5,ModelListRow/TimelineSystemDivideratsize-3,ProviderSettingsPanelatsize-4inside its ownrounded-lg bg-backgroundtile), so Pi renders as a solid dark square that ignores the active theme and double-tiles in the settings list. The mobileProviderIconadded in this same PR already uses a theme-aware glyph with no background tile. Suggested fix: drop the backgroundrectinPiAgentIconand use theGrokIcontheme-aware fill classes.
No other in-scope violations: providerDriverMeta.ts, ProviderModelsSection.tsx, contextWindow.ts, session-logic.ts, and the AddProviderInstanceDialog.tsx coming-soon removal are registry/data-only changes that follow the existing per-driver patterns, and no primitive contracts, Tailwind ownership, global CSS, theme variants, or scroll/mask behavior were touched.
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 changed): apps/web/src/components/chat/providerIconUtils.ts, apps/web/src/components/settings/AddProviderInstanceDialog.tsx, apps/web/src/components/settings/ProviderModelsSection.tsx, apps/web/src/components/settings/providerDriverMeta.ts, apps/web/src/lib/contextWindow.ts, apps/web/src/session-logic.ts.
Context consulted (unchanged): apps/web/src/components/Icons.tsx (icon definitions and theming conventions), apps/web/src/components/chat/ProviderInstanceIcon.tsx, ModelListRow.tsx, TimelineSystemDivider.tsx, V2LifecycleRow.tsx, ProviderUpdatePrimaryNotification.tsx, apps/web/src/components/settings/ProviderSettingsPanel.tsx (icon render sizes and containers), packages/contracts/src/settings.ts (PiSettings form annotations vs. peer providers), and apps/mobile/src/components/ProviderIcon.tsx (theme-aware Pi glyph added in this PR).
Verification: traced every consumer of PROVIDER_ICON_BY_PROVIDER and PROVIDER_CLIENT_DEFINITIONS to their render sites to confirm the icon is rendered without a wrapper background and at small sizes. PiAgentIcon's prior only consumer was the removed coming-soon list in AddProviderInstanceDialog.tsx; the import removal there is correct and the symbol remains used by providerDriverMeta.ts and providerIconUtils.ts. No CSS, Tailwind, theme-variant, or emitted-selector changes exist in this PR, so build/emitted-CSS inspection gates were not applicable.
🔍 Agent activity — 1 tool call
💭 Looking at the file changes across the provider system, I'm checking for consistency issues—particularly whether the PiAgent provider was properly removed or if there are lingering references. I notice AddProviderInstanceDialog dropped the piAgent coming-soon option and its icon import, but PiAgentIcon is still referenced in providerDriverMeta.ts, so I need to verify that icon actually exists and whether the ProviderDriverKind enum still includes piAgent. I need to check the session-logic.ts file to see where the pi provider was added in PROVIDER_OPTIONS, and verify if there's a "piAgent" coming-soon entry there. I should verify that the badgeLabel "Early Access" is used consistently across providers, noting that acpRegistry already has "V2 Preview". Then I need to search through the web app for all places where provider display names and badges appear—like in a provider picker sidebar or provider descriptions—and check if there are other provider-keyed maps that need to account for the new provider kinds. The git_grep search is returning results from a different revision than expected—it's hitting the default branch instead of the specific commit I targeted in the URL, which is why I'm seeing HermesIcon in the grep results but PiAgentIcon in the actual file view. The
revparameter in git_grep isn't picking up the tree path from the URL, so there's a mismatch between what the grep command searched and what I'm looking at. Looking at the registry changes across the web version—icon map updates, removal of coming-soon states, custom model placeholders, driver metadata, display names, and provider options—all seem to be data-level modifications without styling complications. I need to verify that PiAgentIcon in Icons.tsx is properly configured with className and currentColor to match the other icons, especially since it's now being used at different scales in the provider picker, settings, and chat provider displays. The main concern is whether there are any hardcoded fill colors in the icon implementation that could break dark mode support, similar to how the mobile version handles isDarkMode for foreground colors. Let me check the icon definition around line 688 in Icons.tsx to see if there's a hardcoded fill that's causing the theming issue. I'm noticing that PiAgentIcon uses a fixed dark tile with a white glyph, while other provider icons like OpenAI and ClaudeAI adapt to the theme with fill-black and dark:fill-white styling. I should check whether those other icons are truly monochrome and theme-aware to understand the inconsistency. All agent provider icons follow a theme-aware monochrome pattern with light and dark variants, displayed without background tiles, while PiAgentIcon stands apart with its fixed black rounded-rectangle tile and white glyph regardless of theme. This change appears to stem from the PR removing PiAgentIcon's previous use in the AddProviderInstanceDialog coming-soon list, but now it's being applied in providerIconUtils for chat provider icons across message headers and model picker triggers. I need to check whether the chat provider icon gets styled through CSS variables or classes, and examine how consumers of PROVIDER_ICON_BY_PROVIDER handle sizing and color expectations — some might apply utility classes like "text-muted-foreground" that would clash with a tiled icon at small sizes, creating a poor visual result. I need to check how ProviderInstanceIcon actually renders the icon—whether it's small, wrapped in a circle, or styled with text-current—to see if a black tile with rounded corners would clash with the design. I'm noticing that PiAgentIcon renders differently from other provider icons—it draws an opaque black rounded square that creates a visual inconsistency, especially in dark mode where the dark tile blends into the dark background with poor contrast, while all the peer icons adapt their fill color to the theme. This is relevant to the check's rules about preserving contrast and ensuring migrated contextual icons maintain their intended tone. The PR wires PiAgentIcon into the shared provider icon map where peers are theme-aware glyphs, and the mobile version in the same PR does use the theme-aware approach, which suggests that's the intended direction. The black tile is legible enough in light mode (like an app icon), but in dark mode it risks looking like a hole in the card background rather than a cohesive icon. The real issue is cross-app inconsistency — web and mobile are handling the same provider differently, and the web icon won't adapt to theme. I should flag this as a suggestion. I also need to check the other changed lines in scope. The PROVIDER_OPTIONS entry for Pi includes a "new" picker badge, but the provider defaults to disabled. If the picker sidebar lists Pi as available even when it's disabled by default, users might see it and encounter errors. I should trace how PROVIDER_OPTIONS feeds into the available providers list. There's also a placeholder model reference that doesn't exist, and some pre-existing duplication in display name handling that's consistent with the current pattern. Neither of these are worth blocking on, but I want to verify whether the "available" flag in PROVIDER_OPTIONS actually gates visibility. I need to verify that AVAILABLE_PROVIDER_OPTIONS is only exported and not used elsewhere, which checks out. Now I'm looking at the ProviderModelsSection in settings to see if it needs an "Early Access" badge treatment like acpRegistry has with its V2 Preview label—acpRegistry has hasDefaultInstance set to false while Pi defaults to true, so the settings will display a built-in Pi card. I'm noticing that PiSettings.enabled defaults to false and is marked as hidden in the form, which means users can't toggle Pi on from the settings UI itself. I should check how other providers handle the enabled/disabled state—whether there's a separate switch on the provider card outside the schema form, or if other providers like GrokSettings also hide their enabled field the same way. I'm noticing that PiSettings is missing a placeholder in its launchArgs while other providers include examples like "--chrome", though this is a minor issue and settings.ts isn't in scope anyway. The main finding I'm focusing on is the PiAgentIcon tile theming in providerIconUtils.ts at line 11, which is the in-scope changed line that needs attention. The patch makes PiAgentIcon relevant by promoting it to the main provider icon slot, even though Icons.tsx itself isn't changed. The concern is whether this creates a genuine regression — a solid black rounded tile at inline size would stand out visually against the monochrome glyphs used elsewhere, and in dark mode it becomes a black square on a dark background. I need to check how these icons are used in contexts like ModelListRow and V2LifecycleRow to see if any color or opacity classes are applied that would affect the icon's appearance. The ProviderSettingsPanel displays driver icons at a small scale inside a rounded container with muted styling, but the Pi icon would render as a solid dark square filling the entire space since it lacks the padding and negative space that other monochrome glyphs have. I'm confident this is a legitimate consistency issue worth flagging with an inline comment on the changed line in providerIconUtils.ts, pointing to providerDriverMeta.ts as the root cause. The fix would be to make PiAgentIcon theme-aware like the Grok and mobile ProviderIcon implementations, but since that change lives in Icons.tsx rather than a modified file, I'll include a brief code snippet in the comment to clarify the solution without attempting an inline suggestion. Let me verify the line numbers and mobile icon colors to ensure accuracy — the mobile version uses foreground colors without a tile, and Grok uses the same fill colors. The diff line 11 in providerIconUtils.ts should be commentable on the right side. I don't see other issues worth flagging like the ProviderModelsSection placeholder or contextWindow duplicate, so I'll post a single review with a failure state since there's a clear consistency finding.
1. modify_pr — One consistency finding on the new web provider icon wiring. Everything else in the web scope (providerDriverMeta.ts, ProviderModelsSection.tsx, contextWindow.ts, session-logic.ts, AddProviderInstanceDialog.tsx) is registry/data-only and matches the existing per-driver patterns.
Agent Credits: 188 credits