From dd18765b508d2d01f3f701fe4afb81ba984437a4 Mon Sep 17 00:00:00 2001 From: Vignesh Natarajan Date: Sun, 18 Jan 2026 16:37:15 -0800 Subject: [PATCH] feat(tui): add fuzzy search to session and agent pickers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use SearchableSelectList for /sessions and /agents pickers, matching the /models picker behavior. - Session picker: search by session key, display name, or date - Agent picker: search by agent ID or name 🤖 AI-assisted (Claude) --- src/tui/tui-command-handlers.ts | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/tui/tui-command-handlers.ts b/src/tui/tui-command-handlers.ts index dbf7e252e..485296dc3 100644 --- a/src/tui/tui-command-handlers.ts +++ b/src/tui/tui-command-handlers.ts @@ -7,11 +7,7 @@ import { import { normalizeAgentId } from "../routing/session-key.js"; import { helpText, parseCommand } from "./commands.js"; import type { ChatLog } from "./components/chat-log.js"; -import { - createSearchableSelectList, - createSelectList, - createSettingsList, -} from "./components/selectors.js"; +import { createSearchableSelectList, createSettingsList } from "./components/selectors.js"; import type { GatewayChatClient } from "./gateway-chat.js"; import { formatStatusSummary } from "./tui-status-summary.js"; import type { @@ -117,7 +113,7 @@ export function createCommandHandlers(context: CommandHandlerContext) { label: agent.name ? `${agent.id} (${agent.name})` : agent.id, description: agent.id === state.agentDefaultId ? "default" : "", })); - const selector = createSelectList(items, 9); + const selector = createSearchableSelectList(items, 9); selector.onSelect = (item) => { void (async () => { closeOverlay(); @@ -147,7 +143,7 @@ export function createCommandHandlers(context: CommandHandlerContext) { : formatSessionKey(session.key), description: session.updatedAt ? new Date(session.updatedAt).toLocaleString() : "", })); - const selector = createSelectList(items, 9); + const selector = createSearchableSelectList(items, 9); selector.onSelect = (item) => { void (async () => { closeOverlay();