Skip to content

fix: a list emptied by a search or a filter says so, and empty lists name the controls on their tab - #2923

Merged
laurentiu021 merged 1 commit into
mainfrom
fix/empty-lists-say-what-hid-them
Oct 21, 2026
Merged

laurentiu021 merged 1 commit into
mainfrom
fix/empty-lists-say-what-hid-them

Conversation

@laurentiu021

Copy link
Copy Markdown
Owner

Closes #2811.

Four lists gave the advice for an empty list when a search or a filter had emptied them, and five empty states named controls that are not on their tab.

  • "No matches" beside "nothing listed". Uninstaller, Right-click Menu and Task Scheduler bound their only empty state to the filtered list, so a search with no match said "Click Scan" or "Run a scan", and a scan keeps the search. Preinstalled Apps bound its state to the full list, so a search with no match left bare column headers. Each now has the split Drivers and System Logs already use: the "nothing listed" state is gated on the full list (AllApps.Count, HasEntries, HasTasks, HasApps), and a second state with the search glyph, on HasNoResults, says that nothing matches and how to bring the rest back, worded as Process Manager and Windows Features word theirs. On Right-click Menu it also covers the location box and "Show system entries", and on Task Scheduler "Hide system tasks", which can hide everything with no search typed.
  • Controls named as the tab shows them. DNS & Hosts says to add a redirect below the list, where its boxes are. Startup Manager's advice named a "Hide Windows entries" switch labelled "Hide system": the label and the advice now both read HideSystemLabel, so they cannot drift apart again. Its toolbar also said "Click Scan" until the first scan ended, beside a button labelled Refresh. System Logs says switches, not checkboxes. Right-click Menu and Task Scheduler said to run a scan; their button is Refresh.
  • New guard: ArchitectureTests.EveryEmptyStateMessage_NamesOnlyControlsItsViewHas. It reads every literal empty-state message in the views, and requires a quoted label to be some Content or Text in the same view, and the words after "press" or "click" to start with one. It found 3 quoted labels and 11 named buttons when measured, and fails below 2 and 9. A message bound to a view-model property is not read, which is why Startup Manager's goes through one string.

The new states say to clear the search rather than carry a Clear button: EmptyState has no button, and adding one is a design change of its own.

Docs

README: a short "Empty lists" section after "CSV exports".

Tests

  • View models (11 new cases): HasNoResults set by a search with no match and cleared with it on all four tabs, on Right-click Menu also by the location and by the system entries hidden by default, and on Task Scheduler by "Hide system tasks"; not set when nothing is listed or the first read failed; Task Scheduler's advice names Refresh; Startup Manager's advice quotes HideSystemLabel, and its toolbar names Refresh until the first scan ends.
  • New FilteredOutListViewUiTests (integration, 8 cases) loads the four real views with real view models, over fakes that read nothing on the PC. Each view shows its "no matches" state and not its "nothing listed" one when a search or a filter emptied the list, the reverse when nothing is listed, and Right-click Menu neither with an entry shown.
  • Red before the fix, green after, each undone on its own: each view's old empty state (1 view test each), the four flags never set (5 view-model tests and 4 view tests), Task Scheduler's old advice (1), Startup Manager's old message as literal text in the view (the guard) and in the view model (1), and a message sending the user to a Scan button Right-click Menu does not have (the guard).
  • The DNS & Hosts and System Logs wording has no test of its own: the guard checks names, not "above" or "checkboxes".
  • Run locally, twice: ArchitectureTests, InclusiveTermsTests and the five view-model test files (392), and the new view tests with StartupViewUiTests and RecentChangesViewUiTests (19). All four projects build with 0 warnings, and dotnet format --verify-no-changes is clean.

…name the controls on their tab

- Uninstaller, Right-click Menu, Task Scheduler and Preinstalled Apps show a "no matches" state when a search or a
  filter hides everything, and keep the "nothing listed" advice for a list with nothing in it.
- DNS & Hosts, Startup Manager, System Logs, Right-click Menu and Task Scheduler name their controls as the tab shows
  them; Startup Manager's switch label and its advice read one string.
- ArchitectureTests.EveryEmptyStateMessage_NamesOnlyControlsItsViewHas checks quoted labels and pressed buttons
  against each view.
@laurentiu021
laurentiu021 merged commit 4f6b7cb into main Oct 21, 2026
6 checks passed
@laurentiu021
laurentiu021 deleted the fix/empty-lists-say-what-hid-them branch October 21, 2026 09:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant