Skip to content

Comments

CmdPal: Extension list search#41453

Merged
michaeljolley merged 14 commits intomicrosoft:mainfrom
jiripolasek:experiment/cmdpal-settings-extensions-filter
Oct 28, 2025
Merged

CmdPal: Extension list search#41453
michaeljolley merged 14 commits intomicrosoft:mainfrom
jiripolasek:experiment/cmdpal-settings-extensions-filter

Conversation

@jiripolasek
Copy link
Collaborator

@jiripolasek jiripolasek commented Aug 28, 2025

Summary of the Pull Request

Adds a rough implementation that appears to work, but it hasn’t been tested. Don’t rely on it yet—I’m too tired to test properly or write a polished commit message.

Pictures? Pictures!

image image image image
Recording.2025-10-07.162112.mp4

PR Checklist

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

Adds a rough implementation that appears to work, but it hasn’t been tested. Don’t rely on it yet—I’m too tired to test properly or write a polished commit message.
@jiripolasek
Copy link
Collaborator Author

@zadjii-msft @michaeljolley @niels9001 Keep this or drop it?

@zadjii-msft zadjii-msft added the Product-Command Palette Refers to the Command Palette utility label Sep 2, 2025
@zadjii-msft
Copy link
Member

oh this is hawt

@jiripolasek
Copy link
Collaborator Author

Hi, I have to upgrade the collection backing up the list. I think some advanced collection from Toolkit should now be available.

Copy link
Member

@zadjii-msft zadjii-msft left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is super cool, definitely want to ship it. Let's just get rid of the weird tooltip from that automation property hanging around

@jiripolasek
Copy link
Collaborator Author

Do you want to ship this in 0.95? Just so I know how to prioritize this

@jiripolasek
Copy link
Collaborator Author

On way to wrap this up. While I'm sweeping away the spiders and bugs, does @niels9001 have any comments on how to improve or make it fit better?

@niels9001
Copy link
Collaborator

@jiripolasek We had some thoughts around the call out for extensions.

PM art:

image

Mind if I push changes for this directly to this branch 😊?

@jiripolasek
Copy link
Collaborator Author

jiripolasek commented Sep 29, 2025

Sure, go ahead! Or if you don't have it coded yet, I can implement it for you. I have to double check everything in this branch anyway

@jiripolasek
Copy link
Collaborator Author

@niels9001 Looking at the concept, I’m a bit worried the buttons might suffer from banner blindness. Something more conventional (or at least less bannerish) might work better.

@jiripolasek jiripolasek changed the title CmdPal: Extension list search [experiment] CmdPal: Extension list search Sep 29, 2025
@niels9001
Copy link
Collaborator

niels9001 commented Sep 29, 2025

@niels9001 Looking at the concept, I’m a bit worried the buttons might suffer from banner blindness. Something more conventional (or at least less bannerish) might work better.

Yeah, maybe. For activation, it feels like we need something at the top though - as by default the Store card is all the way at the bottom and might be hard to miss?

Settings experiences overall have a challenge conveying certain information, as everything is mostly a SettingsCard and they all look the same haha

@jiripolasek
Copy link
Collaborator Author

@niels9001 Looking at the concept, I’m a bit worried the buttons might suffer from banner blindness. Something more conventional (or at least less bannerish) might work better.

Yeah, maybe. For activation, it feels like we need something at the top though - as by default the Store card is all the way at the bottom and might be hard to miss?

With that, I can only agree. I didn’t want to push my luck by introducing any “random” new design elements and I hoped there will time to iterate on it.

Settings experiences overall have a challenge conveying certain information, as everything is mostly a SettingsCard and they all look the same haha

Here I was thinking that maybe plain toolbar-style buttons might do the trick. I’d throw in a green “+” icon (eco-friendly!) and hope for the best. Or maybe just lose the “box” to make it look less like a banner.

@jiripolasek
Copy link
Collaborator Author

jiripolasek commented Sep 29, 2025

image image

Or something more compact:

image

@jiripolasek
Copy link
Collaborator Author

Mind if I push changes for this directly to this branch 😊?

@niels9001 Could you please mark the branch as Ready for review when you're done with it?

@niels9001
Copy link
Collaborator

@jiripolasek I've synced with the design team. Their suggestion: jiripolasek#12

niels9001 and others added 3 commits October 7, 2025 15:03
* Banner exploration

