Skip to content

feat(search): Search here on every browse screen, and say what it searches - #594

Merged
wizzomafizzo merged 1 commit into
mainfrom
investigate-issue-542-folder-search-discoverability
Nov 3, 2026
Merged

wizzomafizzo merged 1 commit into
mainfrom
investigate-issue-542-folder-search-discoverability

Conversation

@wizzomafizzo

Copy link
Copy Markdown
Member

"Search here…" opens a scoped search from every browse screen Core can scope a search to, and the Search screen now says what it is limited to. Before, the only cue was the System field's label changing to "Search in".

Search here

Opened from Sent to Core Title
Games, system top level the system Search in SNES
Games, folder the system and folder path Search in Racing
Systems the category's systems Search in Consoles
Favorite systems user:favorite Search in Favorites
Favorites user:favorite, plus the system when viewing one system's favorites Search in Favorites
  • Recently played has no Search here: it is Core's play history, which a search cannot be limited to.
  • The title strip and the 240p header read "Search in {}". The System field shows the scope from the system down ("Super Nintendo / Racing", "Favorites / SNES", "Consoles") and never lists every system in a category.
  • A folder's tag filter carries into its search. The copy is one way: changing tags on Search leaves the folder's filter as it was.
  • The favorites scope sends user:favorite outside the Tags field, so it cannot be cleared there. A chosen List tag includes hidden games, the same rule browse uses.
  • Back returns to the screen the search was opened from.
  • Results name a category or Favorites where the systems go ("mario" · Consoles · RPG), using the existing {} · {} string. Slint composes it so the name is translated. A tile saved from those results takes that name.

Menu row

Screen Chips
Systems Search here (new row)
Favorites Sort, Group by, Random game, Search here, More
Favorite systems Group by, Search here
  • At 240p, Menu on Systems runs Search here directly, and Favorite systems' Menu opens a list of Group by and Search here.

Save to Hub

  • Search results say "Save to Hub" instead of "Add to Hub". The confirmation reads "Saved to Hub" and the error reads "Save to Hub failed". Game, system and folder Options keep "Add to Hub".

State

  • SearchState gains scope_kind and scope_category. An older state file with a scoped search loads as a folder scope; an unknown kind loads unscoped. No reset or migration.

Test plan

  • just test passes (1161 workspace, 490 MiSTer feature). New route tests cover Search here from a folder (carried tags, the folder's filter left unchanged), a category, Favorites with and without a system, and Favorite systems, Back from each, the Systems chip row, and the 240p Menu paths. Unit tests cover the scope tokens, the favorites tag, the hidden-games rule and loading older state.
  • just lint: fmt, clippy (desktop, MiSTer, snapshot), toolkit, translations, notices and logos pass. cargo deny fails only on async-executor 1.14.0 being yanked upstream, which this change does not touch.
  • Snapshots checked offline: scoped Search at 720p, 240p CRT and in German, Systems with its row, and the Favorites chips at 540p in German. Not attached.
  • New strings are translated in all 17 catalogs.

Closes #542

…rches

"Search here..." now opens a scoped search from Systems (the category's
systems), Favorite systems and Favorites (all favorites, or one system's),
as well as from a Games folder. Recently played has none: Core cannot
limit a search to play history.

- The Search screen's title and the 240p header read "Search in {}" with
  the folder, system, category or Favorites. The System field shows the
  whole scope and never lists every system of a category.
- A folder's tag filter carries into its search, one way.
- The favorites scope sends user:favorite outside the Tags field, so it
  cannot be cleared there. A chosen List tag includes hidden games, as
  browse does.
- Back returns to the screen the search was opened from.
- Results name a category or Favorites where the systems go, composed in
  the view so the name is translated; a saved tile takes that name.
- Systems gains a Menu row with Search here; at 240p Menu runs it. Favorite
  systems' 240p Menu becomes a list of Group by and Search here.
- Search results say "Save to Hub", with "Saved to Hub" and "Save to Hub
  failed" to match. Game, system and folder Options keep "Add to Hub".
- Persisted search state gains scope_kind and scope_category. An older
  scoped search loads as a folder scope; an unknown kind loads unscoped.

Closes #542
@coderabbitai

coderabbitai Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 18 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2b7a5c97-e253-4693-b6c5-11be440ee497
Commits

Reviewing files that changed from the base of the PR and between 9a7488b and 5038e01.

Files selected for processing: 39
  • docs/customization.md
  • docs/slint-state-types.md
  • docs/style.md
  • rust/frontend/src/bin/snapshot.rs
  • rust/frontend/src/dual_head.rs
  • rust/frontend/src/games.rs
  • rust/frontend/src/hub.rs
  • rust/frontend/src/page_bar.rs
  • rust/frontend/src/route_motion.rs
  • rust/frontend/src/router.rs
  • rust/frontend/src/search.rs
  • rust/frontend/src/state_types.rs
  • rust/frontend/src/systems.rs
  • rust/frontend/translations/ar/LC_MESSAGES/frontend.po
  • rust/frontend/translations/de/LC_MESSAGES/frontend.po
  • rust/frontend/translations/el/LC_MESSAGES/frontend.po
  • rust/frontend/translations/es/LC_MESSAGES/frontend.po
  • rust/frontend/translations/eu/LC_MESSAGES/frontend.po
  • rust/frontend/translations/fr/LC_MESSAGES/frontend.po
  • rust/frontend/translations/frontend.pot
  • rust/frontend/translations/he/LC_MESSAGES/frontend.po
  • rust/frontend/translations/hi/LC_MESSAGES/frontend.po
  • rust/frontend/translations/it/LC_MESSAGES/frontend.po
  • rust/frontend/translations/ja/LC_MESSAGES/frontend.po
  • rust/frontend/translations/ko/LC_MESSAGES/frontend.po
  • rust/frontend/translations/nl/LC_MESSAGES/frontend.po
  • rust/frontend/translations/ro/LC_MESSAGES/frontend.po
  • rust/frontend/translations/sk/LC_MESSAGES/frontend.po
  • rust/frontend/translations/uk/LC_MESSAGES/frontend.po
  • rust/frontend/translations/zh_CN/LC_MESSAGES/frontend.po
  • rust/frontend/translations/zh_TW/LC_MESSAGES/frontend.po
  • rust/frontend/ui/app.slint
  • rust/frontend/ui/labels.slint
  • rust/frontend/ui/search.slint
  • rust/frontend/ui/state_types.slint
  • rust/zaparoo-app/src/action_error.rs
  • rust/zaparoo-app/src/page_bar.rs
  • rust/zaparoo-app/src/search.rs
  • rust/zaparoo-core/src/persist.rs
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.

@wizzomafizzo
wizzomafizzo merged commit 48dacbb into main Nov 3, 2026
6 checks passed
@wizzomafizzo
wizzomafizzo deleted the investigate-issue-542-folder-search-discoverability branch November 3, 2026 01:56
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.

feat(input): add shortcut functionality to call up search

1 participant