Context
The current ModelSelector in the Model Configuration page renders all available models as a flat <Select> list. As hebo-gateway model presets grow, this becomes unusable — no search, no grouping, no filtering.
Each model has the following attributes available for grouping/filtering: modality (text, embedding, …), free, requiresByok, and providers (provider family slugs).
Options
A — Grouped Select with section headers
Add visual section headers to the existing <Select>, grouping by modality or provider family.
- Pros: minimal change, no new dependencies
- Cons: no search; still breaks beyond ~30–40 items; native select rendering limits label customization
B — Searchable Combobox (recommended)
Replace <Select> with a Command-palette-style combobox (popover + search input + grouped list). shadcn ships this pattern out of the box.
- Pros: scales to any number of models; fits existing form field layout with no structural changes; zero UX paradigm shift
- Cons: slightly more implementation work than A
Sketch:
[ Search models... ▼ ]
────────────────────────────────
Text Generation
○ claude-4-opus [BYOK]
○ gpt-4o [Free Tier]
Embeddings
○ text-embedding-3 [BYOK]
C — Two-step selector: provider → model
First pick a provider family, then pick a model within it.
- Pros: keeps each individual list small
- Cons: extra click; couples the selection UX to provider as a first-class concept; awkward when a model supports multiple providers
D — Model picker dialog / sheet
Full-screen modal with search, filter chips (by modality, tier), and a grid or grouped list layout. Similar to a font picker.
- Pros: best experience for very large catalogs (50+ models); room for richer metadata display
- Cons: most engineering work; introduces context-switching for what is currently an inline form field
Recommendation
Option B. It's a direct swap of one component (<Select> → <Combobox>) with grouping by modality as the primary key. All existing form wiring, badges, and field layout remain unchanged. Can be extended toward D later if the catalog grows further.
Acceptance criteria
Context
The current
ModelSelectorin the Model Configuration page renders all available models as a flat<Select>list. As hebo-gateway model presets grow, this becomes unusable — no search, no grouping, no filtering.Each model has the following attributes available for grouping/filtering:
modality(text, embedding, …),free,requiresByok, andproviders(provider family slugs).Options
A — Grouped Select with section headers
Add visual section headers to the existing
<Select>, grouping by modality or provider family.B — Searchable Combobox (recommended)
Replace
<Select>with a Command-palette-style combobox (popover + search input + grouped list). shadcn ships this pattern out of the box.Sketch:
C — Two-step selector: provider → model
First pick a provider family, then pick a model within it.
D — Model picker dialog / sheet
Full-screen modal with search, filter chips (by modality, tier), and a grid or grouped list layout. Similar to a font picker.
Recommendation
Option B. It's a direct swap of one component (
<Select>→<Combobox>) with grouping bymodalityas the primary key. All existing form wiring, badges, and field layout remain unchanged. Can be extended toward D later if the catalog grows further.Acceptance criteria