* Updated UI

* More feedback from design team

* String update

* Update ExtensionsPage.xaml

* Update ExtensionsPage.xaml
@github-actions

This comment has been minimized.

@jiripolasek jiripolasek marked this pull request as ready for review October 7, 2025 13:16
@jiripolasek
Copy link
Collaborator Author

The WinGet button on the Extensions page is hidden because it requires summoning a specific page and handle possibility of WinGet extension being disabled: #42216

@michaeljolley
Copy link
Contributor

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@michaeljolley
Copy link
Contributor

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@michaeljolley
Copy link
Contributor

That "Reload Extensions" button is blowing up for me.

System.Runtime.InteropServices.COMException
HResult=0x800706BA
Message=
Source=WinRT.Runtime
StackTrace:
at WinRT.ExceptionHelpers.g__Throw|38_0(Int32 hr)
at ABI.Microsoft.CommandPalette.Extensions.ICommandItemMethods.get_Title(IObjectReference _obj) in C:\sources\PowerToys\src\modules\cmdpal\extensionsdk\Microsoft.CommandPalette.Extensions.Toolkit\obj\x64\Debug\Generated Files\CsWinRT\Microsoft.CommandPalette.Extensions.cs:line 887
at ABI.Microsoft.CommandPalette.Extensions.ICommandItem.global::Microsoft.CommandPalette.Extensions.ICommandItem.get_Title() in C:\sources\PowerToys\src\modules\cmdpal\extensionsdk\Microsoft.CommandPalette.Extensions.Toolkit\obj\x64\Debug\Generated Files\CsWinRT\Microsoft.CommandPalette.Extensions.cs:line 1077
at Microsoft.CmdPal.Core.ViewModels.CommandItemViewModel.Command_PropertyChanged(Object sender, PropertyChangedEventArgs e) in C:\sources\PowerToys\src\modules\cmdpal\Core\Microsoft.CmdPal.Core.ViewModels\CommandItemViewModel.cs:line 401
at CommunityToolkit.Mvvm.ComponentModel.ObservableObject.OnPropertyChanged(PropertyChangedEventArgs e)
at CommunityToolkit.Mvvm.ComponentModel.ObservableObject.OnPropertyChanged(String propertyName)
at Microsoft.CmdPal.Core.ViewModels.ExtensionObjectViewModel.<>c__DisplayClass9_0.b__0() in C:\sources\PowerToys\src\modules\cmdpal\Core\Microsoft.CmdPal.Core.ViewModels\ExtensionObjectViewModel.cs:line 51
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)

image

@jiripolasek
Copy link
Collaborator Author

Oh, squirrel! I think that's #41482 manifesting in a new way

@jiripolasek
Copy link
Collaborator Author

@michaeljolley This won't crash the app, it just gets trapped by the debugger, right? I don't think there's anything to address here for this PR.

It seems like a natural error, as the Command Palette is trying to access an extension that was terminated (0x800706BA = RPC_S_SERVER_UNAVAILABLE). I couldn't respond to this even if I wanted to, as it occurs in a different or random code path.

@jiripolasek
Copy link
Collaborator Author

An anti-conflict team of highly trained squirrels was dispatched... 🐿️

Copy link
Contributor

@michaeljolley michaeljolley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

@michaeljolley michaeljolley merged commit 1e40d6b into microsoft:main Oct 28, 2025
10 checks passed
@yeelam-gordon yeelam-gordon requested a review from Copilot November 7, 2025 01:56
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds a new extensions management page to the Command Palette settings UI with search, filtering, and reload capabilities. The changes introduce a banner to discover extensions, search functionality with keyboard shortcut support (Ctrl+F), and the ability to manually reload extensions.

Key changes:

  • New SettingsExtensionsViewModel to handle extension filtering and search
  • Enhanced ExtensionsPage.xaml with search UI, banner, and empty states
  • Messaging infrastructure for reload coordination via ReloadFinishedMessage

Reviewed Changes

