Model picker redesign: compact rows, shortened names, refined selection#1
Closed
SunkenInTime wants to merge 3 commits into
Closed
Model picker redesign: compact rows, shortened names, refined selection#1SunkenInTime wants to merge 3 commits into
SunkenInTime wants to merge 3 commits into
Conversation
…selection styling - Shorten display names in the picker (GPT-5.6-Sol -> 5.6 Sol, Claude Fable 5 -> Fable 5) via getModelPickerDisplayAlias, with unit tests - Hide the per-row provider line on single-provider tabs (the sidebar already shows the provider); keep it for search, favorites, and sub-provider models - Blue-tinted selected-row state, tighter row metrics (rounded-sm, text-sm) - Fix LegendList stale-row renders by passing all row-render inputs through extraData instead of only favoritesSet - Move the scrollbar styling class onto the actual LegendList scroll element; widen the scrollbar hit area with an inset pill thumb Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…talog Replaces the web-layer regex aliasing with catalog-driven shortName: - Claude built-in models get explicit shortName entries - Codex derives shortName at model-list parse time (toCodexShortName), so discovered GPT models render as e.g. "5.6 Sol" / "5.5" - Cursor/OpenCode/Grok models are intentionally left without shortName: their catalogs are dynamic multi-vendor lists - Display-name helpers extracted from providerIconUtils to modelDisplayNames.ts; the picker-only alias regexes are deleted - Picker rows always prefer shortName; extraData now carries filteredModelByKey and getModelDisabledReason so recycled rows cannot render stale disabled state Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Correctness/robustness: - Size the virtualized row estimate at 60 when any filtered model has a subProvider (those rows render the two-line layout even in single-provider tabs), preventing first-paint mis-measurement - Include toggleFavorite in LegendList extraData so recycled rows are invalidated by construction, not by favoritesSet changing in lockstep - Read the selected-row key from listExtraData.activeModelKey instead of recomputing it inline - Allow a fused version letter in toCodexShortName (GPT-4o -> "4o", GPT-4o-Mini -> "4o Mini") and cover the toDisplayName -> toCodexShortName chain with a parser-level test Dead code removal (pre-existing, surfaced by review): - Drop the getTriggerDisplayModelLabel pass-through alias and the never-true useTriggerLabel prop/branch in ModelListRow - Remove the unused providerAccentColor/instanceAccentColor plumbing - Collapse ProviderModelPicker's always-equal triggerLabel into triggerTitle Styling: - Model-picker scrollbar colors now track the theme border token via color-mix (dark-mode overrides removed), with a guarded scrollbar-width/scrollbar-color fallback so Firefox gets the shared thin treatment without disabling the WebKit inset pill Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Owner
Author
|
Superseded by the upstream PR: pingdotgg#4067 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Visual + naming refresh of the model picker:
shortNames ("Fable 5", "Opus 4.8"); Codex derives them at model-list parse time viatoCodexShortName()("GPT-5.6-Sol" → "5.6 Sol", "GPT-5.5" → "5.5"). The provider logo always sits next to the label (composer trigger, sidebar tabs, provider footer in mixed views), so the brand prefix is redundant — same pattern the Codex app uses. Cursor/OpenCode/Grok models are intentionally left unshortened: their catalogs are dynamic multi-vendor lists.modelDisplayNames.ts(out ofproviderIconUtils.ts); an earlier web-layer regex-alias approach was replaced by the catalog approach in the second commit.estimatedItemSizeadjusted per view.ChatComposeractive-state idiom),text-smnames, tighter radii, sidebar spacing cleanup.LegendList'sextraDatanow carries all row-render inputs (favorites, search state, selected instance, active model, jump labels, disabled reasons, model map) instead of onlyfavoritesSet, so recycled rows can't render stale.model-picker-listclass now sits on the actual LegendList scroll element (it previously targeted a wrapper that never scrolled), with an 8px gutter and inset pill thumb.Tests
modelDisplayNames.test.ts(web) — qualifier stripping + short-name preferenceCodexProvider.test.ts—toCodexShortNamederivation incl. non-GPT passthroughProviderRegistry.test.ts— built-in Claude models exposeshortName🤖 Generated with Claude Code