Skip to content

models: brand logos for 11 catalog providers, and wire spacexai to xAI - #4439

Open
ZeHuari wants to merge 3 commits into
mainfrom
models/provider-logos-from-lobe-icons
Open

models: brand logos for 11 catalog providers, and wire spacexai to xAI#4439
ZeHuari wants to merge 3 commits into
mainfrom
models/provider-logos-from-lobe-icons

Conversation

@ZeHuari

@ZeHuari ZeHuari commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

What

The playground model picker fell back to a grey letter monogram for 16 of the hosted catalog's provider prefixes — 49 of the 226 models the live catalog serves. This closes 12 of those 16.

Checked against the live catalog (GET /v1/models, 226 models), not just the checked-in snapshot.

1. spacexaixai (12 models, no new asset)

The catalog serves the newer Grok models under spacexai/* (grok-4.20-*, grok-4.5, grok-4.6, …). The string appeared nowhere in the repo: both alias maps only knew x-ai. So 12 Grok models rendered an "S" monogram while grok_light.svg / grok_dark.png sat bundled and working for the 4 x-ai/* models.

Aliased in both PROVIDER_ALIASES (client) and HOSTED_PROVIDER_ALIASES (shared) so grouping, display name and logo all agree. The two prefixes share no bare model id (grok-4.20 vs grok-4.20-reasoning, grok-4.1-fast vs grok-4.1-fast-reasoning), so getCanonicalModelId stays unambiguous.

This is a rebrand in the catalog, not two vendors: x-ai/grok-4.3, x-ai/grok-4.5 and x-ai/grok-build-0.1 have moved to the spacexai/ prefix.

2. Eleven vendors that shipped no logo

SVG marks from @lobehub/icons (MIT) — the same upstream as the existing minimax_logo.svg and deepseek_logo.svg, so the file convention is unchanged. ~15 KB total.

Provider Models Asset
nvidia 6 nvidia_logo.svg
amazon 4 amazon_logo.svg
kwaipilot 4 kwaipilot_logo.svg
tencent 4 tencent_logo.svg
bytedance 2 bytedance_logo.svg
inception 2 inception_light.svg + inception_dark.svg
morph 2 morph_logo.svg
stepfun 2 stepfun_logo.svg
arcee-ai 1 arcee_logo.svg
cohere 1 cohere_logo.svg
poolside 1 poolside_logo.svg

Two judgment calls worth a look:

  • tencent — every tencent/* model is Hunyuan (hy-mt2-*, hy3), so this uses the Hunyuan mark. It reads truer at 12px than the Tencent corporate logo. Display name is "Tencent Hunyuan".
  • inception — upstream ships it as fill="currentColor", which an <img src> cannot inherit, so a single asset renders black on both themes and disappears on dark. Split into explicit light/dark fills.

Still on the monogram, on purpose

sakana, thinkingmachines, inclusionai and interfaze have no upstream mark. xiaomi ships only a two-line Xiaomi MiMo wordmark, illegible at 12px — the monogram is the better badge. All five are listed in KNOWN_MONOGRAM_PREFIXES with the reason.

Deliberately NOT in this PR: the snapshot regen

shared/hosted-model-ids.generated.ts is stale — 173 ids against the 226 the backend serves. I regenerated it, and it turned 45 eval tests red, so I backed it out.

Cause, for whoever picks it up: the regen pulls openai/gpt-4-turbo into the hosted set, flipping it from BYOK to source: "mcpjam". evals-runner.test.ts and runner-parity.test.ts both drive the runner with model: "gpt-4-turbo" precisely because it was not hosted, so the runner switched to the backend stream path those tests never mock — hence a wave of Cannot read properties of undefined (reading 'ok').

That is a genuine reclassification with billing implications, not test noise. It wants its own reviewed PR. Nothing here depends on it: the live catalog is authoritative at runtime and the snapshot is only the offline floor, so the logos and the alias work either way.

Verification

  • Every icon rasterized and eyeballed at true 12px on both light (#fff) and dark (#18181b) grounds — that's what caught the Inception currentColor problem and the Xiaomi wordmark.
  • npm run typecheck:client clean.
  • Green locally: provider-registry, model-helpers, shared/types, hosted-model-catalog, resolve-synthetic-model-source, model-selector, plus the two eval-runner files that the reverted regen had broken.

Unrelated bug spotted

scripts/generate-hosted-model-ids.mjs defaults to https://api.mcpjam.com/v1/models, which returns HTML and makes the script fail outright. It only runs against <deployment>.convex.site/v1/models via MCPJAM_MODELS_URL. Left alone here — not sure which host is meant to be canonical.

🤖 Generated with Claude Code

The playground picker fell back to a letter monogram for 16 of the hosted
catalog's provider prefixes. Two separate causes, fixed here:

- 12 `spacexai/*` Grok models rendered an "S" even though the Grok assets are
  already bundled — the alias maps only knew `x-ai`. Add `spacexai` -> `xai`
  to both PROVIDER_ALIASES and HOSTED_PROVIDER_ALIASES. No new asset. The two
  prefixes share no bare model id, so canonicalization stays unambiguous.

- 11 vendors shipped no logo at all. Add SVG marks from @lobehub/icons (MIT) —
  the same source as the existing minimax/deepseek assets — for nvidia,
  amazon, kwaipilot, tencent, bytedance, inception, morph, stepfun, arcee-ai,
  cohere and poolside.

Notes on two judgment calls:
- `tencent/*` is entirely Hunyuan models, so the Hunyuan mark is used; it
  reads truer than the Tencent corporate logo at the 12px the badge renders.
- Inception ships as `currentColor`, which an <img> cannot inherit, so it
  would render black on both themes. Pinned to explicit fills per theme.

Also regenerate the hosted-id snapshot (174 -> 226) so the guard test sees
the vendors the live catalog actually serves. Five stay on the monogram on
purpose: sakana, thinkingmachines, inclusionai and interfaze have no upstream
mark, and xiaomi ships only a wordmark that is unreadable at 12px.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

@dosubot dosubot Bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Aug 27, 2026
@dosubot dosubot Bot added the enhancement New feature or request label Aug 27, 2026
@chelojimenez

chelojimenez commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

`nvidia` and `arcee-ai` were the stand-ins for "unknown catalog provider" in
model-helpers' display-name test, and they now resolve through the registry.
Swap in vendors that really are unregistered, and pin NVIDIA's branded casing
so the registry path stays covered too.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ZeHuari
ZeHuari temporarily deployed to preview-pr-4439 August 27, 2026 22:11 — with GitHub Actions Inactive
@github-actions

github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Internal preview

Preview URL: https://mcp-inspector-pr-4439.up.railway.app
Deployed commit: 906bbbf
PR head commit: 9c3b94d
Backend target: staging fallback.
Health: ✅ Convex reachable
Access is employee-only in non-production environments.

@coderabbitai

coderabbitai Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c195a020-d7ad-4623-a267-8ecaba4b13d2

📥 Commits

Reviewing files that changed from the base of the PR and between b04177a and 0e49118.

📒 Files selected for processing (1)
  • mcpjam-inspector/client/src/components/chat-v2/shared/__tests__/model-helpers.test.ts

Included review availability: Your plan provides up to 8 included reviews per hour; 6 remain after this review.


Walkthrough

The provider registry adds twelve vendors with bundled logo assets, display names, and monogram color classes. The registry maps spacexai to xai for shared branding. Tests verify the alias, branded display-name casing, unknown-provider fallback names, and intentional monogram-only vendors.

Merge Risk: ⚪ Minimal · up to 0e491

This localized change adds provider logos, aligns the spacexai alias with xAI, and refreshes the hosted-model snapshot; no actionable merge-blocking risk remains after normal checks and review.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Regenerating the snapshot (173 -> 226) pulls `openai/gpt-4-turbo` into the
hosted set, which flips it from BYOK to source:"mcpjam". Both
evals-runner.test.ts and runner-parity.test.ts drive the runner with
`model: "gpt-4-turbo"` precisely because it was NOT hosted, so the runner
switched to the backend stream path they never mock and 45 tests went red.

That reclassification is a real behavioral change and deserves its own
reviewed PR rather than riding along with brand assets. Reverted to the
base snapshot here; the logos and the spacexai alias need none of it, since
the live catalog is authoritative at runtime and the snapshot is only the
offline floor.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@dosubot dosubot Bot added size:M This PR changes 30-99 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants