v0.7.0: Select dropdown with fuzzy filter

Select widget: list of options with keyboard navigation (up/down/enter/esc,
ctrl+n/p), case-insensitive substring filter with character-set Jaccard
fuzzy fallback, category headers, viewport culling, on-select callback.

Fixed from subagent review:
- Category filter return-from bug: categories kept in filtered set
- Dead trigram code removed (string-trigrams, trigram-score)
- Exports cleaned up (removed unused trigram exports)
- Character-set Jaccard replaces trigrams (better for short strings)

25 select tests, 100% GREEN.
196 total (27 backend + 58 box + 60 input + 26 scrollbox/tabbar + 25 select)
This commit is contained in:
Hermes
2026-05-11 17:36:00 +00:00
parent 9adefb5dbb
commit e96c338a57
5 changed files with 779 additions and 4 deletions

View File

@@ -0,0 +1,13 @@
(defpackage :cl-tui.select
(:use :cl :cl-tui.backend :cl-tui.box :cl-tui.layout :cl-tui.input)
(:export
#:select #:make-select
#:select-options #:select-filter
#:select-selected-index #:select-on-select
#:select-layout-node
#:select-filtered-options
#:select-next #:select-prev
#:select-visible-options
#:select-handle-key
#:render
#:fuzzy-match-p))