Skip to content

feat(ui): ranked fuzzy Settings search with in-place editing (#317) - #331

Merged
Maxaubert merged 2 commits into
mainfrom
feat/317-fuzzy-search
Oct 2, 2026
Merged

Maxaubert merged 2 commits into
mainfrom
feat/317-fuzzy-search

Conversation

@Maxaubert

Copy link
Copy Markdown
Owner

Closes #317. Version 0.21.0.

Max (2026-10-03): search should rank matches best to worst, be fairly fuzzy, find settings by meaning (meta keywords), let you change a setting right in the results instead of jumping to its page, and leave the Tray menu list items out.

  • Ranked, one list: ui/src/search/search.js (pure) scores each row: label exact > label word-prefix > label substring/fuzzy > keywords > description > card caption / tab name. Every query word must match; scores add up; whole-label and phrase bonuses, shorter labels break ties. Stopwords (in, the, to, ...) never have to match and add only a tie-break.
  • Fuzzy: case, accents and punctuation ignored; typos allowed (1 edit for 4-7 letter words, 2 for 8+, same first letter); a few spelling folds ("nite" finds night). Fuzzy matching is limited to labels and keywords so look-alike words in descriptions do not pull in unrelated rows.
  • Keywords: every labelled row in settings-schema.js has a hidden keywords list (9-19 words: synonyms, shortcut terms, spelling variants). "mouse position", "center", "centered", "edge" find Pointer position and Text cursor position; "night light" finds Warmth; "inertia" finds Release glide; "crosshair" finds Inspect mode. A unit test fails if a row has none.
  • Edit in place: each result is the page's own SettingRow with a quiet tab label, using the page's session and persist handlers. Clicking does not navigate. Advanced rows are always found and editable; a showIf-gated row shows dimmed.
  • Tray menu list items are not schema rows and never appear; "Performance in the tray" is a normal row and stays searchable.
  • Keyboard: Ctrl+F focuses, Esc clears, Enter or Down enters the first result, Tab walks the controls; focus ring for keyboard only.

Gates: build.bat test 535 pass, build.bat config builds, Playwright 170 pass (20 search tests: ranking, typos, keywords, in-place edits of switch/select/slider/keybind, advanced rows, tray exclusion). Unsigned (no SignPath enrollment yet).

🤖 Generated with Claude Code

https://claude.ai/code/session_01KPUNAWcwghXdHCApcKKjSG

Maxaubert and others added 2 commits October 3, 2026 00:22
Search now ranks every row (label, keywords, description, caption/tab), tolerates typos,
and shows the real controls in the results so settings change without leaving the search.
Every labelled schema row gets meta keywords. Tray item lists stay out of search.
Version 0.21.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KPUNAWcwghXdHCApcKKjSG
@Maxaubert
Maxaubert merged commit 0e84c1c into main Oct 2, 2026
1 check passed
@Maxaubert
Maxaubert deleted the feat/317-fuzzy-search branch October 2, 2026 22:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Settings: search needs a rework

1 participant