Repository navigation
Conversation
The provider registry now derives shortName for every reported model, including custom ones: the family prefix (Claude, GPT-, Gemini, Muse, Grok) is dropped on the family's own provider, and elsewhere only when the rest still names a model. Names never shrink to a bare version. Mobile's composer model control shows the short name; the web picker trigger's tooltip now shows the full name. Co-Authored-By: Claude Opus 5.5 (Claude Code) <noreply@anthropic.com>
The registry now stores and persists snapshots without computed short names and derives them at its public API, so cached and retained models never carry a value from an older rule. Explicit manifest short names still win. The web multi-model tooltip and the context-window popover show full model names. Co-Authored-By: Claude Opus 5.5 (Claude Code) <noreply@anthropic.com>
ApprovabilityVerdict: Needs Human Approval Macroscope's review found this PR requires human approval — This PR changes the default composer presentation across web and mobile and adds shared/server-side model-name parsing that affects provider snapshots and live updates. Although the API addition is optional and model execution is unchanged, the cross-surface behavior change and non-trivial heuristics merit human review. You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
Note
🤖 Claude Opus 5.5 on behalf of Oliver
Important
Stacked on #24205. Merge that first; this PR's own change is the top commit, e994e8b.
Problem
The composer's model button shows the full catalog name, so models from OpenCode, Pi and aggregators read like "Nemotron 3.5 Super VL Free", "LongCat 2.5 Preview Free" or "Gemini 3.1 Pro Preview Custom Tools". The extra words (free tier, preview, reasoning variant, sizes, hosts, dates) crowd out the part that says which model you're on.
Fix
The composer button now shows the name you'd say out loud.
composerModelLabel(packages/client-runtime/src/modelLabel.ts, shared by web and mobile) takes the short name from #24205 and removes:"Image" stays so an image-generation model, which can't run tools, is never mistaken for its text sibling.
Only the visible composer button changes: web's
ProviderModelPickertrigger and mobile'sComposerModelControl. The hover tooltip, accessibility label, model picker rows and search keep the fuller names, so that's where a free model and its paid twin are told apart. Labels that are still long keep the existing end truncation.Scope and approval
Same direction as #24205, which Oliver and Julius have been discussing on Discord: the composer shows a spoken model name and the detail lives in the tooltip and picker.
Evidence
Web composer button, with the full name in the tooltip and picker rows:
iOS, iPhone 18 Pro, focused wrapped draft so the label is visible:
On iOS, "Nemotron 3.5 Super" still truncates because the label and the "Low · Build" settings suffix shrink together on a 402pt row.
Validation
modelLabel.test.ts: one table covering the rows above plus nested parentheses, punctuation-only separators and the size rule.vp run check:changedpasses.Made with Claude Opus 5.5 in Claude Code (via T3 Code); captures by GPT-6.1 Sol in Codex.