Copilot reviewed 10 out of 14 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
Resources.resw Adds localization strings for extensions page UI elements
ExtensionsPage.xaml Implements new UI with banner, search box, filtering, and responsive layout
ExtensionsPage.xaml.cs Adds keyboard accelerator handler for Ctrl+F search focus
SettingsExtensionsViewModel.cs New view model implementing search/filter logic for extensions
TopLevelCommandManager.cs Sends reload finished message after loading extensions
SettingsViewModel.cs Instantiates and exposes the new Extensions view model
Properties/Resources.resx & Designer.cs Adds format strings for extension count labels
ReloadFinishedMessage.cs New message type for reload completion signaling
StoreLogo.dark.svg & StoreLogo.light.svg Microsoft Store branding assets
WinGetLogo.svg WinGet branding asset
Microsoft.CmdPal.UI.csproj Registers new SVG assets
expect.txt Adds "Figma" to spell-check dictionary
Files not reviewed (1)
  • src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Properties/Resources.Designer.cs: Language not supported

<value>Find extensions on WinGet</value>
</data>
<data name="Settings_ExtensionsPage_FindExtensions_WinGet.[using:Microsoft.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
<value>Microsoft Store</value>
Copy link

Copilot AI Nov 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The AutomationProperties.Name for the WinGet button is incorrectly set to 'Microsoft Store'. It should be 'WinGet' to match the button's purpose and tooltip.

Suggested change
<value>Microsoft Store</value>
<value>WinGet</value>

Copilot uses AI. Check for mistakes.
<value>Reload extensions</value>
</data>
<data name="Settings_ExtensionsPage_Reloading_Text.Text" xml:space="preserve">
<value>Reloading extensions..</value>
Copy link

Copilot AI Nov 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use a proper ellipsis character '…' or three periods '...' instead of two periods '..'.

Suggested change
<value>Reloading extensions..</value>
<value>Reloading extensions</value>

Copilot uses AI. Check for mistakes.
Comment on lines +30 to +32
<!--<GradientStop Offset="0" Color="#E6F0FC" />
<GradientStop Offset="0.4" Color="#E6F0FC" />
<GradientStop Offset="1" Color="#F0F0F7" />-->
Copy link

Copilot AI Nov 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove commented-out code. If these gradient values might be needed later, document the reason in a separate comment or remove them entirely.

Suggested change
<!--<GradientStop Offset="0" Color="#E6F0FC" />
<GradientStop Offset="0.4" Color="#E6F0FC" />
<GradientStop Offset="1" Color="#F0F0F7" />-->

Copilot uses AI. Check for mistakes.
<GradientStop Offset="1.0" Color="#FFF5F8FA" />
<!-- Slight bluish-gray tint -->
<!-- Faint peach glow -->
<!-- Soft peach -->
Copy link

Copilot AI Nov 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These orphaned comments reference colors that are not present in the code. Remove them to avoid confusion.

Suggested change
<!-- Soft peach -->

Copilot uses AI. Check for mistakes.
@yeelam-gordon yeelam-gordon added this to the PowerToys 0.96 milestone Nov 11, 2025
vanzue pushed a commit that referenced this pull request Nov 12, 2025
## Summary of the Pull Request

Adds a rough implementation that appears to work, but it hasn’t been
tested. Don’t rely on it yet—I’m too tired to test properly or write a
polished commit message.

Pictures? Pictures!

<img width="2720" height="1624" alt="image"
src="https://github.com/user-attachments/assets/4f9c3360-8d08-4a34-888f-c6890afd0159"
/>

<img width="2647" height="1558" alt="image"
src="https://github.com/user-attachments/assets/3d6c23bc-f26d-4e31-ae09-d91efd304048"
/>

<img width="2683" height="1536" alt="image"
src="https://github.com/user-attachments/assets/6017b2d4-ccd9-4555-b81f-e2b1f78c48e5"
/>

<img width="577" height="334" alt="image"
src="https://github.com/user-attachments/assets/987fea99-05b2-4d31-b90c-327122daa241"
/>


https://github.com/user-attachments/assets/65a8f8ce-ae09-4272-881d-0b6f56cecfae

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #41451
- [x] Closes: #42031
- [x] Closes: #41800
- [ ] **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

<!-- Provide a more detailed description of the PR, other things fixed,
or any additional comments/features here -->
## Detailed Description of the Pull Request / Additional comments

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed

---------

Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Michael Jolley <mike@baldbeardedbuilder.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

In for .96 Product-Command Palette Refers to the Command Palette utility

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make Command Pallet Extensions More Discoverable Command Palette customization CmdPal: Add basic search to the extension list in Settings

5 participants