Skip to content

Add provider filter rail to the model selector - #133

Merged
ruibaby merged 2 commits into
mainfrom
improvement/model-selector-provider-rail
Nov 13, 2026
Merged

ruibaby merged 2 commits into
mainfrom
improvement/model-selector-provider-rail

Conversation

@ruibaby

@ruibaby ruibaby commented Nov 13, 2026

Copy link
Copy Markdown
Member

Summary

Adds a provider filter rail to the AI model selector dropdown. The picker now shows a narrow icon rail on the left with an "All providers" entry and one entry per provider, while the model list stays on the right. Selecting a provider filters the model list and keeps the same provider group section at the top; search continues to work within the selected provider, and the rail remains available when a search has no matches.

The rail is derived from the full model option list rather than the filtered results, so it stays stable while typing. Providers without an icon fall back to the brain icon, and the full provider label is exposed through a tooltip. The dropdown now has a minimum width of 30rem (capped at 32rem and the viewport) to make room for the rail.

Keyboard support: Tab from the search input enters the provider rail, ArrowUp/ArrowDown/Home/End move between rail items, Tab returns to the search input, and Escape closes the picker.

Changes

  • ui/src/formkit/AiModelSelector.vue: provider rail, provider filtering, keyboard navigation, wider picker content, and the sticky provider section retained for filtered lists.
  • ui/src/formkit/AiModelSelector.test.ts: provider filter behavior, reset on close, and no-match rail retention.

Validation

  • pnpm test:unit (68 files, 599 tests)
  • pnpm type-check
  • pnpm lint
  • pnpm build-only

The picker layout was also measured in a browser probe for long and short lists; no live Halo instance was used for visual verification.

Re-key the select content when the provider filter changes so Reka re-registers the selected item used by its scroll buttons, and focus the search input after the remount. Use null as the all-providers sentinel so a provider named all can be filtered independently.
@ruibaby
ruibaby merged commit 6d14e56 into main Nov 13, 2026
1 check passed
@ruibaby
ruibaby deleted the improvement/model-selector-provider-rail branch November 13, 2026 07:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant