fix(mobile): show correct provider icons for Grok, Cursor, and OpenCode - #4586
Conversation
Mobile ProviderIcon only special-cased Claude and fell back to the Codex mark for every other driver. Port the web SVG paths so Grok, Cursor, and OpenCode render their own icons on Android/iOS.
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Approved Adds static SVG icons for three providers in a UI component. The changes are purely presentational with no runtime behavior impact - just mapping provider strings to corresponding SVG elements. You can customize Macroscope's approvability policy. Learn more. |
## What's Changed * fix(mobile): show correct provider icons for Grok, Cursor, and OpenCode by @Wraient in pingdotgg/t3code#4586 **Full Changelog**: pingdotgg/t3code@v0.0.32-nightly.20260804.998...v0.0.32-nightly.20260804.999 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.32-nightly.20260804.999
Brings in 17 upstream commits (base e60821f). Headline changes: - Upgrade Effect to beta.103 (pingdotgg#5331), which removes the `Schema.UnknownFromJsonString` export and drops the positional actual argument from `SchemaIssue.InvalidValue`. - Replace the hand-rolled gzip path with `HttpMiddleware.compression()`, deleting apps/server/src/httpCompression/ entirely (pingdotgg#5331). - Extract desktop base/state dir resolution into DesktopStatePaths.ts, and add Linux secret storage, URL-scheme claiming, and early-startup modules (pingdotgg#2916, pingdotgg#5054). - Mobile provider icons for Grok, Cursor, and OpenCode (pingdotgg#4586). - Web polish: chat code blocks, tooltip z-index, spacing, loading screen, terminal cursor blink, terminal close-shortcut guard. Manual resolution and why: - apps/desktop/src/app/DesktopEnvironment.ts — semantic. Upstream deleted the `configuredBaseDir` local that the fork's branding override sat on top of, moving that logic into resolveDesktopBaseDir/resolveDesktopStateDir. Took upstream's extraction wholesale and re-applied the fork's displayNameOverride intent on it. The fork additionally gains upstream's trimming of a blank T3_HOME, which the old inline version did not do. - apps/mobile/src/components/ProviderIcon.tsx — the fork had replaced raw `props.provider === ...` checks with a resolveProviderIconKind seam; upstream's three new icons used the raw form. Routed them through the seam instead of mixing both styles, extended ProviderIconKind, and added test coverage so the new kinds cannot silently fall back to the OpenAI icon. - apps/server/src/textGeneration/CodexTextGeneration.ts — mechanical. Took upstream's one-line Schema change, kept the fork's rewrite of the rest. Merge-caused fixes beyond the conflicts: - Swept 15 fork-only call sites from `Schema.UnknownFromJsonString` to `Schema.fromJsonString(Schema.Unknown)`. These produced no conflict markers; the export simply no longer exists in beta.103. Upstream's own OrchestrationEventStore.ts survives only because it defines a local alias of the same name. Verified: pnpm install, pnpm typecheck (15/15 projects clean), pnpm test. Five failures remain in packages/shared (relayClient, logging); those four files are byte-identical to both upstream/main and the pre-merge backup, and assert POSIX-only behavior (linux-x64 fixture paths, forward-slash path comparisons, ENAMETOOLONG). They cannot pass on Windows and are unrelated to this merge. Backup of the pre-merge tip: backup/dev-before-merge-20260804
What Changed
Mobile
ProviderIcononly special-cased Claude and used the Codex mark for every other provider. Ported the web SVG paths so Grok, Cursor, and OpenCode use their own icons on Android/iOS. Codex stays the default for unknown drivers.Why
Grok (and other non-Claude providers) showed the Codex icon on mobile, which is wrong branding and inconsistent with web.
UI Changes
Provider icons in the model picker / thread chrome now match web for Grok, Cursor, and OpenCode. App launcher icon unchanged.
Before:

After:

Checklist
Note
Low Risk
Presentation-only change in a single mobile component; no auth, data, or business-logic impact.
Overview
Mobile
ProviderIconnow renders distinct SVGs forgrok,cursor, andopencode(dark-mode-aware fills), aligned with web. Those providers previously used the default Codex mark.The default branch still serves Codex and unknown drivers; its fill now uses a shared
monocolor variable instead of inline hex values.Reviewed by Cursor Bugbot for commit ff90fe6. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
[!NOTE]
Show correct provider icons for Grok, Cursor, and OpenCode in mobile
ProviderIconAdds explicit branches in ProviderIcon.tsx for
grok,cursor, andopencodeproviders, each rendering a distinct SVG with dark-mode-aware fill colors. Previously these providers fell back to the default icon.Macroscope summarized ff90fe6.