diff --git a/packages/kilo-vscode/webview-ui/src/components/shared/ModelSelector.tsx b/packages/kilo-vscode/webview-ui/src/components/shared/ModelSelector.tsx index ec881eab24c..823a95dce3b 100644 --- a/packages/kilo-vscode/webview-ui/src/components/shared/ModelSelector.tsx +++ b/packages/kilo-vscode/webview-ui/src/components/shared/ModelSelector.tsx @@ -284,9 +284,9 @@ export const ModelSelectorBase: Component = (props) => { return [...result, ...rest] }) - // While a search is active, collapse state is ignored — otherwise users - // get confusing "no results" when their match lives inside a collapsed group. - const isGroupOpen = (key: string) => !!debouncedSearch() || !collapsed().has(key) + // Collapse state is honored even during search so users can skip past + // large providers (e.g. Kilo Gateway) without scrolling through every match. + const isGroupOpen = (key: string) => !collapsed().has(key) function toggleGroup(key: string) { setCollapsed((prev) => { @@ -298,9 +298,8 @@ export const ModelSelectorBase: Component = (props) => { } const rows = createMemo(() => { - const search = !!debouncedSearch() const c = collapsed() - const list = groups().flatMap((g) => (search || !c.has(g.key) ? g.rows : [])) + const list = groups().flatMap((g) => (c.has(g.key) ? [] : g.rows)) if (!props.allowClear) return list return [{ key: CLEAR_KEY, kind: "clear" }, ...list] })