fix(tui): support slash-separated fuzzy filter tokens

This commit is contained in:
Armin Ronacher
2026-06-12 18:24:55 +02:00
parent 6102dd2084
commit 0caca6cf3f
3 changed files with 10 additions and 2 deletions

View File

@@ -4,6 +4,7 @@
### Fixed
- Fixed slash-separated fuzzy queries so provider/model completions remain matchable after insertion.
- Fixed WezTerm inline Kitty image rendering so reserved row clears do not erase all but the top strip of tool image previews ([#5618](https://github.com/earendil-works/pi/issues/5618)).
## [0.79.1] - 2026-06-09

View File

@@ -94,7 +94,7 @@ export function fuzzyMatch(query: string, text: string): FuzzyMatch {
/**
* Filter and sort items by fuzzy match quality (best matches first).
* Supports space-separated tokens: all tokens must match.
* Supports whitespace- and slash-separated tokens: all tokens must match.
*/
export function fuzzyFilter<T>(items: T[], query: string, getText: (item: T) => string): T[] {
if (!query.trim()) {
@@ -103,7 +103,7 @@ export function fuzzyFilter<T>(items: T[], query: string, getText: (item: T) =>
const tokens = query
.trim()
.split(/\s+/)
.split(/[\s/]+/)
.filter((t) => t.length > 0);
if (tokens.length === 0) {

View File

@@ -102,4 +102,11 @@ describe("fuzzyFilter", () => {
assert.ok(result.map((r) => r.name).includes("foo"));
assert.ok(result.map((r) => r.name).includes("foobar"));
});
it("matches slash-separated provider/model queries against reordered text", () => {
const item = { id: "gpt-5.5", provider: "openai-codex" };
const result = fuzzyFilter([item], "openai-codex/gpt-5.5", (model) => `${model.id} ${model.provider}`);
assert.deepStrictEqual(result, [item]);
});
});