Skip to content

UX: Redesign model selector to scale with large model catalogs #307

Description

@heiwen

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

  • Model type field in the Model Configuration form uses a searchable combobox
  • Models are grouped by modality
  • Free Tier / BYOK / Embeddings badges are preserved
  • Keyboard navigation and form submission work as before
  • Empty/error state (couldn't load models) is preserved

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions