Replace exact substring filtering with fuzzy subsequence matching, ranked by relevance, for the three in-memory search surfaces: the playlist search (/), the file browser filter (/), and the Local provider's Ctrl+F search. Query characters now match in order without being contiguous (e.g. "skr" finds "Sakura"), and better matches sort first.
Matching lives in a new dependency-free internal/fuzzy package (greedy subsequence scan with first-char, word-boundary, and consecutive-run scoring bonuses). Remote provider searches (Spotify, YouTube, Navidrome, radio, etc.) are untouched: those query external APIs that do their own matching.
Closes#227
Release / build (amd64, darwin, macos-latest) (push) Has been cancelled
Release / build (amd64, linux, ubuntu-latest) (push) Has been cancelled
Release / build (amd64, windows, windows-latest) (push) Has been cancelled
Release / build (arm64, darwin, macos-latest) (push) Has been cancelled
Release / build (arm64, linux, ubuntu-latest) (push) Has been cancelled
Release / release (push) Has been cancelled
Release / update-homebrew (push) Has been cancelled
* Implement stateful windowed scrolling for all overlays
* Add Ctrl+X support to toggle expanded height in all overlays
* Remove ctrl+k helpkey from Search Overlay so it is consistent with others
* Remove now-unused stateless scrollStart helper
* Re-clamp queue scroll after movement or deletion
* Fix unreachable ctrl+x handler in provider search
* Fix device picker list scroll wrap for empty lists