From ff560d02633364bded41c0818642cad95e1d0e66 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Wed, 5 Aug 2026 02:53:49 +0200 Subject: [PATCH 1/4] fix(gui): colored provider icons and correct OpenCodeX mark - opencode.svg is now the real OpenCodeX mark (rounded-square ring with diagonal slash) in the brand accent instead of the placeholder frame - all provider icons render with their official brand colors (explicit fills; monochrome/currentColor variants replaced) - providers without a logo asset get a deterministic colored initial-letter tile instead of the generic server icon - Usage surface marks use the colored variants; dark-mode invert filter removed so brand colors stay correct --- gui/public/provider-icons/alibaba-color.svg | 2 +- .../cloudflare-ai-gateway-color.svg | 2 +- gui/public/provider-icons/copilot-color.svg | 2 +- gui/public/provider-icons/deepseek-color.svg | 2 +- gui/public/provider-icons/firepass-color.svg | 2 +- gui/public/provider-icons/fireworks-color.svg | 2 +- .../provider-icons/github-copilot-color.svg | 2 +- .../provider-icons/gitlab-duo-color.svg | 2 +- gui/public/provider-icons/grok-color.svg | 2 +- gui/public/provider-icons/groq-color.svg | 2 +- .../provider-icons/huggingface-color.svg | 2 +- gui/public/provider-icons/kimi-color.svg | 2 +- gui/public/provider-icons/lm-studio-color.svg | 2 +- gui/public/provider-icons/mistral-color.svg | 2 +- gui/public/provider-icons/moonshot-color.svg | 2 +- gui/public/provider-icons/nvidia-color.svg | 2 +- gui/public/provider-icons/ollama-color.svg | 2 +- gui/public/provider-icons/openai.svg | 2 +- gui/public/provider-icons/opencode.svg | 3 ++- .../provider-icons/openrouter-color.svg | 2 +- gui/public/provider-icons/qianfan-color.svg | 2 +- .../provider-icons/qwen-portal-color.svg | 2 +- .../vercel-ai-gateway-color.svg | 2 +- gui/public/provider-icons/vllm-color.svg | 2 +- gui/public/provider-icons/xiaomi-color.svg | 2 +- .../provider-workspace/ProviderRail.tsx | 27 +++++++++++++++++-- gui/src/pages/Usage.tsx | 4 +-- gui/src/styles.css | 5 ---- gui/src/styles/provider-workspace-shell.css | 14 ++++++++++ gui/tests/usage-grok-filter.test.ts | 2 +- 30 files changed, 68 insertions(+), 35 deletions(-) diff --git a/gui/public/provider-icons/alibaba-color.svg b/gui/public/provider-icons/alibaba-color.svg index be1080a1b..9c042eba2 100644 --- a/gui/public/provider-icons/alibaba-color.svg +++ b/gui/public/provider-icons/alibaba-color.svg @@ -1 +1 @@ -Alibaba Cloud +Alibaba Cloud diff --git a/gui/public/provider-icons/cloudflare-ai-gateway-color.svg b/gui/public/provider-icons/cloudflare-ai-gateway-color.svg index cf2762683..9d2ca53d7 100644 --- a/gui/public/provider-icons/cloudflare-ai-gateway-color.svg +++ b/gui/public/provider-icons/cloudflare-ai-gateway-color.svg @@ -1 +1 @@ -Cloudflare +Cloudflare diff --git a/gui/public/provider-icons/copilot-color.svg b/gui/public/provider-icons/copilot-color.svg index 95945cd81..1bb3a7e36 100644 --- a/gui/public/provider-icons/copilot-color.svg +++ b/gui/public/provider-icons/copilot-color.svg @@ -1 +1 @@ -Copilot +Copilot diff --git a/gui/public/provider-icons/deepseek-color.svg b/gui/public/provider-icons/deepseek-color.svg index f25017e00..f53fac74a 100644 --- a/gui/public/provider-icons/deepseek-color.svg +++ b/gui/public/provider-icons/deepseek-color.svg @@ -1 +1 @@ -DeepSeek +DeepSeek diff --git a/gui/public/provider-icons/firepass-color.svg b/gui/public/provider-icons/firepass-color.svg index 7c4766ecb..7a10d0361 100644 --- a/gui/public/provider-icons/firepass-color.svg +++ b/gui/public/provider-icons/firepass-color.svg @@ -1 +1 @@ -Fireworks +Fireworks diff --git a/gui/public/provider-icons/fireworks-color.svg b/gui/public/provider-icons/fireworks-color.svg index 7c4766ecb..7a10d0361 100644 --- a/gui/public/provider-icons/fireworks-color.svg +++ b/gui/public/provider-icons/fireworks-color.svg @@ -1 +1 @@ -Fireworks +Fireworks diff --git a/gui/public/provider-icons/github-copilot-color.svg b/gui/public/provider-icons/github-copilot-color.svg index 4c1e12c07..4bd84cb85 100644 --- a/gui/public/provider-icons/github-copilot-color.svg +++ b/gui/public/provider-icons/github-copilot-color.svg @@ -1 +1 @@ -GitHub Copilot +GitHub Copilot diff --git a/gui/public/provider-icons/gitlab-duo-color.svg b/gui/public/provider-icons/gitlab-duo-color.svg index ab1286a21..2099b79f7 100644 --- a/gui/public/provider-icons/gitlab-duo-color.svg +++ b/gui/public/provider-icons/gitlab-duo-color.svg @@ -1 +1 @@ -GitLab +GitLab diff --git a/gui/public/provider-icons/grok-color.svg b/gui/public/provider-icons/grok-color.svg index f34a855c3..7374eefe9 100644 --- a/gui/public/provider-icons/grok-color.svg +++ b/gui/public/provider-icons/grok-color.svg @@ -1 +1 @@ -Grok +Grok diff --git a/gui/public/provider-icons/groq-color.svg b/gui/public/provider-icons/groq-color.svg index d2953eedb..3c34955a5 100644 --- a/gui/public/provider-icons/groq-color.svg +++ b/gui/public/provider-icons/groq-color.svg @@ -1 +1 @@ -Groq +Groq diff --git a/gui/public/provider-icons/huggingface-color.svg b/gui/public/provider-icons/huggingface-color.svg index 9f855aaa2..7a4074c52 100644 --- a/gui/public/provider-icons/huggingface-color.svg +++ b/gui/public/provider-icons/huggingface-color.svg @@ -1 +1 @@ -Hugging Face +Hugging Face diff --git a/gui/public/provider-icons/kimi-color.svg b/gui/public/provider-icons/kimi-color.svg index 580a63be2..2c1ccd086 100644 --- a/gui/public/provider-icons/kimi-color.svg +++ b/gui/public/provider-icons/kimi-color.svg @@ -1 +1 @@ -Moonshot AI +Moonshot AI diff --git a/gui/public/provider-icons/lm-studio-color.svg b/gui/public/provider-icons/lm-studio-color.svg index f9503437e..f385720cb 100644 --- a/gui/public/provider-icons/lm-studio-color.svg +++ b/gui/public/provider-icons/lm-studio-color.svg @@ -1 +1 @@ -LM Studio +LM Studio diff --git a/gui/public/provider-icons/mistral-color.svg b/gui/public/provider-icons/mistral-color.svg index 70f05829f..7081654a6 100644 --- a/gui/public/provider-icons/mistral-color.svg +++ b/gui/public/provider-icons/mistral-color.svg @@ -1 +1 @@ -Mistral AI +Mistral AI diff --git a/gui/public/provider-icons/moonshot-color.svg b/gui/public/provider-icons/moonshot-color.svg index 580a63be2..5a2fcc840 100644 --- a/gui/public/provider-icons/moonshot-color.svg +++ b/gui/public/provider-icons/moonshot-color.svg @@ -1 +1 @@ -Moonshot AI +Moonshot AI diff --git a/gui/public/provider-icons/nvidia-color.svg b/gui/public/provider-icons/nvidia-color.svg index d35752c36..a2873c6d9 100644 --- a/gui/public/provider-icons/nvidia-color.svg +++ b/gui/public/provider-icons/nvidia-color.svg @@ -1 +1 @@ -NVIDIA +NVIDIA diff --git a/gui/public/provider-icons/ollama-color.svg b/gui/public/provider-icons/ollama-color.svg index 1c0ab7b62..f11d3de59 100644 --- a/gui/public/provider-icons/ollama-color.svg +++ b/gui/public/provider-icons/ollama-color.svg @@ -1 +1 @@ -Ollama +Ollama diff --git a/gui/public/provider-icons/openai.svg b/gui/public/provider-icons/openai.svg index 78caf4fa2..e0fb25516 100644 --- a/gui/public/provider-icons/openai.svg +++ b/gui/public/provider-icons/openai.svg @@ -1 +1 @@ -OpenAI \ No newline at end of file +OpenAI \ No newline at end of file diff --git a/gui/public/provider-icons/opencode.svg b/gui/public/provider-icons/opencode.svg index a84a97e6b..547eb021f 100644 --- a/gui/public/provider-icons/opencode.svg +++ b/gui/public/provider-icons/opencode.svg @@ -1 +1,2 @@ - + +OpenCodeX diff --git a/gui/public/provider-icons/openrouter-color.svg b/gui/public/provider-icons/openrouter-color.svg index 1d1e68cb0..e825d665b 100644 --- a/gui/public/provider-icons/openrouter-color.svg +++ b/gui/public/provider-icons/openrouter-color.svg @@ -1 +1 @@ -OpenRouter +OpenRouter diff --git a/gui/public/provider-icons/qianfan-color.svg b/gui/public/provider-icons/qianfan-color.svg index 89325f6da..9c1130ed3 100644 --- a/gui/public/provider-icons/qianfan-color.svg +++ b/gui/public/provider-icons/qianfan-color.svg @@ -1 +1 @@ -Baidu +Baidu diff --git a/gui/public/provider-icons/qwen-portal-color.svg b/gui/public/provider-icons/qwen-portal-color.svg index 27fdc5ade..bedfd9a1e 100644 --- a/gui/public/provider-icons/qwen-portal-color.svg +++ b/gui/public/provider-icons/qwen-portal-color.svg @@ -1 +1 @@ -QWen +QWen diff --git a/gui/public/provider-icons/vercel-ai-gateway-color.svg b/gui/public/provider-icons/vercel-ai-gateway-color.svg index 956f5c7a9..b3fe44b66 100644 --- a/gui/public/provider-icons/vercel-ai-gateway-color.svg +++ b/gui/public/provider-icons/vercel-ai-gateway-color.svg @@ -1 +1 @@ -Vercel +Vercel diff --git a/gui/public/provider-icons/vllm-color.svg b/gui/public/provider-icons/vllm-color.svg index 672395dee..367570e3d 100644 --- a/gui/public/provider-icons/vllm-color.svg +++ b/gui/public/provider-icons/vllm-color.svg @@ -1 +1 @@ -vLLM +vLLM diff --git a/gui/public/provider-icons/xiaomi-color.svg b/gui/public/provider-icons/xiaomi-color.svg index 44c3b8e33..9166ecdae 100644 --- a/gui/public/provider-icons/xiaomi-color.svg +++ b/gui/public/provider-icons/xiaomi-color.svg @@ -1 +1 @@ -Xiaomi +Xiaomi diff --git a/gui/src/components/provider-workspace/ProviderRail.tsx b/gui/src/components/provider-workspace/ProviderRail.tsx index 4079e61a1..af1294421 100644 --- a/gui/src/components/provider-workspace/ProviderRail.tsx +++ b/gui/src/components/provider-workspace/ProviderRail.tsx @@ -5,7 +5,7 @@ */ /* eslint-disable react-refresh/only-export-components -- label helpers co-locate with the rail row */ import { useT, type TFn } from "../../i18n/shared"; -import { IconServer, IconStar } from "../../icons"; +import { IconStar } from "../../icons"; import { binProviderStatus, isFreeProvider, @@ -48,18 +48,41 @@ export function ProviderIcon({ name, adapter, baseUrl, cls }: { baseUrl?: string; cls: string; }) { + const t = useT(); const src = providerIconSrc(name, { adapter, baseUrl }); return ( {src ? ( ) : ( - ); } +/** + * Colored initial-letter tile for providers without a logo asset (long-tail + * presets and custom providers). Hue is derived deterministically from the + * provider id so the same provider always gets the same color. + */ +export function ProviderFallbackMark({ name, label }: { name: string; label: string }) { + const hue = [...name].reduce((acc, ch) => acc + ch.charCodeAt(0), 0) % 360; + const initial = (label.trim()[0] ?? name[0] ?? "?").toUpperCase(); + return ( + + ); +} + export function RailRow({ item, selected, tabbable, modelCount, isDefault, showConfigId, onClick, onFocus }: { item: WorkspaceItem; selected: boolean; diff --git a/gui/src/pages/Usage.tsx b/gui/src/pages/Usage.tsx index f3e1b215a..d3e39ce3d 100644 --- a/gui/src/pages/Usage.tsx +++ b/gui/src/pages/Usage.tsx @@ -231,10 +231,10 @@ function UsageFilters({ )} {choice === "claude" && ( - + )} {choice === "grok" && ( - + )} {label} diff --git a/gui/src/styles.css b/gui/src/styles.css index 066316aea..31ab807b4 100644 --- a/gui/src/styles.css +++ b/gui/src/styles.css @@ -1994,11 +1994,6 @@ button.prov-account-row.active { cursor: default; } .usage-segmented-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; border: none; background: transparent; color: var(--muted); padding: 4px 12px; border-radius: var(--radius-pill); cursor: pointer; font: inherit; white-space: nowrap; } .usage-segmented-btn.active { background: var(--raised); color: var(--text); font-weight: var(--weight-semibold); } .usage-source-mark { width: var(--icon-sm); height: var(--icon-sm); flex: 0 0 auto; object-fit: contain; } -:root[data-theme="dark"] .usage-source-mark { filter: invert(1); } - -@media (prefers-color-scheme: dark) { - :root:not([data-theme="light"]) .usage-source-mark { filter: invert(1); } -} @media (max-width: 760px) { .usage-segmented-btn { min-height: var(--control-touch); } diff --git a/gui/src/styles/provider-workspace-shell.css b/gui/src/styles/provider-workspace-shell.css index b847a68e7..1fe15f95f 100644 --- a/gui/src/styles/provider-workspace-shell.css +++ b/gui/src/styles/provider-workspace-shell.css @@ -316,6 +316,20 @@ display: block; } +/* Colored initial-letter fallback for providers without a logo asset. */ +.provider-icon-fallback { + width: 100%; + height: 100%; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: var(--radius-xs); + font-weight: var(--weight-semibold); + font-size: 13px; + line-height: 1; + user-select: none; +} + .provider-icon-mask { mask-size: contain; mask-repeat: no-repeat; diff --git a/gui/tests/usage-grok-filter.test.ts b/gui/tests/usage-grok-filter.test.ts index 6d7c50544..7bb5d1570 100644 --- a/gui/tests/usage-grok-filter.test.ts +++ b/gui/tests/usage-grok-filter.test.ts @@ -11,7 +11,7 @@ test("the Usage filter includes grok with its icon", async () => { const page = await read("../src/pages/Usage.tsx"); expect(page).toContain('"grok"'); expect(page).toContain('(["all", "codex", "claude", "grok"]'); - expect(page).toContain("/provider-icons/grok.svg"); + expect(page).toContain("/provider-icons/grok-color.svg"); }); test("every locale carries the grok surface label", async () => { From b4820478fcea6b5061091824afc0314bceb7a5f7 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Wed, 5 Aug 2026 03:14:17 +0200 Subject: [PATCH 2/4] fix(provider-icons): restore OpenCodeX mark shape and normalize icon viewBoxes - opencode.svg keeps the original frame + inner-field shape (as in the shipped logo) and is now colored in the brand accent instead of gray - every provider SVG is normalized to viewBox 0 0 24 24 with no fixed width/height, so icons render at the CSS size of their slot instead of intrinsic sizes ranging from 16px (1em) to 800px --- gui/public/provider-icons/alibaba-color.svg | 2 +- gui/public/provider-icons/antigravity-color.svg | 2 +- gui/public/provider-icons/antigravity.svg | 2 +- gui/public/provider-icons/claude-color.svg | 2 +- gui/public/provider-icons/claude.svg | 2 +- gui/public/provider-icons/cline-color.svg | 4 ++-- gui/public/provider-icons/cloudflare-ai-gateway-color.svg | 2 +- gui/public/provider-icons/copilot-color.svg | 2 +- gui/public/provider-icons/copilot.svg | 2 +- gui/public/provider-icons/cursor-color.svg | 2 +- gui/public/provider-icons/cursor.svg | 2 +- gui/public/provider-icons/deepseek-color.svg | 2 +- gui/public/provider-icons/firepass-color.svg | 2 +- gui/public/provider-icons/fireworks-color.svg | 2 +- gui/public/provider-icons/gemini-color.svg | 2 +- gui/public/provider-icons/gemini.svg | 2 +- gui/public/provider-icons/github-copilot-color.svg | 2 +- gui/public/provider-icons/gitlab-duo-color.svg | 2 +- gui/public/provider-icons/grok-color.svg | 2 +- gui/public/provider-icons/grok.svg | 2 +- gui/public/provider-icons/groq-color.svg | 2 +- gui/public/provider-icons/huggingface-color.svg | 2 +- gui/public/provider-icons/kimi-color.svg | 2 +- gui/public/provider-icons/kiro-color.svg | 4 ++-- gui/public/provider-icons/kiro.svg | 4 ++-- gui/public/provider-icons/lm-studio-color.svg | 2 +- gui/public/provider-icons/mistral-color.svg | 2 +- gui/public/provider-icons/moonshot-color.svg | 2 +- gui/public/provider-icons/nvidia-color.svg | 2 +- gui/public/provider-icons/ollama-color.svg | 2 +- gui/public/provider-icons/openai.svg | 2 +- gui/public/provider-icons/opencode.svg | 4 ++-- gui/public/provider-icons/openrouter-color.svg | 2 +- gui/public/provider-icons/pi.svg | 4 ++-- gui/public/provider-icons/qianfan-color.svg | 2 +- gui/public/provider-icons/qwen-portal-color.svg | 2 +- gui/public/provider-icons/vercel-ai-gateway-color.svg | 2 +- gui/public/provider-icons/vllm-color.svg | 2 +- gui/public/provider-icons/xiaomi-color.svg | 2 +- 39 files changed, 44 insertions(+), 44 deletions(-) diff --git a/gui/public/provider-icons/alibaba-color.svg b/gui/public/provider-icons/alibaba-color.svg index 9c042eba2..69e374735 100644 --- a/gui/public/provider-icons/alibaba-color.svg +++ b/gui/public/provider-icons/alibaba-color.svg @@ -1 +1 @@ -Alibaba Cloud +Alibaba Cloud \ No newline at end of file diff --git a/gui/public/provider-icons/antigravity-color.svg b/gui/public/provider-icons/antigravity-color.svg index 5301a1b1c..bf746e124 100644 --- a/gui/public/provider-icons/antigravity-color.svg +++ b/gui/public/provider-icons/antigravity-color.svg @@ -1 +1 @@ -Antigravity +Antigravity \ No newline at end of file diff --git a/gui/public/provider-icons/antigravity.svg b/gui/public/provider-icons/antigravity.svg index c0c5b1f16..d24319d7c 100644 --- a/gui/public/provider-icons/antigravity.svg +++ b/gui/public/provider-icons/antigravity.svg @@ -1 +1 @@ -Antigravity +Antigravity \ No newline at end of file diff --git a/gui/public/provider-icons/claude-color.svg b/gui/public/provider-icons/claude-color.svg index 62dc0db12..9c2cb59c2 100644 --- a/gui/public/provider-icons/claude-color.svg +++ b/gui/public/provider-icons/claude-color.svg @@ -1 +1 @@ -Claude \ No newline at end of file +Claude \ No newline at end of file diff --git a/gui/public/provider-icons/claude.svg b/gui/public/provider-icons/claude.svg index e29f32825..0c39347f1 100644 --- a/gui/public/provider-icons/claude.svg +++ b/gui/public/provider-icons/claude.svg @@ -1 +1 @@ -Claude \ No newline at end of file +Claude \ No newline at end of file diff --git a/gui/public/provider-icons/cline-color.svg b/gui/public/provider-icons/cline-color.svg index 317f01c5f..90a30f1ac 100644 --- a/gui/public/provider-icons/cline-color.svg +++ b/gui/public/provider-icons/cline-color.svg @@ -1,5 +1,5 @@ - + Cline @@ -13,4 +13,4 @@ - + \ No newline at end of file diff --git a/gui/public/provider-icons/cloudflare-ai-gateway-color.svg b/gui/public/provider-icons/cloudflare-ai-gateway-color.svg index 9d2ca53d7..cf8069296 100644 --- a/gui/public/provider-icons/cloudflare-ai-gateway-color.svg +++ b/gui/public/provider-icons/cloudflare-ai-gateway-color.svg @@ -1 +1 @@ -Cloudflare +Cloudflare \ No newline at end of file diff --git a/gui/public/provider-icons/copilot-color.svg b/gui/public/provider-icons/copilot-color.svg index 1bb3a7e36..c5b411ad2 100644 --- a/gui/public/provider-icons/copilot-color.svg +++ b/gui/public/provider-icons/copilot-color.svg @@ -1 +1 @@ -Copilot +Copilot \ No newline at end of file diff --git a/gui/public/provider-icons/copilot.svg b/gui/public/provider-icons/copilot.svg index 95945cd81..2faac23a5 100644 --- a/gui/public/provider-icons/copilot.svg +++ b/gui/public/provider-icons/copilot.svg @@ -1 +1 @@ -Copilot +Copilot \ No newline at end of file diff --git a/gui/public/provider-icons/cursor-color.svg b/gui/public/provider-icons/cursor-color.svg index f06306d91..d90361006 100644 --- a/gui/public/provider-icons/cursor-color.svg +++ b/gui/public/provider-icons/cursor-color.svg @@ -1,2 +1,2 @@ -Cursor +Cursor \ No newline at end of file diff --git a/gui/public/provider-icons/cursor.svg b/gui/public/provider-icons/cursor.svg index d58343163..efe0e3c4b 100644 --- a/gui/public/provider-icons/cursor.svg +++ b/gui/public/provider-icons/cursor.svg @@ -1,2 +1,2 @@ -Cursor +Cursor \ No newline at end of file diff --git a/gui/public/provider-icons/deepseek-color.svg b/gui/public/provider-icons/deepseek-color.svg index f53fac74a..f3be195b8 100644 --- a/gui/public/provider-icons/deepseek-color.svg +++ b/gui/public/provider-icons/deepseek-color.svg @@ -1 +1 @@ -DeepSeek +DeepSeek \ No newline at end of file diff --git a/gui/public/provider-icons/firepass-color.svg b/gui/public/provider-icons/firepass-color.svg index 7a10d0361..01f493c58 100644 --- a/gui/public/provider-icons/firepass-color.svg +++ b/gui/public/provider-icons/firepass-color.svg @@ -1 +1 @@ -Fireworks +Fireworks \ No newline at end of file diff --git a/gui/public/provider-icons/fireworks-color.svg b/gui/public/provider-icons/fireworks-color.svg index 7a10d0361..01f493c58 100644 --- a/gui/public/provider-icons/fireworks-color.svg +++ b/gui/public/provider-icons/fireworks-color.svg @@ -1 +1 @@ -Fireworks +Fireworks \ No newline at end of file diff --git a/gui/public/provider-icons/gemini-color.svg b/gui/public/provider-icons/gemini-color.svg index 62681dfa7..822a18de8 100644 --- a/gui/public/provider-icons/gemini-color.svg +++ b/gui/public/provider-icons/gemini-color.svg @@ -1 +1 @@ -Gemini \ No newline at end of file +Gemini \ No newline at end of file diff --git a/gui/public/provider-icons/gemini.svg b/gui/public/provider-icons/gemini.svg index 87736bbe0..902293f3d 100644 --- a/gui/public/provider-icons/gemini.svg +++ b/gui/public/provider-icons/gemini.svg @@ -1 +1 @@ -Gemini \ No newline at end of file +Gemini \ No newline at end of file diff --git a/gui/public/provider-icons/github-copilot-color.svg b/gui/public/provider-icons/github-copilot-color.svg index 4bd84cb85..e713560a8 100644 --- a/gui/public/provider-icons/github-copilot-color.svg +++ b/gui/public/provider-icons/github-copilot-color.svg @@ -1 +1 @@ -GitHub Copilot +GitHub Copilot \ No newline at end of file diff --git a/gui/public/provider-icons/gitlab-duo-color.svg b/gui/public/provider-icons/gitlab-duo-color.svg index 2099b79f7..562154d5d 100644 --- a/gui/public/provider-icons/gitlab-duo-color.svg +++ b/gui/public/provider-icons/gitlab-duo-color.svg @@ -1 +1 @@ -GitLab +GitLab \ No newline at end of file diff --git a/gui/public/provider-icons/grok-color.svg b/gui/public/provider-icons/grok-color.svg index 7374eefe9..ba9c46e70 100644 --- a/gui/public/provider-icons/grok-color.svg +++ b/gui/public/provider-icons/grok-color.svg @@ -1 +1 @@ -Grok +Grok \ No newline at end of file diff --git a/gui/public/provider-icons/grok.svg b/gui/public/provider-icons/grok.svg index f34a855c3..0ca52ec61 100644 --- a/gui/public/provider-icons/grok.svg +++ b/gui/public/provider-icons/grok.svg @@ -1 +1 @@ -Grok +Grok \ No newline at end of file diff --git a/gui/public/provider-icons/groq-color.svg b/gui/public/provider-icons/groq-color.svg index 3c34955a5..2eecc367c 100644 --- a/gui/public/provider-icons/groq-color.svg +++ b/gui/public/provider-icons/groq-color.svg @@ -1 +1 @@ -Groq +Groq \ No newline at end of file diff --git a/gui/public/provider-icons/huggingface-color.svg b/gui/public/provider-icons/huggingface-color.svg index 7a4074c52..226742733 100644 --- a/gui/public/provider-icons/huggingface-color.svg +++ b/gui/public/provider-icons/huggingface-color.svg @@ -1 +1 @@ -Hugging Face +Hugging Face \ No newline at end of file diff --git a/gui/public/provider-icons/kimi-color.svg b/gui/public/provider-icons/kimi-color.svg index 2c1ccd086..39c3e2f9b 100644 --- a/gui/public/provider-icons/kimi-color.svg +++ b/gui/public/provider-icons/kimi-color.svg @@ -1 +1 @@ -Moonshot AI +Moonshot AI \ No newline at end of file diff --git a/gui/public/provider-icons/kiro-color.svg b/gui/public/provider-icons/kiro-color.svg index 190536002..0cf048bec 100644 --- a/gui/public/provider-icons/kiro-color.svg +++ b/gui/public/provider-icons/kiro-color.svg @@ -1,5 +1,5 @@ - + Kiro @@ -12,4 +12,4 @@ - + \ No newline at end of file diff --git a/gui/public/provider-icons/kiro.svg b/gui/public/provider-icons/kiro.svg index 63c0286de..418805bd6 100644 --- a/gui/public/provider-icons/kiro.svg +++ b/gui/public/provider-icons/kiro.svg @@ -1,5 +1,5 @@ - + Kiro @@ -11,4 +11,4 @@ - + \ No newline at end of file diff --git a/gui/public/provider-icons/lm-studio-color.svg b/gui/public/provider-icons/lm-studio-color.svg index f385720cb..c50f3a652 100644 --- a/gui/public/provider-icons/lm-studio-color.svg +++ b/gui/public/provider-icons/lm-studio-color.svg @@ -1 +1 @@ -LM Studio +LM Studio \ No newline at end of file diff --git a/gui/public/provider-icons/mistral-color.svg b/gui/public/provider-icons/mistral-color.svg index 7081654a6..a02c1ba31 100644 --- a/gui/public/provider-icons/mistral-color.svg +++ b/gui/public/provider-icons/mistral-color.svg @@ -1 +1 @@ -Mistral AI +Mistral AI \ No newline at end of file diff --git a/gui/public/provider-icons/moonshot-color.svg b/gui/public/provider-icons/moonshot-color.svg index 5a2fcc840..ed2bbfbfe 100644 --- a/gui/public/provider-icons/moonshot-color.svg +++ b/gui/public/provider-icons/moonshot-color.svg @@ -1 +1 @@ -Moonshot AI +Moonshot AI \ No newline at end of file diff --git a/gui/public/provider-icons/nvidia-color.svg b/gui/public/provider-icons/nvidia-color.svg index a2873c6d9..c3ac1b8df 100644 --- a/gui/public/provider-icons/nvidia-color.svg +++ b/gui/public/provider-icons/nvidia-color.svg @@ -1 +1 @@ -NVIDIA +NVIDIA \ No newline at end of file diff --git a/gui/public/provider-icons/ollama-color.svg b/gui/public/provider-icons/ollama-color.svg index f11d3de59..1e3879cc6 100644 --- a/gui/public/provider-icons/ollama-color.svg +++ b/gui/public/provider-icons/ollama-color.svg @@ -1 +1 @@ -Ollama +Ollama \ No newline at end of file diff --git a/gui/public/provider-icons/openai.svg b/gui/public/provider-icons/openai.svg index e0fb25516..a25156f3b 100644 --- a/gui/public/provider-icons/openai.svg +++ b/gui/public/provider-icons/openai.svg @@ -1 +1 @@ -OpenAI \ No newline at end of file +OpenAI \ No newline at end of file diff --git a/gui/public/provider-icons/opencode.svg b/gui/public/provider-icons/opencode.svg index 547eb021f..2731f3ec3 100644 --- a/gui/public/provider-icons/opencode.svg +++ b/gui/public/provider-icons/opencode.svg @@ -1,2 +1,2 @@ - -OpenCodeX + +OpenCodeX \ No newline at end of file diff --git a/gui/public/provider-icons/openrouter-color.svg b/gui/public/provider-icons/openrouter-color.svg index e825d665b..e0f98db71 100644 --- a/gui/public/provider-icons/openrouter-color.svg +++ b/gui/public/provider-icons/openrouter-color.svg @@ -1 +1 @@ -OpenRouter +OpenRouter \ No newline at end of file diff --git a/gui/public/provider-icons/pi.svg b/gui/public/provider-icons/pi.svg index c28d62423..976e4ba74 100644 --- a/gui/public/provider-icons/pi.svg +++ b/gui/public/provider-icons/pi.svg @@ -1,5 +1,5 @@ - + - + \ No newline at end of file diff --git a/gui/public/provider-icons/qianfan-color.svg b/gui/public/provider-icons/qianfan-color.svg index 9c1130ed3..fa72fb221 100644 --- a/gui/public/provider-icons/qianfan-color.svg +++ b/gui/public/provider-icons/qianfan-color.svg @@ -1 +1 @@ -Baidu +Baidu \ No newline at end of file diff --git a/gui/public/provider-icons/qwen-portal-color.svg b/gui/public/provider-icons/qwen-portal-color.svg index bedfd9a1e..bcbcdd90b 100644 --- a/gui/public/provider-icons/qwen-portal-color.svg +++ b/gui/public/provider-icons/qwen-portal-color.svg @@ -1 +1 @@ -QWen +QWen \ No newline at end of file diff --git a/gui/public/provider-icons/vercel-ai-gateway-color.svg b/gui/public/provider-icons/vercel-ai-gateway-color.svg index b3fe44b66..054f1df64 100644 --- a/gui/public/provider-icons/vercel-ai-gateway-color.svg +++ b/gui/public/provider-icons/vercel-ai-gateway-color.svg @@ -1 +1 @@ -Vercel +Vercel \ No newline at end of file diff --git a/gui/public/provider-icons/vllm-color.svg b/gui/public/provider-icons/vllm-color.svg index 367570e3d..f8a5a2313 100644 --- a/gui/public/provider-icons/vllm-color.svg +++ b/gui/public/provider-icons/vllm-color.svg @@ -1 +1 @@ -vLLM +vLLM \ No newline at end of file diff --git a/gui/public/provider-icons/xiaomi-color.svg b/gui/public/provider-icons/xiaomi-color.svg index 9166ecdae..68457a978 100644 --- a/gui/public/provider-icons/xiaomi-color.svg +++ b/gui/public/provider-icons/xiaomi-color.svg @@ -1 +1 @@ -Xiaomi +Xiaomi \ No newline at end of file From 380f7dbf15bd7ff92c4e55c3bf9dec7c0138eb83 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Wed, 5 Aug 2026 03:20:00 +0200 Subject: [PATCH 3/4] fix(provider-icons): drop fake grok-color variant, use the monochrome grok mark xAI has no colored logo, so grok-color.svg was a duplicate of grok.svg that only rendered black. Remove it and point the xai alias and the Usage surface mark at grok.svg (explicit black fill). --- gui/public/provider-icons/grok-color.svg | 1 - gui/public/provider-icons/grok.svg | 2 +- gui/src/pages/Usage.tsx | 2 +- gui/src/provider-icons.ts | 2 +- gui/tests/usage-grok-filter.test.ts | 2 +- 5 files changed, 4 insertions(+), 5 deletions(-) delete mode 100644 gui/public/provider-icons/grok-color.svg diff --git a/gui/public/provider-icons/grok-color.svg b/gui/public/provider-icons/grok-color.svg deleted file mode 100644 index ba9c46e70..000000000 --- a/gui/public/provider-icons/grok-color.svg +++ /dev/null @@ -1 +0,0 @@ -Grok \ No newline at end of file diff --git a/gui/public/provider-icons/grok.svg b/gui/public/provider-icons/grok.svg index 0ca52ec61..7374eefe9 100644 --- a/gui/public/provider-icons/grok.svg +++ b/gui/public/provider-icons/grok.svg @@ -1 +1 @@ -Grok \ No newline at end of file +Grok diff --git a/gui/src/pages/Usage.tsx b/gui/src/pages/Usage.tsx index d3e39ce3d..acd0b78de 100644 --- a/gui/src/pages/Usage.tsx +++ b/gui/src/pages/Usage.tsx @@ -234,7 +234,7 @@ function UsageFilters({ )} {choice === "grok" && ( - + )} {label} diff --git a/gui/src/provider-icons.ts b/gui/src/provider-icons.ts index c0e1d0677..4b1e0871d 100644 --- a/gui/src/provider-icons.ts +++ b/gui/src/provider-icons.ts @@ -43,7 +43,7 @@ const PROVIDER_ICON_ALIASES: Record = { "qwen-cloud": "qwen-portal-color.svg", "vercel-ai-gateway": "vercel-ai-gateway-color.svg", vllm: "vllm-color.svg", - xai: "grok-color.svg", + xai: "grok.svg", "mimo-free": "xiaomi-color.svg", xiaomi: "xiaomi-color.svg", }; diff --git a/gui/tests/usage-grok-filter.test.ts b/gui/tests/usage-grok-filter.test.ts index 7bb5d1570..6d7c50544 100644 --- a/gui/tests/usage-grok-filter.test.ts +++ b/gui/tests/usage-grok-filter.test.ts @@ -11,7 +11,7 @@ test("the Usage filter includes grok with its icon", async () => { const page = await read("../src/pages/Usage.tsx"); expect(page).toContain('"grok"'); expect(page).toContain('(["all", "codex", "claude", "grok"]'); - expect(page).toContain("/provider-icons/grok-color.svg"); + expect(page).toContain("/provider-icons/grok.svg"); }); test("every locale carries the grok surface label", async () => { From d6dcc946d072529829aa3697662d13a35c8746b9 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Wed, 5 Aug 2026 03:32:42 +0200 Subject: [PATCH 4/4] fix(provider-icons): correct OpenCodeX color, drop unused monochrome duplicates - opencode.svg renders the brand frame in #211E1E (the warm dark tone from the official logo asset) with a transparent inner field; no more pink - remove unused monochrome variants where a -color logo exists and is the only referenced asset: claude.svg, gemini.svg, copilot.svg, antigravity.svg, kiro.svg, cursor.svg --- gui/public/provider-icons/antigravity.svg | 1 - gui/public/provider-icons/claude.svg | 1 - gui/public/provider-icons/copilot.svg | 1 - gui/public/provider-icons/cursor.svg | 2 -- gui/public/provider-icons/gemini.svg | 1 - gui/public/provider-icons/kiro.svg | 14 -------------- gui/public/provider-icons/opencode.svg | 4 ++-- 7 files changed, 2 insertions(+), 22 deletions(-) delete mode 100644 gui/public/provider-icons/antigravity.svg delete mode 100644 gui/public/provider-icons/claude.svg delete mode 100644 gui/public/provider-icons/copilot.svg delete mode 100644 gui/public/provider-icons/cursor.svg delete mode 100644 gui/public/provider-icons/gemini.svg delete mode 100644 gui/public/provider-icons/kiro.svg diff --git a/gui/public/provider-icons/antigravity.svg b/gui/public/provider-icons/antigravity.svg deleted file mode 100644 index d24319d7c..000000000 --- a/gui/public/provider-icons/antigravity.svg +++ /dev/null @@ -1 +0,0 @@ -Antigravity \ No newline at end of file diff --git a/gui/public/provider-icons/claude.svg b/gui/public/provider-icons/claude.svg deleted file mode 100644 index 0c39347f1..000000000 --- a/gui/public/provider-icons/claude.svg +++ /dev/null @@ -1 +0,0 @@ -Claude \ No newline at end of file diff --git a/gui/public/provider-icons/copilot.svg b/gui/public/provider-icons/copilot.svg deleted file mode 100644 index 2faac23a5..000000000 --- a/gui/public/provider-icons/copilot.svg +++ /dev/null @@ -1 +0,0 @@ -Copilot \ No newline at end of file diff --git a/gui/public/provider-icons/cursor.svg b/gui/public/provider-icons/cursor.svg deleted file mode 100644 index efe0e3c4b..000000000 --- a/gui/public/provider-icons/cursor.svg +++ /dev/null @@ -1,2 +0,0 @@ - -Cursor \ No newline at end of file diff --git a/gui/public/provider-icons/gemini.svg b/gui/public/provider-icons/gemini.svg deleted file mode 100644 index 902293f3d..000000000 --- a/gui/public/provider-icons/gemini.svg +++ /dev/null @@ -1 +0,0 @@ -Gemini \ No newline at end of file diff --git a/gui/public/provider-icons/kiro.svg b/gui/public/provider-icons/kiro.svg deleted file mode 100644 index 418805bd6..000000000 --- a/gui/public/provider-icons/kiro.svg +++ /dev/null @@ -1,14 +0,0 @@ - - -Kiro - - - - - - - - - - - \ No newline at end of file diff --git a/gui/public/provider-icons/opencode.svg b/gui/public/provider-icons/opencode.svg index 2731f3ec3..d617075e7 100644 --- a/gui/public/provider-icons/opencode.svg +++ b/gui/public/provider-icons/opencode.svg @@ -1,2 +1,2 @@ - -OpenCodeX \ No newline at end of file + +OpenCodeX