* add script to build a installer
* minor fix
* fix search path for msix file
* fix sign
* fix sign
* fix spelling
* Fix powershell5 can't recognize emoji
* ensure-wix
* bring cmdpal available during local build
* remove early quit
* fix marco
* add logger
* doc
* add a note
* self review
* fix macro def
* add functionality to export cert so that other machine can install it.
* spelling
_targets #38573_
At first I just wanted to add support for nested context menus.
But then I also had to add a search box, so the focus wouldn't get weird.
End result:

This gets rid of the need to have the search box and the command bar both track item keybindings - now it's just in the command bar.
Closes#38299Closes#38442
I'm filing this so that I don't lose it on this machine I use less often. We can probably hold it out of 0.90
Fixes:
* If a package is installed, we always display the version as "Unknown"
* also deals with a case where getting the package metadata could fail, and we'd hide the list item. That's only possible in the "installed, no updates available" case
* Allow package updates, add an icon for updates
* moves off the preview winget API onto a higher stable version
* [x] Re-adds the context menu shortcut text
* [x] Hooks up the keybindings to the search box so that you can just press the keys while you have an item selected, and do a context command
* [x] Hook these keybindings up to the context flyout itself
* [x] Adds a sample for testing
Solves #38271
* init
* update
* Remove duplicated cp command
* Change the long desc
* Update notice.md
* Use the same icon for fallback item
* Add Rappl to expect list
* update notice.md
* Move the original order back.
* Make Radians become default choice
* Fix empty result
* Remove unused settings.
Move history back.
Refactory the query logic
* fix typo
* merge main
* CmdPal: minor calc updates (#38914)
A bunch of calc updates
* maintain the visibility of the history
* add other formats to the context menu #38708
* some other icon tidying
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Mike Griese <migrie@microsoft.com>
* empowering users to maximize OOBE to their heart desire (#37823)
empowering users to maximize to their heart desire
* resume main
* Trust selfsign cert in localmachine\root to make msix available
* minor fix
* retry signing
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
This one was subtle - the Settings class in the toolkit didn't ever change the items for a SettingsContentPage. For the main settings window, this was problematic. It would only ever hang onto one instance of that CommandSettings.SettingsContentPage, and never re-retrieve the value from it.
This fixes that issue, by making sure to raise an ItemsChanged in the settings changed handler, so that we automatically pull down the new settings forms.
For settings that were added to commands, as a context item, this wasn't an issue. They were always returning new forms to the host, with the current settings values in it.
Closes#38191
Apps that want to show MSAL dialogs on the Command Palette would explode if they passed CmdPal's HWND to WithParentActivityOrWindow. It's not entirely clear why, but MSAL would explode if the parent HWND is hidden.
When the MSAL dialog opened, we'd hide ourselves, and badda bing, badda boom, the extension would crash.
MSAL dialogs will set us to WS_DISABLED right before the dialog is opened. Easy solution. Don't hide ourselves, if we're disabled.
Helps some friends not depend on the existence of Teams :P
**WARNING:** This PR will probably blow up all in-flight PRs
at some point in the early days of CmdPal, two of us created seperate
`Exts` and `exts` dirs. Depending on what the casing was on the branch
that you checked one of those out from, it'd get stuck like that on your
PC forever.
Windows didn't care, so we never noticed.
But GitHub does care, and now browsing the source on GitHub is basically
impossible.
Closes#38081
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? -->
## Summary of the Pull Request
Added a settings to enable/disable the system tray icon (enabled by default).
Adopter the term "system tray icon" for consistency with Windows 11 settings.
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist
- [x] **Closes:** #38407
This is a fix for a pair of related crashes.
Basically, we'd crash on startup if we failed to initialize WinGet. This could happen in two different places:
* If WinGet wasn't installed, then we'd explode, cause obviously we can't call its APIs
* If we're running as Admin, we won't be able to instantiate it's COM server.
Regardless of how it happens, I've defaulted us to just _not enabling the winget built-in_. That's the simplest solution here.
As I was helpfully reminded, there's also an elevated WindowsPackageManagerFactory we could use too - though, that wouldn't solve the case of "winget isn't installed"
Closes#38460Closes#38440 (most likely)
In CmdPal and PT Run, if you currently try to go to mouse pointer, it fails. This looks to be due to capitalization in the command. This can be validated via run dialog also.
shifting to lowercase fixes the bug.
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist
- [x] **Closes:** #38223
## Summary of the Pull Request
Fix#38337 and implement continuous navigation like PT Run v1
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist
- [x] **Closes:** #38337
It appears there are two issues in WinGet regarding the installation of dependencies.
https://github.com/microsoft/winget-cli/issues/4661https://github.com/microsoft/winget-cli/issues/4679
For CmdPal 0.1, we're going to skip installing dependencies to make extension installation more robust. This will mostly work because extensions will depend on the same frameworks as the command palette itself (for now).
We will revert this once these two issues are fixed.
The problem:
> * we need to go update all the Fallback commands. (these are ones that extensions can use to react to the search text - basically, "what the user typed wasn't found immediately, but here's something they can fall back on"
> * this is wacky, because the way I had it, I update each item, and if it "changes visibility", then we need to update the main list, because we've already removed it from the list. So we need to re-update the list to account for that
> * you missed it reading that (and i missed it writing it) but that basically means we re-populate the list F={num fallbacks} times, because each one sends the "do it again" message
> * That results in us basically creating (F+1)*(N=num items+apps) view models, initializing them, and not needing most of them
The crux here being a single thread, to update all the fallback items,
that then only raises _one_ items changed at the very end.
I don't love this, one misbehaving fallback could stop all the others. In theory, we should do a parallel update of all these things, with a like, 1s timeout on each leg.
But it has gotta be faster till we can do #38140 (or similar)
Closes: (not sure I filed one). But the first typed character _felt_ slow.
This is a much tidier solution. Don't default _everything_ to a weight of 1 if the query is whitespace. Instead, do a simple string contains check (because FuzzySearch will beef it on just whitespace)
Closes#38133
I originally based this off of #38157, so I know these two won't collide
- `appLicensing` avoids the issue where installation requires access to the store servers for licensing.
- It was decided that PowerToys would manage CmdPal's startup.
This only repros on my desktop, so I suppose that means a slower machine is needed
I was mistaken, and assumed we were already operating on a copy here. We weren't. That meant that it was possible for another extension to be detected, change the list, and crash the whole palette.
## Validation Steps Performed
No longer does my desktop crash on startup
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? -->
## Summary of the Pull Request
Attempt to fix `Layout cycle detected. Layout could not complete` exception when CmdPal is moved on a screen with different DPI.
I can repro almost 100% and no longer occurs after switching tags `ItemsView` with `ItemsControl`.
Doesn't seem to break visual and don't expect a huge number of tags so use an `ItemsControl` shouldn't be a problem.
<img width="491" alt="image" src="https://github.com/user-attachments/assets/05b698b2-ebe7-4356-bdaa-4de93aea13e6" />
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist
- [ ] **Closes:** #xxx
- [ ] **Communication:** I've discussed this with core contributors already. If 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
What we were doing only worked in English. The `.ToString` would get
you the text of the nav item, not the `Tag`
`InvokedItemContainer` gets you the `NavigationViewItem`.