Search the settings #50

Closed
asxpi wants to merge 0 commits from asxpi/anotherim-js:feat/settings-search into develop
First-time contributor

A search field in Preferences. Some settings are hard to find: the Enter key's three ways, for one, sit at the end of Appearance, and that page's subtitle doesn't mention them.

What it does

  • The field sits at the top of the category list on a phone, and under the "Preferences" title in the desktop dialog's left column.
  • While it holds text, every page's cards are drawn under the page's title, then narrowed to the rows that match. A row matches when every word typed appears in its own text (a choice's options count), its card's heading or its page's title. Case and diacritics are ignored.
  • The rows work where they're found. On the desktop the results take the right-hand pane, under "Search results". When nothing matches, the page says so.
  • Nothing needs registering. Matching reads the text that's actually drawn, so new settings are found automatically. Text inside embedded components' own shadow roots, such as the accent picker, isn't searched, but their card's heading still finds them.
  • Back and Esc clear a search before they step anywhere, through the existing onBack hook. Picking a category in the dialog ends the search.
  • Strings: 3 new ones, in all catalogues (i18n-extract --check --strict passes). The CHANGELOG gets an Unreleased Added line.

Tested

  • test/settings-search.test.ts (5 tests):

    • finding a row by title, subtitle or option label on a phone
    • multi-word matching across page titles
    • using a found row, and the no-match message
    • diacritics
    • Back clearing the search
    • the dialog's pane, and a category pick ending the search

    All 5 fail without the change. preferences-views.test.ts still passes, 38 tests across the two files.

  • make check STRICT=1 is clean.

  • By hand: modern Chromium at phone and desktop sizes on build-mock, and the Flatpak built from this branch (v0.7.1-22-g5284e2b7).

Before merging

Rebase onto the current develop. If newer commits add settings rows built outside settings-rows.ts's helpers (a row with no .title/.sub text, or a card without the usual header + .rows structure), check that search still finds them.

🤖 Generated with Claude Code

A search field in Preferences. Some settings are hard to find: the Enter key's three ways, for one, sit at the end of Appearance, and that page's subtitle doesn't mention them. ## What it does - **The field** sits at the top of the category list on a phone, and under the "Preferences" title in the desktop dialog's left column. - **While it holds text,** every page's cards are drawn under the page's title, then narrowed to the rows that match. A row matches when every word typed appears in its own text (a choice's options count), its card's heading or its page's title. Case and diacritics are ignored. - **The rows work where they're found.** On the desktop the results take the right-hand pane, under "Search results". When nothing matches, the page says so. - **Nothing needs registering.** Matching reads the text that's actually drawn, so new settings are found automatically. Text inside embedded components' own shadow roots, such as the accent picker, isn't searched, but their card's heading still finds them. - **Back and Esc clear a search** before they step anywhere, through the existing `onBack` hook. Picking a category in the dialog ends the search. - **Strings:** 3 new ones, in all catalogues (`i18n-extract --check --strict` passes). The CHANGELOG gets an Unreleased **Added** line. ## Tested - **`test/settings-search.test.ts` (5 tests):** - finding a row by title, subtitle or option label on a phone - multi-word matching across page titles - using a found row, and the no-match message - diacritics - Back clearing the search - the dialog's pane, and a category pick ending the search All 5 fail without the change. `preferences-views.test.ts` still passes, 38 tests across the two files. - **`make check STRICT=1`** is clean. - **By hand:** modern Chromium at phone and desktop sizes on `build-mock`, and the Flatpak built from this branch (`v0.7.1-22-g5284e2b7`). ## Before merging Rebase onto the current `develop`. If newer commits add settings rows built outside `settings-rows.ts`'s helpers (a row with no `.title`/`.sub` text, or a card without the usual `header` + `.rows` structure), check that search still finds them. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Preferences has eight pages and some settings are hard to find: the
Enter key's three ways sit at the end of Appearance, whose subtitle
does not name them.

Add a search field atop the category list on a phone and under the
title of the desktop dialog's side column. While it holds text every
page's cards are drawn under the page's title and thinned, after each
render, to the rows that match: every word has to be in the row's own
text (a choice's options among it), its card's heading or its page's
title, case and diacritics aside. The rows work where they are found.
Matching reads what is drawn, so a new setting is found with nothing to
register. Back and Esc clear a search before they step anywhere; a
category picked in the dialog ends it.

Assisted-by: Claude:opus-5-5
Owner

Merged into develop by hand as ea52a151 (gate: make check STRICT=1 clean, make test-ui 2667 passed, cargo check --features desktop clean). Thank you.

Merged into develop by hand as ea52a151 (gate: make check STRICT=1 clean, make test-ui 2667 passed, cargo check --features desktop clean). Thank you.
ann closed this pull request 2026-10-24 22:08:45 +00:00

Pull request closed

Sign in to join this conversation.
No description provided.