feat: add fuzzy filter to TUI session picker

Users can now type to filter sessions in real-time:
- FilterableSelectList component wraps pi-tui's fuzzyFilter
- Matches against displayName, label, subject, sessionId
- j/k navigation, Enter selects, Escape clears filter then cancels
- Uses derivedTitle from previous commit for better display

Refs #1161
This commit is contained in:
CJ Winslow
2026-01-18 02:58:24 -08:00
committed by Peter Steinberger
parent 83d5e30027
commit 95f0befd65
5 changed files with 223 additions and 10 deletions

View File

@@ -106,6 +106,12 @@ export const selectListTheme: SelectListTheme = {
noMatch: (text) => fg(palette.dim)(text),
};
export const filterableSelectListTheme = {
...selectListTheme,
filterLabel: (text: string) => fg(palette.dim)(text),
filterInput: (text: string) => fg(palette.text)(text),
};
export const settingsListTheme: SettingsListTheme = {
label: (text, selected) =>
selected ? chalk.bold(fg(palette.accent)(text)) : fg(palette.text)(text),