Turn the Install category filters into toggle chips - #4926
Conversation
- Replace the filter buttons with toggles that show which ones are active - Add ctrl click to select more than one category - Keep the search box and the category filter independent of each other - Expand matching categories while a filter is active
📝 WalkthroughSummary by CodeRabbit
WalkthroughThe Install tab now supports persistent multi-category selection. Category chips use additive Ctrl-click behavior, combined text and category filtering, automatic expansion tracking, and toggle-based XAML styling. ChangesApplication filtering
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
Suggested labels: Suggested reviewers: Sequence Diagram(s)sequenceDiagram
participant User
participant CategoryChip
participant InvokeWinUtilAppCategoryChip
participant SetWinUtilAppCategoryFilter
participant FindAppsByNameOrDescription
participant InstallAppRendering
User->>CategoryChip: Click category
CategoryChip->>InvokeWinUtilAppCategoryChip: Invoke handler
InvokeWinUtilAppCategoryChip->>SetWinUtilAppCategoryFilter: Pass category and additive flag
SetWinUtilAppCategoryFilter->>FindAppsByNameOrDescription: Apply selected categories and search text
FindAppsByNameOrDescription-->>User: Update visible and expanded categories
InstallAppRendering->>FindAppsByNameOrDescription: Reapply active filters after rendering
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@functions/private/Find-AppsByNameOrDescription.ps1`:
- Around line 125-128: Preserve each category’s original collapsed state before
the automatic expansion in the filtering logic around $categoryLabel.Content.
Update the reset path to restore that saved state rather than inferring it from
the modified label, and add a regression test covering a collapsed matching
category that is filtered and then cleared.
- Line 32: Update the caller in Start-WinUtilInstallAppRendering to pass
$sync.SelectedAppCategories.ToArray() via -Categories instead of the obsolete
-Category argument, and invoke the rendering-batch filtering when either search
text or selected categories are active.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 1c0e2c92-f058-43ae-be16-0e4fef421e44
📒 Files selected for processing (8)
functions/private/Find-AppsByNameOrDescription.ps1functions/private/Invoke-WinUtilAppCategoryChip.ps1functions/private/Set-WinUtilAppCategoryFilter.ps1functions/private/Update-WinUtilAppCategoryChip.ps1pester/search-filter.Tests.ps1pester/xaml.Tests.ps1scripts/main.ps1xaml/inputXML.xaml
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 839491022e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- Pass the selected categories to the lazy rendering batches, the old call used a parameter that no longer exists and threw while typing - Keep the category filter when switching tabs, the chips stayed checked while the filter itself was dropped - Put a category back to collapsed once the filter that expanded it is gone
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@functions/public/Invoke-WPFTab.ps1`:
- Around line 35-37: Ensure the search text is cleared before lazy rendering
begins, not only when Invoke-WPFTab later calls Find-AppsByNameOrDescription.
Update the Initialize-WinUtilTabContent queued-batch rendering flow to set
$sync.SearchBar.Text to "" before batches read it, while preserving the
selected-category filtering in Invoke-WPFTab.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 9106e10b-99ba-4ba1-ace3-3325daf0d657
📒 Files selected for processing (7)
functions/private/Find-AppsByNameOrDescription.ps1functions/private/Initialize-InstallCategoryAppList.ps1functions/private/Start-WinUtilInstallAppRendering.ps1functions/public/Invoke-WPFTab.ps1pester/install-rendering.Tests.ps1pester/search-filter.Tests.ps1pester/xaml.Tests.ps1
🚧 Files skipped from review as they are similar to previous changes (2)
- pester/xaml.Tests.ps1
- functions/private/Find-AppsByNameOrDescription.ps1
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7aa727fb38
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- Add a guide section for the chips, ctrl click and clearing the filter - Note that search and the category chips apply together
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/src/content/docs/guides/application.mdx`:
- Around line 48-49: Update the filtering behavior bullets in the application
guide: clarify that clicking the active category clears filters only when it is
the sole selected category, while clicking without Ctrl replaces multiple
selections with that category. Also state that only categories containing
matching results expand automatically, and user-expanded categories retain their
expanded state after filters are cleared.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 564b00dc-a30c-41d8-a2c4-0b6395332138
📒 Files selected for processing (1)
docs/src/content/docs/guides/application.mdx
- Clearing by clicking the chip only applies when it is the only one selected - Only categories with matches expand, and only auto expanded ones re-collapse
|
Sick! I really like these changes, it makes navigating the apps list much easier to get what you want 😄 |
Type of Change
Description
The category filters on the Install tab were plain buttons. They looked the same as every other button in the tool, and nothing showed which filter was active once you clicked one.
Before:

(cannot see which one is selected, long label at start & no multiselect)
After:

Clicking a category used to type the category name into the search box, and filter by category only. Typing anything after that dropped the category filter, and you were left searching for the category name plus whatever you typed. So the two could not be used together.
They are independent now. The search box only holds what you type. An app is shown when it matches the search text and is in one of the selected categories, so either filter works on its own or both at once.
A collapsed category opens while a filter is active, since the matches would otherwise sit behind a closed header. With no filter running, collapsed categories stay how you left them.
Demo
Bildschirmaufnahme.2026-08-06.001957.mp4
Verification
Issue related to PR
N/A