From 0da5602f684979dc32aac1fba5c785ba3fdbd8b2 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Wed, 1 Apr 2026 13:41:23 -0500 Subject: [PATCH] CmdPal: Update CommunityToolkit.WinUI to 8.2.251219 and remove SearchBar debouncer hacks (#46027) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary of the Pull Request Updates all `CommunityToolkit.WinUI` packages from `8.2.250402` to `8.2.251219` (latest stable) and removes three workaround hacks from `SearchBar.xaml.cs` that were added to paper over bugs in the `CommunityToolkit.WinUI.Extensions` debouncer (`Debounce` with `immediate: true` not firing correctly). Those bugs were fixed upstream and are included in `8.2.251219`. ## PR Checklist - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx ## Detailed Description of the Pull Request / Additional comments ### Package update (`Directory.Packages.props`) All `CommunityToolkit.WinUI` packages bumped from `8.2.250402` → `8.2.251219`: - `CommunityToolkit.WinUI.Animations` - `CommunityToolkit.WinUI.Collections` - `CommunityToolkit.WinUI.Controls.Primitives` - `CommunityToolkit.WinUI.Controls.SettingsControls` - `CommunityToolkit.WinUI.Controls.Segmented` - `CommunityToolkit.WinUI.Controls.Sizers` - `CommunityToolkit.WinUI.Converters` - `CommunityToolkit.WinUI.Extensions` ### Hack removals (`SearchBar.xaml.cs`) All three hacks were in `SearchBar.xaml.cs` (`Controls/`), tagged `TODO GH #245`: - **`FilterBox_TextChanged` — "TERRIBLE HACK"**: Forced `DoFilterBoxUpdate()` immediately for any single-character input, then returned early—bypassing the debouncer entirely. Now the debouncer's `immediate: FilterBox.Text.Length <= 1` path handles this correctly. - **Escape key handler**: After `FilterBox.Text = string.Empty`, manually pushed the empty string to `CurrentPageViewModel.SearchTextBox`. The `TextChanged` event fires after the assignment and the debouncer (with `immediate: true` for length 0) now handles propagation. - **Backspace key handler (`else if (e.Key == VirtualKey.Back)` block)**: Pre-emptively set `CurrentPageViewModel.SearchTextBox` to the *pre-deletion* text in `FilterBox_KeyDown`. Entire block removed; `TextChanged` + debouncer handle the post-deletion update correctly. ## Validation Steps Performed Manually verified in CmdPal that: - Typing aliases (single-character triggers) still activates filtering immediately - Pressing Escape clears the search box and resets the filter - Pressing Backspace correctly updates search results after each deletion
Original prompt > > ---- > > *This section details on the original issue you should resolve* > > Update to the latest `CommunityToolkit.WinUI.Extensions` and remove hacks > _originally filed by @zadjii-msft_ > > See https://github.com/zadjii-msft/PowerToys/pull/236#discussion_r1887714771 > > I had to stick a couple of HACKs into `SearchBar.xaml.cs` to work around bugs in the toolkit debouncer. Those bugs have since been fixed upstream, hooray! We just need a new version of the package shipped and we can get rid of them. > > ref https://github.com/zadjii-msft/PowerToys/issues/236 > > ---- > > Also! > > Revert > > ``` > // TODO(stefan): REVERT THIS TO DASHBOARD PAGE!!!! SPELCHHHHEEK FAIL > ``` > > from https://github.com/zadjii-msft/PowerToys/issues/215 > > ## Comments on the Issue (you are @copilot in this section) > > > @niels9001 > @zadjii-msft @michaeljolley I assume we are on a later version now? Do we still need to remove the hacks? > @zadjii-msft > We sure do! > > There's the SearchBar.xaml.cs ones, and I also had to manually copy over the `TypedEventHandlerExtensions.cs` > >
- Fixes microsoft/PowerToys#38285 --- 🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. [Learn more about Advanced Security.](https://gh.io/cca-advanced-security) --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: niels9001 <9866362+niels9001@users.noreply.github.com> Co-authored-by: Niels Laute --- Directory.Packages.props | 18 ++++++------- .../Controls/SearchBar.xaml.cs | 27 ------------------- 2 files changed, 9 insertions(+), 36 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 104afec006..d083f672a1 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -18,15 +18,15 @@ - - - - - - - - - + + + + + + + + + diff --git a/src/modules/cmdpal/Microsoft.CmdPal.UI/Controls/SearchBar.xaml.cs b/src/modules/cmdpal/Microsoft.CmdPal.UI/Controls/SearchBar.xaml.cs index e61967bb3d..2ee2d2069f 100644 --- a/src/modules/cmdpal/Microsoft.CmdPal.UI/Controls/SearchBar.xaml.cs +++ b/src/modules/cmdpal/Microsoft.CmdPal.UI/Controls/SearchBar.xaml.cs @@ -157,12 +157,6 @@ public sealed partial class SearchBar : UserControl, { // Clear the search box FilterBox.Text = string.Empty; - - // hack TODO GH #245 - if (CurrentPageViewModel is not null) - { - CurrentPageViewModel.SearchTextBox = FilterBox.Text; - } } break; @@ -170,14 +164,6 @@ public sealed partial class SearchBar : UserControl, e.Handled = true; } - else if (e.Key == VirtualKey.Back) - { - // hack TODO GH #245 - if (CurrentPageViewModel is not null) - { - CurrentPageViewModel.SearchTextBox = FilterBox.Text; - } - } } private void FilterBox_PreviewKeyDown(object sender, KeyRoutedEventArgs e) @@ -332,19 +318,6 @@ public sealed partial class SearchBar : UserControl, private void FilterBox_TextChanged(object sender, TextChangedEventArgs e) { // Logger.LogInfo($"FilterBox_TextChanged: {FilterBox.Text}"); - - // TERRIBLE HACK TODO GH #245 - // There's weird wacky bugs with debounce currently. We're trying - // to get them ingested, but while we wait for the toolkit feeds to - // bubble, just manually send the first character, always - // (otherwise aliases just stop working) - if (FilterBox.Text.Length == 1) - { - DoFilterBoxUpdate(); - - return; - } - if (InSuggestion) { // Logger.LogInfo($"-- skipping, in suggestion --");