<!-- 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
Card = AdaptiveCard.FromJsonString(cardJson) is called in catch block, if it fails, app will crash.
This PR stops us from synchronously initializing the settings page for every extension (including built-in's) on startup. That incurs a small penalty that really adds up the more extensions a user has.
Instead, we'll now only initialize the `CommandSettings` object when we first actually need it.
From a relatively unscientific test, this saves approximately 10% on the initialization of builtin commands, and for my setup, it trims about 28% off extension initialization (across all built-in's / extensions):
branch | Built-in load (ms) | Extension load (ms) | %Δ builtin | %Δ extensions |
-- | -- | -- | -- | -- |
main | 1455 | 6867.6 | | |
this PR | 1309.2 | 4919 | -10.02% | -28.37%
Closes#38321
* MinWidth/Height and DPI-aware launch dimensions
* Making MainWindow DPI aware too
* Moving toastwindow to WinUIEx too
* Update MainWindow.xaml.cs
* Reverting back to the working logic
* Localizing settings window title
* Xaml formatting
* Update SettingsWindow.xaml.cs
There's apparently a footgun with the way we're using ComServer, which
results in us leaking the extension processes when we think we've
disposed them
The fix unfortunately has to be on the extension side. Extensions
published prior to 0.2 will need to manually fix this.
closes: #39045
On a reload, the system commands fallback would leave the "restart"
fallback behind, for the same reason as what we found around
e40372c & ef264d9 in #38455
I cannot find an issue for this. I swear I filed it somewhere.
If you open winget, search for "terminal", wait till it loads, then
hit `esc`, we'll clear the search and empty the list, but never actually
hide the details pane. That looks weird.
This fixes that.
Closes _nothing i guess_.
* Add Powershell script to validate whether CSharp project correctly import shared props, update pipeline to enforce such validation, and fixed all projects that didn't import this shared props correctly
* add common props for fuzz test project
* update the path
* Only scans projects in src sub-folder
* Update .pipelines/verifyCommonProps.ps1
* Update csproj to include Common.Dotnet.CsWinRT.props
* Fix indentation in RegistryPreview.FuzzTests.csproj
* exclude TemplateCmdPalExtension.csproj in validation process
* exclude TemplateCmdPalExtension.csproj in validation process
---------
Co-authored-by: Leilei Zhang <leilzh@microsoft.com>
Co-authored-by: Jerry Xu <nxu@microsoft.com>
This reduces our extension startup time by approximately 70% on my
machine (I have 17 extensions). I'd guess the gains scale with the
number of extensions. That's 8s -> 3s on average, and now I also get 2.5s reloads.
This retains the order of the list of extensions, by only starting the
processes in parallel. Once we have all the command provider instances,
then actually retrieving the commands.
It also adds a timeout on startup & load, so that one misbehaving extension won't block everyone else.
closes: #38529
Closes#38829
If we always UpdateProperty here, then there's a possible
race condition, where we raise the PropertyChanged(SearchText)
before the subclass actually retrieves the new SearchText from the
model. In that race situation, if the UI thread handles the
PropertyChanged before ListViewModel fetches the SearchText, it'll
think that the old search text is the _new_ value.
* Add Retry when enable
* Add correct for the checking logic
* Retry in another thread (#39042)
* launch thread
* dev
* fix a thread safety
* improve
* improve
* make code clear
* Fix comment
* fix comment
* improve
* self review
* fix & log
* silent fail if not reach 10 times
* fix a ci build flag error
* fix a macro
* some simple improve
---------
Co-authored-by: Gordon Lam (SH) <yeelam@microsoft.com>
* starting AoT flag push
* Few more
* bookmarks
* Really? The VM project compiles?
* Disable publish AOT before we really testing it.
---------
Co-authored-by: Mike Griese <migrie@microsoft.com>
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* Allow preventing selected result data retrieval
* Updated implementation to calculate sort order on result and update property name to better reflect purpose
* Update Result.cs sort order method name
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* Align with the name GetSortOrderScore
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
Co-authored-by: Gordon Lam (SH) <yeelam@microsoft.com>
* [AdvancedPaste] [Fix Bug] Create ocrEngine from user profile language
GetOCRLanguage may fail based on language tag not matching (en-CA does not match en-GB or en-US), however user profile language may be valid.
* Update exception message.
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
* update
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
* 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
* Cancel previous ShowToolbar task if a new one is triggered
* more changes
* Fix space trigger starting at center
* Removed unneded code
* More changes
* Addressed feedback
* Fix another edge case