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 be1080a1b8..9c042eba29 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 cf27626831..9d2ca53d77 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 95945cd819..1bb3a7e36d 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 f25017e006..f53fac74ab 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 7c4766ecb0..7a10d03617 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 7c4766ecb0..7a10d03617 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 4c1e12c077..4bd84cb856 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 ab1286a210..2099b79f75 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 f34a855c38..7374eefe94 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 d2953eedb5..3c34955a59 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 9f855aaa2c..7a4074c52f 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 580a63be26..2c1ccd0862 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 f9503437e2..f385720cb1 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 70f05829f8..7081654a6b 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 580a63be26..5a2fcc8407 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 d35752c369..a2873c6d93 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 1c0ab7b629..f11d3de591 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 78caf4fa20..e0fb25516a 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 a84a97e6b7..547eb021fa 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 1d1e68cb08..e825d665b6 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 89325f6dac..9c1130ed3b 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 27fdc5ade0..bedfd9a1ee 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 956f5c7a99..b3fe44b660 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 672395deed..367570e3d2 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 44c3b8e33c..9166ecdaed 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 4079e61a12..af12944219 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 f3e1b215ac..d3e39ce3d7 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 066316aea3..31ab807b4b 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 b847a68e70..1fe15f95fb 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 6d7c505441..7bb5d1570b 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 9c042eba29..69e374735d 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 5301a1b1ca..bf746e1246 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 c0c5b1f168..d24319d7cd 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 62dc0db12d..9c2cb59c26 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 e29f328257..0c39347f17 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 317f01c5f5..90a30f1acc 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 9d2ca53d77..cf80692961 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 1bb3a7e36d..c5b411ad2f 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 95945cd819..2faac23a5f 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 f06306d91d..d903610064 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 d583431639..efe0e3c4b2 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 f53fac74ab..f3be195b8e 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 7a10d03617..01f493c58c 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 7a10d03617..01f493c58c 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 62681dfa7c..822a18de8a 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 87736bbe09..902293f3d9 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 4bd84cb856..e713560a88 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 2099b79f75..562154d5d3 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 7374eefe94..ba9c46e70e 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 f34a855c38..0ca52ec618 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 3c34955a59..2eecc367cc 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 7a4074c52f..2267427337 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 2c1ccd0862..39c3e2f9b2 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 1905360027..0cf048bec2 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 63c0286dee..418805bd62 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 f385720cb1..c50f3a6526 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 7081654a6b..a02c1ba31c 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 5a2fcc8407..ed2bbfbfe5 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 a2873c6d93..c3ac1b8df2 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 f11d3de591..1e3879cc60 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 e0fb25516a..a25156f3bb 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 547eb021fa..2731f3ec33 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 e825d665b6..e0f98db715 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 c28d624233..976e4ba744 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 9c1130ed3b..fa72fb221b 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 bedfd9a1ee..bcbcdd90b8 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 b3fe44b660..054f1df640 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 367570e3d2..f8a5a23134 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 9166ecdaed..68457a9783 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 ba9c46e70e..0000000000 --- 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 0ca52ec618..7374eefe94 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 d3e39ce3d7..acd0b78de1 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 c0e1d0677c..4b1e0871d7 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 7bb5d1570b..6d7c505441 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 d24319d7cd..0000000000 --- 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 0c39347f17..0000000000 --- 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 2faac23a5f..0000000000 --- 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 efe0e3c4b2..0000000000 --- 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 902293f3d9..0000000000 --- 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 418805bd62..0000000000 --- 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 2731f3ec33..d617075e7f 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