Couple other hotfixes:
* We broke FastUpToDate in #559. `PreserveNewest` fixes this
* Winget would fetch ALL the details before displaying the list. Big yikes. Lazy load that!
* We needed to better handle the case where we fetched items in response to a `ItemsChanged`, Loading is set to false, && there's an EmptyContent - we shouldn't flash the empty state before displaying the results
* Details had itsy-bitsy text (regressed in #482)
- Tweaking the empty-screen icon + text visualization
- Fixed a bug in the details pane that clipped the content when scrolling (we were using padding on the scrollviewer vs. margin on the child grid)
- Vertically center the tags on the item line
## Summary of the Pull Request
Ports the PT System commands to CmdPal.
Tooltips have been replaced with Details on those list items.
CommandResult.Confirm was used for most of the MessageBox usages (the only remaining one is after the recycle bin is emptied)
https://github.com/user-attachments/assets/5b849f56-8346-4a6d-9ecb-13757aed738a
## PR Checklist
- [x] **Closes:** #384
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Fixed the crash related to thumbnails.
* Set the Unicode charset for the native SHFILEINFO
* Ensure proper releasing of the icon handle
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist
- [x] **Closes:** https://github.com/zadjii-msft/PowerToys/issues/440
- Using default acrylic which is fine for notifications (it's not activated anyways because the window does not have focus..), and it removes a bunch of C# code.
- Minor tweaks to the padding of the toastwindow so it's more similar to OS toasts
- Re-templated the search box template to use the TextBox `Description` property as the suggested text
- Created a custom background color in lightmode so that the cursor has enough contrast and shows. As a result, the Acrylic is less intense in light mode :(.
Closes#348Closes#427
---------
Co-authored-by: Mike Griese <migrie@microsoft.com>
This doesn't totally resolve the leak tracked in #545, but it's dramatically less bad now.
* Use a `WeakReference` to the page context for all extension objects.
- actually makes the code much cleaner to read.
* Revoke all event handlers we attach to ExtensionObjects
Because it got mangled into this commit history:
This also has the code we need to call for #546, but it doesn't work. I'll reach out to Mano for this.
* MTAThread considered harmful
* a bunch of spel
* more spel
* it helps to save files
* Don't add a toggle if it doesn't do anything
* ffs code just trim trailing whitespace on save
---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
1) Clicking CmdPal in PT quick access flyout now shows CmdPal
2) Removed New badge from settings. For now! we'll bring it back properly once we are close to the release!
3) Reverted unrelated file (src/modules/registrypreview/RegistryPreviewUILib/MonacoEditorControl.xaml.cs) change
4) Fix package name in customaction.cpp to fix package uninstall on PT uninstall
5) Reverted unrelated file (src/modules/launcher/PowerLauncher/Helper/ThemeManager.cs) change
6) Fix wrongly added words in expect.txt
7) Fix local build - do not include cmdpal
8) Revert unrelated change - src/common/AllExperiments/Logger.cs
9) Revert unrelated change - src/modules/AdvancedPaste/AdvancedPasteModuleInterface/dllmain.cpp
* AllApps
* File Explorer
* Windows Settings
* Windows Terminal
* DateTime
* Calculator
* Registry
* WinGet
* WebSearch
* Use PNGs instead of SVGs for better rendering
<!-- 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
After 33ec492389 , The logic for Command Palette module interface to verify if the package is installed is wrong because Command Palette's version doesn't track PowerToys version.
This PR makes the version check optional so we can have a different logic when checking the package for Command Palette.
<!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
Tested build from Dart and PowerToys started Command Palette correctly.
* Tags have their tooltip default to their text, if no `ToolTip` is explicitly set
* add a `ctrl+k` tooltip to the more commands button
* change the naming of "indexer" to be "file search" (which is what folks really care about)
* change the naming of "shell commands" to be "Run commands" (again, this is more intuitive)
* Issue the first: This hit with the media controls sample. I'm not really sure how it happened, with the menu changing which we were initializing it? But it happens, and now it doesn't
* Issues the second: `Tags` was an `ObservableCollection`, and that was getting created off the UI thread, then updated on the UI thread, and everyone was upset, and there was a pile of COM WRONG_THREAD issues.
* ISSUE THE THIRD: FIXES THE TAG COLORS! Closes#365
<!-- 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
Oobe changes were missing the insert of a module, causing Settings to crash when we tried to open OOBE.
<!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
Run PowerToys Settings and click "Welcome to PowerToys" and verify it doesn't crash.
(cherry picked from commit ddbfbd7b89105a9d3843b7a0284ff03ed367b808)
(cherry picked from commit 803d800923f2144c61a484484a4796667ae57727)
Co-authored-by: Mike Griese <zadjii@gmail.com>
UI could become unresponsive after searching and scrolling through files (to reproduce, I needed around 180-260 items in the list).
The fix forces triggering loading more on a non-UI thread and ensures non-simultaneous loading.
<!-- 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
Bring back the WebView2 references that were removed in 9365bc1a7b
<!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
deps.json local check is OK
---------
Co-authored-by: Mike Griese <migrie@microsoft.com>
* update template
* Start drafting a doc for our core values
mostly just stashing
* Add more text
* some pr nits
* PG-SP-ID not needed after all
* look a dependency we didn't need
* more deps we didn't need
* pretty sure these were removed upstream
* Trying to merge expect.txt
* okay sure
* Revert "Trying to merge expect.txt"
This reverts commit 96750a69161e36400acf270573a2f08200c8c7e5.
* unnecessary local
* enable nullable on clipboard history
---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
* [Deps]Update dependencies to .NET 9.0.3
* Sometimes mike, you should build before rolling a CI build
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
<!-- 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
Update CommunityToolkit.WinUI dependencies to 8.2.250129-preview2 .
Related to #245 - fixes the part about PowerToys Settings crashing when opening the Dashboard page.
<!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
Open PowerToys settings and it opens in the Dashboard page without crashing.
<!-- 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
Merges latest upstream main, so we can update to Windows App SDK 1.6.250205002 and CsWinRT 2.20
This is required as a preliminary step to update WinUI toolkit controls to fix the crash in the Settings Dashboard page.
There were some absolutely critical examples in here to make sure that the APIs
worked, but at this point, those are usually exercised in a different sample
somewhere.
RIP in peace spongebot. You'll be missed.
Closes#133Closes#154
There's a couple things I left un-translated, but those are typically:
* exception text, that I thought should be left un-translated
* weird things like the `quit` or `reload` command, that depend on literally typing `quit`
Closes#352Closes#124
* Removes `ExtensionHost.HostingHwnd`
* This closes#477
* Removes `ExtensionHost.LanguageOverride`
* This closes#135 (as not planned, frankly. Having a different locale than the OS has always been fraught with pain for the Terminal, not about to repeat that here)
* This also removes the straggling `IFormPage`, `IForm`, `IMarkdownPage`, which were all replaced with `IContent`
* Adds `StatusContext` to `ShowStatus`, so that messages can just be displayed on the page they're from
* Closes#471
Yep, it was this easy to add an SVG as an ImageSource on WinUI 3
Pretty sure it's impossible in WinUI 2 though
This is related to #182, but I think we should also like allow for `<path>` icons too
Due to the nature of FHL I didn't do a great job disentangling the following two big features:
* Support for `EmptyContent`
* closes#261
* Support for a "Browse" `DirectoryPage` which is like a file explorer.
* Folder bookmarks can open it
* So can folders in the file search
* Also adds a fallback command for if you type a file path, we'll show that
drive-by fixes the icon on the context menu flyout, if the Command has an icon that's different from the list item. We'll prefer the Command's icon to the CommandItem's icon
This better matches the way vscode works, even if it doesn't explicitly show the extension name in the item
Weighting might need work, but it probably all needs work so 🤷
* [Workspaces] implement the move feature (#35480)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* fix Move attribute after launch and snapshot
* Extend WindowArranger with PWA functionality to detect different PWA apps. PwaHelper moved to the common library
* fix repeat counter in the editor
* Code optimization
* code cleanup, optimization
* fix double-processing window
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* [KeyboardManager]Fix mapping shift to numpad (#35890)
* Keyboard Manger fix numpad as shift
Fixed shift not being released if a numpad key as shift.
* Added comments
* Fix typo
* Fix the numpad unlocked key not working if the locked version is overridden by shift
* Fix spelling check.
* Revert the VK_CLEAR change.
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [Analyzers] Update .editorconfig with rules to relax IDE errors (#36095)
* [Analyzers] Remove duplicate pascal case style from .editorconfig
* [Analyzers] Configured severity for individual IDE and CA rules showing as errors in VS
Set severity for IDE0005, IDE0008, IDE0016, IDE0018, IDE0019, IDE0021, IDE0022, IDE0023, IDE0025, IDE0027, IDE0028, IDE0029, IDE0031, IDE0032, IDE0034, IDE0036, IDE0039, IDE0042, IDE0044, IDE0045, IDE0046, IDE0047, IDE0057, IDE0051, IDE0052, IDE0054, IDE0055, IDE0056, IDE0057, IDE0059, IDE0060, IDE0061, IDE0063, IDE0071, IDE0073, IDE0074, IDE0075, IDE0077, IDE0078, IDE0083, IDE0090, IDE0100, IDE0130, IDE160, IDE180, IDE0200, IDE0240, IDE0250, IDE0251, IDE0260, IDE0270, IDE0290, IDE0300, IDE0301, IDE0305, IDE1005, IDE1006, CA1859, CA2022, CA2263
* [Analyzers] Fix mismatched analyzer descriptions
* [Analyzers] Fix misspelling
* Update .editorconfig
Made the following style rules `silent` instead of `suggestion`:
- Use explicit type instead of 'var'
- Use expression body for ...
- Use block-scoped namespace
* [Analyzers] Set IDE0290 to silent
* [Analyzers] Remove IDE1006 configuration from .editorconfig in favor of making exclusions for the few entries
* [Analyzers][Indexer] Add IDE1006 suppressions
* [Analyzers][Peek] Add IDE1006 suppression
* [Analyzers][MWB] Add IDE1006 suppression.
* [Analyzers][Plugins] Add IDE1006 suppression
* [Analyzers][ImageResizer] Suppress IDE0073 to retain original copyright
* [Analyzers] Remove IDE0073 severity change in .editorconfig
---------
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
* [Workspaces] PWA follow-up (#36217)
* [PTRun][Calculator]Allow scientific notation with lowercase 'e' (#36187)
* [Workspaces] Add encoder parameter to bitmap.save() (#36228)
* [Workspaces] Add encoder parameter to bitmap.save()
* 1 more call fixed
* Move repeated code to the csharp library
* [Workspaces] Implement store of app window's size and position (#36086)
* [Workspaces] Implement store of app window's size and position
* Modifying the default values to -1. The program will use the original default values for the first run.
* [ScreenRuler]Add setting to show the measurement in an extra unit (#35887)
* display ruler: supporting millimeter and other units
* Measurement Tool: UI Setting for an extra unit
* Update images
* spelling
* spelling
* suit code style
* Fix for code review
* remove weird file
* rename field
* [Deps]Update MSTest from 3.5.0 to 3.6.3 (#36115)
* Update MSTest from 3.5.0 to 3.6.3
* Use STA attributes that are now part of MSTest
* Adding Jerry to community.md (#36232)
Update COMMUNITY.md
* [Workspaces] Arranger: smart timer (#36096)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] Arranger: Reset wait timer after each successful arrange action
* fix merge error
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Upgrade to check-spelling v0.0.24 (#36235)
This upgrades to [v0.0.24](https://github.com/check-spelling/check-spelling/releases/tag/v0.0.24).
A number of GitHub APIs are being turned off shortly, so you need to upgrade or various uncertain outcomes will occur.
There's a new accessibility forbidden pattern:
> Do not use `(click) here` links
> For more information, see:
> * https://www.w3.org/QA/Tips/noClickHere
> * https://webaim.org/techniques/hypertext/link_text
> * https://granicus.com/blog/why-click-here-links-are-bad/
> * https://heyoka.medium.com/dont-use-click-here-f32f445d1021
```pl
(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:</|\]\()
```
There are some minor bugs that I'm aware of and which I've fixed since this release, but I don't expect to make another release this month.
I've added a pair of patterns for includes and pragmas. My argument is that the **compiler** will _generally_ tell you if you've misspelled an include and the **linker** will _generally_ tell you if you misspell a lib.
- There's a caveat here: If your include case-insensitively matches the referenced file (but doesn't properly match it), then unless you either use a case-sensitive file system (as opposed to case-preserving) or beg clang to warn, you won't notice when you make this specific mistake -- this matters in that a couple of Windows headers (e.g. Unknwn.h) have particular case and repositories don't tend to consistently/properly write them.
* Adjust to community.md, shifting jerry's github user name (#36242)
Update COMMUNITY.md
* [AOT compatible] Resolve AOT Build Error in Peek.UI (#36194)
* add partial for aot support
* add Microsoft.NET.ILLink.Tasks to packages.props
* format
* Revert "format"
This reverts commit 742d5e2214.
* add Microsoft.NET.ILLink.Tasks to notice.md
* add auto reference
* update script to remove the 'Auto-reference line'
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Awake Updates - `TILLSON_11272024` (#36049)
* Update with bug fixes for tray icon and support for parent process
* Process information enum
* Update the docs
* Fix spelling
* Make sure that PID is used in PT config flow
* Logic for checks based on #34148
* Update with link to PR
* Fixes#34717
* Small cleanup
* Proper task segmentation in a function
* Cleanup the code
* Fix synchronization context issue
* Update planning doc
* Test disabling caching to see if that manages to pass CI
* Cleanup to make sure that we're logging things properly.
* Update ci.yml
* Disable cache to pass CI
* Retry logic
* Cleanup
* Code cleanup
* Fixes#35848
* Update notes and codename
* After third attempt, log error instead of throwing exception
* More cleanup to avoid double execution
* Add expected word
* Safeguards for bad values for timed keep-awake
* More updates to make sure I am using uint
* Update error message
* Update packages
* Fix notice and revert CsWinRT upgrade
* Codename update
* Update expect.txt
* Update the struct
* Ensuring we're properly awaiting tray initialization
* Update to make sure tray reflects the bound process
* Cleanup, proper JSON serialization for logs.
* Not needed.
* Add command validation logic
* Moving the initialization logic earlier
* Make sure we show the display state in the tooltip
* Update tray string
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update logic for icon resets
* Update doc
* Simplify function for setting mode shell icon
* Issues should be properly linked
* Minor cleanup
* Update timed behavior
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Workspaces] detecting right app version (#36100)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] fix detection of specific version of apps
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Move the XamlStyler config to src/ (#36202)
my never ending goal to minimize files in the root dir
* [AdvancedPaste]Add Semantic Kernel opt-in to allow chaining of paste actions (#35902)
* [AdvancedPaste] Semantic Kernel support
* Changed log-line with potentially sensitive info
* Spellcheck issues
* Various improvements for Semantic Kernel
* Spellcheck issue
* Refactored Clipboard routines
* Added integration tests for KernelService
* Extra telemetry for AdvancedPaste
* Added 'Hotkey' suffix to AdvancedPaste_Settings telemetry event
* Added IsSavedQuery
* Added KernelQueryCache
* Refactoring
* Added KernelQueryCache to BugReportTool delete list
* Added opt-n for Semantic Kernel
* Fixed bug with KernelQueryCache
* Ability to view last AI chat message on error
* Improved kernel query cache
* Used System.IO.Abstractions and improved tests
* Fixed under-count of token usage
* Used Semantic Kernel icon
* Cleanup
* Add missing EndProject line
* Fix dependency version conflicts
* Fix NOTICE.md
* Correct place of SemanticKernel in NOTICE.md
* Unlinked CustomPreview toggle from AI
* Added Microsoft.Bcl.AsyncInterfaces dependency to AdvancedPaste
* Fixed NOTICE.md order
* Moved Custom Preview to behaviour section
* Made Image to Text raise error on empty output
* Added AIServiceBatchIntegrationTests
* Updated AIServiceBatchIntegrationTests
* Added prompt moderation
* Moved GPO Infobar to better location
* [Launcher]Port from WPF-UI to .NET 9 WPF (#36215)
* Initial implementation
* Fix fluent style
* Fix no endline
* Update expect.txt
* Fix formatting
* Fix light theme looking bad on Windows 10
* fix formatting
* test change
* Now really fixed W10
* Add a comment
* Fix typos
* Fix spellcheck errors
* Fix spellcheck pattern for websites
* Change patterns for spellcheck in the right file
* Fix XAML styling
* Fix contrast colors on W11
* Fix formatting
* Removed emty line
* Fix formatting
* Added comment to fluentHC file
* fix comment
* Fix Windows10 again.
Adress feedback.
* W11 fix chaning from high contrast to normal not having correct background
* W10 Fix high contrast not working after switching from light/dark moed
* Address feedback
* Fix formatting
* Second W11 fix chaning from high contrast to normal not having correct background
* [UX]Updating New+ and Settings icons (#36290)
* Updated icons
* Updating more icons and icos
* [Settings][Dashboard] Accessibility fixes (#36280)
* make narrator announce buttons/toggles
* add toggles module name
* [ci]Sign OpenAI dll that's not signed (#36299)
* Update CODEOWNERS to include gordon, jerry and kayla (#36308)
* Update CODEOWNERS
* Update names.txt
* Making the powertoys-code-owners team code owners (#36310)
* Update CODEOWNERS
* Update names.txt
* Update CODEOWNERS
* [FZEditor]Fix Create new layout dialog radio buttons IsChecked values (#36320)
* 0.87 changelog (#36335)
* 0.87 changelog
* Fix spellcheck
* Update README.md
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [PTRun]Fix WPF transparent border issue on Windows 10 (#36392)
* Added border on W10
* Added a comment
---------
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
* [PTRun]Fix .NET 9 crash in OneNote (#36417)
* Fix crash in OneNote Run
* added better comment
* [AdvancedPaste]Fix NullReferenceException on Dispose (#36428)
[AdvancedPaste] Fixed NullReferenceException on Dispose
* [Fuzz] Add fuzz testing for AdvancedPaste and new pipeline for onboarding OneFuzz (#36329)
* add fuzz
* install .net8
* add spelling check
* refine the pipeline
* add readme and update the test code
* fix spelling error
* change to weekly run
* Add New CI Pipeline for Latest WindowsAppSDK (#36282)
This PR introduces the following changes to the CI pipeline and version management:
Pipeline Enhancements:
1. Added a new script UpdateVersions.ps1 to automate the update of Microsoft.WindowsAppSDK versions across various project files.
2. Introduced a new pipeline configuration ci-using-the-latest-winappsdk.yml to build using the latest Microsoft.WindowsAppSDK.
3. Updated existing pipeline configurations to support the new useLatestWinAppSDK parameter.
Pipeline Configuration Updates:
1. Updated job-build-project.yml to handle the useLatestWinAppSDK parameter and adjust the RestoreAdditionalProjectSourcesArg accordingly.
2. Added a new template steps-update-winappsdk-and-restore-nuget.yml for updating and restoring NuGet packages with the latest Microsoft.WindowsAppSDK.
3. Added WinAPPSDK version selection, the pipeline can be manually triggered to use the specified version.
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [AOT compatible] Make HostsUILib become AOT compatible (#36136)
* Remove AOT configuration
* Refer to AOT compatibility props
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [AOT compatible] Clean up some AOT build issue in FilePreviewCommon and MarkdownPreviewHandler (#36207)
* Use AppContext.BaseDirectory to replace assembly.GetExeAseembly.Location.
Fix json serilizer aot issue.
* clean up some AOT build issue
* Update src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Update src/common/FilePreviewCommon/Formatters/JsonFormatter.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Add new pipeline using the latest webview2 from Edge Canary (#36317)
* using the latest webview2 for testing
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Bug fix] Making the OpenAI key configuration page scrollable. (#36359)
* Fixed#34470
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
* [Bug fix] Add a format validation step before format conversion. (#36404)
This PR aims to fix the bug #35225 by introducing a new method IsJson to determine if a given text is in JSON format.
The IsJson method is then utilized in the ToJsonFromXmlOrCsvAsync method to optimize the processing logic.
If the text is already in JSON format, it is returned directly without further conversion from XML or CSV.
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* Add more STCA team members (#36438)
* Add more STCA team members
* Include more spelling check errors
* Remove non-alpha in dictionary
* Add Zhaopeng Wang
* Fix spell checking error
* Remove "prerelease: true" (#36484)
* Remove "prerelease: true"
The Microsoft.WinGet.DSC module is GA so prerelease: true is no longer needed.
* Update expect.txt
fixing spellcheck warning
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Docs]Update README for 0.87.1 release (#36534)
* [CI] Enhance build Pipeline Reliability with Retry Logic and Improved Error Messaging (#36529)
* update pipeline with retry
* remove tests
* Add team member (#36590)
* [New+]Don't override New actions from Explorer on Windows 10 (#36467)
* [New+]Don't override New actions from Explorer
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Add pattern for learn.microsoft links
* Also only Query for context menu
* [PTRun][Calculator]Handle hexadecimal numbers to not return divide by 0 error (#36390)
* add '0x' handling for divide by 0 scenarios
* fix comment on division by 0 check
---------
Co-authored-by: Connor Plante <connor.plante@gmail.com>
* [TextExtractor]Minor UI/Accessibility fixes in the overlay UI (#36356)
minor UI and accessibility fixes
* [PTRun][Calculator]Update mages to v3.0.0 and support for `randi(n)` (#36560)
* update to mages 3.0.0
* allow randi() in calculator plugin
* fix tests and input validation
* fix spell check
* [QuickAccent]Added ć for Slovenian (#36336) (#36338)
* Fix snapping Workspaces Editor to Fancy Zones (#36463)
* Remove Workspaces Editor from Fancy Zone's excluded app list
* removed unused string
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
* [PTRun]Fix drag on .NET 9 WPF (#36635)
* [CQ]Continued to move stuff out of root - Solution.props (#36244)
* [QuickAccent]Add Proto-Indo-European (#36408)
* Add ḱ to PowerAccent for Proto-Indo-European
* Fix Spelling Check
* Add more letters to PIE
* Order PIE after PI
---------
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [PTRun]Add context buttons for VSCodeWorkspaces plugin (#36517)
* [Settings][QuickAccent]Change 'character set' to plural form (#36565)
* [PTRun][Calculator]Fix unit tests on non-english systems (#36569)
* fix tests
* update comment
* [PTRun][Calc]Improve handling of non-base 10 numbers (#36700)
* [Settings][PTRun]Show plugin version and website (#36580)
* [Monaco]Add support for .resx and .resw preview support. (#36499)
Added support for .resx and .resw preview support. These files are XML based files so I added the file extensions as part of the registerAdditionalLanguage("xmlExt"...) function.
* [Settings] Add Workspaces' workspaces.json file to backup/restore list (#36714)
* [Localization] Fix loc pipeline to send downloaded localized files to TDBuild upon retry after failure (#36766)
* [AdvancedPaste]Fixed issues with Screen Reader integration (#36778)
* Remove Advent calendar from README (#36777)
* Remove Advent calendar from README
* Update hero image
* Delete doc/images/overview/PT_holiday_hero_image.png
* [AdvancedPaste]Add all BitmapDecoder supported image filetypes to ImageToText (#35600)
Adds support to ImageToText for all image filetypes supported by BitmapDecoder.
* [AOT]Clean up some AOT build issues in PowerAccent.Core (#36264)
* init
* Use AotCompatibility instead
* Replace typeof(Lanaguge) with GetValues<Language>
* Create new folder to place source generation context file.
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [WinUI3]Fix Windows 10 title bar borders (#36429)
* Fix borders for windows in the Settings UI
* Fix HOSTS window
* Fix Advanced Paste
* Fix Environment Variables
* Fix File Locksmith
* Fix Peek, with a caveat
* Fix Registry Preview
* Remove unused imports
* Clean up imports in OobeShellPage
* Move OSVersionHelper from Common.UI up into ManagedCommon
* [QuickAccent]Fix unstable language loading (#36721)
* [Peek]Bring into foreground if previously minimized (#36506)
Added Activate() to bring Peek.UI window into focus upon Toggle. This allows the UI to be presented even if it was previously minimized.
* Update Run docs README (#36857)
* Update Run docs README
* Remove System dupe
* [Monaco]Make minimap toggleable (#33742)
* [Monaco]Fix Json format preview setting (#36867)
* [KBM]Added option for exact match shortcut (#36000)
* Added option for exact match shortcut
* Fix spell-check
* [Deps][Security]Update .NET Packages from 9.0.0 to 9.0.1 (#36879)
* [Deps] Update NuGet packages to version 9.0.1
Updated several NuGet packages from version 9.0.0 to 9.0.1, including:
- Microsoft.Data.Sqlite
- Microsoft.Bcl.AsyncInterfaces
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Logging
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Hosting
- Microsoft.Extensions.Hosting.WindowsServices
- Microsoft.Win32.SystemEvents
- Microsoft.Windows.Compatibility
- System.CodeDom
- System.ComponentModel.Composition
- System.Configuration.ConfigurationManager
- System.Data.OleDb
- System.Diagnostics.EventLog
- System.Diagnostics.PerformanceCounter
- System.Drawing.Common
- System.Management
- System.Runtime.Caching
- System.ServiceProcess.ServiceController
- System.Text.Encoding.CodePages
- System.Text.Json
* [Deps] Update NOTICE.md
* [Peek]Fix using the correct Monaco assets at runtime (#36890)
* [Workspaces] fixing bug: editor starts outside of visible desktop area (#36769)
* [Workspaces] fixing bug: editor starts outside of visible desktop area
* Update src/modules/Workspaces/WorkspacesEditor/MainWindow.xaml.cs
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
---------
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
* [Workspaces] Saving app properties on launch and recapture (#36751)
* [Workspaces] Implementing set and get GUID to/from HWND to distinguish windows moved by the Workspaces tool
* After launch and capture copy the CLI args from the "original" project
* Fix getting GUID
* spell check
* modification to be able to handle different data sizes on different systems
* code optimisation
* Replacing string parameter by InvokePoint
* renaming variable
* [AdvancedPaste]Use background thread for interactions between runner and Advanced Paste (#36858)
* [Advanced Paste] Use background thread for runner-Advanced Paste interaction
* Fixed typo
* [VCM]Deprecate the Video Conference Mute utility (#36772)
* Remove all VideoConferenceMute related code and files
* Clean up vcm driver registry keys
* Also remove the Webcam report tool
* Also clean out video conference on the installer
* Fix spellcheck
* Remove comment about video conf
* Update gpo files revision
* Revert removing the VCM policies
* Deprecate VCM GPO policy
* Change deprecation message to show first supported version
* Tweak supported strings in the adml
* Goodbye friends, you are forever part of the team (#36905)
* Goodbye friends
Forever part of the team 😢
* Update COMMUNITY.md
* Fix formatting issues in COMMUNITY.md
* [New utility]Sysinternals ZoomIt (#35880)
* ZoomIt initial code dump
* Change vcxproj to normalize dependency versions
* Fix code quality to build
* Add to PowerToys solution
* Clean out C-style casts
* Fix some more analyzer errors
* Constexpr a function
* Disable some warnings locally that it seemed better not to touch
* Add ZoomIt module interface
* Add GPO
* Add Settings page with Enable button
* Output as PowerToys.ZoomIt.exe
* Extract ZoomIt Settings definition to its own header
* Make ZoomItModuleInterface build with ZoomItSettings too
* WinRT C++ interop for ZoomItSettings
* From Registry To PowerToys Json
* Properly fix const_cast analyzer error
* Initial Settings page loading from registry
* Zoom mode settings
* Save settings
* Add file picker and DemoType file support
* Remaining DemoType settings
* Have ZoomIt properly reloading Settings and exiting
* Remove context menu entries for Options and Exit
* ZoomIt simple Break Options
* Break advanced options
* Simple Record settings
* Record Microphone setting
* Fix break background file picker title
* Font setting
* Fix build issues after merge
* Add ZoomIt conflict warning to Settings
* Exclude Eula from spell checking
* Fix spellcheck errors
* Fix spell check for accelerated menu items
* Remove cursor files from spellcheck. They're binary
* Fix forbidden patterns
* Fix XAML style
* Fix C# analyzers
* Fix signing
* Also sign module interface dll
* Use actual ZoomIt icon
* Add OOBE page for ZoomIt
* ZoomIt image for Settings
* Flyout and Dashboard entries
* Fix type speed slider labels
* Correctly load default Font
* Correctly register shortcuts on ZoomIt startup first run
* Fix modifier keys not changing until restart
* Show MsgBox on taken shortcut
* Start PowerToys Settings
* Normalize ZoomIt file properties with rest of PowerToys
* Add attribution
* Add ZoomIt team to Community.md
* More copyright adjustments
* Fix spellcheck
* Fix MsgBox simultaneous instance to the front
* Add mention of capturevideosample code use
* Add ZoomIt to process lists
* Add telemetry
* Add logging
* React to gpo
* Normalize code to space identation
* Fix installer build
* Localize percent setting
* Fix XAML styling
* Update src/settings-ui/Settings.UI/Strings/en-us/Resources.resw
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
* Fix spellcheck
* One more spellcheck fix
* Integrate LiveDraw feature changes from upstream
* Fix name reuse in same scope
* Fix c-style casts
* Also register LIVEDRAW_HOTKEY
* Fix newLiveZoomToggleKey
* Update LiveZoom description in Settings to take LiveDraw into account
* Fix spellcheck
* Fix more spellcheck
* Fix Sysinternals capitalization
* Fix ARM64 Debug build
* Support Sysinternals build (#36873)
* Remove unneeded files
* Make build compatible with Sysinternals
* Separate PowerToys ZoomIt product name (#36887)
* Separate PowerToys ZoomIt product name
To help maintain the Sysinternals branding in the standalone version.
* Clarify branding-related includes
* Remove ZoomIt.sln
* Add foxmsft to spell-check names
* Add ZoomIt to README
* Add ZoomIt to GH templates
* Add ZoomIt events to DATA_AND_PRIVACY.md
* Remove publish_config.json
* Remove publish_config.json from vcxproj too
---------
Co-authored-by: Mark Russinovich <markruss@microsoft.com>
Co-authored-by: Alex Mihaiuc <69110671+foxmsft@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
* [PTRun]Add hotkey to the show telemetry event (#36869)
* [PTRun]Update the code for .NET 9.0.1 - remove workarounds (#36909)
* Revove some unneeded changes after pdating to .net9.1
* [RegistryPreview]Copy context menu, data tooltip, MULTI_SZ fix (#36631)
* add context menus
* string resources for contextmenu
* fix line break parsing for MULTI_SZ
* better presentation of multiline values and value tooltip
* cleanup
* [MWB] - refactoring "Common" classes - Common.Log.cs, Common.Receiver.cs (#35726)
* [PTRun]Add setting for different trigonometric units in Calculator (#36717)
* Added angle units to PowerToys Run Calculator plugin.
* Update Resources.resx
* Added GitHub SpellCheck rule for 'gradians'.
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [ci]Remove steps to build abstracted utilities packages (#36934)
* [Settings]Update GPO infobar icon, improve some pages and fix bugs (#33703)
* changes part 1
* fix xaml code
* changes part 2
* fix cmdNotFound page
* Update PowerOcrPage
* More Pages changed
* More Pages changed
* revert temporary change
* fix spelling
* add resw comment
* add resw comment
* Update MouseWihtoutBorderPage.xaml
* PowerPreview page
* workspaces page
* fix awake page gpo handling
* NewPlus page
* update new+ page!
* AdvancedPaste.xaml: Move Info bar.
* Update MouseJumpPanel.xaml
* Update GeneralPage.xaml
* fix position of info bar and some ui quirks
* fix xaml style
* fix string resources
* string changes
* prepare megre main
* update new+ page
* zoomit page
* various fixes
* [Common]NotificationUtil helper class with FileWatcher (#36720)
* add NotificationUtil helper with file watcher and cache
* fix spellcheck
* indentation
* [PTRun][Docs]Add YubicoOauthOTP to Third-Party plugins (#36761)
* [PTRun]Fixed typo in Value Generator messages (#36951)
* [AOT] Clean up some AOT issues in Advanced Paste module (#36297)
* Clean up the aot build issue.
* Merge main and clean up new AOT build issue
* Update LogEvent define.
* Update src/modules/AdvancedPaste/AdvancedPaste/Helpers/LogEvent.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* update typo bug
* Remove unused allow list item
* Create a new folder to place source generation context
* Merge main and rename LogEvent to AIServiceFormatEvent
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* [ZoomIt]React to gpo setting when run as standalone (#36975)
* [Settings]ImageResizer settings accessibility updates, fixes and refactor (#36903)
* Fix issue with missing Image Resizer unit and fit information in settings description.
* Fix accessibility issues on Edit and Remove buttons. Fix various issues and refactor view model and ImageSize. New resources for accessibility text formats.
* Fix unit test because of change to new preset width and height. Fix 2 unit tests having incorrect expected/actual orderings.
* Post-review update: accessibility strings now formatted within the converter, instead of via format strings; simplified encoder GUID collection declaration and retrieval.
* Minor example text fix.
* [Settings]Update "Back up" mentions when it should be used as a verb (#36965)
* Update Back up name
* Rename Backup to Back up
* [New+]Update last modified date to now for all templates created (#36133)
* Update last modified date to now for all templates created
* Now also set last update for directories. Thank you htcfreek!
* [ImageResizer][ci]Fix XAML style errors (#37009)
* [Settings] Add "new" labels to navigation for new utilities (#36939)
* initial implementation
* move new label to zoomit
* cleanup
* more cleanup
* fix XAML formatting
* update padding to 4px
* add badge to dashboard item
* fix XAML formatting
* Tweaking UX
---------
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [MWB]Fix helper process termination issue in service mode (#36892)
* [MWB] Changed to suppress the flow of the execution context
* Fix build after merge
* [MWB] Fix helper process termination issue in service mode
* Add some comments
* [runner]Fix crashes caused by wrong setting AllowDataDiagnostics registry value (#37015)
* Fix setting registry value
* Prevent future similar crashes
* [PTRun][Calculator]Error check when loading trigonometry mode (#37033)
* [ZoomIt]Fix transparent draw after changing another setting (#37042)
* [Settings]Fix ZoomIt page changing current directory (#37052)
* [ci]Remove vc tools version workaround (#37098)
* 0.88 changelog (#37056)
* 0.88 changelog
* Update README.md
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* Add installer hashes
* Fix aka.ms link for ZoomIt
* Add mention to the PTRun plugin's dll file version
* Update README.md
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
* Update README.md - update What's Planned to 0.89 (#37157)
Update README.md
Just a tiny update, as reference to 0.88 was missed.
* [ci]Proper workaround for the vc tools version check (#37130)
* Revert "[ci]Remove vc tools version workaround (#37098)"
This reverts commit 2c069ce708.
* Adopt the same workaround as in Terminal
* build: add a couple more signing variables to ESRP (#37328)
This is in support of some identity changes we need to make.
* [Docs] Update runner-ipc.md to fix broken links (#36994)
Update runner-ipc.md
Fix broken file links.
* [ContextMenu]Update win11 msix menus if wrong version is detected (#37289)
* [ContextMenus]Update win11 msix menus if wrong version
* Remove extra line in code
* [Build]Compatibility with VS17.3 and later, for C++23 <expected>(#37321)
[Build] compatibility with VS17.3 and later, for C++23 <expected> has been introduced in VS17.3.6, and std::expected has conflict/inconsistent with the makeshift (expected-lite)
* [Deps]Update .NET Packages from 9.0.1 to 9.0.2 (#37400)
* [Deps] Update NuGet package versions to 9.0.2
* [CI] Update NOTICE.md
* Ignore 0.0.0.0 versions as well for PowerToys files
* Verify we're not shipping any 0.0.0.0 files
* Add MSFT file that's expected as 0.0.0.0
* Fix spellcheck
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [ci]Fix OutOfMemory in download by separating test-only artifacts and filtering unused files before publishing (#37403)
* chunk download
* change pipeline
* update pipeline
* filter
* for testing
* use Variable
* rebase file
* add new line
* rebase the pipeline
* [GPO][MWB]Add policy to disable service mode (#37366)
* [MWB]Add policy to disable service mode
* Add restart note
* Tweak settings to disable setting
* Tweak infobars
* Policy should be machine only
* [GPO]Add policy to define the run at startup setting (#37385)
* [GPO]Add policy to define the run at startup setting
* Use message for single setting managed by policy instead
* [Zoomit]Fix warning C4706 and related error C2220 (#37283)
* [KeyboardManager WinUI3] Create WinUI3 project and wrapper for Keyboard Manager Editor (#37427)
* Set up KBM WinUI3 Editor UI project
* Test invoking the KBM library via wrapper for WinUI3 C# UI
* Set up Editor Library Wrapper and enable logging
* fix spelling
* update spacing and remove unused file
* fix formatting
* update sln
* update wrapper project config
* import common props
* update UI reference
* gate the new editor with the experimentation toggle in settings
* [Workspaces] Fix case: monitor not present at launch (#37005)
* [Workspaces] Fix case: monitor not present at launch
* Fix DPI multiplicator calculation when monitor not present
* [PowerRename] Fix negative enumerate start parameter parse bug. (#37375)
Fix reg bug to make PowerRename accept negative number as start parameter
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* Use system default web browser when opening links through Monaco in RegistryPreview (#37466)
* Handled NewWindowRequested WebView2 event, to allow links opened through Registry Preview to open in the system default web browser, rather than a new WebView2 window.
* Modified RegistryPreview implementatiion to use the open URI dialog that is currently used in Peek.
* [QuickAccent]Add more letters with caron to IPA (#37369)
Co-authored-by: Stefan Markovic <stefan@janeasystems.com>
* [QuickAccent]Added ` (backtick) and ~ (tilde) to VK_OEM_5 (#20333) (#37286)
* [MouseHighlighter]Fix stray highlights stucking (#37309)
* [MouseHighlighter]Fix stray highlights stucking
* Fix spellcheck
---------
Co-authored-by: Stefan Markovic <stefan@janeasystems.com>
* [Settings] Fixed missing accessibility name of secondary links panel (#37014)
Co-authored-by: Stefan Markovic <stefan@janeasystems.com>
* [CI] fix: Use Azure CLI for artifact download to prevent OutOfMemory issues (#37455)
* for testing az
* change file
* update test
* install python
* update
* test
* use powershell
* tes
* update enve
* update
* test
* add
* test
* merge
* az
* change
* update
* test cli
* add debug
* test large
* fix
* use templete
* fix x64 python install
* for testing
* add
* fix
* use 3.11.1
* change for test
* revert some testing file
* update the file name for spelling check
* use azure cli zip
* use aka.ms
* rename the zip file
* Update runner documentation to reflect newest code structure
* [Image Resizer] Added AutomationProperties.HelpText to dimensions combo-box (#37122)
Co-authored-by: Stefan Markovic <stefan@janeasystems.com>
* [Fuzz] Add fuzz testing for Hosts (#37516)
* add hostsfile fuzztests templates code
* modify typos of hostsfile
* add hosts file
* add hosts fuzz to pipeline
* modify varify depjson rule
* fuzz validIPv4
* update .net7 to .net 8
* add valid6/validhosts tests on hosts
* catch all exception
* update onefuzzconfig.json to add 3 test cases
* add fuzz writeasync tests and fill exception
* add writeasync onefuzz config
* add dll of writeasync in job dependencies
* for testing az
* change file
* use mock filesystem in hosts tests projct
* fix spell erro
* fix spell erro and change notations
* update test
* fix space erro in code
* install python
* update
* test
* use powershell
* remove unused dll in oneconfig.json
* change download artifacts
* update
* test
* add
* test
* merge
* az
* change
* update
* test cli
* add debug
* test large
* fix
* use templete
* remove pdb file filter in job test project
* fix x64 python install
* for testing
* add
* fix
* use 3.11.1
* change for test
* revert some testing file
* update the file name for spelling check
* use azure cli zip
* use aka.ms
* rename the zip file
* remove test artifactname
* add exception and job dependencies
* Remove the limitation of fuzzing only on hosts
* add fuzz readme
* remove unused changes and space
* fix x86 in sln and remove newtonsoft.json.dll in oneconfig.json
* readd wrapper.dll in oneconfig.json
* drop randomsplit when fuzz writeasync and remove unuseful package
---------
* UITestAutomation Framework (#37461)
* Add UITestAutomation framework
* add code comments
* Optimized code format
* Optimized code format
* Update commons and add keyboard manager ui test project
* Optimized code format
* test scope and fix fancyzone exe path
* Add readme
* Optimize helper functions and UI test method
* Fix spelling errors and restore module UI tests
* Restore Indent
* Update NOTICE.md
* Update comments to Session and Elements
* Update comments for Button and Window
* delete unnecessary code
* change FindElementByName to FindElmenet
* Update comments for ModuleConfigData
* Update readme and comments
* Remove extra comments
* change public property
* Optimize code readability
* add default Attach Function
* change attach function name
* Update comments to XML format
* Hide by internal functions
* Update readme
* Refine the framework
* Fix process start position and update readme
* Remove Enum PowerToysModuleWindow
* Update attach comments
* Update ModuleConfigData comments
---------
Co-authored-by: Zhaopeng Wang (from Dev Box) <zhaopengwang@microsoft.com>
Co-authored-by: Xiaofeng Wang (from Dev Box) <xiaofengwang@microsoft.com>
Co-authored-by: urnotdfs <709586527@qq.com>
* [Fancy Zones] Fixed accessibility text of monitors on Layout Editor (#36997)
Co-authored-by: Stefan Markovic <stefan@janeasystems.com>
* [Run] Fix dark mode detection code, plus refactor (#37324)
* Fix risky int cast in dark mode detection.
* Refactored Helper and Manager classes. New unit tests and changes to support Registry access mocking.
* Spelling update.
* Improve documentation for the registry-related classes.
* Fix issue with UpdateTheme raised in review. Enhance documentation. Rewrite tests to use parameterised unit tests, and expand to cover more cases.
* [MWB] Fix file transfer not working in service mode (#37542)
* [MWB] Fix file transfer not working in service mode
* Spellcheck issues
* Remove "new" label from ZoomIt (#37417)
remove new from zoomit
* [PTRun][Calc]Add list separator handling for different cultures (#36735)
* Ready for Review - [Mouse Without Borders] - refactoring "Common" classes (Part 3) - #35155 (#36950)
* [MWB] - refactoring MachineInf from Common.MachineStuff.cs into MachineInf.cs - #35155
* [MWB] - fixing references to MachineInf - #35155
* [MWB] - cleaning up MachineInf.cs - #35155
* [MWB] - moving MyRectangle from Common.MachineStuff.cs into MyRectangle.cs - #35155
* [MWB] - cleaning up MyRectangle.cs - #35155
* [MWB] - moving Common.MachineStuff.cs to MachineStuff.cs - #35155
* [MWB] - fixing references to MachineStuff - #35155
* [MWB] - cleaning up MachineStuff.cs - #35155
* [MWB] - cleaning up MachineStuff.cs - #35155
* [MWB] - moving Common.DragDrop.cs to DragDrop.cs - #35155
* [MWB] - fixing references to DragDrop - #35155
* [MWB] - fixing unit test - #35155
* [MWB] - cleaning up DragDrop.cs - #35155
* [MWB] - cleaning up DragDrop.cs - #35155
* PowerToys Run Calculator: Add trigonometric angle unit conversion functions (#37475)
* Added trig unit conversion macros to PowerToys Run Calculator plugin.
* Added testing for unit conversions.
* Removed debug messages.
* [PTRun][Docs] Update new plugin checklist (#36789)
[Docs] Update new plugin checklist
* [PowerRename]Add `$`, `^` and quantifiers to RegEx cheatsheet (#37062)
* [PowerRename]Add `$`, `^` and `.*` to RegEx cheatsheet
* Add * and +, remove combinations
* correct spelling
* Add ? and \s
* fix spelling once again
* Update UI-Test Automation Framework (#37597)
* Improve UITest Automation
* Improve UITest Automation
* Exclude all UI-Test projects instead of just fancyZone UITest
* Exclude all UI-Test projects instead of just fancyZone UITest
* Fix code-style
* [Hosts] Add UITest Cases for Hosts Module (#37600)
* Add UI-Tests for Host Module
* [Build] Revert "[Hosts] Add UITest Cases for Hosts Module (#37600)" to fix CI issue (#37606)
Revert "[Hosts] Add UITest Cases for Hosts Module (#37600)"
This reverts commit c656dcc9c5.
* [AOT] clean up AOT issue in Settings.UI (#36559)
* Rename source generation context file
* fix build issue
* fix path bug
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [AOT] Clean up AOT build issue in Common.UI (#36376)
* init commit
* Use path.combine
* Add useWPF and useWindowsForms back
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [ci]Sign and fix KeyboardManagerEditorLibraryWrapper.dll (#37601)
* [ci]Sign KeyboardManagerEditorLibraryWrapper.dll
* Fix dll metadata
* [Settings]Fix ColorPicker dashboard shortcut (#37547)
* Fix color picker dashboard shortcut
* remove not needed code
* Remove comment
* [ImageResizer] Fix issues with blank Width and Height controls (#37373)
* Allow custom preset's dimensions to be blank in the UI while still persisted as 0.
* XAML formatting - reorder namespaces.
* Add "(auto)" text to zero-value Width/Height in Settings. Ensure Width and Height fields in flyout are formatted to empty when their value is 0.
* [Workspaces][ARM64] Bring icon to packaged apps (#37625)
Bring icon to packaged apps
* [PTRun] Disable CETCompat in Launcher (#37550)
* Disable CETCompat in Launcher
* Added comment
* Improved comment
* [AOT] Refactor Logger function to improve performance and mark managedCommon as AOT compatible (#36327)
* Use function to init static value
* Replace GetFileName with GetFileNameWithoutExtension
* Add exception catch for GetCallerInfo
* Remove sourceLineNumber
* Add kernal to allow list
* Remove unused commit
* Add new folder to place source generation context
* update
* fix build issue
* Move line number back
* Use fileName to replace full path
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [AdvancedPaste]Add paste actions to allow transcoding of media files (#37188)
* [AdvancedPaste] Additional actions, including Image to text
* Spellcheck issue
* [AdvancedPaste] Paste as file and many other improvements
* Fixed typo
* Fixed typo
* [AdvancedPaste] Improved paste window menu layout
* [AdvancedPaste] Improved settings window layout
* [AdvancedPaste] Removed AudioToText for the moment
* Code cleanup
* Minor fixes
* [AdvancedPaste] Semantic Kernel support
* Changed log-line with potentially sensitive info
* Spellcheck issues
* Various improvements for Semantic Kernel
* Spellcheck issue
* Refactored Clipboard routines
* Added integration tests for KernelService
* Extra telemetry for AdvancedPaste
* Added 'Hotkey' suffix to AdvancedPaste_Settings telemetry event
* Added IsSavedQuery
* Added KernelQueryCache
* Refactoring
* Added KernelQueryCache to BugReportTool delete list
* Added opt-n for Semantic Kernel
* Fixed bug with KernelQueryCache
* Ability to view last AI chat message on error
* Improved kernel query cache
* Used System.IO.Abstractions and improved tests
* Fixed under-count of token usage
* Used Semantic Kernel icon
* Cleanup
* Add missing EndProject line
* Fix dependency version conflicts
* Fix NOTICE.md
* Correct place of SemanticKernel in NOTICE.md
* Unlinked CustomPreview toggle from AI
* Added Microsoft.Bcl.AsyncInterfaces dependency to AdvancedPaste
* Fixed NOTICE.md order
* Moved Custom Preview to behaviour section
* Made Image to Text raise error on empty output
* Added AIServiceBatchIntegrationTests
* Updated AIServiceBatchIntegrationTests
* Added prompt moderation
* [AdvancedPaste] Media Transcoding support
* Spellcheck issue
* Improved transcoding output profile and added tests
* Moved GPO Infobar to better location
* Added cancel button and minor bug fixes
* Fixed crash
* Minor cleanups
* Improved transcoding error messages
* Used software back when transcoding fails with hardware accerlation
* Added Reencode to spellcheck
* Spellcheck issue
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Dustin L. Howett <dustin@howett.net>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* [QuickAccent]Add final sigma ( ς ) to the Greek character set (#37611)
* Revert "[Hosts] Add UITest Cases for Hosts Module" (#37619)
* Revert "[Hosts] Add UITest Cases for Hosts Module (#37600)"
This reverts commit c656dcc9c5.
* Matching all UITest projects and UITestAutomation project
* Add back Hosts UITests
---------
Co-authored-by: Jerry Xu <nxu@microsoft.com>
* [Workspaces] Fix regression when capturing minimized apps (#37599)
* [check-spelling] Update metadata
Update for https://github.com/zadjii-msft/PowerToys/actions/runs/13549652582/attempts/1
Accepted in https://github.com/zadjii-msft/PowerToys/pull/462#issuecomment-2685731408
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Fix bad merged
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Laszlo Nemeth <57342539+donlaci@users.noreply.github.com>
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
Co-authored-by: Ionuț Manța <ionut@janeasystems.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
Co-authored-by: PesBandi <127593627+PesBandi@users.noreply.github.com>
Co-authored-by: Wenjian Chern <55335597+Sophanatprime@users.noreply.github.com>
Co-authored-by: Youssef Victor <youssefvictor00@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: leileizhang <leilzh@microsoft.com>
Co-authored-by: Den Delimarsky 🔐 <sign@den.dev>
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
Co-authored-by: Shuai Yuan <128874481+shuaiyuanxx@users.noreply.github.com>
Co-authored-by: moooyo <42196638+moooyo@users.noreply.github.com>
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jerry Xu <n.xu@outlook.com>
Co-authored-by: Demitrius Nelon <denelon@microsoft.com>
Co-authored-by: Kai Tao <69313318+vanzue@users.noreply.github.com>
Co-authored-by: Connor Plante <150482134+plante-msft@users.noreply.github.com>
Co-authored-by: Connor Plante <connor.plante@gmail.com>
Co-authored-by: Domen Soklič <soklicd@gmail.com>
Co-authored-by: Hao Liu <liuhaobupt@163.com>
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: immi <iafullprogrammer@gmail.com>
Co-authored-by: Asif Islam <77113884+asif4318@users.noreply.github.com>
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
Co-authored-by: Dave Rayment <dave.rayment@gmail.com>
Co-authored-by: Neil McAlister <pingzing@users.noreply.github.com>
Co-authored-by: Mark Russinovich <markruss@microsoft.com>
Co-authored-by: Alex Mihaiuc <69110671+foxmsft@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: Michael Clayton <mike@kingslandconsulting.co.uk>
Co-authored-by: Nathan Gill <nathan.j.gill@outlook.com>
Co-authored-by: Daniel Nilsson <daniel.nilsson1989@gmail.com>
Co-authored-by: JackStuart <jack@jstuart.io>
Co-authored-by: Christian Gaarden Gaardmark <cgaarden@hotmail.com>
Co-authored-by: YDKK <YDKK@users.noreply.github.com>
Co-authored-by: Dustin L. Howett <duhowett@microsoft.com>
Co-authored-by: LNKLEO <LinkeyLeo@outlook.com>
Co-authored-by: Massimiliano Alberti <821344+xanatos@users.noreply.github.com>
Co-authored-by: Hao Liu <liuhao3418@gmail.com>
Co-authored-by: chenmy77 <162882040+chenmy77@users.noreply.github.com>
Co-authored-by: dreamstart <33367956+wang563681252@users.noreply.github.com>
Co-authored-by: Zhaopeng Wang (from Dev Box) <zhaopengwang@microsoft.com>
Co-authored-by: Xiaofeng Wang (from Dev Box) <xiaofengwang@microsoft.com>
Co-authored-by: urnotdfs <709586527@qq.com>
Co-authored-by: Henrik Lau Eriksson <henrik.lau.eriksson@gmail.com>
Co-authored-by: Dustin L. Howett <dustin@howett.net>
Co-authored-by: Smeagol <Thesmeagol360@gmail.com>
Co-authored-by: Jerry Xu <ninxu@microsoft.com>
Co-authored-by: Jerry Xu <nxu@microsoft.com>
Co-authored-by: Stefan Markovic <stefansjfw@users.noreply.github.com>
Closes#446
Setting is pretty straightforward. Same as PT Run, with an added "leave it where it is", from the Terminal codebase.
The `DisplayArea` code is net-new (PT used WPF for that, and Terminal used C++), but it's pretty same-y to everything else.
Drive-by fixes "holy whitespace batman", by making the SUI less wide.
This is a very rough UI element for setting aliases in the UI.
* the command weighting from #454 was bad. It would always grant a recent command weight. Probably shouldn't do that
* The tags could soft-crash when opening the SUI? I think that was from the ObservableCollection being created on a COM thread, then "updated" on the main thread.
* this may be #426 but I'm not sure
Closes#92 (but it isn't pretty)
This is a very basic frecency implementation, to let MRU apps and commands show up higher in search results.
Adds support for a `state.json` file, to store this state. Implication is the same as Terminal:
* `settings.json`: These are _your_ settings, take this with you where you go
* `state.json`: this is state _we_ own. You can take it with you at your peril. **We** control this file.
This seemed good enough to get "VS" to match to "Visual studio" after just a single launch of VS.
We can iterate on the weighting in the future.
Closes#317
This was also half-tracked in closes#147
Re-write the bookmarks extension, to add support for edit and delete commands. This is one of the older extensions in the codebase so it was quite dated. Along the way:
* Resolved a COM threading issue with `CommandResults` (which I never saw before?)
* Also a really good idea I just had: `AnonymousCommand`s, so you can just pass a lambda to a CommandItem and that's the whole command. Don't need to define a whole command class just for that.
* Drive-by:
* Closes#251
* Closes#344
<!-- 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
A fix for the issue that not all results in file search are shown when scrolling to the bottom.
* Added a request to load new items when the user scrolls to the bottom
* Re-request items when facing an error in the file search to ensure we show all results in the list
<!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
* Search something that should get more than 20 results (I usually typed a single letter for testing)
* Scroll down to the bottom and check if new entries are loading.
Closes#351
This PR adds a setting to revert back to the original exe-based thumbnails. We've set it to use exe's by default, because crashes are no good.
We can figure this out in post.
Adds support for binding hotkeys to top-level commands.
For commands that don't have an ID, we'll generate one.
Also makes `Tags` observable, because they weren't before
Hugely re-writes how `ShortcutControl` tracks the active hwnd, because it didn't work in 0.0.6
Closes#93
I was testing #152 and realized that the Copy command on the calculator page was never working quite right.
And to make it work, i had to fix#360
so, closes#360
This static `CommandPaletteHost` instance is definitely problematic, and we should fix that.
But for now, this fixes the issue where all extensions (including builtins) couldn't access the HWND.
We need this for #151, and it might help resolve what we were seeing in #152
No one likes these settings.
The first one causes like, 1000 apps to be loaded, including everything from system32 (yikes)
The second, well, it just doesn't matter.
This adds a new form page for quickly creating a new extension.
* `ExtensionTemplate/` should be zipped up into `template.zip`.
* fill in that form, then when you submit the form, we'll unzip the template.
* You should be able to just open that solution up and just **go**
* I moved the built-in commands lower in the list. The only visible commands it exposes are "Open CmdPal settings" and "Create new extension" (the others are hidden fallbacks, so it doesn't really matter)
* To mitigate that the settings command is lower in the list, I added it to the "page title" spot in the command bar (only on the root view).
Closes#311
closes#100closes#276
Converts the Toolkit settings to be a `ICommandSettings`, to make things a bit easier.
Adds per-extension settings to the SUI. Each page should list off the commands from that extension, the `CommandProvider.Settings`, and a simple "About" block for that package.
Also makes the settings window _not gigantic_
In #416 I tried to lock the lists before we modify them.
Problem was, on L143 I only locked the `FilteredItems`, when `Items` can change there too.
One singular lock for both makes the most sense anyways.
MISSING:
- Support arguments passing
~Live app detection (newly installed apps, updates, etc..)~
~Localization~
~Cleanup~
Argument passing requires conversion to DynamicListPage and is low priority. Let's merge this first and I'll work on this as a follow up
Closes#76
This is just a very rough prototype of "TextToSuggest", to make it do _something_. I'll link this to #358, but it's not clean enough to close it.
I just slapped a TextBlock with the suggested text to the right of the input, just so users can see that there is a suggestion and that you can press `right` to accept it.
The best extension to test this with is the Registry one, but that crashes heavily in `ListHelpers.InPlaceUpdateList`. I think it's for two reasons:
* a null item in the list? (we should ignore that!)
* and we're modifying the list as we're updating it (definitely shouldn't do that)
I'm guessing the second is actually the cause of #324, though I've had a hard time reproing that as of late.
* [Workspaces] implement the move feature (#35480)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* fix Move attribute after launch and snapshot
* Extend WindowArranger with PWA functionality to detect different PWA apps. PwaHelper moved to the common library
* fix repeat counter in the editor
* Code optimization
* code cleanup, optimization
* fix double-processing window
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* [KeyboardManager]Fix mapping shift to numpad (#35890)
* Keyboard Manger fix numpad as shift
Fixed shift not being released if a numpad key as shift.
* Added comments
* Fix typo
* Fix the numpad unlocked key not working if the locked version is overridden by shift
* Fix spelling check.
* Revert the VK_CLEAR change.
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [Analyzers] Update .editorconfig with rules to relax IDE errors (#36095)
* [Analyzers] Remove duplicate pascal case style from .editorconfig
* [Analyzers] Configured severity for individual IDE and CA rules showing as errors in VS
Set severity for IDE0005, IDE0008, IDE0016, IDE0018, IDE0019, IDE0021, IDE0022, IDE0023, IDE0025, IDE0027, IDE0028, IDE0029, IDE0031, IDE0032, IDE0034, IDE0036, IDE0039, IDE0042, IDE0044, IDE0045, IDE0046, IDE0047, IDE0057, IDE0051, IDE0052, IDE0054, IDE0055, IDE0056, IDE0057, IDE0059, IDE0060, IDE0061, IDE0063, IDE0071, IDE0073, IDE0074, IDE0075, IDE0077, IDE0078, IDE0083, IDE0090, IDE0100, IDE0130, IDE160, IDE180, IDE0200, IDE0240, IDE0250, IDE0251, IDE0260, IDE0270, IDE0290, IDE0300, IDE0301, IDE0305, IDE1005, IDE1006, CA1859, CA2022, CA2263
* [Analyzers] Fix mismatched analyzer descriptions
* [Analyzers] Fix misspelling
* Update .editorconfig
Made the following style rules `silent` instead of `suggestion`:
- Use explicit type instead of 'var'
- Use expression body for ...
- Use block-scoped namespace
* [Analyzers] Set IDE0290 to silent
* [Analyzers] Remove IDE1006 configuration from .editorconfig in favor of making exclusions for the few entries
* [Analyzers][Indexer] Add IDE1006 suppressions
* [Analyzers][Peek] Add IDE1006 suppression
* [Analyzers][MWB] Add IDE1006 suppression.
* [Analyzers][Plugins] Add IDE1006 suppression
* [Analyzers][ImageResizer] Suppress IDE0073 to retain original copyright
* [Analyzers] Remove IDE0073 severity change in .editorconfig
---------
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
* [Workspaces] PWA follow-up (#36217)
* [PTRun][Calculator]Allow scientific notation with lowercase 'e' (#36187)
* [Workspaces] Add encoder parameter to bitmap.save() (#36228)
* [Workspaces] Add encoder parameter to bitmap.save()
* 1 more call fixed
* Move repeated code to the csharp library
* [Workspaces] Implement store of app window's size and position (#36086)
* [Workspaces] Implement store of app window's size and position
* Modifying the default values to -1. The program will use the original default values for the first run.
* [ScreenRuler]Add setting to show the measurement in an extra unit (#35887)
* display ruler: supporting millimeter and other units
* Measurement Tool: UI Setting for an extra unit
* Update images
* spelling
* spelling
* suit code style
* Fix for code review
* remove weird file
* rename field
* [Deps]Update MSTest from 3.5.0 to 3.6.3 (#36115)
* Update MSTest from 3.5.0 to 3.6.3
* Use STA attributes that are now part of MSTest
* Adding Jerry to community.md (#36232)
Update COMMUNITY.md
* [Workspaces] Arranger: smart timer (#36096)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] Arranger: Reset wait timer after each successful arrange action
* fix merge error
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Upgrade to check-spelling v0.0.24 (#36235)
This upgrades to [v0.0.24](https://github.com/check-spelling/check-spelling/releases/tag/v0.0.24).
A number of GitHub APIs are being turned off shortly, so you need to upgrade or various uncertain outcomes will occur.
There's a new accessibility forbidden pattern:
> Do not use `(click) here` links
> For more information, see:
> * https://www.w3.org/QA/Tips/noClickHere
> * https://webaim.org/techniques/hypertext/link_text
> * https://granicus.com/blog/why-click-here-links-are-bad/
> * https://heyoka.medium.com/dont-use-click-here-f32f445d1021
```pl
(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:</|\]\()
```
There are some minor bugs that I'm aware of and which I've fixed since this release, but I don't expect to make another release this month.
I've added a pair of patterns for includes and pragmas. My argument is that the **compiler** will _generally_ tell you if you've misspelled an include and the **linker** will _generally_ tell you if you misspell a lib.
- There's a caveat here: If your include case-insensitively matches the referenced file (but doesn't properly match it), then unless you either use a case-sensitive file system (as opposed to case-preserving) or beg clang to warn, you won't notice when you make this specific mistake -- this matters in that a couple of Windows headers (e.g. Unknwn.h) have particular case and repositories don't tend to consistently/properly write them.
* Adjust to community.md, shifting jerry's github user name (#36242)
Update COMMUNITY.md
* [AOT compatible] Resolve AOT Build Error in Peek.UI (#36194)
* add partial for aot support
* add Microsoft.NET.ILLink.Tasks to packages.props
* format
* Revert "format"
This reverts commit 742d5e2214.
* add Microsoft.NET.ILLink.Tasks to notice.md
* add auto reference
* update script to remove the 'Auto-reference line'
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Awake Updates - `TILLSON_11272024` (#36049)
* Update with bug fixes for tray icon and support for parent process
* Process information enum
* Update the docs
* Fix spelling
* Make sure that PID is used in PT config flow
* Logic for checks based on #34148
* Update with link to PR
* Fixes#34717
* Small cleanup
* Proper task segmentation in a function
* Cleanup the code
* Fix synchronization context issue
* Update planning doc
* Test disabling caching to see if that manages to pass CI
* Cleanup to make sure that we're logging things properly.
* Update ci.yml
* Disable cache to pass CI
* Retry logic
* Cleanup
* Code cleanup
* Fixes#35848
* Update notes and codename
* After third attempt, log error instead of throwing exception
* More cleanup to avoid double execution
* Add expected word
* Safeguards for bad values for timed keep-awake
* More updates to make sure I am using uint
* Update error message
* Update packages
* Fix notice and revert CsWinRT upgrade
* Codename update
* Update expect.txt
* Update the struct
* Ensuring we're properly awaiting tray initialization
* Update to make sure tray reflects the bound process
* Cleanup, proper JSON serialization for logs.
* Not needed.
* Add command validation logic
* Moving the initialization logic earlier
* Make sure we show the display state in the tooltip
* Update tray string
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update logic for icon resets
* Update doc
* Simplify function for setting mode shell icon
* Issues should be properly linked
* Minor cleanup
* Update timed behavior
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Workspaces] detecting right app version (#36100)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] fix detection of specific version of apps
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Move the XamlStyler config to src/ (#36202)
my never ending goal to minimize files in the root dir
* [AdvancedPaste]Add Semantic Kernel opt-in to allow chaining of paste actions (#35902)
* [AdvancedPaste] Semantic Kernel support
* Changed log-line with potentially sensitive info
* Spellcheck issues
* Various improvements for Semantic Kernel
* Spellcheck issue
* Refactored Clipboard routines
* Added integration tests for KernelService
* Extra telemetry for AdvancedPaste
* Added 'Hotkey' suffix to AdvancedPaste_Settings telemetry event
* Added IsSavedQuery
* Added KernelQueryCache
* Refactoring
* Added KernelQueryCache to BugReportTool delete list
* Added opt-n for Semantic Kernel
* Fixed bug with KernelQueryCache
* Ability to view last AI chat message on error
* Improved kernel query cache
* Used System.IO.Abstractions and improved tests
* Fixed under-count of token usage
* Used Semantic Kernel icon
* Cleanup
* Add missing EndProject line
* Fix dependency version conflicts
* Fix NOTICE.md
* Correct place of SemanticKernel in NOTICE.md
* Unlinked CustomPreview toggle from AI
* Added Microsoft.Bcl.AsyncInterfaces dependency to AdvancedPaste
* Fixed NOTICE.md order
* Moved Custom Preview to behaviour section
* Made Image to Text raise error on empty output
* Added AIServiceBatchIntegrationTests
* Updated AIServiceBatchIntegrationTests
* Added prompt moderation
* Moved GPO Infobar to better location
* [Launcher]Port from WPF-UI to .NET 9 WPF (#36215)
* Initial implementation
* Fix fluent style
* Fix no endline
* Update expect.txt
* Fix formatting
* Fix light theme looking bad on Windows 10
* fix formatting
* test change
* Now really fixed W10
* Add a comment
* Fix typos
* Fix spellcheck errors
* Fix spellcheck pattern for websites
* Change patterns for spellcheck in the right file
* Fix XAML styling
* Fix contrast colors on W11
* Fix formatting
* Removed emty line
* Fix formatting
* Added comment to fluentHC file
* fix comment
* Fix Windows10 again.
Adress feedback.
* W11 fix chaning from high contrast to normal not having correct background
* W10 Fix high contrast not working after switching from light/dark moed
* Address feedback
* Fix formatting
* Second W11 fix chaning from high contrast to normal not having correct background
* [UX]Updating New+ and Settings icons (#36290)
* Updated icons
* Updating more icons and icos
* [Settings][Dashboard] Accessibility fixes (#36280)
* make narrator announce buttons/toggles
* add toggles module name
* [ci]Sign OpenAI dll that's not signed (#36299)
* Update CODEOWNERS to include gordon, jerry and kayla (#36308)
* Update CODEOWNERS
* Update names.txt
* Making the powertoys-code-owners team code owners (#36310)
* Update CODEOWNERS
* Update names.txt
* Update CODEOWNERS
* [FZEditor]Fix Create new layout dialog radio buttons IsChecked values (#36320)
* 0.87 changelog (#36335)
* 0.87 changelog
* Fix spellcheck
* Update README.md
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [PTRun]Fix WPF transparent border issue on Windows 10 (#36392)
* Added border on W10
* Added a comment
---------
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
* [PTRun]Fix .NET 9 crash in OneNote (#36417)
* Fix crash in OneNote Run
* added better comment
* [AdvancedPaste]Fix NullReferenceException on Dispose (#36428)
[AdvancedPaste] Fixed NullReferenceException on Dispose
* [Fuzz] Add fuzz testing for AdvancedPaste and new pipeline for onboarding OneFuzz (#36329)
* add fuzz
* install .net8
* add spelling check
* refine the pipeline
* add readme and update the test code
* fix spelling error
* change to weekly run
* Add New CI Pipeline for Latest WindowsAppSDK (#36282)
This PR introduces the following changes to the CI pipeline and version management:
Pipeline Enhancements:
1. Added a new script UpdateVersions.ps1 to automate the update of Microsoft.WindowsAppSDK versions across various project files.
2. Introduced a new pipeline configuration ci-using-the-latest-winappsdk.yml to build using the latest Microsoft.WindowsAppSDK.
3. Updated existing pipeline configurations to support the new useLatestWinAppSDK parameter.
Pipeline Configuration Updates:
1. Updated job-build-project.yml to handle the useLatestWinAppSDK parameter and adjust the RestoreAdditionalProjectSourcesArg accordingly.
2. Added a new template steps-update-winappsdk-and-restore-nuget.yml for updating and restoring NuGet packages with the latest Microsoft.WindowsAppSDK.
3. Added WinAPPSDK version selection, the pipeline can be manually triggered to use the specified version.
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [AOT compatible] Make HostsUILib become AOT compatible (#36136)
* Remove AOT configuration
* Refer to AOT compatibility props
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [AOT compatible] Clean up some AOT build issue in FilePreviewCommon and MarkdownPreviewHandler (#36207)
* Use AppContext.BaseDirectory to replace assembly.GetExeAseembly.Location.
Fix json serilizer aot issue.
* clean up some AOT build issue
* Update src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Update src/common/FilePreviewCommon/Formatters/JsonFormatter.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Add new pipeline using the latest webview2 from Edge Canary (#36317)
* using the latest webview2 for testing
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Bug fix] Making the OpenAI key configuration page scrollable. (#36359)
* Fixed#34470
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
* [Bug fix] Add a format validation step before format conversion. (#36404)
This PR aims to fix the bug #35225 by introducing a new method IsJson to determine if a given text is in JSON format.
The IsJson method is then utilized in the ToJsonFromXmlOrCsvAsync method to optimize the processing logic.
If the text is already in JSON format, it is returned directly without further conversion from XML or CSV.
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* Add more STCA team members (#36438)
* Add more STCA team members
* Include more spelling check errors
* Remove non-alpha in dictionary
* Add Zhaopeng Wang
* Fix spell checking error
* Remove "prerelease: true" (#36484)
* Remove "prerelease: true"
The Microsoft.WinGet.DSC module is GA so prerelease: true is no longer needed.
* Update expect.txt
fixing spellcheck warning
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Docs]Update README for 0.87.1 release (#36534)
* [CI] Enhance build Pipeline Reliability with Retry Logic and Improved Error Messaging (#36529)
* update pipeline with retry
* remove tests
* Add team member (#36590)
* [New+]Don't override New actions from Explorer on Windows 10 (#36467)
* [New+]Don't override New actions from Explorer
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Add pattern for learn.microsoft links
* Also only Query for context menu
* [PTRun][Calculator]Handle hexadecimal numbers to not return divide by 0 error (#36390)
* add '0x' handling for divide by 0 scenarios
* fix comment on division by 0 check
---------
Co-authored-by: Connor Plante <connor.plante@gmail.com>
* [TextExtractor]Minor UI/Accessibility fixes in the overlay UI (#36356)
minor UI and accessibility fixes
* [PTRun][Calculator]Update mages to v3.0.0 and support for `randi(n)` (#36560)
* update to mages 3.0.0
* allow randi() in calculator plugin
* fix tests and input validation
* fix spell check
* [QuickAccent]Added ć for Slovenian (#36336) (#36338)
* Fix snapping Workspaces Editor to Fancy Zones (#36463)
* Remove Workspaces Editor from Fancy Zone's excluded app list
* removed unused string
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
* [PTRun]Fix drag on .NET 9 WPF (#36635)
* [CQ]Continued to move stuff out of root - Solution.props (#36244)
* [QuickAccent]Add Proto-Indo-European (#36408)
* Add ḱ to PowerAccent for Proto-Indo-European
* Fix Spelling Check
* Add more letters to PIE
* Order PIE after PI
---------
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [PTRun]Add context buttons for VSCodeWorkspaces plugin (#36517)
* [Settings][QuickAccent]Change 'character set' to plural form (#36565)
* [PTRun][Calculator]Fix unit tests on non-english systems (#36569)
* fix tests
* update comment
* [PTRun][Calc]Improve handling of non-base 10 numbers (#36700)
* [Settings][PTRun]Show plugin version and website (#36580)
* [Monaco]Add support for .resx and .resw preview support. (#36499)
Added support for .resx and .resw preview support. These files are XML based files so I added the file extensions as part of the registerAdditionalLanguage("xmlExt"...) function.
* [Settings] Add Workspaces' workspaces.json file to backup/restore list (#36714)
* [Localization] Fix loc pipeline to send downloaded localized files to TDBuild upon retry after failure (#36766)
* [AdvancedPaste]Fixed issues with Screen Reader integration (#36778)
* Remove Advent calendar from README (#36777)
* Remove Advent calendar from README
* Update hero image
* Delete doc/images/overview/PT_holiday_hero_image.png
* [AdvancedPaste]Add all BitmapDecoder supported image filetypes to ImageToText (#35600)
Adds support to ImageToText for all image filetypes supported by BitmapDecoder.
* [AOT]Clean up some AOT build issues in PowerAccent.Core (#36264)
* init
* Use AotCompatibility instead
* Replace typeof(Lanaguge) with GetValues<Language>
* Create new folder to place source generation context file.
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [WinUI3]Fix Windows 10 title bar borders (#36429)
* Fix borders for windows in the Settings UI
* Fix HOSTS window
* Fix Advanced Paste
* Fix Environment Variables
* Fix File Locksmith
* Fix Peek, with a caveat
* Fix Registry Preview
* Remove unused imports
* Clean up imports in OobeShellPage
* Move OSVersionHelper from Common.UI up into ManagedCommon
* [QuickAccent]Fix unstable language loading (#36721)
* [Peek]Bring into foreground if previously minimized (#36506)
Added Activate() to bring Peek.UI window into focus upon Toggle. This allows the UI to be presented even if it was previously minimized.
* Update Run docs README (#36857)
* Update Run docs README
* Remove System dupe
* [Monaco]Make minimap toggleable (#33742)
* [Monaco]Fix Json format preview setting (#36867)
* [KBM]Added option for exact match shortcut (#36000)
* Added option for exact match shortcut
* Fix spell-check
* [Deps][Security]Update .NET Packages from 9.0.0 to 9.0.1 (#36879)
* [Deps] Update NuGet packages to version 9.0.1
Updated several NuGet packages from version 9.0.0 to 9.0.1, including:
- Microsoft.Data.Sqlite
- Microsoft.Bcl.AsyncInterfaces
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Logging
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Hosting
- Microsoft.Extensions.Hosting.WindowsServices
- Microsoft.Win32.SystemEvents
- Microsoft.Windows.Compatibility
- System.CodeDom
- System.ComponentModel.Composition
- System.Configuration.ConfigurationManager
- System.Data.OleDb
- System.Diagnostics.EventLog
- System.Diagnostics.PerformanceCounter
- System.Drawing.Common
- System.Management
- System.Runtime.Caching
- System.ServiceProcess.ServiceController
- System.Text.Encoding.CodePages
- System.Text.Json
* [Deps] Update NOTICE.md
* [Peek]Fix using the correct Monaco assets at runtime (#36890)
* [Workspaces] fixing bug: editor starts outside of visible desktop area (#36769)
* [Workspaces] fixing bug: editor starts outside of visible desktop area
* Update src/modules/Workspaces/WorkspacesEditor/MainWindow.xaml.cs
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
---------
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
* [Workspaces] Saving app properties on launch and recapture (#36751)
* [Workspaces] Implementing set and get GUID to/from HWND to distinguish windows moved by the Workspaces tool
* After launch and capture copy the CLI args from the "original" project
* Fix getting GUID
* spell check
* modification to be able to handle different data sizes on different systems
* code optimisation
* Replacing string parameter by InvokePoint
* renaming variable
* [AdvancedPaste]Use background thread for interactions between runner and Advanced Paste (#36858)
* [Advanced Paste] Use background thread for runner-Advanced Paste interaction
* Fixed typo
* [VCM]Deprecate the Video Conference Mute utility (#36772)
* Remove all VideoConferenceMute related code and files
* Clean up vcm driver registry keys
* Also remove the Webcam report tool
* Also clean out video conference on the installer
* Fix spellcheck
* Remove comment about video conf
* Update gpo files revision
* Revert removing the VCM policies
* Deprecate VCM GPO policy
* Change deprecation message to show first supported version
* Tweak supported strings in the adml
* Goodbye friends, you are forever part of the team (#36905)
* Goodbye friends
Forever part of the team 😢
* Update COMMUNITY.md
* Fix formatting issues in COMMUNITY.md
* [New utility]Sysinternals ZoomIt (#35880)
* ZoomIt initial code dump
* Change vcxproj to normalize dependency versions
* Fix code quality to build
* Add to PowerToys solution
* Clean out C-style casts
* Fix some more analyzer errors
* Constexpr a function
* Disable some warnings locally that it seemed better not to touch
* Add ZoomIt module interface
* Add GPO
* Add Settings page with Enable button
* Output as PowerToys.ZoomIt.exe
* Extract ZoomIt Settings definition to its own header
* Make ZoomItModuleInterface build with ZoomItSettings too
* WinRT C++ interop for ZoomItSettings
* From Registry To PowerToys Json
* Properly fix const_cast analyzer error
* Initial Settings page loading from registry
* Zoom mode settings
* Save settings
* Add file picker and DemoType file support
* Remaining DemoType settings
* Have ZoomIt properly reloading Settings and exiting
* Remove context menu entries for Options and Exit
* ZoomIt simple Break Options
* Break advanced options
* Simple Record settings
* Record Microphone setting
* Fix break background file picker title
* Font setting
* Fix build issues after merge
* Add ZoomIt conflict warning to Settings
* Exclude Eula from spell checking
* Fix spellcheck errors
* Fix spell check for accelerated menu items
* Remove cursor files from spellcheck. They're binary
* Fix forbidden patterns
* Fix XAML style
* Fix C# analyzers
* Fix signing
* Also sign module interface dll
* Use actual ZoomIt icon
* Add OOBE page for ZoomIt
* ZoomIt image for Settings
* Flyout and Dashboard entries
* Fix type speed slider labels
* Correctly load default Font
* Correctly register shortcuts on ZoomIt startup first run
* Fix modifier keys not changing until restart
* Show MsgBox on taken shortcut
* Start PowerToys Settings
* Normalize ZoomIt file properties with rest of PowerToys
* Add attribution
* Add ZoomIt team to Community.md
* More copyright adjustments
* Fix spellcheck
* Fix MsgBox simultaneous instance to the front
* Add mention of capturevideosample code use
* Add ZoomIt to process lists
* Add telemetry
* Add logging
* React to gpo
* Normalize code to space identation
* Fix installer build
* Localize percent setting
* Fix XAML styling
* Update src/settings-ui/Settings.UI/Strings/en-us/Resources.resw
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
* Fix spellcheck
* One more spellcheck fix
* Integrate LiveDraw feature changes from upstream
* Fix name reuse in same scope
* Fix c-style casts
* Also register LIVEDRAW_HOTKEY
* Fix newLiveZoomToggleKey
* Update LiveZoom description in Settings to take LiveDraw into account
* Fix spellcheck
* Fix more spellcheck
* Fix Sysinternals capitalization
* Fix ARM64 Debug build
* Support Sysinternals build (#36873)
* Remove unneeded files
* Make build compatible with Sysinternals
* Separate PowerToys ZoomIt product name (#36887)
* Separate PowerToys ZoomIt product name
To help maintain the Sysinternals branding in the standalone version.
* Clarify branding-related includes
* Remove ZoomIt.sln
* Add foxmsft to spell-check names
* Add ZoomIt to README
* Add ZoomIt to GH templates
* Add ZoomIt events to DATA_AND_PRIVACY.md
* Remove publish_config.json
* Remove publish_config.json from vcxproj too
---------
Co-authored-by: Mark Russinovich <markruss@microsoft.com>
Co-authored-by: Alex Mihaiuc <69110671+foxmsft@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
* [PTRun]Add hotkey to the show telemetry event (#36869)
* [PTRun]Update the code for .NET 9.0.1 - remove workarounds (#36909)
* Revove some unneeded changes after pdating to .net9.1
* [RegistryPreview]Copy context menu, data tooltip, MULTI_SZ fix (#36631)
* add context menus
* string resources for contextmenu
* fix line break parsing for MULTI_SZ
* better presentation of multiline values and value tooltip
* cleanup
* [MWB] - refactoring "Common" classes - Common.Log.cs, Common.Receiver.cs (#35726)
* [PTRun]Add setting for different trigonometric units in Calculator (#36717)
* Added angle units to PowerToys Run Calculator plugin.
* Update Resources.resx
* Added GitHub SpellCheck rule for 'gradians'.
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [ci]Remove steps to build abstracted utilities packages (#36934)
* [Settings]Update GPO infobar icon, improve some pages and fix bugs (#33703)
* changes part 1
* fix xaml code
* changes part 2
* fix cmdNotFound page
* Update PowerOcrPage
* More Pages changed
* More Pages changed
* revert temporary change
* fix spelling
* add resw comment
* add resw comment
* Update MouseWihtoutBorderPage.xaml
* PowerPreview page
* workspaces page
* fix awake page gpo handling
* NewPlus page
* update new+ page!
* AdvancedPaste.xaml: Move Info bar.
* Update MouseJumpPanel.xaml
* Update GeneralPage.xaml
* fix position of info bar and some ui quirks
* fix xaml style
* fix string resources
* string changes
* prepare megre main
* update new+ page
* zoomit page
* various fixes
* [Common]NotificationUtil helper class with FileWatcher (#36720)
* add NotificationUtil helper with file watcher and cache
* fix spellcheck
* indentation
* [PTRun][Docs]Add YubicoOauthOTP to Third-Party plugins (#36761)
* [PTRun]Fixed typo in Value Generator messages (#36951)
* [AOT] Clean up some AOT issues in Advanced Paste module (#36297)
* Clean up the aot build issue.
* Merge main and clean up new AOT build issue
* Update LogEvent define.
* Update src/modules/AdvancedPaste/AdvancedPaste/Helpers/LogEvent.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* update typo bug
* Remove unused allow list item
* Create a new folder to place source generation context
* Merge main and rename LogEvent to AIServiceFormatEvent
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* [ZoomIt]React to gpo setting when run as standalone (#36975)
* [Settings]ImageResizer settings accessibility updates, fixes and refactor (#36903)
* Fix issue with missing Image Resizer unit and fit information in settings description.
* Fix accessibility issues on Edit and Remove buttons. Fix various issues and refactor view model and ImageSize. New resources for accessibility text formats.
* Fix unit test because of change to new preset width and height. Fix 2 unit tests having incorrect expected/actual orderings.
* Post-review update: accessibility strings now formatted within the converter, instead of via format strings; simplified encoder GUID collection declaration and retrieval.
* Minor example text fix.
* [Settings]Update "Back up" mentions when it should be used as a verb (#36965)
* Update Back up name
* Rename Backup to Back up
* [New+]Update last modified date to now for all templates created (#36133)
* Update last modified date to now for all templates created
* Now also set last update for directories. Thank you htcfreek!
* [ImageResizer][ci]Fix XAML style errors (#37009)
* [Settings] Add "new" labels to navigation for new utilities (#36939)
* initial implementation
* move new label to zoomit
* cleanup
* more cleanup
* fix XAML formatting
* update padding to 4px
* add badge to dashboard item
* fix XAML formatting
* Tweaking UX
---------
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [MWB]Fix helper process termination issue in service mode (#36892)
* [MWB] Changed to suppress the flow of the execution context
* Fix build after merge
* [MWB] Fix helper process termination issue in service mode
* Add some comments
* [runner]Fix crashes caused by wrong setting AllowDataDiagnostics registry value (#37015)
* Fix setting registry value
* Prevent future similar crashes
* [PTRun][Calculator]Error check when loading trigonometry mode (#37033)
* [ZoomIt]Fix transparent draw after changing another setting (#37042)
* [Settings]Fix ZoomIt page changing current directory (#37052)
* [ci]Remove vc tools version workaround (#37098)
* 0.88 changelog (#37056)
* 0.88 changelog
* Update README.md
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* Add installer hashes
* Fix aka.ms link for ZoomIt
* Add mention to the PTRun plugin's dll file version
* Update README.md
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
* Update README.md - update What's Planned to 0.89 (#37157)
Update README.md
Just a tiny update, as reference to 0.88 was missed.
* [ci]Proper workaround for the vc tools version check (#37130)
* Revert "[ci]Remove vc tools version workaround (#37098)"
This reverts commit 2c069ce708.
* Adopt the same workaround as in Terminal
* build: add a couple more signing variables to ESRP (#37328)
This is in support of some identity changes we need to make.
* [Docs] Update runner-ipc.md to fix broken links (#36994)
Update runner-ipc.md
Fix broken file links.
* [ContextMenu]Update win11 msix menus if wrong version is detected (#37289)
* [ContextMenus]Update win11 msix menus if wrong version
* Remove extra line in code
* [Build]Compatibility with VS17.3 and later, for C++23 <expected>(#37321)
[Build] compatibility with VS17.3 and later, for C++23 <expected> has been introduced in VS17.3.6, and std::expected has conflict/inconsistent with the makeshift (expected-lite)
* [Deps]Update .NET Packages from 9.0.1 to 9.0.2 (#37400)
* [Deps] Update NuGet package versions to 9.0.2
* [CI] Update NOTICE.md
* Ignore 0.0.0.0 versions as well for PowerToys files
* Verify we're not shipping any 0.0.0.0 files
* Add MSFT file that's expected as 0.0.0.0
* Fix spellcheck
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Fix bad merge
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Laszlo Nemeth <57342539+donlaci@users.noreply.github.com>
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
Co-authored-by: Ionuț Manța <ionut@janeasystems.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
Co-authored-by: PesBandi <127593627+PesBandi@users.noreply.github.com>
Co-authored-by: Wenjian Chern <55335597+Sophanatprime@users.noreply.github.com>
Co-authored-by: Youssef Victor <youssefvictor00@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: leileizhang <leilzh@microsoft.com>
Co-authored-by: Den Delimarsky 🔐 <sign@den.dev>
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
Co-authored-by: Shuai Yuan <128874481+shuaiyuanxx@users.noreply.github.com>
Co-authored-by: moooyo <42196638+moooyo@users.noreply.github.com>
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jerry Xu <n.xu@outlook.com>
Co-authored-by: Demitrius Nelon <denelon@microsoft.com>
Co-authored-by: Kai Tao <69313318+vanzue@users.noreply.github.com>
Co-authored-by: Connor Plante <150482134+plante-msft@users.noreply.github.com>
Co-authored-by: Connor Plante <connor.plante@gmail.com>
Co-authored-by: Domen Soklič <soklicd@gmail.com>
Co-authored-by: Hao Liu <liuhaobupt@163.com>
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: immi <iafullprogrammer@gmail.com>
Co-authored-by: Asif Islam <77113884+asif4318@users.noreply.github.com>
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
Co-authored-by: Dave Rayment <dave.rayment@gmail.com>
Co-authored-by: Neil McAlister <pingzing@users.noreply.github.com>
Co-authored-by: Mark Russinovich <markruss@microsoft.com>
Co-authored-by: Alex Mihaiuc <69110671+foxmsft@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: Michael Clayton <mike@kingslandconsulting.co.uk>
Co-authored-by: Nathan Gill <nathan.j.gill@outlook.com>
Co-authored-by: Daniel Nilsson <daniel.nilsson1989@gmail.com>
Co-authored-by: JackStuart <jack@jstuart.io>
Co-authored-by: Christian Gaarden Gaardmark <cgaarden@hotmail.com>
Co-authored-by: YDKK <YDKK@users.noreply.github.com>
Co-authored-by: Dustin L. Howett <duhowett@microsoft.com>
Co-authored-by: LNKLEO <LinkeyLeo@outlook.com>
Co-authored-by: Mike Griese <migrie@microsoft.com>
This moves the extension template out to its own solution (with the SDK manually packed into it for now)
I've tested that I can now zip this up, then unzip and string replace on it, and we'll get a fully deployable, runnable extension, like 🫰
* [Workspaces] implement the move feature (#35480)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* fix Move attribute after launch and snapshot
* Extend WindowArranger with PWA functionality to detect different PWA apps. PwaHelper moved to the common library
* fix repeat counter in the editor
* Code optimization
* code cleanup, optimization
* fix double-processing window
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* [KeyboardManager]Fix mapping shift to numpad (#35890)
* Keyboard Manger fix numpad as shift
Fixed shift not being released if a numpad key as shift.
* Added comments
* Fix typo
* Fix the numpad unlocked key not working if the locked version is overridden by shift
* Fix spelling check.
* Revert the VK_CLEAR change.
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [Analyzers] Update .editorconfig with rules to relax IDE errors (#36095)
* [Analyzers] Remove duplicate pascal case style from .editorconfig
* [Analyzers] Configured severity for individual IDE and CA rules showing as errors in VS
Set severity for IDE0005, IDE0008, IDE0016, IDE0018, IDE0019, IDE0021, IDE0022, IDE0023, IDE0025, IDE0027, IDE0028, IDE0029, IDE0031, IDE0032, IDE0034, IDE0036, IDE0039, IDE0042, IDE0044, IDE0045, IDE0046, IDE0047, IDE0057, IDE0051, IDE0052, IDE0054, IDE0055, IDE0056, IDE0057, IDE0059, IDE0060, IDE0061, IDE0063, IDE0071, IDE0073, IDE0074, IDE0075, IDE0077, IDE0078, IDE0083, IDE0090, IDE0100, IDE0130, IDE160, IDE180, IDE0200, IDE0240, IDE0250, IDE0251, IDE0260, IDE0270, IDE0290, IDE0300, IDE0301, IDE0305, IDE1005, IDE1006, CA1859, CA2022, CA2263
* [Analyzers] Fix mismatched analyzer descriptions
* [Analyzers] Fix misspelling
* Update .editorconfig
Made the following style rules `silent` instead of `suggestion`:
- Use explicit type instead of 'var'
- Use expression body for ...
- Use block-scoped namespace
* [Analyzers] Set IDE0290 to silent
* [Analyzers] Remove IDE1006 configuration from .editorconfig in favor of making exclusions for the few entries
* [Analyzers][Indexer] Add IDE1006 suppressions
* [Analyzers][Peek] Add IDE1006 suppression
* [Analyzers][MWB] Add IDE1006 suppression.
* [Analyzers][Plugins] Add IDE1006 suppression
* [Analyzers][ImageResizer] Suppress IDE0073 to retain original copyright
* [Analyzers] Remove IDE0073 severity change in .editorconfig
---------
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
* [Workspaces] PWA follow-up (#36217)
* [PTRun][Calculator]Allow scientific notation with lowercase 'e' (#36187)
* [Workspaces] Add encoder parameter to bitmap.save() (#36228)
* [Workspaces] Add encoder parameter to bitmap.save()
* 1 more call fixed
* Move repeated code to the csharp library
* [Workspaces] Implement store of app window's size and position (#36086)
* [Workspaces] Implement store of app window's size and position
* Modifying the default values to -1. The program will use the original default values for the first run.
* [ScreenRuler]Add setting to show the measurement in an extra unit (#35887)
* display ruler: supporting millimeter and other units
* Measurement Tool: UI Setting for an extra unit
* Update images
* spelling
* spelling
* suit code style
* Fix for code review
* remove weird file
* rename field
* [Deps]Update MSTest from 3.5.0 to 3.6.3 (#36115)
* Update MSTest from 3.5.0 to 3.6.3
* Use STA attributes that are now part of MSTest
* Adding Jerry to community.md (#36232)
Update COMMUNITY.md
* [Workspaces] Arranger: smart timer (#36096)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] Arranger: Reset wait timer after each successful arrange action
* fix merge error
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Upgrade to check-spelling v0.0.24 (#36235)
This upgrades to [v0.0.24](https://github.com/check-spelling/check-spelling/releases/tag/v0.0.24).
A number of GitHub APIs are being turned off shortly, so you need to upgrade or various uncertain outcomes will occur.
There's a new accessibility forbidden pattern:
> Do not use `(click) here` links
> For more information, see:
> * https://www.w3.org/QA/Tips/noClickHere
> * https://webaim.org/techniques/hypertext/link_text
> * https://granicus.com/blog/why-click-here-links-are-bad/
> * https://heyoka.medium.com/dont-use-click-here-f32f445d1021
```pl
(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:</|\]\()
```
There are some minor bugs that I'm aware of and which I've fixed since this release, but I don't expect to make another release this month.
I've added a pair of patterns for includes and pragmas. My argument is that the **compiler** will _generally_ tell you if you've misspelled an include and the **linker** will _generally_ tell you if you misspell a lib.
- There's a caveat here: If your include case-insensitively matches the referenced file (but doesn't properly match it), then unless you either use a case-sensitive file system (as opposed to case-preserving) or beg clang to warn, you won't notice when you make this specific mistake -- this matters in that a couple of Windows headers (e.g. Unknwn.h) have particular case and repositories don't tend to consistently/properly write them.
* Adjust to community.md, shifting jerry's github user name (#36242)
Update COMMUNITY.md
* [AOT compatible] Resolve AOT Build Error in Peek.UI (#36194)
* add partial for aot support
* add Microsoft.NET.ILLink.Tasks to packages.props
* format
* Revert "format"
This reverts commit 742d5e2214.
* add Microsoft.NET.ILLink.Tasks to notice.md
* add auto reference
* update script to remove the 'Auto-reference line'
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Awake Updates - `TILLSON_11272024` (#36049)
* Update with bug fixes for tray icon and support for parent process
* Process information enum
* Update the docs
* Fix spelling
* Make sure that PID is used in PT config flow
* Logic for checks based on #34148
* Update with link to PR
* Fixes#34717
* Small cleanup
* Proper task segmentation in a function
* Cleanup the code
* Fix synchronization context issue
* Update planning doc
* Test disabling caching to see if that manages to pass CI
* Cleanup to make sure that we're logging things properly.
* Update ci.yml
* Disable cache to pass CI
* Retry logic
* Cleanup
* Code cleanup
* Fixes#35848
* Update notes and codename
* After third attempt, log error instead of throwing exception
* More cleanup to avoid double execution
* Add expected word
* Safeguards for bad values for timed keep-awake
* More updates to make sure I am using uint
* Update error message
* Update packages
* Fix notice and revert CsWinRT upgrade
* Codename update
* Update expect.txt
* Update the struct
* Ensuring we're properly awaiting tray initialization
* Update to make sure tray reflects the bound process
* Cleanup, proper JSON serialization for logs.
* Not needed.
* Add command validation logic
* Moving the initialization logic earlier
* Make sure we show the display state in the tooltip
* Update tray string
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update logic for icon resets
* Update doc
* Simplify function for setting mode shell icon
* Issues should be properly linked
* Minor cleanup
* Update timed behavior
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Workspaces] detecting right app version (#36100)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] fix detection of specific version of apps
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Move the XamlStyler config to src/ (#36202)
my never ending goal to minimize files in the root dir
* [AdvancedPaste]Add Semantic Kernel opt-in to allow chaining of paste actions (#35902)
* [AdvancedPaste] Semantic Kernel support
* Changed log-line with potentially sensitive info
* Spellcheck issues
* Various improvements for Semantic Kernel
* Spellcheck issue
* Refactored Clipboard routines
* Added integration tests for KernelService
* Extra telemetry for AdvancedPaste
* Added 'Hotkey' suffix to AdvancedPaste_Settings telemetry event
* Added IsSavedQuery
* Added KernelQueryCache
* Refactoring
* Added KernelQueryCache to BugReportTool delete list
* Added opt-n for Semantic Kernel
* Fixed bug with KernelQueryCache
* Ability to view last AI chat message on error
* Improved kernel query cache
* Used System.IO.Abstractions and improved tests
* Fixed under-count of token usage
* Used Semantic Kernel icon
* Cleanup
* Add missing EndProject line
* Fix dependency version conflicts
* Fix NOTICE.md
* Correct place of SemanticKernel in NOTICE.md
* Unlinked CustomPreview toggle from AI
* Added Microsoft.Bcl.AsyncInterfaces dependency to AdvancedPaste
* Fixed NOTICE.md order
* Moved Custom Preview to behaviour section
* Made Image to Text raise error on empty output
* Added AIServiceBatchIntegrationTests
* Updated AIServiceBatchIntegrationTests
* Added prompt moderation
* Moved GPO Infobar to better location
* [Launcher]Port from WPF-UI to .NET 9 WPF (#36215)
* Initial implementation
* Fix fluent style
* Fix no endline
* Update expect.txt
* Fix formatting
* Fix light theme looking bad on Windows 10
* fix formatting
* test change
* Now really fixed W10
* Add a comment
* Fix typos
* Fix spellcheck errors
* Fix spellcheck pattern for websites
* Change patterns for spellcheck in the right file
* Fix XAML styling
* Fix contrast colors on W11
* Fix formatting
* Removed emty line
* Fix formatting
* Added comment to fluentHC file
* fix comment
* Fix Windows10 again.
Adress feedback.
* W11 fix chaning from high contrast to normal not having correct background
* W10 Fix high contrast not working after switching from light/dark moed
* Address feedback
* Fix formatting
* Second W11 fix chaning from high contrast to normal not having correct background
* [UX]Updating New+ and Settings icons (#36290)
* Updated icons
* Updating more icons and icos
* [Settings][Dashboard] Accessibility fixes (#36280)
* make narrator announce buttons/toggles
* add toggles module name
* [ci]Sign OpenAI dll that's not signed (#36299)
* Update CODEOWNERS to include gordon, jerry and kayla (#36308)
* Update CODEOWNERS
* Update names.txt
* Making the powertoys-code-owners team code owners (#36310)
* Update CODEOWNERS
* Update names.txt
* Update CODEOWNERS
* [FZEditor]Fix Create new layout dialog radio buttons IsChecked values (#36320)
* 0.87 changelog (#36335)
* 0.87 changelog
* Fix spellcheck
* Update README.md
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [PTRun]Fix WPF transparent border issue on Windows 10 (#36392)
* Added border on W10
* Added a comment
---------
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
* [PTRun]Fix .NET 9 crash in OneNote (#36417)
* Fix crash in OneNote Run
* added better comment
* [AdvancedPaste]Fix NullReferenceException on Dispose (#36428)
[AdvancedPaste] Fixed NullReferenceException on Dispose
* [Fuzz] Add fuzz testing for AdvancedPaste and new pipeline for onboarding OneFuzz (#36329)
* add fuzz
* install .net8
* add spelling check
* refine the pipeline
* add readme and update the test code
* fix spelling error
* change to weekly run
* Add New CI Pipeline for Latest WindowsAppSDK (#36282)
This PR introduces the following changes to the CI pipeline and version management:
Pipeline Enhancements:
1. Added a new script UpdateVersions.ps1 to automate the update of Microsoft.WindowsAppSDK versions across various project files.
2. Introduced a new pipeline configuration ci-using-the-latest-winappsdk.yml to build using the latest Microsoft.WindowsAppSDK.
3. Updated existing pipeline configurations to support the new useLatestWinAppSDK parameter.
Pipeline Configuration Updates:
1. Updated job-build-project.yml to handle the useLatestWinAppSDK parameter and adjust the RestoreAdditionalProjectSourcesArg accordingly.
2. Added a new template steps-update-winappsdk-and-restore-nuget.yml for updating and restoring NuGet packages with the latest Microsoft.WindowsAppSDK.
3. Added WinAPPSDK version selection, the pipeline can be manually triggered to use the specified version.
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [AOT compatible] Make HostsUILib become AOT compatible (#36136)
* Remove AOT configuration
* Refer to AOT compatibility props
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [AOT compatible] Clean up some AOT build issue in FilePreviewCommon and MarkdownPreviewHandler (#36207)
* Use AppContext.BaseDirectory to replace assembly.GetExeAseembly.Location.
Fix json serilizer aot issue.
* clean up some AOT build issue
* Update src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Update src/common/FilePreviewCommon/Formatters/JsonFormatter.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Add new pipeline using the latest webview2 from Edge Canary (#36317)
* using the latest webview2 for testing
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Bug fix] Making the OpenAI key configuration page scrollable. (#36359)
* Fixed#34470
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
* [Bug fix] Add a format validation step before format conversion. (#36404)
This PR aims to fix the bug #35225 by introducing a new method IsJson to determine if a given text is in JSON format.
The IsJson method is then utilized in the ToJsonFromXmlOrCsvAsync method to optimize the processing logic.
If the text is already in JSON format, it is returned directly without further conversion from XML or CSV.
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* Add more STCA team members (#36438)
* Add more STCA team members
* Include more spelling check errors
* Remove non-alpha in dictionary
* Add Zhaopeng Wang
* Fix spell checking error
* Remove "prerelease: true" (#36484)
* Remove "prerelease: true"
The Microsoft.WinGet.DSC module is GA so prerelease: true is no longer needed.
* Update expect.txt
fixing spellcheck warning
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Docs]Update README for 0.87.1 release (#36534)
* [CI] Enhance build Pipeline Reliability with Retry Logic and Improved Error Messaging (#36529)
* update pipeline with retry
* remove tests
* Add team member (#36590)
* [New+]Don't override New actions from Explorer on Windows 10 (#36467)
* [New+]Don't override New actions from Explorer
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Add pattern for learn.microsoft links
* Also only Query for context menu
* [PTRun][Calculator]Handle hexadecimal numbers to not return divide by 0 error (#36390)
* add '0x' handling for divide by 0 scenarios
* fix comment on division by 0 check
---------
Co-authored-by: Connor Plante <connor.plante@gmail.com>
* [TextExtractor]Minor UI/Accessibility fixes in the overlay UI (#36356)
minor UI and accessibility fixes
* [PTRun][Calculator]Update mages to v3.0.0 and support for `randi(n)` (#36560)
* update to mages 3.0.0
* allow randi() in calculator plugin
* fix tests and input validation
* fix spell check
* [QuickAccent]Added ć for Slovenian (#36336) (#36338)
* Fix snapping Workspaces Editor to Fancy Zones (#36463)
* Remove Workspaces Editor from Fancy Zone's excluded app list
* removed unused string
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
* [PTRun]Fix drag on .NET 9 WPF (#36635)
* [CQ]Continued to move stuff out of root - Solution.props (#36244)
* [QuickAccent]Add Proto-Indo-European (#36408)
* Add ḱ to PowerAccent for Proto-Indo-European
* Fix Spelling Check
* Add more letters to PIE
* Order PIE after PI
---------
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [PTRun]Add context buttons for VSCodeWorkspaces plugin (#36517)
* [Settings][QuickAccent]Change 'character set' to plural form (#36565)
* [PTRun][Calculator]Fix unit tests on non-english systems (#36569)
* fix tests
* update comment
* [PTRun][Calc]Improve handling of non-base 10 numbers (#36700)
* [Settings][PTRun]Show plugin version and website (#36580)
* [Monaco]Add support for .resx and .resw preview support. (#36499)
Added support for .resx and .resw preview support. These files are XML based files so I added the file extensions as part of the registerAdditionalLanguage("xmlExt"...) function.
* [Settings] Add Workspaces' workspaces.json file to backup/restore list (#36714)
* [Localization] Fix loc pipeline to send downloaded localized files to TDBuild upon retry after failure (#36766)
* [AdvancedPaste]Fixed issues with Screen Reader integration (#36778)
* Remove Advent calendar from README (#36777)
* Remove Advent calendar from README
* Update hero image
* Delete doc/images/overview/PT_holiday_hero_image.png
* [AdvancedPaste]Add all BitmapDecoder supported image filetypes to ImageToText (#35600)
Adds support to ImageToText for all image filetypes supported by BitmapDecoder.
* [AOT]Clean up some AOT build issues in PowerAccent.Core (#36264)
* init
* Use AotCompatibility instead
* Replace typeof(Lanaguge) with GetValues<Language>
* Create new folder to place source generation context file.
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [WinUI3]Fix Windows 10 title bar borders (#36429)
* Fix borders for windows in the Settings UI
* Fix HOSTS window
* Fix Advanced Paste
* Fix Environment Variables
* Fix File Locksmith
* Fix Peek, with a caveat
* Fix Registry Preview
* Remove unused imports
* Clean up imports in OobeShellPage
* Move OSVersionHelper from Common.UI up into ManagedCommon
* [QuickAccent]Fix unstable language loading (#36721)
* [Peek]Bring into foreground if previously minimized (#36506)
Added Activate() to bring Peek.UI window into focus upon Toggle. This allows the UI to be presented even if it was previously minimized.
* Update Run docs README (#36857)
* Update Run docs README
* Remove System dupe
* [Monaco]Make minimap toggleable (#33742)
* [Monaco]Fix Json format preview setting (#36867)
* [KBM]Added option for exact match shortcut (#36000)
* Added option for exact match shortcut
* Fix spell-check
* [Deps][Security]Update .NET Packages from 9.0.0 to 9.0.1 (#36879)
* [Deps] Update NuGet packages to version 9.0.1
Updated several NuGet packages from version 9.0.0 to 9.0.1, including:
- Microsoft.Data.Sqlite
- Microsoft.Bcl.AsyncInterfaces
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Logging
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Hosting
- Microsoft.Extensions.Hosting.WindowsServices
- Microsoft.Win32.SystemEvents
- Microsoft.Windows.Compatibility
- System.CodeDom
- System.ComponentModel.Composition
- System.Configuration.ConfigurationManager
- System.Data.OleDb
- System.Diagnostics.EventLog
- System.Diagnostics.PerformanceCounter
- System.Drawing.Common
- System.Management
- System.Runtime.Caching
- System.ServiceProcess.ServiceController
- System.Text.Encoding.CodePages
- System.Text.Json
* [Deps] Update NOTICE.md
* [Peek]Fix using the correct Monaco assets at runtime (#36890)
* [Workspaces] fixing bug: editor starts outside of visible desktop area (#36769)
* [Workspaces] fixing bug: editor starts outside of visible desktop area
* Update src/modules/Workspaces/WorkspacesEditor/MainWindow.xaml.cs
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
---------
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
* [Workspaces] Saving app properties on launch and recapture (#36751)
* [Workspaces] Implementing set and get GUID to/from HWND to distinguish windows moved by the Workspaces tool
* After launch and capture copy the CLI args from the "original" project
* Fix getting GUID
* spell check
* modification to be able to handle different data sizes on different systems
* code optimisation
* Replacing string parameter by InvokePoint
* renaming variable
* [AdvancedPaste]Use background thread for interactions between runner and Advanced Paste (#36858)
* [Advanced Paste] Use background thread for runner-Advanced Paste interaction
* Fixed typo
* [VCM]Deprecate the Video Conference Mute utility (#36772)
* Remove all VideoConferenceMute related code and files
* Clean up vcm driver registry keys
* Also remove the Webcam report tool
* Also clean out video conference on the installer
* Fix spellcheck
* Remove comment about video conf
* Update gpo files revision
* Revert removing the VCM policies
* Deprecate VCM GPO policy
* Change deprecation message to show first supported version
* Tweak supported strings in the adml
* Goodbye friends, you are forever part of the team (#36905)
* Goodbye friends
Forever part of the team 😢
* Update COMMUNITY.md
* Fix formatting issues in COMMUNITY.md
* [New utility]Sysinternals ZoomIt (#35880)
* ZoomIt initial code dump
* Change vcxproj to normalize dependency versions
* Fix code quality to build
* Add to PowerToys solution
* Clean out C-style casts
* Fix some more analyzer errors
* Constexpr a function
* Disable some warnings locally that it seemed better not to touch
* Add ZoomIt module interface
* Add GPO
* Add Settings page with Enable button
* Output as PowerToys.ZoomIt.exe
* Extract ZoomIt Settings definition to its own header
* Make ZoomItModuleInterface build with ZoomItSettings too
* WinRT C++ interop for ZoomItSettings
* From Registry To PowerToys Json
* Properly fix const_cast analyzer error
* Initial Settings page loading from registry
* Zoom mode settings
* Save settings
* Add file picker and DemoType file support
* Remaining DemoType settings
* Have ZoomIt properly reloading Settings and exiting
* Remove context menu entries for Options and Exit
* ZoomIt simple Break Options
* Break advanced options
* Simple Record settings
* Record Microphone setting
* Fix break background file picker title
* Font setting
* Fix build issues after merge
* Add ZoomIt conflict warning to Settings
* Exclude Eula from spell checking
* Fix spellcheck errors
* Fix spell check for accelerated menu items
* Remove cursor files from spellcheck. They're binary
* Fix forbidden patterns
* Fix XAML style
* Fix C# analyzers
* Fix signing
* Also sign module interface dll
* Use actual ZoomIt icon
* Add OOBE page for ZoomIt
* ZoomIt image for Settings
* Flyout and Dashboard entries
* Fix type speed slider labels
* Correctly load default Font
* Correctly register shortcuts on ZoomIt startup first run
* Fix modifier keys not changing until restart
* Show MsgBox on taken shortcut
* Start PowerToys Settings
* Normalize ZoomIt file properties with rest of PowerToys
* Add attribution
* Add ZoomIt team to Community.md
* More copyright adjustments
* Fix spellcheck
* Fix MsgBox simultaneous instance to the front
* Add mention of capturevideosample code use
* Add ZoomIt to process lists
* Add telemetry
* Add logging
* React to gpo
* Normalize code to space identation
* Fix installer build
* Localize percent setting
* Fix XAML styling
* Update src/settings-ui/Settings.UI/Strings/en-us/Resources.resw
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
* Fix spellcheck
* One more spellcheck fix
* Integrate LiveDraw feature changes from upstream
* Fix name reuse in same scope
* Fix c-style casts
* Also register LIVEDRAW_HOTKEY
* Fix newLiveZoomToggleKey
* Update LiveZoom description in Settings to take LiveDraw into account
* Fix spellcheck
* Fix more spellcheck
* Fix Sysinternals capitalization
* Fix ARM64 Debug build
* Support Sysinternals build (#36873)
* Remove unneeded files
* Make build compatible with Sysinternals
* Separate PowerToys ZoomIt product name (#36887)
* Separate PowerToys ZoomIt product name
To help maintain the Sysinternals branding in the standalone version.
* Clarify branding-related includes
* Remove ZoomIt.sln
* Add foxmsft to spell-check names
* Add ZoomIt to README
* Add ZoomIt to GH templates
* Add ZoomIt events to DATA_AND_PRIVACY.md
* Remove publish_config.json
* Remove publish_config.json from vcxproj too
---------
Co-authored-by: Mark Russinovich <markruss@microsoft.com>
Co-authored-by: Alex Mihaiuc <69110671+foxmsft@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
* [PTRun]Add hotkey to the show telemetry event (#36869)
* [PTRun]Update the code for .NET 9.0.1 - remove workarounds (#36909)
* Revove some unneeded changes after pdating to .net9.1
* [RegistryPreview]Copy context menu, data tooltip, MULTI_SZ fix (#36631)
* add context menus
* string resources for contextmenu
* fix line break parsing for MULTI_SZ
* better presentation of multiline values and value tooltip
* cleanup
* [MWB] - refactoring "Common" classes - Common.Log.cs, Common.Receiver.cs (#35726)
* [PTRun]Add setting for different trigonometric units in Calculator (#36717)
* Added angle units to PowerToys Run Calculator plugin.
* Update Resources.resx
* Added GitHub SpellCheck rule for 'gradians'.
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [ci]Remove steps to build abstracted utilities packages (#36934)
* [Settings]Update GPO infobar icon, improve some pages and fix bugs (#33703)
* changes part 1
* fix xaml code
* changes part 2
* fix cmdNotFound page
* Update PowerOcrPage
* More Pages changed
* More Pages changed
* revert temporary change
* fix spelling
* add resw comment
* add resw comment
* Update MouseWihtoutBorderPage.xaml
* PowerPreview page
* workspaces page
* fix awake page gpo handling
* NewPlus page
* update new+ page!
* AdvancedPaste.xaml: Move Info bar.
* Update MouseJumpPanel.xaml
* Update GeneralPage.xaml
* fix position of info bar and some ui quirks
* fix xaml style
* fix string resources
* string changes
* prepare megre main
* update new+ page
* zoomit page
* various fixes
* [Common]NotificationUtil helper class with FileWatcher (#36720)
* add NotificationUtil helper with file watcher and cache
* fix spellcheck
* indentation
* [PTRun][Docs]Add YubicoOauthOTP to Third-Party plugins (#36761)
* [PTRun]Fixed typo in Value Generator messages (#36951)
* [AOT] Clean up some AOT issues in Advanced Paste module (#36297)
* Clean up the aot build issue.
* Merge main and clean up new AOT build issue
* Update LogEvent define.
* Update src/modules/AdvancedPaste/AdvancedPaste/Helpers/LogEvent.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* update typo bug
* Remove unused allow list item
* Create a new folder to place source generation context
* Merge main and rename LogEvent to AIServiceFormatEvent
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* [ZoomIt]React to gpo setting when run as standalone (#36975)
* [Settings]ImageResizer settings accessibility updates, fixes and refactor (#36903)
* Fix issue with missing Image Resizer unit and fit information in settings description.
* Fix accessibility issues on Edit and Remove buttons. Fix various issues and refactor view model and ImageSize. New resources for accessibility text formats.
* Fix unit test because of change to new preset width and height. Fix 2 unit tests having incorrect expected/actual orderings.
* Post-review update: accessibility strings now formatted within the converter, instead of via format strings; simplified encoder GUID collection declaration and retrieval.
* Minor example text fix.
* [Settings]Update "Back up" mentions when it should be used as a verb (#36965)
* Update Back up name
* Rename Backup to Back up
* [New+]Update last modified date to now for all templates created (#36133)
* Update last modified date to now for all templates created
* Now also set last update for directories. Thank you htcfreek!
* [ImageResizer][ci]Fix XAML style errors (#37009)
* [Settings] Add "new" labels to navigation for new utilities (#36939)
* initial implementation
* move new label to zoomit
* cleanup
* more cleanup
* fix XAML formatting
* update padding to 4px
* add badge to dashboard item
* fix XAML formatting
* Tweaking UX
---------
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [MWB]Fix helper process termination issue in service mode (#36892)
* [MWB] Changed to suppress the flow of the execution context
* Fix build after merge
* [MWB] Fix helper process termination issue in service mode
* Add some comments
* [runner]Fix crashes caused by wrong setting AllowDataDiagnostics registry value (#37015)
* Fix setting registry value
* Prevent future similar crashes
* [PTRun][Calculator]Error check when loading trigonometry mode (#37033)
* [ZoomIt]Fix transparent draw after changing another setting (#37042)
* [Settings]Fix ZoomIt page changing current directory (#37052)
* [ci]Remove vc tools version workaround (#37098)
* 0.88 changelog (#37056)
* 0.88 changelog
* Update README.md
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* Add installer hashes
* Fix aka.ms link for ZoomIt
* Add mention to the PTRun plugin's dll file version
* Update README.md
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
* Update README.md - update What's Planned to 0.89 (#37157)
Update README.md
Just a tiny update, as reference to 0.88 was missed.
* [ci]Proper workaround for the vc tools version check (#37130)
* Revert "[ci]Remove vc tools version workaround (#37098)"
This reverts commit 2c069ce708.
* Adopt the same workaround as in Terminal
* build: add a couple more signing variables to ESRP (#37328)
This is in support of some identity changes we need to make.
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Laszlo Nemeth <57342539+donlaci@users.noreply.github.com>
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
Co-authored-by: Ionuț Manța <ionut@janeasystems.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
Co-authored-by: PesBandi <127593627+PesBandi@users.noreply.github.com>
Co-authored-by: Wenjian Chern <55335597+Sophanatprime@users.noreply.github.com>
Co-authored-by: Youssef Victor <youssefvictor00@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: leileizhang <leilzh@microsoft.com>
Co-authored-by: Den Delimarsky 🔐 <sign@den.dev>
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
Co-authored-by: Shuai Yuan <128874481+shuaiyuanxx@users.noreply.github.com>
Co-authored-by: moooyo <42196638+moooyo@users.noreply.github.com>
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jerry Xu <n.xu@outlook.com>
Co-authored-by: Demitrius Nelon <denelon@microsoft.com>
Co-authored-by: Kai Tao <69313318+vanzue@users.noreply.github.com>
Co-authored-by: Connor Plante <150482134+plante-msft@users.noreply.github.com>
Co-authored-by: Connor Plante <connor.plante@gmail.com>
Co-authored-by: Domen Soklič <soklicd@gmail.com>
Co-authored-by: Hao Liu <liuhaobupt@163.com>
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: immi <iafullprogrammer@gmail.com>
Co-authored-by: Asif Islam <77113884+asif4318@users.noreply.github.com>
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
Co-authored-by: Dave Rayment <dave.rayment@gmail.com>
Co-authored-by: Neil McAlister <pingzing@users.noreply.github.com>
Co-authored-by: Mark Russinovich <markruss@microsoft.com>
Co-authored-by: Alex Mihaiuc <69110671+foxmsft@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: Michael Clayton <mike@kingslandconsulting.co.uk>
Co-authored-by: Nathan Gill <nathan.j.gill@outlook.com>
Co-authored-by: Daniel Nilsson <daniel.nilsson1989@gmail.com>
Co-authored-by: JackStuart <jack@jstuart.io>
Co-authored-by: Christian Gaarden Gaardmark <cgaarden@hotmail.com>
Co-authored-by: YDKK <YDKK@users.noreply.github.com>
Co-authored-by: Dustin L. Howett <duhowett@microsoft.com>
Title
This is just a much simpler keybind. It harkens the mind to `alt+space`, without actually stealing that keybinding.
I recommend `ctrl+alt+space` for the dev version (though, I'm not setting that for you)
I think this pilfers the `InvokeAsync` as mentioned in #333
WE can't use the actual version for the same reason we can't use that one TryEnqueue extension - the WCT MD Text block we're on uses a different version of the WCT than the latest version, so the two get confused.
We can remove this pilfered copy after either #245 or #219Closes#333
Fixes#345
This adds a pair of variables to allow us to set the CmdPal version separately from the PT version.
Also fixes up some naming of the nuget package
* [Workspaces] implement the move feature (#35480)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* fix Move attribute after launch and snapshot
* Extend WindowArranger with PWA functionality to detect different PWA apps. PwaHelper moved to the common library
* fix repeat counter in the editor
* Code optimization
* code cleanup, optimization
* fix double-processing window
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* [KeyboardManager]Fix mapping shift to numpad (#35890)
* Keyboard Manger fix numpad as shift
Fixed shift not being released if a numpad key as shift.
* Added comments
* Fix typo
* Fix the numpad unlocked key not working if the locked version is overridden by shift
* Fix spelling check.
* Revert the VK_CLEAR change.
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [Analyzers] Update .editorconfig with rules to relax IDE errors (#36095)
* [Analyzers] Remove duplicate pascal case style from .editorconfig
* [Analyzers] Configured severity for individual IDE and CA rules showing as errors in VS
Set severity for IDE0005, IDE0008, IDE0016, IDE0018, IDE0019, IDE0021, IDE0022, IDE0023, IDE0025, IDE0027, IDE0028, IDE0029, IDE0031, IDE0032, IDE0034, IDE0036, IDE0039, IDE0042, IDE0044, IDE0045, IDE0046, IDE0047, IDE0057, IDE0051, IDE0052, IDE0054, IDE0055, IDE0056, IDE0057, IDE0059, IDE0060, IDE0061, IDE0063, IDE0071, IDE0073, IDE0074, IDE0075, IDE0077, IDE0078, IDE0083, IDE0090, IDE0100, IDE0130, IDE160, IDE180, IDE0200, IDE0240, IDE0250, IDE0251, IDE0260, IDE0270, IDE0290, IDE0300, IDE0301, IDE0305, IDE1005, IDE1006, CA1859, CA2022, CA2263
* [Analyzers] Fix mismatched analyzer descriptions
* [Analyzers] Fix misspelling
* Update .editorconfig
Made the following style rules `silent` instead of `suggestion`:
- Use explicit type instead of 'var'
- Use expression body for ...
- Use block-scoped namespace
* [Analyzers] Set IDE0290 to silent
* [Analyzers] Remove IDE1006 configuration from .editorconfig in favor of making exclusions for the few entries
* [Analyzers][Indexer] Add IDE1006 suppressions
* [Analyzers][Peek] Add IDE1006 suppression
* [Analyzers][MWB] Add IDE1006 suppression.
* [Analyzers][Plugins] Add IDE1006 suppression
* [Analyzers][ImageResizer] Suppress IDE0073 to retain original copyright
* [Analyzers] Remove IDE0073 severity change in .editorconfig
---------
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
* [Workspaces] PWA follow-up (#36217)
* [PTRun][Calculator]Allow scientific notation with lowercase 'e' (#36187)
* [Workspaces] Add encoder parameter to bitmap.save() (#36228)
* [Workspaces] Add encoder parameter to bitmap.save()
* 1 more call fixed
* Move repeated code to the csharp library
* [Workspaces] Implement store of app window's size and position (#36086)
* [Workspaces] Implement store of app window's size and position
* Modifying the default values to -1. The program will use the original default values for the first run.
* [ScreenRuler]Add setting to show the measurement in an extra unit (#35887)
* display ruler: supporting millimeter and other units
* Measurement Tool: UI Setting for an extra unit
* Update images
* spelling
* spelling
* suit code style
* Fix for code review
* remove weird file
* rename field
* [Deps]Update MSTest from 3.5.0 to 3.6.3 (#36115)
* Update MSTest from 3.5.0 to 3.6.3
* Use STA attributes that are now part of MSTest
* Adding Jerry to community.md (#36232)
Update COMMUNITY.md
* [Workspaces] Arranger: smart timer (#36096)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] Arranger: Reset wait timer after each successful arrange action
* fix merge error
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Upgrade to check-spelling v0.0.24 (#36235)
This upgrades to [v0.0.24](https://github.com/check-spelling/check-spelling/releases/tag/v0.0.24).
A number of GitHub APIs are being turned off shortly, so you need to upgrade or various uncertain outcomes will occur.
There's a new accessibility forbidden pattern:
> Do not use `(click) here` links
> For more information, see:
> * https://www.w3.org/QA/Tips/noClickHere
> * https://webaim.org/techniques/hypertext/link_text
> * https://granicus.com/blog/why-click-here-links-are-bad/
> * https://heyoka.medium.com/dont-use-click-here-f32f445d1021
```pl
(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:</|\]\()
```
There are some minor bugs that I'm aware of and which I've fixed since this release, but I don't expect to make another release this month.
I've added a pair of patterns for includes and pragmas. My argument is that the **compiler** will _generally_ tell you if you've misspelled an include and the **linker** will _generally_ tell you if you misspell a lib.
- There's a caveat here: If your include case-insensitively matches the referenced file (but doesn't properly match it), then unless you either use a case-sensitive file system (as opposed to case-preserving) or beg clang to warn, you won't notice when you make this specific mistake -- this matters in that a couple of Windows headers (e.g. Unknwn.h) have particular case and repositories don't tend to consistently/properly write them.
* Adjust to community.md, shifting jerry's github user name (#36242)
Update COMMUNITY.md
* [AOT compatible] Resolve AOT Build Error in Peek.UI (#36194)
* add partial for aot support
* add Microsoft.NET.ILLink.Tasks to packages.props
* format
* Revert "format"
This reverts commit 742d5e2214.
* add Microsoft.NET.ILLink.Tasks to notice.md
* add auto reference
* update script to remove the 'Auto-reference line'
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Awake Updates - `TILLSON_11272024` (#36049)
* Update with bug fixes for tray icon and support for parent process
* Process information enum
* Update the docs
* Fix spelling
* Make sure that PID is used in PT config flow
* Logic for checks based on #34148
* Update with link to PR
* Fixes#34717
* Small cleanup
* Proper task segmentation in a function
* Cleanup the code
* Fix synchronization context issue
* Update planning doc
* Test disabling caching to see if that manages to pass CI
* Cleanup to make sure that we're logging things properly.
* Update ci.yml
* Disable cache to pass CI
* Retry logic
* Cleanup
* Code cleanup
* Fixes#35848
* Update notes and codename
* After third attempt, log error instead of throwing exception
* More cleanup to avoid double execution
* Add expected word
* Safeguards for bad values for timed keep-awake
* More updates to make sure I am using uint
* Update error message
* Update packages
* Fix notice and revert CsWinRT upgrade
* Codename update
* Update expect.txt
* Update the struct
* Ensuring we're properly awaiting tray initialization
* Update to make sure tray reflects the bound process
* Cleanup, proper JSON serialization for logs.
* Not needed.
* Add command validation logic
* Moving the initialization logic earlier
* Make sure we show the display state in the tooltip
* Update tray string
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update logic for icon resets
* Update doc
* Simplify function for setting mode shell icon
* Issues should be properly linked
* Minor cleanup
* Update timed behavior
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Workspaces] detecting right app version (#36100)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] fix detection of specific version of apps
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Move the XamlStyler config to src/ (#36202)
my never ending goal to minimize files in the root dir
* [AdvancedPaste]Add Semantic Kernel opt-in to allow chaining of paste actions (#35902)
* [AdvancedPaste] Semantic Kernel support
* Changed log-line with potentially sensitive info
* Spellcheck issues
* Various improvements for Semantic Kernel
* Spellcheck issue
* Refactored Clipboard routines
* Added integration tests for KernelService
* Extra telemetry for AdvancedPaste
* Added 'Hotkey' suffix to AdvancedPaste_Settings telemetry event
* Added IsSavedQuery
* Added KernelQueryCache
* Refactoring
* Added KernelQueryCache to BugReportTool delete list
* Added opt-n for Semantic Kernel
* Fixed bug with KernelQueryCache
* Ability to view last AI chat message on error
* Improved kernel query cache
* Used System.IO.Abstractions and improved tests
* Fixed under-count of token usage
* Used Semantic Kernel icon
* Cleanup
* Add missing EndProject line
* Fix dependency version conflicts
* Fix NOTICE.md
* Correct place of SemanticKernel in NOTICE.md
* Unlinked CustomPreview toggle from AI
* Added Microsoft.Bcl.AsyncInterfaces dependency to AdvancedPaste
* Fixed NOTICE.md order
* Moved Custom Preview to behaviour section
* Made Image to Text raise error on empty output
* Added AIServiceBatchIntegrationTests
* Updated AIServiceBatchIntegrationTests
* Added prompt moderation
* Moved GPO Infobar to better location
* [Launcher]Port from WPF-UI to .NET 9 WPF (#36215)
* Initial implementation
* Fix fluent style
* Fix no endline
* Update expect.txt
* Fix formatting
* Fix light theme looking bad on Windows 10
* fix formatting
* test change
* Now really fixed W10
* Add a comment
* Fix typos
* Fix spellcheck errors
* Fix spellcheck pattern for websites
* Change patterns for spellcheck in the right file
* Fix XAML styling
* Fix contrast colors on W11
* Fix formatting
* Removed emty line
* Fix formatting
* Added comment to fluentHC file
* fix comment
* Fix Windows10 again.
Adress feedback.
* W11 fix chaning from high contrast to normal not having correct background
* W10 Fix high contrast not working after switching from light/dark moed
* Address feedback
* Fix formatting
* Second W11 fix chaning from high contrast to normal not having correct background
* [UX]Updating New+ and Settings icons (#36290)
* Updated icons
* Updating more icons and icos
* [Settings][Dashboard] Accessibility fixes (#36280)
* make narrator announce buttons/toggles
* add toggles module name
* [ci]Sign OpenAI dll that's not signed (#36299)
* Update CODEOWNERS to include gordon, jerry and kayla (#36308)
* Update CODEOWNERS
* Update names.txt
* Making the powertoys-code-owners team code owners (#36310)
* Update CODEOWNERS
* Update names.txt
* Update CODEOWNERS
* [FZEditor]Fix Create new layout dialog radio buttons IsChecked values (#36320)
* 0.87 changelog (#36335)
* 0.87 changelog
* Fix spellcheck
* Update README.md
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [PTRun]Fix WPF transparent border issue on Windows 10 (#36392)
* Added border on W10
* Added a comment
---------
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
* [PTRun]Fix .NET 9 crash in OneNote (#36417)
* Fix crash in OneNote Run
* added better comment
* [AdvancedPaste]Fix NullReferenceException on Dispose (#36428)
[AdvancedPaste] Fixed NullReferenceException on Dispose
* [Fuzz] Add fuzz testing for AdvancedPaste and new pipeline for onboarding OneFuzz (#36329)
* add fuzz
* install .net8
* add spelling check
* refine the pipeline
* add readme and update the test code
* fix spelling error
* change to weekly run
* Add New CI Pipeline for Latest WindowsAppSDK (#36282)
This PR introduces the following changes to the CI pipeline and version management:
Pipeline Enhancements:
1. Added a new script UpdateVersions.ps1 to automate the update of Microsoft.WindowsAppSDK versions across various project files.
2. Introduced a new pipeline configuration ci-using-the-latest-winappsdk.yml to build using the latest Microsoft.WindowsAppSDK.
3. Updated existing pipeline configurations to support the new useLatestWinAppSDK parameter.
Pipeline Configuration Updates:
1. Updated job-build-project.yml to handle the useLatestWinAppSDK parameter and adjust the RestoreAdditionalProjectSourcesArg accordingly.
2. Added a new template steps-update-winappsdk-and-restore-nuget.yml for updating and restoring NuGet packages with the latest Microsoft.WindowsAppSDK.
3. Added WinAPPSDK version selection, the pipeline can be manually triggered to use the specified version.
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [AOT compatible] Make HostsUILib become AOT compatible (#36136)
* Remove AOT configuration
* Refer to AOT compatibility props
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [AOT compatible] Clean up some AOT build issue in FilePreviewCommon and MarkdownPreviewHandler (#36207)
* Use AppContext.BaseDirectory to replace assembly.GetExeAseembly.Location.
Fix json serilizer aot issue.
* clean up some AOT build issue
* Update src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Update src/common/FilePreviewCommon/Formatters/JsonFormatter.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Add new pipeline using the latest webview2 from Edge Canary (#36317)
* using the latest webview2 for testing
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Bug fix] Making the OpenAI key configuration page scrollable. (#36359)
* Fixed#34470
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
* [Bug fix] Add a format validation step before format conversion. (#36404)
This PR aims to fix the bug #35225 by introducing a new method IsJson to determine if a given text is in JSON format.
The IsJson method is then utilized in the ToJsonFromXmlOrCsvAsync method to optimize the processing logic.
If the text is already in JSON format, it is returned directly without further conversion from XML or CSV.
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* Add more STCA team members (#36438)
* Add more STCA team members
* Include more spelling check errors
* Remove non-alpha in dictionary
* Add Zhaopeng Wang
* Fix spell checking error
* Remove "prerelease: true" (#36484)
* Remove "prerelease: true"
The Microsoft.WinGet.DSC module is GA so prerelease: true is no longer needed.
* Update expect.txt
fixing spellcheck warning
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Docs]Update README for 0.87.1 release (#36534)
* [CI] Enhance build Pipeline Reliability with Retry Logic and Improved Error Messaging (#36529)
* update pipeline with retry
* remove tests
* Add team member (#36590)
* [New+]Don't override New actions from Explorer on Windows 10 (#36467)
* [New+]Don't override New actions from Explorer
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Add pattern for learn.microsoft links
* Also only Query for context menu
* [PTRun][Calculator]Handle hexadecimal numbers to not return divide by 0 error (#36390)
* add '0x' handling for divide by 0 scenarios
* fix comment on division by 0 check
---------
Co-authored-by: Connor Plante <connor.plante@gmail.com>
* [TextExtractor]Minor UI/Accessibility fixes in the overlay UI (#36356)
minor UI and accessibility fixes
* [PTRun][Calculator]Update mages to v3.0.0 and support for `randi(n)` (#36560)
* update to mages 3.0.0
* allow randi() in calculator plugin
* fix tests and input validation
* fix spell check
* [QuickAccent]Added ć for Slovenian (#36336) (#36338)
* Fix snapping Workspaces Editor to Fancy Zones (#36463)
* Remove Workspaces Editor from Fancy Zone's excluded app list
* removed unused string
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
* [PTRun]Fix drag on .NET 9 WPF (#36635)
* [CQ]Continued to move stuff out of root - Solution.props (#36244)
* [QuickAccent]Add Proto-Indo-European (#36408)
* Add ḱ to PowerAccent for Proto-Indo-European
* Fix Spelling Check
* Add more letters to PIE
* Order PIE after PI
---------
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [PTRun]Add context buttons for VSCodeWorkspaces plugin (#36517)
* [Settings][QuickAccent]Change 'character set' to plural form (#36565)
* [PTRun][Calculator]Fix unit tests on non-english systems (#36569)
* fix tests
* update comment
* [PTRun][Calc]Improve handling of non-base 10 numbers (#36700)
* [Settings][PTRun]Show plugin version and website (#36580)
* [Monaco]Add support for .resx and .resw preview support. (#36499)
Added support for .resx and .resw preview support. These files are XML based files so I added the file extensions as part of the registerAdditionalLanguage("xmlExt"...) function.
* [Settings] Add Workspaces' workspaces.json file to backup/restore list (#36714)
* [Localization] Fix loc pipeline to send downloaded localized files to TDBuild upon retry after failure (#36766)
* [AdvancedPaste]Fixed issues with Screen Reader integration (#36778)
* Remove Advent calendar from README (#36777)
* Remove Advent calendar from README
* Update hero image
* Delete doc/images/overview/PT_holiday_hero_image.png
* [AdvancedPaste]Add all BitmapDecoder supported image filetypes to ImageToText (#35600)
Adds support to ImageToText for all image filetypes supported by BitmapDecoder.
* [AOT]Clean up some AOT build issues in PowerAccent.Core (#36264)
* init
* Use AotCompatibility instead
* Replace typeof(Lanaguge) with GetValues<Language>
* Create new folder to place source generation context file.
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [WinUI3]Fix Windows 10 title bar borders (#36429)
* Fix borders for windows in the Settings UI
* Fix HOSTS window
* Fix Advanced Paste
* Fix Environment Variables
* Fix File Locksmith
* Fix Peek, with a caveat
* Fix Registry Preview
* Remove unused imports
* Clean up imports in OobeShellPage
* Move OSVersionHelper from Common.UI up into ManagedCommon
* [QuickAccent]Fix unstable language loading (#36721)
* [Peek]Bring into foreground if previously minimized (#36506)
Added Activate() to bring Peek.UI window into focus upon Toggle. This allows the UI to be presented even if it was previously minimized.
* Update Run docs README (#36857)
* Update Run docs README
* Remove System dupe
* [Monaco]Make minimap toggleable (#33742)
* [Monaco]Fix Json format preview setting (#36867)
* [KBM]Added option for exact match shortcut (#36000)
* Added option for exact match shortcut
* Fix spell-check
* [Deps][Security]Update .NET Packages from 9.0.0 to 9.0.1 (#36879)
* [Deps] Update NuGet packages to version 9.0.1
Updated several NuGet packages from version 9.0.0 to 9.0.1, including:
- Microsoft.Data.Sqlite
- Microsoft.Bcl.AsyncInterfaces
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Logging
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Hosting
- Microsoft.Extensions.Hosting.WindowsServices
- Microsoft.Win32.SystemEvents
- Microsoft.Windows.Compatibility
- System.CodeDom
- System.ComponentModel.Composition
- System.Configuration.ConfigurationManager
- System.Data.OleDb
- System.Diagnostics.EventLog
- System.Diagnostics.PerformanceCounter
- System.Drawing.Common
- System.Management
- System.Runtime.Caching
- System.ServiceProcess.ServiceController
- System.Text.Encoding.CodePages
- System.Text.Json
* [Deps] Update NOTICE.md
* [Peek]Fix using the correct Monaco assets at runtime (#36890)
* [Workspaces] fixing bug: editor starts outside of visible desktop area (#36769)
* [Workspaces] fixing bug: editor starts outside of visible desktop area
* Update src/modules/Workspaces/WorkspacesEditor/MainWindow.xaml.cs
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
---------
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
* [Workspaces] Saving app properties on launch and recapture (#36751)
* [Workspaces] Implementing set and get GUID to/from HWND to distinguish windows moved by the Workspaces tool
* After launch and capture copy the CLI args from the "original" project
* Fix getting GUID
* spell check
* modification to be able to handle different data sizes on different systems
* code optimisation
* Replacing string parameter by InvokePoint
* renaming variable
* [AdvancedPaste]Use background thread for interactions between runner and Advanced Paste (#36858)
* [Advanced Paste] Use background thread for runner-Advanced Paste interaction
* Fixed typo
* [VCM]Deprecate the Video Conference Mute utility (#36772)
* Remove all VideoConferenceMute related code and files
* Clean up vcm driver registry keys
* Also remove the Webcam report tool
* Also clean out video conference on the installer
* Fix spellcheck
* Remove comment about video conf
* Update gpo files revision
* Revert removing the VCM policies
* Deprecate VCM GPO policy
* Change deprecation message to show first supported version
* Tweak supported strings in the adml
* Goodbye friends, you are forever part of the team (#36905)
* Goodbye friends
Forever part of the team 😢
* Update COMMUNITY.md
* Fix formatting issues in COMMUNITY.md
* [New utility]Sysinternals ZoomIt (#35880)
* ZoomIt initial code dump
* Change vcxproj to normalize dependency versions
* Fix code quality to build
* Add to PowerToys solution
* Clean out C-style casts
* Fix some more analyzer errors
* Constexpr a function
* Disable some warnings locally that it seemed better not to touch
* Add ZoomIt module interface
* Add GPO
* Add Settings page with Enable button
* Output as PowerToys.ZoomIt.exe
* Extract ZoomIt Settings definition to its own header
* Make ZoomItModuleInterface build with ZoomItSettings too
* WinRT C++ interop for ZoomItSettings
* From Registry To PowerToys Json
* Properly fix const_cast analyzer error
* Initial Settings page loading from registry
* Zoom mode settings
* Save settings
* Add file picker and DemoType file support
* Remaining DemoType settings
* Have ZoomIt properly reloading Settings and exiting
* Remove context menu entries for Options and Exit
* ZoomIt simple Break Options
* Break advanced options
* Simple Record settings
* Record Microphone setting
* Fix break background file picker title
* Font setting
* Fix build issues after merge
* Add ZoomIt conflict warning to Settings
* Exclude Eula from spell checking
* Fix spellcheck errors
* Fix spell check for accelerated menu items
* Remove cursor files from spellcheck. They're binary
* Fix forbidden patterns
* Fix XAML style
* Fix C# analyzers
* Fix signing
* Also sign module interface dll
* Use actual ZoomIt icon
* Add OOBE page for ZoomIt
* ZoomIt image for Settings
* Flyout and Dashboard entries
* Fix type speed slider labels
* Correctly load default Font
* Correctly register shortcuts on ZoomIt startup first run
* Fix modifier keys not changing until restart
* Show MsgBox on taken shortcut
* Start PowerToys Settings
* Normalize ZoomIt file properties with rest of PowerToys
* Add attribution
* Add ZoomIt team to Community.md
* More copyright adjustments
* Fix spellcheck
* Fix MsgBox simultaneous instance to the front
* Add mention of capturevideosample code use
* Add ZoomIt to process lists
* Add telemetry
* Add logging
* React to gpo
* Normalize code to space identation
* Fix installer build
* Localize percent setting
* Fix XAML styling
* Update src/settings-ui/Settings.UI/Strings/en-us/Resources.resw
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
* Fix spellcheck
* One more spellcheck fix
* Integrate LiveDraw feature changes from upstream
* Fix name reuse in same scope
* Fix c-style casts
* Also register LIVEDRAW_HOTKEY
* Fix newLiveZoomToggleKey
* Update LiveZoom description in Settings to take LiveDraw into account
* Fix spellcheck
* Fix more spellcheck
* Fix Sysinternals capitalization
* Fix ARM64 Debug build
* Support Sysinternals build (#36873)
* Remove unneeded files
* Make build compatible with Sysinternals
* Separate PowerToys ZoomIt product name (#36887)
* Separate PowerToys ZoomIt product name
To help maintain the Sysinternals branding in the standalone version.
* Clarify branding-related includes
* Remove ZoomIt.sln
* Add foxmsft to spell-check names
* Add ZoomIt to README
* Add ZoomIt to GH templates
* Add ZoomIt events to DATA_AND_PRIVACY.md
* Remove publish_config.json
* Remove publish_config.json from vcxproj too
---------
Co-authored-by: Mark Russinovich <markruss@microsoft.com>
Co-authored-by: Alex Mihaiuc <69110671+foxmsft@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
* [PTRun]Add hotkey to the show telemetry event (#36869)
* [PTRun]Update the code for .NET 9.0.1 - remove workarounds (#36909)
* Revove some unneeded changes after pdating to .net9.1
* [RegistryPreview]Copy context menu, data tooltip, MULTI_SZ fix (#36631)
* add context menus
* string resources for contextmenu
* fix line break parsing for MULTI_SZ
* better presentation of multiline values and value tooltip
* cleanup
* [MWB] - refactoring "Common" classes - Common.Log.cs, Common.Receiver.cs (#35726)
* [PTRun]Add setting for different trigonometric units in Calculator (#36717)
* Added angle units to PowerToys Run Calculator plugin.
* Update Resources.resx
* Added GitHub SpellCheck rule for 'gradians'.
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [ci]Remove steps to build abstracted utilities packages (#36934)
* [Settings]Update GPO infobar icon, improve some pages and fix bugs (#33703)
* changes part 1
* fix xaml code
* changes part 2
* fix cmdNotFound page
* Update PowerOcrPage
* More Pages changed
* More Pages changed
* revert temporary change
* fix spelling
* add resw comment
* add resw comment
* Update MouseWihtoutBorderPage.xaml
* PowerPreview page
* workspaces page
* fix awake page gpo handling
* NewPlus page
* update new+ page!
* AdvancedPaste.xaml: Move Info bar.
* Update MouseJumpPanel.xaml
* Update GeneralPage.xaml
* fix position of info bar and some ui quirks
* fix xaml style
* fix string resources
* string changes
* prepare megre main
* update new+ page
* zoomit page
* various fixes
* [Common]NotificationUtil helper class with FileWatcher (#36720)
* add NotificationUtil helper with file watcher and cache
* fix spellcheck
* indentation
* [PTRun][Docs]Add YubicoOauthOTP to Third-Party plugins (#36761)
* [PTRun]Fixed typo in Value Generator messages (#36951)
* [AOT] Clean up some AOT issues in Advanced Paste module (#36297)
* Clean up the aot build issue.
* Merge main and clean up new AOT build issue
* Update LogEvent define.
* Update src/modules/AdvancedPaste/AdvancedPaste/Helpers/LogEvent.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* update typo bug
* Remove unused allow list item
* Create a new folder to place source generation context
* Merge main and rename LogEvent to AIServiceFormatEvent
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* [ZoomIt]React to gpo setting when run as standalone (#36975)
* [Settings]ImageResizer settings accessibility updates, fixes and refactor (#36903)
* Fix issue with missing Image Resizer unit and fit information in settings description.
* Fix accessibility issues on Edit and Remove buttons. Fix various issues and refactor view model and ImageSize. New resources for accessibility text formats.
* Fix unit test because of change to new preset width and height. Fix 2 unit tests having incorrect expected/actual orderings.
* Post-review update: accessibility strings now formatted within the converter, instead of via format strings; simplified encoder GUID collection declaration and retrieval.
* Minor example text fix.
* [Settings]Update "Back up" mentions when it should be used as a verb (#36965)
* Update Back up name
* Rename Backup to Back up
* [New+]Update last modified date to now for all templates created (#36133)
* Update last modified date to now for all templates created
* Now also set last update for directories. Thank you htcfreek!
* [ImageResizer][ci]Fix XAML style errors (#37009)
* [Settings] Add "new" labels to navigation for new utilities (#36939)
* initial implementation
* move new label to zoomit
* cleanup
* more cleanup
* fix XAML formatting
* update padding to 4px
* add badge to dashboard item
* fix XAML formatting
* Tweaking UX
---------
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [MWB]Fix helper process termination issue in service mode (#36892)
* [MWB] Changed to suppress the flow of the execution context
* Fix build after merge
* [MWB] Fix helper process termination issue in service mode
* Add some comments
* [runner]Fix crashes caused by wrong setting AllowDataDiagnostics registry value (#37015)
* Fix setting registry value
* Prevent future similar crashes
* [PTRun][Calculator]Error check when loading trigonometry mode (#37033)
* [ZoomIt]Fix transparent draw after changing another setting (#37042)
* [Settings]Fix ZoomIt page changing current directory (#37052)
* [ci]Remove vc tools version workaround (#37098)
* 0.88 changelog (#37056)
* 0.88 changelog
* Update README.md
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* Add installer hashes
* Fix aka.ms link for ZoomIt
* Add mention to the PTRun plugin's dll file version
* Update README.md
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
* Update README.md - update What's Planned to 0.89 (#37157)
Update README.md
Just a tiny update, as reference to 0.88 was missed.
* [ci]Proper workaround for the vc tools version check (#37130)
* Revert "[ci]Remove vc tools version workaround (#37098)"
This reverts commit 2c069ce708.
* Adopt the same workaround as in Terminal
* Fix AOT introduced error
* [check-spelling] Update metadata
Update for https://github.com/zadjii-msft/PowerToys/actions/runs/13139253022/attempts/1
Accepted in https://github.com/zadjii-msft/PowerToys/pull/402#issuecomment-2634374795
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* more
* Skip cmdpal in deps json check
* notice.md
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Laszlo Nemeth <57342539+donlaci@users.noreply.github.com>
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
Co-authored-by: Ionuț Manța <ionut@janeasystems.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
Co-authored-by: PesBandi <127593627+PesBandi@users.noreply.github.com>
Co-authored-by: Wenjian Chern <55335597+Sophanatprime@users.noreply.github.com>
Co-authored-by: Youssef Victor <youssefvictor00@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: leileizhang <leilzh@microsoft.com>
Co-authored-by: Den Delimarsky 🔐 <sign@den.dev>
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
Co-authored-by: Shuai Yuan <128874481+shuaiyuanxx@users.noreply.github.com>
Co-authored-by: moooyo <42196638+moooyo@users.noreply.github.com>
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jerry Xu <n.xu@outlook.com>
Co-authored-by: Demitrius Nelon <denelon@microsoft.com>
Co-authored-by: Kai Tao <69313318+vanzue@users.noreply.github.com>
Co-authored-by: Connor Plante <150482134+plante-msft@users.noreply.github.com>
Co-authored-by: Connor Plante <connor.plante@gmail.com>
Co-authored-by: Domen Soklič <soklicd@gmail.com>
Co-authored-by: Hao Liu <liuhaobupt@163.com>
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: immi <iafullprogrammer@gmail.com>
Co-authored-by: Asif Islam <77113884+asif4318@users.noreply.github.com>
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
Co-authored-by: Dave Rayment <dave.rayment@gmail.com>
Co-authored-by: Neil McAlister <pingzing@users.noreply.github.com>
Co-authored-by: Mark Russinovich <markruss@microsoft.com>
Co-authored-by: Alex Mihaiuc <69110671+foxmsft@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: Michael Clayton <mike@kingslandconsulting.co.uk>
Co-authored-by: Nathan Gill <nathan.j.gill@outlook.com>
Co-authored-by: Daniel Nilsson <daniel.nilsson1989@gmail.com>
Co-authored-by: JackStuart <jack@jstuart.io>
Co-authored-by: Christian Gaarden Gaardmark <cgaarden@hotmail.com>
Co-authored-by: YDKK <YDKK@users.noreply.github.com>
Co-authored-by: Stefan Markovic <stefansjfw@users.noreply.github.com>
* The package ID changed! Now we're `Microsoft.CommandPalette`. The old app will need to be uninstalled seperately.
* interfaces moved from `Microsoft.CmdPal.Extensions` -> `Microsoft.CommandPalette.Extensions`
* The C# reference implementation? `Microsoft.CmdPal.Extensions.Helpers` -> `Microsoft.CommandPalette.Extensions.Toolkit`
* I also replaced the `IconData`, `IconInfo`, `PropChangedEventArgs`, `ItemsChangedEventArgs` `runtimeclass`es with just `interface`s. That's gonna be mildly breaking for existing code migrating.
* I lastly changed the `<AppExtension>` tag in the Package.appxmanifest to `com.microsoft.commandpalette` (from `com.microsoft.windows.commandpalette`)
An earlier draft of the CmdPal codebase called the fundamental unit of doing an `Action`. We've moved away from that for a long time now.
This just fixes all the cases I could still find.
Closes#350
This is a first best effort at #367.
If an app is installed, we'll try to lookup if there's one and only app with that name in our big list of apps. If there is, then we'll set the command on the winget list to the "run" command.
The uninstall command moves into the context menu, always. Even if we don't find it. This will make it harder to accidentally uninstall things.
This also has another drive-by fix for #357. Problem wasn't just being on the UI thread, it's that we were trying to get the `.Kind` out of the activation args, after the spawning process had already died.
Big thanks to Mano for getting this prototyped with me
This enables the SDK helpers and extensions to be compiled as AOT code. Gotta go fast guys.
Big changes were:
* Adding `partial` to all the helper classes that implemented WinRT interfaces
* Redoing a lot of JSON serialization to be AOT compatible
* re-working the COM calls in ExtensionServer and ExtensionInstanceManager to be AOT ready
Related to #197
## BREAKING API CHANGES APPROACHING
Closes#307Closes#238
Removes `Command` from `ITag`
Adds `IDetailsCommand` (to achieve the same goal as the above originally had)
Adds `ITreeContent`, based on a hunch
Adds `ShowToast` and `Confirm` to `CommandResult` too, but without UX yet
Extensions from before this change will need to be updated.
* The `InvokableCommand` change should be trivial - the helpers should abstract that delta away for you.
* The `ContentPage` change should be pretty easy to make.
* Both `MarkdownPage` and `FormPage` are now just `ContentPage`
* `FormPage.Forms()` -> `ContentPage.GetContent()`
* `MarkdownPage.Bodies()` -> `ContentPage.GetContent()`
* `IForm`s become `IFormContent`. Methods become properties (not that bad)
* I'm only deprecating the old Markdown and Form pages - I'll fully remove them before we OSS, but I'll give everyone a couple weeks to port them.
* No one was using `Tag.Command` and it always seemed iffy at best - better not.
Closes#363
The WebSearch plugin pulled in all of Wox.Infrastructure, which resulted in us pulling in _all of WPF_ as a dependency, which we obviously don't need.
This PR introduces a couple of design tweaks:
- Details pane padding and fontsizes/colors
- Extension icons using Segoe Fluent Icons are not the same color as the text, helping with eye scanning
- Updating the WinGet icon so it's now the same size as other extensions
- The extension icon is now shown in the searchbox to help improve context switching
* [Workspaces] implement the move feature (#35480)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* fix Move attribute after launch and snapshot
* Extend WindowArranger with PWA functionality to detect different PWA apps. PwaHelper moved to the common library
* fix repeat counter in the editor
* Code optimization
* code cleanup, optimization
* fix double-processing window
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* [KeyboardManager]Fix mapping shift to numpad (#35890)
* Keyboard Manger fix numpad as shift
Fixed shift not being released if a numpad key as shift.
* Added comments
* Fix typo
* Fix the numpad unlocked key not working if the locked version is overridden by shift
* Fix spelling check.
* Revert the VK_CLEAR change.
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [Analyzers] Update .editorconfig with rules to relax IDE errors (#36095)
* [Analyzers] Remove duplicate pascal case style from .editorconfig
* [Analyzers] Configured severity for individual IDE and CA rules showing as errors in VS
Set severity for IDE0005, IDE0008, IDE0016, IDE0018, IDE0019, IDE0021, IDE0022, IDE0023, IDE0025, IDE0027, IDE0028, IDE0029, IDE0031, IDE0032, IDE0034, IDE0036, IDE0039, IDE0042, IDE0044, IDE0045, IDE0046, IDE0047, IDE0057, IDE0051, IDE0052, IDE0054, IDE0055, IDE0056, IDE0057, IDE0059, IDE0060, IDE0061, IDE0063, IDE0071, IDE0073, IDE0074, IDE0075, IDE0077, IDE0078, IDE0083, IDE0090, IDE0100, IDE0130, IDE160, IDE180, IDE0200, IDE0240, IDE0250, IDE0251, IDE0260, IDE0270, IDE0290, IDE0300, IDE0301, IDE0305, IDE1005, IDE1006, CA1859, CA2022, CA2263
* [Analyzers] Fix mismatched analyzer descriptions
* [Analyzers] Fix misspelling
* Update .editorconfig
Made the following style rules `silent` instead of `suggestion`:
- Use explicit type instead of 'var'
- Use expression body for ...
- Use block-scoped namespace
* [Analyzers] Set IDE0290 to silent
* [Analyzers] Remove IDE1006 configuration from .editorconfig in favor of making exclusions for the few entries
* [Analyzers][Indexer] Add IDE1006 suppressions
* [Analyzers][Peek] Add IDE1006 suppression
* [Analyzers][MWB] Add IDE1006 suppression.
* [Analyzers][Plugins] Add IDE1006 suppression
* [Analyzers][ImageResizer] Suppress IDE0073 to retain original copyright
* [Analyzers] Remove IDE0073 severity change in .editorconfig
---------
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
* [Workspaces] PWA follow-up (#36217)
* [PTRun][Calculator]Allow scientific notation with lowercase 'e' (#36187)
* [Workspaces] Add encoder parameter to bitmap.save() (#36228)
* [Workspaces] Add encoder parameter to bitmap.save()
* 1 more call fixed
* Move repeated code to the csharp library
* [Workspaces] Implement store of app window's size and position (#36086)
* [Workspaces] Implement store of app window's size and position
* Modifying the default values to -1. The program will use the original default values for the first run.
* [ScreenRuler]Add setting to show the measurement in an extra unit (#35887)
* display ruler: supporting millimeter and other units
* Measurement Tool: UI Setting for an extra unit
* Update images
* spelling
* spelling
* suit code style
* Fix for code review
* remove weird file
* rename field
* [Deps]Update MSTest from 3.5.0 to 3.6.3 (#36115)
* Update MSTest from 3.5.0 to 3.6.3
* Use STA attributes that are now part of MSTest
* Adding Jerry to community.md (#36232)
Update COMMUNITY.md
* [Workspaces] Arranger: smart timer (#36096)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] Arranger: Reset wait timer after each successful arrange action
* fix merge error
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Upgrade to check-spelling v0.0.24 (#36235)
This upgrades to [v0.0.24](https://github.com/check-spelling/check-spelling/releases/tag/v0.0.24).
A number of GitHub APIs are being turned off shortly, so you need to upgrade or various uncertain outcomes will occur.
There's a new accessibility forbidden pattern:
> Do not use `(click) here` links
> For more information, see:
> * https://www.w3.org/QA/Tips/noClickHere
> * https://webaim.org/techniques/hypertext/link_text
> * https://granicus.com/blog/why-click-here-links-are-bad/
> * https://heyoka.medium.com/dont-use-click-here-f32f445d1021
```pl
(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:</|\]\()
```
There are some minor bugs that I'm aware of and which I've fixed since this release, but I don't expect to make another release this month.
I've added a pair of patterns for includes and pragmas. My argument is that the **compiler** will _generally_ tell you if you've misspelled an include and the **linker** will _generally_ tell you if you misspell a lib.
- There's a caveat here: If your include case-insensitively matches the referenced file (but doesn't properly match it), then unless you either use a case-sensitive file system (as opposed to case-preserving) or beg clang to warn, you won't notice when you make this specific mistake -- this matters in that a couple of Windows headers (e.g. Unknwn.h) have particular case and repositories don't tend to consistently/properly write them.
* Adjust to community.md, shifting jerry's github user name (#36242)
Update COMMUNITY.md
* [AOT compatible] Resolve AOT Build Error in Peek.UI (#36194)
* add partial for aot support
* add Microsoft.NET.ILLink.Tasks to packages.props
* format
* Revert "format"
This reverts commit 742d5e2214.
* add Microsoft.NET.ILLink.Tasks to notice.md
* add auto reference
* update script to remove the 'Auto-reference line'
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Awake Updates - `TILLSON_11272024` (#36049)
* Update with bug fixes for tray icon and support for parent process
* Process information enum
* Update the docs
* Fix spelling
* Make sure that PID is used in PT config flow
* Logic for checks based on #34148
* Update with link to PR
* Fixes#34717
* Small cleanup
* Proper task segmentation in a function
* Cleanup the code
* Fix synchronization context issue
* Update planning doc
* Test disabling caching to see if that manages to pass CI
* Cleanup to make sure that we're logging things properly.
* Update ci.yml
* Disable cache to pass CI
* Retry logic
* Cleanup
* Code cleanup
* Fixes#35848
* Update notes and codename
* After third attempt, log error instead of throwing exception
* More cleanup to avoid double execution
* Add expected word
* Safeguards for bad values for timed keep-awake
* More updates to make sure I am using uint
* Update error message
* Update packages
* Fix notice and revert CsWinRT upgrade
* Codename update
* Update expect.txt
* Update the struct
* Ensuring we're properly awaiting tray initialization
* Update to make sure tray reflects the bound process
* Cleanup, proper JSON serialization for logs.
* Not needed.
* Add command validation logic
* Moving the initialization logic earlier
* Make sure we show the display state in the tooltip
* Update tray string
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update logic for icon resets
* Update doc
* Simplify function for setting mode shell icon
* Issues should be properly linked
* Minor cleanup
* Update timed behavior
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Workspaces] detecting right app version (#36100)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] fix detection of specific version of apps
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Move the XamlStyler config to src/ (#36202)
my never ending goal to minimize files in the root dir
* [AdvancedPaste]Add Semantic Kernel opt-in to allow chaining of paste actions (#35902)
* [AdvancedPaste] Semantic Kernel support
* Changed log-line with potentially sensitive info
* Spellcheck issues
* Various improvements for Semantic Kernel
* Spellcheck issue
* Refactored Clipboard routines
* Added integration tests for KernelService
* Extra telemetry for AdvancedPaste
* Added 'Hotkey' suffix to AdvancedPaste_Settings telemetry event
* Added IsSavedQuery
* Added KernelQueryCache
* Refactoring
* Added KernelQueryCache to BugReportTool delete list
* Added opt-n for Semantic Kernel
* Fixed bug with KernelQueryCache
* Ability to view last AI chat message on error
* Improved kernel query cache
* Used System.IO.Abstractions and improved tests
* Fixed under-count of token usage
* Used Semantic Kernel icon
* Cleanup
* Add missing EndProject line
* Fix dependency version conflicts
* Fix NOTICE.md
* Correct place of SemanticKernel in NOTICE.md
* Unlinked CustomPreview toggle from AI
* Added Microsoft.Bcl.AsyncInterfaces dependency to AdvancedPaste
* Fixed NOTICE.md order
* Moved Custom Preview to behaviour section
* Made Image to Text raise error on empty output
* Added AIServiceBatchIntegrationTests
* Updated AIServiceBatchIntegrationTests
* Added prompt moderation
* Moved GPO Infobar to better location
* [Launcher]Port from WPF-UI to .NET 9 WPF (#36215)
* Initial implementation
* Fix fluent style
* Fix no endline
* Update expect.txt
* Fix formatting
* Fix light theme looking bad on Windows 10
* fix formatting
* test change
* Now really fixed W10
* Add a comment
* Fix typos
* Fix spellcheck errors
* Fix spellcheck pattern for websites
* Change patterns for spellcheck in the right file
* Fix XAML styling
* Fix contrast colors on W11
* Fix formatting
* Removed emty line
* Fix formatting
* Added comment to fluentHC file
* fix comment
* Fix Windows10 again.
Adress feedback.
* W11 fix chaning from high contrast to normal not having correct background
* W10 Fix high contrast not working after switching from light/dark moed
* Address feedback
* Fix formatting
* Second W11 fix chaning from high contrast to normal not having correct background
* [UX]Updating New+ and Settings icons (#36290)
* Updated icons
* Updating more icons and icos
* [Settings][Dashboard] Accessibility fixes (#36280)
* make narrator announce buttons/toggles
* add toggles module name
* [ci]Sign OpenAI dll that's not signed (#36299)
* Update CODEOWNERS to include gordon, jerry and kayla (#36308)
* Update CODEOWNERS
* Update names.txt
* Making the powertoys-code-owners team code owners (#36310)
* Update CODEOWNERS
* Update names.txt
* Update CODEOWNERS
* [FZEditor]Fix Create new layout dialog radio buttons IsChecked values (#36320)
* 0.87 changelog (#36335)
* 0.87 changelog
* Fix spellcheck
* Update README.md
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [PTRun]Fix WPF transparent border issue on Windows 10 (#36392)
* Added border on W10
* Added a comment
---------
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
* [PTRun]Fix .NET 9 crash in OneNote (#36417)
* Fix crash in OneNote Run
* added better comment
* [AdvancedPaste]Fix NullReferenceException on Dispose (#36428)
[AdvancedPaste] Fixed NullReferenceException on Dispose
* [Fuzz] Add fuzz testing for AdvancedPaste and new pipeline for onboarding OneFuzz (#36329)
* add fuzz
* install .net8
* add spelling check
* refine the pipeline
* add readme and update the test code
* fix spelling error
* change to weekly run
* Add New CI Pipeline for Latest WindowsAppSDK (#36282)
This PR introduces the following changes to the CI pipeline and version management:
Pipeline Enhancements:
1. Added a new script UpdateVersions.ps1 to automate the update of Microsoft.WindowsAppSDK versions across various project files.
2. Introduced a new pipeline configuration ci-using-the-latest-winappsdk.yml to build using the latest Microsoft.WindowsAppSDK.
3. Updated existing pipeline configurations to support the new useLatestWinAppSDK parameter.
Pipeline Configuration Updates:
1. Updated job-build-project.yml to handle the useLatestWinAppSDK parameter and adjust the RestoreAdditionalProjectSourcesArg accordingly.
2. Added a new template steps-update-winappsdk-and-restore-nuget.yml for updating and restoring NuGet packages with the latest Microsoft.WindowsAppSDK.
3. Added WinAPPSDK version selection, the pipeline can be manually triggered to use the specified version.
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [AOT compatible] Make HostsUILib become AOT compatible (#36136)
* Remove AOT configuration
* Refer to AOT compatibility props
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [AOT compatible] Clean up some AOT build issue in FilePreviewCommon and MarkdownPreviewHandler (#36207)
* Use AppContext.BaseDirectory to replace assembly.GetExeAseembly.Location.
Fix json serilizer aot issue.
* clean up some AOT build issue
* Update src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Update src/common/FilePreviewCommon/Formatters/JsonFormatter.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Add new pipeline using the latest webview2 from Edge Canary (#36317)
* using the latest webview2 for testing
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Bug fix] Making the OpenAI key configuration page scrollable. (#36359)
* Fixed#34470
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
* [Bug fix] Add a format validation step before format conversion. (#36404)
This PR aims to fix the bug #35225 by introducing a new method IsJson to determine if a given text is in JSON format.
The IsJson method is then utilized in the ToJsonFromXmlOrCsvAsync method to optimize the processing logic.
If the text is already in JSON format, it is returned directly without further conversion from XML or CSV.
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* Add more STCA team members (#36438)
* Add more STCA team members
* Include more spelling check errors
* Remove non-alpha in dictionary
* Add Zhaopeng Wang
* Fix spell checking error
* Remove "prerelease: true" (#36484)
* Remove "prerelease: true"
The Microsoft.WinGet.DSC module is GA so prerelease: true is no longer needed.
* Update expect.txt
fixing spellcheck warning
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Docs]Update README for 0.87.1 release (#36534)
* [CI] Enhance build Pipeline Reliability with Retry Logic and Improved Error Messaging (#36529)
* update pipeline with retry
* remove tests
* Add team member (#36590)
* [New+]Don't override New actions from Explorer on Windows 10 (#36467)
* [New+]Don't override New actions from Explorer
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Add pattern for learn.microsoft links
* Also only Query for context menu
* [PTRun][Calculator]Handle hexadecimal numbers to not return divide by 0 error (#36390)
* add '0x' handling for divide by 0 scenarios
* fix comment on division by 0 check
---------
Co-authored-by: Connor Plante <connor.plante@gmail.com>
* [TextExtractor]Minor UI/Accessibility fixes in the overlay UI (#36356)
minor UI and accessibility fixes
* [PTRun][Calculator]Update mages to v3.0.0 and support for `randi(n)` (#36560)
* update to mages 3.0.0
* allow randi() in calculator plugin
* fix tests and input validation
* fix spell check
* [QuickAccent]Added ć for Slovenian (#36336) (#36338)
* Fix snapping Workspaces Editor to Fancy Zones (#36463)
* Remove Workspaces Editor from Fancy Zone's excluded app list
* removed unused string
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
* [PTRun]Fix drag on .NET 9 WPF (#36635)
* [CQ]Continued to move stuff out of root - Solution.props (#36244)
* [QuickAccent]Add Proto-Indo-European (#36408)
* Add ḱ to PowerAccent for Proto-Indo-European
* Fix Spelling Check
* Add more letters to PIE
* Order PIE after PI
---------
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [PTRun]Add context buttons for VSCodeWorkspaces plugin (#36517)
* [Settings][QuickAccent]Change 'character set' to plural form (#36565)
* [PTRun][Calculator]Fix unit tests on non-english systems (#36569)
* fix tests
* update comment
* [PTRun][Calc]Improve handling of non-base 10 numbers (#36700)
* [Settings][PTRun]Show plugin version and website (#36580)
* [Monaco]Add support for .resx and .resw preview support. (#36499)
Added support for .resx and .resw preview support. These files are XML based files so I added the file extensions as part of the registerAdditionalLanguage("xmlExt"...) function.
* [Settings] Add Workspaces' workspaces.json file to backup/restore list (#36714)
* [Localization] Fix loc pipeline to send downloaded localized files to TDBuild upon retry after failure (#36766)
* [AdvancedPaste]Fixed issues with Screen Reader integration (#36778)
* Remove Advent calendar from README (#36777)
* Remove Advent calendar from README
* Update hero image
* Delete doc/images/overview/PT_holiday_hero_image.png
* [AdvancedPaste]Add all BitmapDecoder supported image filetypes to ImageToText (#35600)
Adds support to ImageToText for all image filetypes supported by BitmapDecoder.
* [AOT]Clean up some AOT build issues in PowerAccent.Core (#36264)
* init
* Use AotCompatibility instead
* Replace typeof(Lanaguge) with GetValues<Language>
* Create new folder to place source generation context file.
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [WinUI3]Fix Windows 10 title bar borders (#36429)
* Fix borders for windows in the Settings UI
* Fix HOSTS window
* Fix Advanced Paste
* Fix Environment Variables
* Fix File Locksmith
* Fix Peek, with a caveat
* Fix Registry Preview
* Remove unused imports
* Clean up imports in OobeShellPage
* Move OSVersionHelper from Common.UI up into ManagedCommon
* [QuickAccent]Fix unstable language loading (#36721)
* [Peek]Bring into foreground if previously minimized (#36506)
Added Activate() to bring Peek.UI window into focus upon Toggle. This allows the UI to be presented even if it was previously minimized.
* Update Run docs README (#36857)
* Update Run docs README
* Remove System dupe
* [Monaco]Make minimap toggleable (#33742)
* [Monaco]Fix Json format preview setting (#36867)
* [KBM]Added option for exact match shortcut (#36000)
* Added option for exact match shortcut
* Fix spell-check
* [Deps][Security]Update .NET Packages from 9.0.0 to 9.0.1 (#36879)
* [Deps] Update NuGet packages to version 9.0.1
Updated several NuGet packages from version 9.0.0 to 9.0.1, including:
- Microsoft.Data.Sqlite
- Microsoft.Bcl.AsyncInterfaces
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Logging
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Hosting
- Microsoft.Extensions.Hosting.WindowsServices
- Microsoft.Win32.SystemEvents
- Microsoft.Windows.Compatibility
- System.CodeDom
- System.ComponentModel.Composition
- System.Configuration.ConfigurationManager
- System.Data.OleDb
- System.Diagnostics.EventLog
- System.Diagnostics.PerformanceCounter
- System.Drawing.Common
- System.Management
- System.Runtime.Caching
- System.ServiceProcess.ServiceController
- System.Text.Encoding.CodePages
- System.Text.Json
* [Deps] Update NOTICE.md
* [Peek]Fix using the correct Monaco assets at runtime (#36890)
* [Workspaces] fixing bug: editor starts outside of visible desktop area (#36769)
* [Workspaces] fixing bug: editor starts outside of visible desktop area
* Update src/modules/Workspaces/WorkspacesEditor/MainWindow.xaml.cs
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
---------
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
* [Workspaces] Saving app properties on launch and recapture (#36751)
* [Workspaces] Implementing set and get GUID to/from HWND to distinguish windows moved by the Workspaces tool
* After launch and capture copy the CLI args from the "original" project
* Fix getting GUID
* spell check
* modification to be able to handle different data sizes on different systems
* code optimisation
* Replacing string parameter by InvokePoint
* renaming variable
* [AdvancedPaste]Use background thread for interactions between runner and Advanced Paste (#36858)
* [Advanced Paste] Use background thread for runner-Advanced Paste interaction
* Fixed typo
* [VCM]Deprecate the Video Conference Mute utility (#36772)
* Remove all VideoConferenceMute related code and files
* Clean up vcm driver registry keys
* Also remove the Webcam report tool
* Also clean out video conference on the installer
* Fix spellcheck
* Remove comment about video conf
* Update gpo files revision
* Revert removing the VCM policies
* Deprecate VCM GPO policy
* Change deprecation message to show first supported version
* Tweak supported strings in the adml
* Goodbye friends, you are forever part of the team (#36905)
* Goodbye friends
Forever part of the team 😢
* Update COMMUNITY.md
* Fix formatting issues in COMMUNITY.md
* [New utility]Sysinternals ZoomIt (#35880)
* ZoomIt initial code dump
* Change vcxproj to normalize dependency versions
* Fix code quality to build
* Add to PowerToys solution
* Clean out C-style casts
* Fix some more analyzer errors
* Constexpr a function
* Disable some warnings locally that it seemed better not to touch
* Add ZoomIt module interface
* Add GPO
* Add Settings page with Enable button
* Output as PowerToys.ZoomIt.exe
* Extract ZoomIt Settings definition to its own header
* Make ZoomItModuleInterface build with ZoomItSettings too
* WinRT C++ interop for ZoomItSettings
* From Registry To PowerToys Json
* Properly fix const_cast analyzer error
* Initial Settings page loading from registry
* Zoom mode settings
* Save settings
* Add file picker and DemoType file support
* Remaining DemoType settings
* Have ZoomIt properly reloading Settings and exiting
* Remove context menu entries for Options and Exit
* ZoomIt simple Break Options
* Break advanced options
* Simple Record settings
* Record Microphone setting
* Fix break background file picker title
* Font setting
* Fix build issues after merge
* Add ZoomIt conflict warning to Settings
* Exclude Eula from spell checking
* Fix spellcheck errors
* Fix spell check for accelerated menu items
* Remove cursor files from spellcheck. They're binary
* Fix forbidden patterns
* Fix XAML style
* Fix C# analyzers
* Fix signing
* Also sign module interface dll
* Use actual ZoomIt icon
* Add OOBE page for ZoomIt
* ZoomIt image for Settings
* Flyout and Dashboard entries
* Fix type speed slider labels
* Correctly load default Font
* Correctly register shortcuts on ZoomIt startup first run
* Fix modifier keys not changing until restart
* Show MsgBox on taken shortcut
* Start PowerToys Settings
* Normalize ZoomIt file properties with rest of PowerToys
* Add attribution
* Add ZoomIt team to Community.md
* More copyright adjustments
* Fix spellcheck
* Fix MsgBox simultaneous instance to the front
* Add mention of capturevideosample code use
* Add ZoomIt to process lists
* Add telemetry
* Add logging
* React to gpo
* Normalize code to space identation
* Fix installer build
* Localize percent setting
* Fix XAML styling
* Update src/settings-ui/Settings.UI/Strings/en-us/Resources.resw
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
* Fix spellcheck
* One more spellcheck fix
* Integrate LiveDraw feature changes from upstream
* Fix name reuse in same scope
* Fix c-style casts
* Also register LIVEDRAW_HOTKEY
* Fix newLiveZoomToggleKey
* Update LiveZoom description in Settings to take LiveDraw into account
* Fix spellcheck
* Fix more spellcheck
* Fix Sysinternals capitalization
* Fix ARM64 Debug build
* Support Sysinternals build (#36873)
* Remove unneeded files
* Make build compatible with Sysinternals
* Separate PowerToys ZoomIt product name (#36887)
* Separate PowerToys ZoomIt product name
To help maintain the Sysinternals branding in the standalone version.
* Clarify branding-related includes
* Remove ZoomIt.sln
* Add foxmsft to spell-check names
* Add ZoomIt to README
* Add ZoomIt to GH templates
* Add ZoomIt events to DATA_AND_PRIVACY.md
* Remove publish_config.json
* Remove publish_config.json from vcxproj too
---------
Co-authored-by: Mark Russinovich <markruss@microsoft.com>
Co-authored-by: Alex Mihaiuc <69110671+foxmsft@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
* [PTRun]Add hotkey to the show telemetry event (#36869)
* [PTRun]Update the code for .NET 9.0.1 - remove workarounds (#36909)
* Revove some unneeded changes after pdating to .net9.1
* [RegistryPreview]Copy context menu, data tooltip, MULTI_SZ fix (#36631)
* add context menus
* string resources for contextmenu
* fix line break parsing for MULTI_SZ
* better presentation of multiline values and value tooltip
* cleanup
* [MWB] - refactoring "Common" classes - Common.Log.cs, Common.Receiver.cs (#35726)
* [PTRun]Add setting for different trigonometric units in Calculator (#36717)
* Added angle units to PowerToys Run Calculator plugin.
* Update Resources.resx
* Added GitHub SpellCheck rule for 'gradians'.
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [ci]Remove steps to build abstracted utilities packages (#36934)
* [Settings]Update GPO infobar icon, improve some pages and fix bugs (#33703)
* changes part 1
* fix xaml code
* changes part 2
* fix cmdNotFound page
* Update PowerOcrPage
* More Pages changed
* More Pages changed
* revert temporary change
* fix spelling
* add resw comment
* add resw comment
* Update MouseWihtoutBorderPage.xaml
* PowerPreview page
* workspaces page
* fix awake page gpo handling
* NewPlus page
* update new+ page!
* AdvancedPaste.xaml: Move Info bar.
* Update MouseJumpPanel.xaml
* Update GeneralPage.xaml
* fix position of info bar and some ui quirks
* fix xaml style
* fix string resources
* string changes
* prepare megre main
* update new+ page
* zoomit page
* various fixes
* [Common]NotificationUtil helper class with FileWatcher (#36720)
* add NotificationUtil helper with file watcher and cache
* fix spellcheck
* indentation
* [PTRun][Docs]Add YubicoOauthOTP to Third-Party plugins (#36761)
* [PTRun]Fixed typo in Value Generator messages (#36951)
* [AOT] Clean up some AOT issues in Advanced Paste module (#36297)
* Clean up the aot build issue.
* Merge main and clean up new AOT build issue
* Update LogEvent define.
* Update src/modules/AdvancedPaste/AdvancedPaste/Helpers/LogEvent.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* update typo bug
* Remove unused allow list item
* Create a new folder to place source generation context
* Merge main and rename LogEvent to AIServiceFormatEvent
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* [ZoomIt]React to gpo setting when run as standalone (#36975)
* [Settings]ImageResizer settings accessibility updates, fixes and refactor (#36903)
* Fix issue with missing Image Resizer unit and fit information in settings description.
* Fix accessibility issues on Edit and Remove buttons. Fix various issues and refactor view model and ImageSize. New resources for accessibility text formats.
* Fix unit test because of change to new preset width and height. Fix 2 unit tests having incorrect expected/actual orderings.
* Post-review update: accessibility strings now formatted within the converter, instead of via format strings; simplified encoder GUID collection declaration and retrieval.
* Minor example text fix.
* [Settings]Update "Back up" mentions when it should be used as a verb (#36965)
* Update Back up name
* Rename Backup to Back up
* [New+]Update last modified date to now for all templates created (#36133)
* Update last modified date to now for all templates created
* Now also set last update for directories. Thank you htcfreek!
* [ImageResizer][ci]Fix XAML style errors (#37009)
* [Settings] Add "new" labels to navigation for new utilities (#36939)
* initial implementation
* move new label to zoomit
* cleanup
* more cleanup
* fix XAML formatting
* update padding to 4px
* add badge to dashboard item
* fix XAML formatting
* Tweaking UX
---------
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [MWB]Fix helper process termination issue in service mode (#36892)
* [MWB] Changed to suppress the flow of the execution context
* Fix build after merge
* [MWB] Fix helper process termination issue in service mode
* Add some comments
* [runner]Fix crashes caused by wrong setting AllowDataDiagnostics registry value (#37015)
* Fix setting registry value
* Prevent future similar crashes
* [PTRun][Calculator]Error check when loading trigonometry mode (#37033)
* [ZoomIt]Fix transparent draw after changing another setting (#37042)
* [Settings]Fix ZoomIt page changing current directory (#37052)
* [ci]Remove vc tools version workaround (#37098)
* 0.88 changelog (#37056)
* 0.88 changelog
* Update README.md
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* Add installer hashes
* Fix aka.ms link for ZoomIt
* Add mention to the PTRun plugin's dll file version
* Update README.md
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
* [check-spelling] Update metadata
Update for https://github.com/zadjii-msft/PowerToys/actions/runs/13033425108/attempts/1
Accepted in https://github.com/zadjii-msft/PowerToys/pull/379#issuecomment-2621811953
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Laszlo Nemeth <57342539+donlaci@users.noreply.github.com>
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
Co-authored-by: Ionuț Manța <ionut@janeasystems.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
Co-authored-by: PesBandi <127593627+PesBandi@users.noreply.github.com>
Co-authored-by: Wenjian Chern <55335597+Sophanatprime@users.noreply.github.com>
Co-authored-by: Youssef Victor <youssefvictor00@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: leileizhang <leilzh@microsoft.com>
Co-authored-by: Den Delimarsky 🔐 <sign@den.dev>
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
Co-authored-by: Shuai Yuan <128874481+shuaiyuanxx@users.noreply.github.com>
Co-authored-by: moooyo <42196638+moooyo@users.noreply.github.com>
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jerry Xu <n.xu@outlook.com>
Co-authored-by: Demitrius Nelon <denelon@microsoft.com>
Co-authored-by: Kai Tao <69313318+vanzue@users.noreply.github.com>
Co-authored-by: Connor Plante <150482134+plante-msft@users.noreply.github.com>
Co-authored-by: Connor Plante <connor.plante@gmail.com>
Co-authored-by: Domen Soklič <soklicd@gmail.com>
Co-authored-by: Hao Liu <liuhaobupt@163.com>
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: immi <iafullprogrammer@gmail.com>
Co-authored-by: Asif Islam <77113884+asif4318@users.noreply.github.com>
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
Co-authored-by: Dave Rayment <dave.rayment@gmail.com>
Co-authored-by: Neil McAlister <pingzing@users.noreply.github.com>
Co-authored-by: Mark Russinovich <markruss@microsoft.com>
Co-authored-by: Alex Mihaiuc <69110671+foxmsft@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: Michael Clayton <mike@kingslandconsulting.co.uk>
Co-authored-by: Nathan Gill <nathan.j.gill@outlook.com>
Co-authored-by: Daniel Nilsson <daniel.nilsson1989@gmail.com>
Co-authored-by: JackStuart <jack@jstuart.io>
Co-authored-by: Christian Gaarden Gaardmark <cgaarden@hotmail.com>
Co-authored-by: YDKK <YDKK@users.noreply.github.com>
Co-authored-by: Stefan Markovic <stefansjfw@users.noreply.github.com>
Removes icons we weren't using anymore.
Replaces the Windows Services icon from the dll, with "Processing", which is also two gears.
Fixes the FastUpToDate check, for tighter inner loop
Closes#125
Updating the search text for a fallback command is fully async. However, we just fire off all those updates, then immediately update the list of filtered items. That of course is dumb, because most of them haven't yet processed the update before we determine if we show it or not.
So, we've added an `UpdateFallbackItemsMessage` that we emit from a fallback command to let the main page know it may need to remove an item from its list.
Closes#370
The DevHome code was great for "I need something that can lookup extensions and enumerate all of them".
However, the DevHome code is a very blunt hammer when it comes to extensions. The only thing it tracks is "packages changed", and if it gets one of those, it just blows away all the extensions and rebuilds them. Yikes.
This PR changes `ExtensionService` to be a scalpel. We'll keep `_installedExtensions` fresh. When we get a package install, we'll add only that package's extension to our cache, and let the `TopLevelCommandManager` know. Similarly for updates and uninstalls.
That way, we can exactly change the top-level list as needed, rather than bluntly forcing all the extensions to reload.
In the middle of all this, I fixed a bug where uninstalling an extension, then reloading would just fail to load extensions. This is because the old code would clear out the **whole** list of extensions when _one_ was uninstalled. That created a race where we'd be parsing the new list of all the extensions (from the reload), get an uninstall event, clear the list, then InvalidOperation as the list of extensions was modified during enumeration.
There's a bunch more locking in here. This might drive-by #324 but hard to be sure.
Related to #89
Title.
I just noticed that if you move the caret earlier in the input, then type, we'll toss the caret to the end of the input. Ew. Don't do that.
We should only move the caret if the text actually changed from what we already had.
Mostly pilfered code from `src/runner/tray_icon.cpp`
Creates a tray icon. No menu on it - just click it to focus the CmdPal.
Closes #what-the-I-didn't-file-something-for-this?
Tested with the `command-line` tag, because there's no extensions in winget until https://github.com/microsoft/winget-pkgs/pull/216685 merges
Also adds a link to search in the Store, though I think that won't be as useful.
Lastly - also actually fixes the tag search 😅
Builds on #356Closes#89
Probably needs #370 to feel right
- Settings are now in a window.
- Moved pages into a separate pages folder
We probably want to split up the extensions vs. general VMs, but we can do that later once we figured out what the Settings pages should look like.
Related to #80
_targets #355_, which I need for improvements to messages
* [x] The initial package load takes a long time. This is pretty much unavoidable, but we do it on cmdpal startup, so anything after about 12s should be snappy
* [x] I cannot for the life of me get `FindPackagesAsync`, to be async. The call always ends up running synchronously, so I can't hook up the `operation.Completed` event, nor the cancellation. The action is already complete!
- this is probably blocking, because we still end up doing a search on most keystrokes, so we only get the final results after all the intermediate ones are done.
- Just pasting a search though? Just as snappy as you'd hope.
- Ahahahaha it wasn't me: [microsoft/winget-cli#5151](https://github.com/microsoft/winget-cli/pull/5151)
- ✅ manually wrapping this in a BG thread made it better
* [ ] We probably shouldn't make the default action for an installed package "Uninstall".
- Probably want to shunt over to the Settings app for the package
- We probably want to do the thing where the second command doesn't show up if it's a separator
- Punt? punt
* [x] We need to add more metadata in the details for packages. We have it, if only we could show it: #95
- This will be a follow-up
* [ ] This needs localization too
* I'm using the `1.10-preview` of the winget com interfaces. On my framework laptop at least, the `RefreshPackageCatalogAsync` API isn't yet implemented, so I need to test that
* [x] I don't think we implemented `MoreCommands` being observable in the host yet. We should.
- Punted, #360
* [ ] I probably also need to check if other APIs we're using exist or not
* [x] I haven't tested situations that like, need you to accept a license? Installing `nano` and the NanoLeaf app both _just work_.
- Punted?
Bits of status messages that were omitted from #281.
This lets extensions hide messages (and exposes the helper in the helper lib).
It also adds support for displaying progress as a progress bar underneath the text of the status message. I'll need An Adult to help with the XAML, to re-template the InfoBar to allow a progress wheel in the icon instead, but for now? good enough.
I'm doing this to unblock the next PR, which should add some rudimentary winget support.
* Add 3 settings for Clint
Is your name Clint? Do you like settings? Did you hate that backspace on the
main page could dismiss the palette? If you said yes to any of that, you're in
luck! This PR is for you!
This PR adds three new settings:
* `BackspaceGoesBack`: Controls if backspace with an empty search takes you back
a level
* `SingleClickActivates`: Allows users to toggle between the "single click
selects, double activates" vs "single click activates" behavior
* `HighlightSearchOnActivate`: When `true` (**default**), this will select the
text in the search bar when the window is summoned
This drive-by fixes a bug where clicking to select an item stole focus from the
search box.
closes#306
* spel
* [Workspaces] implement the move feature (#35480)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* fix Move attribute after launch and snapshot
* Extend WindowArranger with PWA functionality to detect different PWA apps. PwaHelper moved to the common library
* fix repeat counter in the editor
* Code optimization
* code cleanup, optimization
* fix double-processing window
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* [KeyboardManager]Fix mapping shift to numpad (#35890)
* Keyboard Manger fix numpad as shift
Fixed shift not being released if a numpad key as shift.
* Added comments
* Fix typo
* Fix the numpad unlocked key not working if the locked version is overridden by shift
* Fix spelling check.
* Revert the VK_CLEAR change.
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [Analyzers] Update .editorconfig with rules to relax IDE errors (#36095)
* [Analyzers] Remove duplicate pascal case style from .editorconfig
* [Analyzers] Configured severity for individual IDE and CA rules showing as errors in VS
Set severity for IDE0005, IDE0008, IDE0016, IDE0018, IDE0019, IDE0021, IDE0022, IDE0023, IDE0025, IDE0027, IDE0028, IDE0029, IDE0031, IDE0032, IDE0034, IDE0036, IDE0039, IDE0042, IDE0044, IDE0045, IDE0046, IDE0047, IDE0057, IDE0051, IDE0052, IDE0054, IDE0055, IDE0056, IDE0057, IDE0059, IDE0060, IDE0061, IDE0063, IDE0071, IDE0073, IDE0074, IDE0075, IDE0077, IDE0078, IDE0083, IDE0090, IDE0100, IDE0130, IDE160, IDE180, IDE0200, IDE0240, IDE0250, IDE0251, IDE0260, IDE0270, IDE0290, IDE0300, IDE0301, IDE0305, IDE1005, IDE1006, CA1859, CA2022, CA2263
* [Analyzers] Fix mismatched analyzer descriptions
* [Analyzers] Fix misspelling
* Update .editorconfig
Made the following style rules `silent` instead of `suggestion`:
- Use explicit type instead of 'var'
- Use expression body for ...
- Use block-scoped namespace
* [Analyzers] Set IDE0290 to silent
* [Analyzers] Remove IDE1006 configuration from .editorconfig in favor of making exclusions for the few entries
* [Analyzers][Indexer] Add IDE1006 suppressions
* [Analyzers][Peek] Add IDE1006 suppression
* [Analyzers][MWB] Add IDE1006 suppression.
* [Analyzers][Plugins] Add IDE1006 suppression
* [Analyzers][ImageResizer] Suppress IDE0073 to retain original copyright
* [Analyzers] Remove IDE0073 severity change in .editorconfig
---------
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
* [Workspaces] PWA follow-up (#36217)
* [PTRun][Calculator]Allow scientific notation with lowercase 'e' (#36187)
* [Workspaces] Add encoder parameter to bitmap.save() (#36228)
* [Workspaces] Add encoder parameter to bitmap.save()
* 1 more call fixed
* Move repeated code to the csharp library
* [Workspaces] Implement store of app window's size and position (#36086)
* [Workspaces] Implement store of app window's size and position
* Modifying the default values to -1. The program will use the original default values for the first run.
* [ScreenRuler]Add setting to show the measurement in an extra unit (#35887)
* display ruler: supporting millimeter and other units
* Measurement Tool: UI Setting for an extra unit
* Update images
* spelling
* spelling
* suit code style
* Fix for code review
* remove weird file
* rename field
* [Deps]Update MSTest from 3.5.0 to 3.6.3 (#36115)
* Update MSTest from 3.5.0 to 3.6.3
* Use STA attributes that are now part of MSTest
* Adding Jerry to community.md (#36232)
Update COMMUNITY.md
* [Workspaces] Arranger: smart timer (#36096)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] Arranger: Reset wait timer after each successful arrange action
* fix merge error
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Upgrade to check-spelling v0.0.24 (#36235)
This upgrades to [v0.0.24](https://github.com/check-spelling/check-spelling/releases/tag/v0.0.24).
A number of GitHub APIs are being turned off shortly, so you need to upgrade or various uncertain outcomes will occur.
There's a new accessibility forbidden pattern:
> Do not use `(click) here` links
> For more information, see:
> * https://www.w3.org/QA/Tips/noClickHere
> * https://webaim.org/techniques/hypertext/link_text
> * https://granicus.com/blog/why-click-here-links-are-bad/
> * https://heyoka.medium.com/dont-use-click-here-f32f445d1021
```pl
(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:</|\]\()
```
There are some minor bugs that I'm aware of and which I've fixed since this release, but I don't expect to make another release this month.
I've added a pair of patterns for includes and pragmas. My argument is that the **compiler** will _generally_ tell you if you've misspelled an include and the **linker** will _generally_ tell you if you misspell a lib.
- There's a caveat here: If your include case-insensitively matches the referenced file (but doesn't properly match it), then unless you either use a case-sensitive file system (as opposed to case-preserving) or beg clang to warn, you won't notice when you make this specific mistake -- this matters in that a couple of Windows headers (e.g. Unknwn.h) have particular case and repositories don't tend to consistently/properly write them.
* Adjust to community.md, shifting jerry's github user name (#36242)
Update COMMUNITY.md
* [AOT compatible] Resolve AOT Build Error in Peek.UI (#36194)
* add partial for aot support
* add Microsoft.NET.ILLink.Tasks to packages.props
* format
* Revert "format"
This reverts commit 742d5e2214.
* add Microsoft.NET.ILLink.Tasks to notice.md
* add auto reference
* update script to remove the 'Auto-reference line'
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Awake Updates - `TILLSON_11272024` (#36049)
* Update with bug fixes for tray icon and support for parent process
* Process information enum
* Update the docs
* Fix spelling
* Make sure that PID is used in PT config flow
* Logic for checks based on #34148
* Update with link to PR
* Fixes#34717
* Small cleanup
* Proper task segmentation in a function
* Cleanup the code
* Fix synchronization context issue
* Update planning doc
* Test disabling caching to see if that manages to pass CI
* Cleanup to make sure that we're logging things properly.
* Update ci.yml
* Disable cache to pass CI
* Retry logic
* Cleanup
* Code cleanup
* Fixes#35848
* Update notes and codename
* After third attempt, log error instead of throwing exception
* More cleanup to avoid double execution
* Add expected word
* Safeguards for bad values for timed keep-awake
* More updates to make sure I am using uint
* Update error message
* Update packages
* Fix notice and revert CsWinRT upgrade
* Codename update
* Update expect.txt
* Update the struct
* Ensuring we're properly awaiting tray initialization
* Update to make sure tray reflects the bound process
* Cleanup, proper JSON serialization for logs.
* Not needed.
* Add command validation logic
* Moving the initialization logic earlier
* Make sure we show the display state in the tooltip
* Update tray string
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update logic for icon resets
* Update doc
* Simplify function for setting mode shell icon
* Issues should be properly linked
* Minor cleanup
* Update timed behavior
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Workspaces] detecting right app version (#36100)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] fix detection of specific version of apps
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Move the XamlStyler config to src/ (#36202)
my never ending goal to minimize files in the root dir
* [AdvancedPaste]Add Semantic Kernel opt-in to allow chaining of paste actions (#35902)
* [AdvancedPaste] Semantic Kernel support
* Changed log-line with potentially sensitive info
* Spellcheck issues
* Various improvements for Semantic Kernel
* Spellcheck issue
* Refactored Clipboard routines
* Added integration tests for KernelService
* Extra telemetry for AdvancedPaste
* Added 'Hotkey' suffix to AdvancedPaste_Settings telemetry event
* Added IsSavedQuery
* Added KernelQueryCache
* Refactoring
* Added KernelQueryCache to BugReportTool delete list
* Added opt-n for Semantic Kernel
* Fixed bug with KernelQueryCache
* Ability to view last AI chat message on error
* Improved kernel query cache
* Used System.IO.Abstractions and improved tests
* Fixed under-count of token usage
* Used Semantic Kernel icon
* Cleanup
* Add missing EndProject line
* Fix dependency version conflicts
* Fix NOTICE.md
* Correct place of SemanticKernel in NOTICE.md
* Unlinked CustomPreview toggle from AI
* Added Microsoft.Bcl.AsyncInterfaces dependency to AdvancedPaste
* Fixed NOTICE.md order
* Moved Custom Preview to behaviour section
* Made Image to Text raise error on empty output
* Added AIServiceBatchIntegrationTests
* Updated AIServiceBatchIntegrationTests
* Added prompt moderation
* Moved GPO Infobar to better location
* [Launcher]Port from WPF-UI to .NET 9 WPF (#36215)
* Initial implementation
* Fix fluent style
* Fix no endline
* Update expect.txt
* Fix formatting
* Fix light theme looking bad on Windows 10
* fix formatting
* test change
* Now really fixed W10
* Add a comment
* Fix typos
* Fix spellcheck errors
* Fix spellcheck pattern for websites
* Change patterns for spellcheck in the right file
* Fix XAML styling
* Fix contrast colors on W11
* Fix formatting
* Removed emty line
* Fix formatting
* Added comment to fluentHC file
* fix comment
* Fix Windows10 again.
Adress feedback.
* W11 fix chaning from high contrast to normal not having correct background
* W10 Fix high contrast not working after switching from light/dark moed
* Address feedback
* Fix formatting
* Second W11 fix chaning from high contrast to normal not having correct background
* [UX]Updating New+ and Settings icons (#36290)
* Updated icons
* Updating more icons and icos
* [Settings][Dashboard] Accessibility fixes (#36280)
* make narrator announce buttons/toggles
* add toggles module name
* [ci]Sign OpenAI dll that's not signed (#36299)
* Update CODEOWNERS to include gordon, jerry and kayla (#36308)
* Update CODEOWNERS
* Update names.txt
* Making the powertoys-code-owners team code owners (#36310)
* Update CODEOWNERS
* Update names.txt
* Update CODEOWNERS
* [FZEditor]Fix Create new layout dialog radio buttons IsChecked values (#36320)
* 0.87 changelog (#36335)
* 0.87 changelog
* Fix spellcheck
* Update README.md
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [PTRun]Fix WPF transparent border issue on Windows 10 (#36392)
* Added border on W10
* Added a comment
---------
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
* [PTRun]Fix .NET 9 crash in OneNote (#36417)
* Fix crash in OneNote Run
* added better comment
* [AdvancedPaste]Fix NullReferenceException on Dispose (#36428)
[AdvancedPaste] Fixed NullReferenceException on Dispose
* [Fuzz] Add fuzz testing for AdvancedPaste and new pipeline for onboarding OneFuzz (#36329)
* add fuzz
* install .net8
* add spelling check
* refine the pipeline
* add readme and update the test code
* fix spelling error
* change to weekly run
* Add New CI Pipeline for Latest WindowsAppSDK (#36282)
This PR introduces the following changes to the CI pipeline and version management:
Pipeline Enhancements:
1. Added a new script UpdateVersions.ps1 to automate the update of Microsoft.WindowsAppSDK versions across various project files.
2. Introduced a new pipeline configuration ci-using-the-latest-winappsdk.yml to build using the latest Microsoft.WindowsAppSDK.
3. Updated existing pipeline configurations to support the new useLatestWinAppSDK parameter.
Pipeline Configuration Updates:
1. Updated job-build-project.yml to handle the useLatestWinAppSDK parameter and adjust the RestoreAdditionalProjectSourcesArg accordingly.
2. Added a new template steps-update-winappsdk-and-restore-nuget.yml for updating and restoring NuGet packages with the latest Microsoft.WindowsAppSDK.
3. Added WinAPPSDK version selection, the pipeline can be manually triggered to use the specified version.
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [AOT compatible] Make HostsUILib become AOT compatible (#36136)
* Remove AOT configuration
* Refer to AOT compatibility props
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [AOT compatible] Clean up some AOT build issue in FilePreviewCommon and MarkdownPreviewHandler (#36207)
* Use AppContext.BaseDirectory to replace assembly.GetExeAseembly.Location.
Fix json serilizer aot issue.
* clean up some AOT build issue
* Update src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Update src/common/FilePreviewCommon/Formatters/JsonFormatter.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Add new pipeline using the latest webview2 from Edge Canary (#36317)
* using the latest webview2 for testing
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Bug fix] Making the OpenAI key configuration page scrollable. (#36359)
* Fixed#34470
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
* [Bug fix] Add a format validation step before format conversion. (#36404)
This PR aims to fix the bug #35225 by introducing a new method IsJson to determine if a given text is in JSON format.
The IsJson method is then utilized in the ToJsonFromXmlOrCsvAsync method to optimize the processing logic.
If the text is already in JSON format, it is returned directly without further conversion from XML or CSV.
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* Add more STCA team members (#36438)
* Add more STCA team members
* Include more spelling check errors
* Remove non-alpha in dictionary
* Add Zhaopeng Wang
* Fix spell checking error
* Remove "prerelease: true" (#36484)
* Remove "prerelease: true"
The Microsoft.WinGet.DSC module is GA so prerelease: true is no longer needed.
* Update expect.txt
fixing spellcheck warning
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Docs]Update README for 0.87.1 release (#36534)
* [CI] Enhance build Pipeline Reliability with Retry Logic and Improved Error Messaging (#36529)
* update pipeline with retry
* remove tests
* Add team member (#36590)
* [New+]Don't override New actions from Explorer on Windows 10 (#36467)
* [New+]Don't override New actions from Explorer
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Add pattern for learn.microsoft links
* Also only Query for context menu
* [PTRun][Calculator]Handle hexadecimal numbers to not return divide by 0 error (#36390)
* add '0x' handling for divide by 0 scenarios
* fix comment on division by 0 check
---------
Co-authored-by: Connor Plante <connor.plante@gmail.com>
* [TextExtractor]Minor UI/Accessibility fixes in the overlay UI (#36356)
minor UI and accessibility fixes
* [PTRun][Calculator]Update mages to v3.0.0 and support for `randi(n)` (#36560)
* update to mages 3.0.0
* allow randi() in calculator plugin
* fix tests and input validation
* fix spell check
* [QuickAccent]Added ć for Slovenian (#36336) (#36338)
* Fix snapping Workspaces Editor to Fancy Zones (#36463)
* Remove Workspaces Editor from Fancy Zone's excluded app list
* removed unused string
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
* [PTRun]Fix drag on .NET 9 WPF (#36635)
* [CQ]Continued to move stuff out of root - Solution.props (#36244)
* [QuickAccent]Add Proto-Indo-European (#36408)
* Add ḱ to PowerAccent for Proto-Indo-European
* Fix Spelling Check
* Add more letters to PIE
* Order PIE after PI
---------
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [PTRun]Add context buttons for VSCodeWorkspaces plugin (#36517)
* [Settings][QuickAccent]Change 'character set' to plural form (#36565)
* [PTRun][Calculator]Fix unit tests on non-english systems (#36569)
* fix tests
* update comment
* [PTRun][Calc]Improve handling of non-base 10 numbers (#36700)
* [Settings][PTRun]Show plugin version and website (#36580)
* [Monaco]Add support for .resx and .resw preview support. (#36499)
Added support for .resx and .resw preview support. These files are XML based files so I added the file extensions as part of the registerAdditionalLanguage("xmlExt"...) function.
* [Settings] Add Workspaces' workspaces.json file to backup/restore list (#36714)
* [Localization] Fix loc pipeline to send downloaded localized files to TDBuild upon retry after failure (#36766)
* [AdvancedPaste]Fixed issues with Screen Reader integration (#36778)
* Remove Advent calendar from README (#36777)
* Remove Advent calendar from README
* Update hero image
* Delete doc/images/overview/PT_holiday_hero_image.png
* [AdvancedPaste]Add all BitmapDecoder supported image filetypes to ImageToText (#35600)
Adds support to ImageToText for all image filetypes supported by BitmapDecoder.
* [AOT]Clean up some AOT build issues in PowerAccent.Core (#36264)
* init
* Use AotCompatibility instead
* Replace typeof(Lanaguge) with GetValues<Language>
* Create new folder to place source generation context file.
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [WinUI3]Fix Windows 10 title bar borders (#36429)
* Fix borders for windows in the Settings UI
* Fix HOSTS window
* Fix Advanced Paste
* Fix Environment Variables
* Fix File Locksmith
* Fix Peek, with a caveat
* Fix Registry Preview
* Remove unused imports
* Clean up imports in OobeShellPage
* Move OSVersionHelper from Common.UI up into ManagedCommon
* [QuickAccent]Fix unstable language loading (#36721)
* [Peek]Bring into foreground if previously minimized (#36506)
Added Activate() to bring Peek.UI window into focus upon Toggle. This allows the UI to be presented even if it was previously minimized.
* Update Run docs README (#36857)
* Update Run docs README
* Remove System dupe
* [Monaco]Make minimap toggleable (#33742)
* [Monaco]Fix Json format preview setting (#36867)
* [KBM]Added option for exact match shortcut (#36000)
* Added option for exact match shortcut
* Fix spell-check
* [Deps][Security]Update .NET Packages from 9.0.0 to 9.0.1 (#36879)
* [Deps] Update NuGet packages to version 9.0.1
Updated several NuGet packages from version 9.0.0 to 9.0.1, including:
- Microsoft.Data.Sqlite
- Microsoft.Bcl.AsyncInterfaces
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Logging
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Hosting
- Microsoft.Extensions.Hosting.WindowsServices
- Microsoft.Win32.SystemEvents
- Microsoft.Windows.Compatibility
- System.CodeDom
- System.ComponentModel.Composition
- System.Configuration.ConfigurationManager
- System.Data.OleDb
- System.Diagnostics.EventLog
- System.Diagnostics.PerformanceCounter
- System.Drawing.Common
- System.Management
- System.Runtime.Caching
- System.ServiceProcess.ServiceController
- System.Text.Encoding.CodePages
- System.Text.Json
* [Deps] Update NOTICE.md
* [Peek]Fix using the correct Monaco assets at runtime (#36890)
* [Workspaces] fixing bug: editor starts outside of visible desktop area (#36769)
* [Workspaces] fixing bug: editor starts outside of visible desktop area
* Update src/modules/Workspaces/WorkspacesEditor/MainWindow.xaml.cs
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
---------
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
* [Workspaces] Saving app properties on launch and recapture (#36751)
* [Workspaces] Implementing set and get GUID to/from HWND to distinguish windows moved by the Workspaces tool
* After launch and capture copy the CLI args from the "original" project
* Fix getting GUID
* spell check
* modification to be able to handle different data sizes on different systems
* code optimisation
* Replacing string parameter by InvokePoint
* renaming variable
* [AdvancedPaste]Use background thread for interactions between runner and Advanced Paste (#36858)
* [Advanced Paste] Use background thread for runner-Advanced Paste interaction
* Fixed typo
* [VCM]Deprecate the Video Conference Mute utility (#36772)
* Remove all VideoConferenceMute related code and files
* Clean up vcm driver registry keys
* Also remove the Webcam report tool
* Also clean out video conference on the installer
* Fix spellcheck
* Remove comment about video conf
* Update gpo files revision
* Revert removing the VCM policies
* Deprecate VCM GPO policy
* Change deprecation message to show first supported version
* Tweak supported strings in the adml
* Goodbye friends, you are forever part of the team (#36905)
* Goodbye friends
Forever part of the team 😢
* Update COMMUNITY.md
* Fix formatting issues in COMMUNITY.md
* [New utility]Sysinternals ZoomIt (#35880)
* ZoomIt initial code dump
* Change vcxproj to normalize dependency versions
* Fix code quality to build
* Add to PowerToys solution
* Clean out C-style casts
* Fix some more analyzer errors
* Constexpr a function
* Disable some warnings locally that it seemed better not to touch
* Add ZoomIt module interface
* Add GPO
* Add Settings page with Enable button
* Output as PowerToys.ZoomIt.exe
* Extract ZoomIt Settings definition to its own header
* Make ZoomItModuleInterface build with ZoomItSettings too
* WinRT C++ interop for ZoomItSettings
* From Registry To PowerToys Json
* Properly fix const_cast analyzer error
* Initial Settings page loading from registry
* Zoom mode settings
* Save settings
* Add file picker and DemoType file support
* Remaining DemoType settings
* Have ZoomIt properly reloading Settings and exiting
* Remove context menu entries for Options and Exit
* ZoomIt simple Break Options
* Break advanced options
* Simple Record settings
* Record Microphone setting
* Fix break background file picker title
* Font setting
* Fix build issues after merge
* Add ZoomIt conflict warning to Settings
* Exclude Eula from spell checking
* Fix spellcheck errors
* Fix spell check for accelerated menu items
* Remove cursor files from spellcheck. They're binary
* Fix forbidden patterns
* Fix XAML style
* Fix C# analyzers
* Fix signing
* Also sign module interface dll
* Use actual ZoomIt icon
* Add OOBE page for ZoomIt
* ZoomIt image for Settings
* Flyout and Dashboard entries
* Fix type speed slider labels
* Correctly load default Font
* Correctly register shortcuts on ZoomIt startup first run
* Fix modifier keys not changing until restart
* Show MsgBox on taken shortcut
* Start PowerToys Settings
* Normalize ZoomIt file properties with rest of PowerToys
* Add attribution
* Add ZoomIt team to Community.md
* More copyright adjustments
* Fix spellcheck
* Fix MsgBox simultaneous instance to the front
* Add mention of capturevideosample code use
* Add ZoomIt to process lists
* Add telemetry
* Add logging
* React to gpo
* Normalize code to space identation
* Fix installer build
* Localize percent setting
* Fix XAML styling
* Update src/settings-ui/Settings.UI/Strings/en-us/Resources.resw
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
* Fix spellcheck
* One more spellcheck fix
* Integrate LiveDraw feature changes from upstream
* Fix name reuse in same scope
* Fix c-style casts
* Also register LIVEDRAW_HOTKEY
* Fix newLiveZoomToggleKey
* Update LiveZoom description in Settings to take LiveDraw into account
* Fix spellcheck
* Fix more spellcheck
* Fix Sysinternals capitalization
* Fix ARM64 Debug build
* Support Sysinternals build (#36873)
* Remove unneeded files
* Make build compatible with Sysinternals
* Separate PowerToys ZoomIt product name (#36887)
* Separate PowerToys ZoomIt product name
To help maintain the Sysinternals branding in the standalone version.
* Clarify branding-related includes
* Remove ZoomIt.sln
* Add foxmsft to spell-check names
* Add ZoomIt to README
* Add ZoomIt to GH templates
* Add ZoomIt events to DATA_AND_PRIVACY.md
* Remove publish_config.json
* Remove publish_config.json from vcxproj too
---------
Co-authored-by: Mark Russinovich <markruss@microsoft.com>
Co-authored-by: Alex Mihaiuc <69110671+foxmsft@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
* [PTRun]Add hotkey to the show telemetry event (#36869)
* [PTRun]Update the code for .NET 9.0.1 - remove workarounds (#36909)
* Revove some unneeded changes after pdating to .net9.1
* [RegistryPreview]Copy context menu, data tooltip, MULTI_SZ fix (#36631)
* add context menus
* string resources for contextmenu
* fix line break parsing for MULTI_SZ
* better presentation of multiline values and value tooltip
* cleanup
* [MWB] - refactoring "Common" classes - Common.Log.cs, Common.Receiver.cs (#35726)
* [PTRun]Add setting for different trigonometric units in Calculator (#36717)
* Added angle units to PowerToys Run Calculator plugin.
* Update Resources.resx
* Added GitHub SpellCheck rule for 'gradians'.
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [ci]Remove steps to build abstracted utilities packages (#36934)
* [Settings]Update GPO infobar icon, improve some pages and fix bugs (#33703)
* changes part 1
* fix xaml code
* changes part 2
* fix cmdNotFound page
* Update PowerOcrPage
* More Pages changed
* More Pages changed
* revert temporary change
* fix spelling
* add resw comment
* add resw comment
* Update MouseWihtoutBorderPage.xaml
* PowerPreview page
* workspaces page
* fix awake page gpo handling
* NewPlus page
* update new+ page!
* AdvancedPaste.xaml: Move Info bar.
* Update MouseJumpPanel.xaml
* Update GeneralPage.xaml
* fix position of info bar and some ui quirks
* fix xaml style
* fix string resources
* string changes
* prepare megre main
* update new+ page
* zoomit page
* various fixes
* [Common]NotificationUtil helper class with FileWatcher (#36720)
* add NotificationUtil helper with file watcher and cache
* fix spellcheck
* indentation
* [PTRun][Docs]Add YubicoOauthOTP to Third-Party plugins (#36761)
* [PTRun]Fixed typo in Value Generator messages (#36951)
* [AOT] Clean up some AOT issues in Advanced Paste module (#36297)
* Clean up the aot build issue.
* Merge main and clean up new AOT build issue
* Update LogEvent define.
* Update src/modules/AdvancedPaste/AdvancedPaste/Helpers/LogEvent.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* update typo bug
* Remove unused allow list item
* Create a new folder to place source generation context
* Merge main and rename LogEvent to AIServiceFormatEvent
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* xaml format
* [check-spelling] Update metadata
Update for https://github.com/zadjii-msft/PowerToys/actions/runs/12884838755/attempts/1
Accepted in https://github.com/zadjii-msft/PowerToys/pull/346#issuecomment-2604315393
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Laszlo Nemeth <57342539+donlaci@users.noreply.github.com>
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
Co-authored-by: Ionuț Manța <ionut@janeasystems.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
Co-authored-by: PesBandi <127593627+PesBandi@users.noreply.github.com>
Co-authored-by: Wenjian Chern <55335597+Sophanatprime@users.noreply.github.com>
Co-authored-by: Youssef Victor <youssefvictor00@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: leileizhang <leilzh@microsoft.com>
Co-authored-by: Den Delimarsky 🔐 <sign@den.dev>
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
Co-authored-by: Shuai Yuan <128874481+shuaiyuanxx@users.noreply.github.com>
Co-authored-by: moooyo <42196638+moooyo@users.noreply.github.com>
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jerry Xu <n.xu@outlook.com>
Co-authored-by: Demitrius Nelon <denelon@microsoft.com>
Co-authored-by: Kai Tao <69313318+vanzue@users.noreply.github.com>
Co-authored-by: Connor Plante <150482134+plante-msft@users.noreply.github.com>
Co-authored-by: Connor Plante <connor.plante@gmail.com>
Co-authored-by: Domen Soklič <soklicd@gmail.com>
Co-authored-by: Hao Liu <liuhaobupt@163.com>
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: immi <iafullprogrammer@gmail.com>
Co-authored-by: Asif Islam <77113884+asif4318@users.noreply.github.com>
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
Co-authored-by: Dave Rayment <dave.rayment@gmail.com>
Co-authored-by: Neil McAlister <pingzing@users.noreply.github.com>
Co-authored-by: Mark Russinovich <markruss@microsoft.com>
Co-authored-by: Alex Mihaiuc <69110671+foxmsft@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: Michael Clayton <mike@kingslandconsulting.co.uk>
Co-authored-by: Nathan Gill <nathan.j.gill@outlook.com>
Co-authored-by: Daniel Nilsson <daniel.nilsson1989@gmail.com>
Co-authored-by: Stefan Markovic <stefansjfw@users.noreply.github.com>
The fallback command was still showing up on empty query because we weren't explicitly setting the underlying command name to the empty string when it is empty. This is what it looked like in the root view:

This is a really small PR that just fixes that issue.
Adds a setting which controls what happens when you press the global hotkey.
When enabled, the hotkey will bring you home when you activate the hotkey, rather than just leave the palette on the current page.
Closes#271
And the placeholder text too.
This one's mildly confusing, because we don't want the View and the Model fighting over the same exact property. Basically I just have the view be able to call the SearchText setter, and the model's PropChanged is listened to by the View. They shouldn't fight too much then.
Closes#163Closes#112
This PR is a ton of _plumbing_. UX-wise, this is very rough. What's more important in this PR is the broad wiring this does, to connect individual pages with the `IExtension` that's hosting them.
`CommandPaletteHost` is the important new class that we're introducing. This is the class that implements the `IExtensionHost` interface, and is the one by which extensions can use to log messages back to the host.
There's both:
* A singleton instance of the `CommandPaletteHost`, which represents all global state,
* per-extension instances of the `CommandPaletteHost`, which allows us to know which extension a message came from.
When we fetch a command provider, we'll create a new `CommandPaletteHost` for that extension, and connect the extension to that instance.
* Log messages from an extension go to the global list of messages, so those go to the global instance's list of `LogMessageViewModel`s
* When an extension writes status messages, we'll add the messages to _that extension's_ `CommandPaletteHost`.
* The `PageContext` is aware of the `CommandPaletteHost`, so it can now retrieve information about the hosting extension for that page. Since all pages for an extension share a single `CommandPaletteHost`, status messages can be shown across all the pages in that extension's context, then hidden when the user leaves that context.
This also does part of #253, because now we have a `TopLevelCommandWrapper` AND a `TopLevelCommandItemWrapper`, separately. That lets us store the `CommandPaletteHost` in the `TopLevelCommandWrapper`, which we need so that when we activate a top-level command, we can fetch the extension host out of it and give it to the pages that follow.
Also included is the "single builtin command provider" which is also in #264, because it's kinda insane to have things like "Quit", "Reload extension", "View log", things which are all _core pieces of the palette itself_, each need a separate provider. That's insane.
I didn't add support for:
* Extensions to hide messages once they're shown
* I dunno if `PropChanged`'ing a status message works
* I didn't add support for progress bars yet, because it's NOT TRIVIAL to replace the icon of an InfoBar with a progress wheel. What the heck WinUI 😠
* Again, this is Programmer Xaml - we'll need real designers to come around and clean this up
---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
This is like, the 99% ues case, so it would be nice if this was easy.
I'm also experimenting with making fewer instances of Tag objects, to
see if that helps things. Not yet, but we'll see
Most of my notes are in #322. This one was a journey.
The app was doing something re-entrant when we changed the selected item. It had nothing to do with `ScrollIntoView` (though, not calling that would stop the crash).
Seems like that `ItemsList_SelectionChanged` -> `UpdateSelectedItemCommand` -> `WeakReferenceMessenger.Default.Send<ShowDetailsMessage>`, all on the UI thread, seemed to really make XAML mad. And a combination of hopping to the background thread, and debouncing the `ShowDetails` call, seemed to fix it.
Tags made it worse - presumbaly it made the XAML layout pass take longer, which widened the window for the app to think it was re-entrant
Closes#322
I'm smarter than that, really.
As described in #302. You can't write into `WindowsApps`, where actual packages are installed. Instead, you need to use the local app data path.
This replicates logic that we've got in the Terminal, for getting the right LocalAppData path, without using Windows.Storage. Original code looks like:
```c++
_TIL_INLINEPREFIX bool IsPackaged()
{
static const auto isPackaged = []() {
UINT32 bufferLength = 0;
const auto hr = GetCurrentPackageId(&bufferLength, nullptr);
return hr != APPMODEL_ERROR_NO_PACKAGE;
}();
return isPackaged;
}
std::filesystem::path GetBaseSettingsPath()
{
static auto baseSettingsPath = []() {
/* some portable mode code we don't need */
wil::unique_cotaskmem_string localAppDataFolder;
// KF_FLAG_FORCE_APP_DATA_REDIRECTION, when engaged, causes SHGet... to return
// the new AppModel paths (Packages/xxx/RoamingState, etc.) for standard path requests.
// Using this flag allows us to avoid Windows.Storage.ApplicationData completely.
THROW_IF_FAILED(SHGetKnownFolderPath(FOLDERID_LocalAppData, KF_FLAG_FORCE_APP_DATA_REDIRECTION, nullptr, &localAppDataFolder));
std::filesystem::path parentDirectoryForSettingsFile{ localAppDataFolder.get() };
if (!IsPackaged())
{
parentDirectoryForSettingsFile /= UnpackagedSettingsFolderName;
}
// Create the directory if it doesn't exist
std::filesystem::create_directories(parentDirectoryForSettingsFile);
return parentDirectoryForSettingsFile;
}();
return baseSettingsPath;
}
```
I stuck this in a `Helpers.Utilities` class, because we will not be the only ones hitting this.
Closes#302
When we changed icons to be a pair of IconData in an IconInfo, I forgot this type check.
Oops. Now it works again.
Originally in #265
Regressed in #286
(targets #308, which targets #299)
`IconData` and `IconInfo` are unfortunately, not trivially marshallable into the host process. This creates a collection of cases where an app can crash and take the host down, because we'll try to inquire something about the icon.
It broke reloading when an extension crashed.
It broke backing out of a crashed extension.
Previously: #218Closes#235
* [Workspaces] implement the move feature (#35480)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* fix Move attribute after launch and snapshot
* Extend WindowArranger with PWA functionality to detect different PWA apps. PwaHelper moved to the common library
* fix repeat counter in the editor
* Code optimization
* code cleanup, optimization
* fix double-processing window
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* [KeyboardManager]Fix mapping shift to numpad (#35890)
* Keyboard Manger fix numpad as shift
Fixed shift not being released if a numpad key as shift.
* Added comments
* Fix typo
* Fix the numpad unlocked key not working if the locked version is overridden by shift
* Fix spelling check.
* Revert the VK_CLEAR change.
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [Analyzers] Update .editorconfig with rules to relax IDE errors (#36095)
* [Analyzers] Remove duplicate pascal case style from .editorconfig
* [Analyzers] Configured severity for individual IDE and CA rules showing as errors in VS
Set severity for IDE0005, IDE0008, IDE0016, IDE0018, IDE0019, IDE0021, IDE0022, IDE0023, IDE0025, IDE0027, IDE0028, IDE0029, IDE0031, IDE0032, IDE0034, IDE0036, IDE0039, IDE0042, IDE0044, IDE0045, IDE0046, IDE0047, IDE0057, IDE0051, IDE0052, IDE0054, IDE0055, IDE0056, IDE0057, IDE0059, IDE0060, IDE0061, IDE0063, IDE0071, IDE0073, IDE0074, IDE0075, IDE0077, IDE0078, IDE0083, IDE0090, IDE0100, IDE0130, IDE160, IDE180, IDE0200, IDE0240, IDE0250, IDE0251, IDE0260, IDE0270, IDE0290, IDE0300, IDE0301, IDE0305, IDE1005, IDE1006, CA1859, CA2022, CA2263
* [Analyzers] Fix mismatched analyzer descriptions
* [Analyzers] Fix misspelling
* Update .editorconfig
Made the following style rules `silent` instead of `suggestion`:
- Use explicit type instead of 'var'
- Use expression body for ...
- Use block-scoped namespace
* [Analyzers] Set IDE0290 to silent
* [Analyzers] Remove IDE1006 configuration from .editorconfig in favor of making exclusions for the few entries
* [Analyzers][Indexer] Add IDE1006 suppressions
* [Analyzers][Peek] Add IDE1006 suppression
* [Analyzers][MWB] Add IDE1006 suppression.
* [Analyzers][Plugins] Add IDE1006 suppression
* [Analyzers][ImageResizer] Suppress IDE0073 to retain original copyright
* [Analyzers] Remove IDE0073 severity change in .editorconfig
---------
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
* [Workspaces] PWA follow-up (#36217)
* [PTRun][Calculator]Allow scientific notation with lowercase 'e' (#36187)
* [Workspaces] Add encoder parameter to bitmap.save() (#36228)
* [Workspaces] Add encoder parameter to bitmap.save()
* 1 more call fixed
* Move repeated code to the csharp library
* [Workspaces] Implement store of app window's size and position (#36086)
* [Workspaces] Implement store of app window's size and position
* Modifying the default values to -1. The program will use the original default values for the first run.
* [ScreenRuler]Add setting to show the measurement in an extra unit (#35887)
* display ruler: supporting millimeter and other units
* Measurement Tool: UI Setting for an extra unit
* Update images
* spelling
* spelling
* suit code style
* Fix for code review
* remove weird file
* rename field
* [Deps]Update MSTest from 3.5.0 to 3.6.3 (#36115)
* Update MSTest from 3.5.0 to 3.6.3
* Use STA attributes that are now part of MSTest
* Adding Jerry to community.md (#36232)
Update COMMUNITY.md
* [Workspaces] Arranger: smart timer (#36096)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] Arranger: Reset wait timer after each successful arrange action
* fix merge error
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Upgrade to check-spelling v0.0.24 (#36235)
This upgrades to [v0.0.24](https://github.com/check-spelling/check-spelling/releases/tag/v0.0.24).
A number of GitHub APIs are being turned off shortly, so you need to upgrade or various uncertain outcomes will occur.
There's a new accessibility forbidden pattern:
> Do not use `(click) here` links
> For more information, see:
> * https://www.w3.org/QA/Tips/noClickHere
> * https://webaim.org/techniques/hypertext/link_text
> * https://granicus.com/blog/why-click-here-links-are-bad/
> * https://heyoka.medium.com/dont-use-click-here-f32f445d1021
```pl
(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:</|\]\()
```
There are some minor bugs that I'm aware of and which I've fixed since this release, but I don't expect to make another release this month.
I've added a pair of patterns for includes and pragmas. My argument is that the **compiler** will _generally_ tell you if you've misspelled an include and the **linker** will _generally_ tell you if you misspell a lib.
- There's a caveat here: If your include case-insensitively matches the referenced file (but doesn't properly match it), then unless you either use a case-sensitive file system (as opposed to case-preserving) or beg clang to warn, you won't notice when you make this specific mistake -- this matters in that a couple of Windows headers (e.g. Unknwn.h) have particular case and repositories don't tend to consistently/properly write them.
* Adjust to community.md, shifting jerry's github user name (#36242)
Update COMMUNITY.md
* [AOT compatible] Resolve AOT Build Error in Peek.UI (#36194)
* add partial for aot support
* add Microsoft.NET.ILLink.Tasks to packages.props
* format
* Revert "format"
This reverts commit 742d5e2214.
* add Microsoft.NET.ILLink.Tasks to notice.md
* add auto reference
* update script to remove the 'Auto-reference line'
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Awake Updates - `TILLSON_11272024` (#36049)
* Update with bug fixes for tray icon and support for parent process
* Process information enum
* Update the docs
* Fix spelling
* Make sure that PID is used in PT config flow
* Logic for checks based on #34148
* Update with link to PR
* Fixes#34717
* Small cleanup
* Proper task segmentation in a function
* Cleanup the code
* Fix synchronization context issue
* Update planning doc
* Test disabling caching to see if that manages to pass CI
* Cleanup to make sure that we're logging things properly.
* Update ci.yml
* Disable cache to pass CI
* Retry logic
* Cleanup
* Code cleanup
* Fixes#35848
* Update notes and codename
* After third attempt, log error instead of throwing exception
* More cleanup to avoid double execution
* Add expected word
* Safeguards for bad values for timed keep-awake
* More updates to make sure I am using uint
* Update error message
* Update packages
* Fix notice and revert CsWinRT upgrade
* Codename update
* Update expect.txt
* Update the struct
* Ensuring we're properly awaiting tray initialization
* Update to make sure tray reflects the bound process
* Cleanup, proper JSON serialization for logs.
* Not needed.
* Add command validation logic
* Moving the initialization logic earlier
* Make sure we show the display state in the tooltip
* Update tray string
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update logic for icon resets
* Update doc
* Simplify function for setting mode shell icon
* Issues should be properly linked
* Minor cleanup
* Update timed behavior
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Workspaces] detecting right app version (#36100)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] fix detection of specific version of apps
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Move the XamlStyler config to src/ (#36202)
my never ending goal to minimize files in the root dir
* [AdvancedPaste]Add Semantic Kernel opt-in to allow chaining of paste actions (#35902)
* [AdvancedPaste] Semantic Kernel support
* Changed log-line with potentially sensitive info
* Spellcheck issues
* Various improvements for Semantic Kernel
* Spellcheck issue
* Refactored Clipboard routines
* Added integration tests for KernelService
* Extra telemetry for AdvancedPaste
* Added 'Hotkey' suffix to AdvancedPaste_Settings telemetry event
* Added IsSavedQuery
* Added KernelQueryCache
* Refactoring
* Added KernelQueryCache to BugReportTool delete list
* Added opt-n for Semantic Kernel
* Fixed bug with KernelQueryCache
* Ability to view last AI chat message on error
* Improved kernel query cache
* Used System.IO.Abstractions and improved tests
* Fixed under-count of token usage
* Used Semantic Kernel icon
* Cleanup
* Add missing EndProject line
* Fix dependency version conflicts
* Fix NOTICE.md
* Correct place of SemanticKernel in NOTICE.md
* Unlinked CustomPreview toggle from AI
* Added Microsoft.Bcl.AsyncInterfaces dependency to AdvancedPaste
* Fixed NOTICE.md order
* Moved Custom Preview to behaviour section
* Made Image to Text raise error on empty output
* Added AIServiceBatchIntegrationTests
* Updated AIServiceBatchIntegrationTests
* Added prompt moderation
* Moved GPO Infobar to better location
* [Launcher]Port from WPF-UI to .NET 9 WPF (#36215)
* Initial implementation
* Fix fluent style
* Fix no endline
* Update expect.txt
* Fix formatting
* Fix light theme looking bad on Windows 10
* fix formatting
* test change
* Now really fixed W10
* Add a comment
* Fix typos
* Fix spellcheck errors
* Fix spellcheck pattern for websites
* Change patterns for spellcheck in the right file
* Fix XAML styling
* Fix contrast colors on W11
* Fix formatting
* Removed emty line
* Fix formatting
* Added comment to fluentHC file
* fix comment
* Fix Windows10 again.
Adress feedback.
* W11 fix chaning from high contrast to normal not having correct background
* W10 Fix high contrast not working after switching from light/dark moed
* Address feedback
* Fix formatting
* Second W11 fix chaning from high contrast to normal not having correct background
* [UX]Updating New+ and Settings icons (#36290)
* Updated icons
* Updating more icons and icos
* [Settings][Dashboard] Accessibility fixes (#36280)
* make narrator announce buttons/toggles
* add toggles module name
* [ci]Sign OpenAI dll that's not signed (#36299)
* Update CODEOWNERS to include gordon, jerry and kayla (#36308)
* Update CODEOWNERS
* Update names.txt
* Making the powertoys-code-owners team code owners (#36310)
* Update CODEOWNERS
* Update names.txt
* Update CODEOWNERS
* [FZEditor]Fix Create new layout dialog radio buttons IsChecked values (#36320)
* 0.87 changelog (#36335)
* 0.87 changelog
* Fix spellcheck
* Update README.md
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* [PTRun]Fix WPF transparent border issue on Windows 10 (#36392)
* Added border on W10
* Added a comment
---------
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
* [PTRun]Fix .NET 9 crash in OneNote (#36417)
* Fix crash in OneNote Run
* added better comment
* [AdvancedPaste]Fix NullReferenceException on Dispose (#36428)
[AdvancedPaste] Fixed NullReferenceException on Dispose
* [Fuzz] Add fuzz testing for AdvancedPaste and new pipeline for onboarding OneFuzz (#36329)
* add fuzz
* install .net8
* add spelling check
* refine the pipeline
* add readme and update the test code
* fix spelling error
* change to weekly run
* Add New CI Pipeline for Latest WindowsAppSDK (#36282)
This PR introduces the following changes to the CI pipeline and version management:
Pipeline Enhancements:
1. Added a new script UpdateVersions.ps1 to automate the update of Microsoft.WindowsAppSDK versions across various project files.
2. Introduced a new pipeline configuration ci-using-the-latest-winappsdk.yml to build using the latest Microsoft.WindowsAppSDK.
3. Updated existing pipeline configurations to support the new useLatestWinAppSDK parameter.
Pipeline Configuration Updates:
1. Updated job-build-project.yml to handle the useLatestWinAppSDK parameter and adjust the RestoreAdditionalProjectSourcesArg accordingly.
2. Added a new template steps-update-winappsdk-and-restore-nuget.yml for updating and restoring NuGet packages with the latest Microsoft.WindowsAppSDK.
3. Added WinAPPSDK version selection, the pipeline can be manually triggered to use the specified version.
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [AOT compatible] Make HostsUILib become AOT compatible (#36136)
* Remove AOT configuration
* Refer to AOT compatibility props
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [AOT compatible] Clean up some AOT build issue in FilePreviewCommon and MarkdownPreviewHandler (#36207)
* Use AppContext.BaseDirectory to replace assembly.GetExeAseembly.Location.
Fix json serilizer aot issue.
* clean up some AOT build issue
* Update src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Update src/common/FilePreviewCommon/Formatters/JsonFormatter.cs
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
* Add new pipeline using the latest webview2 from Edge Canary (#36317)
* using the latest webview2 for testing
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Bug fix] Making the OpenAI key configuration page scrollable. (#36359)
* Fixed#34470
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
* [Bug fix] Add a format validation step before format conversion. (#36404)
This PR aims to fix the bug #35225 by introducing a new method IsJson to determine if a given text is in JSON format.
The IsJson method is then utilized in the ToJsonFromXmlOrCsvAsync method to optimize the processing logic.
If the text is already in JSON format, it is returned directly without further conversion from XML or CSV.
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
* Add more STCA team members (#36438)
* Add more STCA team members
* Include more spelling check errors
* Remove non-alpha in dictionary
* Add Zhaopeng Wang
* Fix spell checking error
* Remove "prerelease: true" (#36484)
* Remove "prerelease: true"
The Microsoft.WinGet.DSC module is GA so prerelease: true is no longer needed.
* Update expect.txt
fixing spellcheck warning
---------
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Docs]Update README for 0.87.1 release (#36534)
* [CI] Enhance build Pipeline Reliability with Retry Logic and Improved Error Messaging (#36529)
* update pipeline with retry
* remove tests
* Add team member (#36590)
* [New+]Don't override New actions from Explorer on Windows 10 (#36467)
* [New+]Don't override New actions from Explorer
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Update src/modules/NewPlus/NewShellExtensionContextMenu.win10/shell_context_menu_win10.cpp
* Add pattern for learn.microsoft links
* Also only Query for context menu
* [PTRun][Calculator]Handle hexadecimal numbers to not return divide by 0 error (#36390)
* add '0x' handling for divide by 0 scenarios
* fix comment on division by 0 check
---------
Co-authored-by: Connor Plante <connor.plante@gmail.com>
* [TextExtractor]Minor UI/Accessibility fixes in the overlay UI (#36356)
minor UI and accessibility fixes
* [PTRun][Calculator]Update mages to v3.0.0 and support for `randi(n)` (#36560)
* update to mages 3.0.0
* allow randi() in calculator plugin
* fix tests and input validation
* fix spell check
* [QuickAccent]Added ć for Slovenian (#36336) (#36338)
* Fix snapping Workspaces Editor to Fancy Zones (#36463)
* Remove Workspaces Editor from Fancy Zone's excluded app list
* removed unused string
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
* [PTRun]Fix drag on .NET 9 WPF (#36635)
* [CQ]Continued to move stuff out of root - Solution.props (#36244)
* [QuickAccent]Add Proto-Indo-European (#36408)
* Add ḱ to PowerAccent for Proto-Indo-European
* Fix Spelling Check
* Add more letters to PIE
* Order PIE after PI
---------
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [PTRun]Add context buttons for VSCodeWorkspaces plugin (#36517)
* [Settings][QuickAccent]Change 'character set' to plural form (#36565)
* [PTRun][Calculator]Fix unit tests on non-english systems (#36569)
* fix tests
* update comment
* [PTRun][Calc]Improve handling of non-base 10 numbers (#36700)
* [Settings][PTRun]Show plugin version and website (#36580)
* [Monaco]Add support for .resx and .resw preview support. (#36499)
Added support for .resx and .resw preview support. These files are XML based files so I added the file extensions as part of the registerAdditionalLanguage("xmlExt"...) function.
* [Settings] Add Workspaces' workspaces.json file to backup/restore list (#36714)
* [Localization] Fix loc pipeline to send downloaded localized files to TDBuild upon retry after failure (#36766)
* [AdvancedPaste]Fixed issues with Screen Reader integration (#36778)
* Remove Advent calendar from README (#36777)
* Remove Advent calendar from README
* Update hero image
* Delete doc/images/overview/PT_holiday_hero_image.png
* [AdvancedPaste]Add all BitmapDecoder supported image filetypes to ImageToText (#35600)
Adds support to ImageToText for all image filetypes supported by BitmapDecoder.
* [AOT]Clean up some AOT build issues in PowerAccent.Core (#36264)
* init
* Use AotCompatibility instead
* Replace typeof(Lanaguge) with GetValues<Language>
* Create new folder to place source generation context file.
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
* [WinUI3]Fix Windows 10 title bar borders (#36429)
* Fix borders for windows in the Settings UI
* Fix HOSTS window
* Fix Advanced Paste
* Fix Environment Variables
* Fix File Locksmith
* Fix Peek, with a caveat
* Fix Registry Preview
* Remove unused imports
* Clean up imports in OobeShellPage
* Move OSVersionHelper from Common.UI up into ManagedCommon
* [QuickAccent]Fix unstable language loading (#36721)
* [Peek]Bring into foreground if previously minimized (#36506)
Added Activate() to bring Peek.UI window into focus upon Toggle. This allows the UI to be presented even if it was previously minimized.
* Update Run docs README (#36857)
* Update Run docs README
* Remove System dupe
* [Monaco]Make minimap toggleable (#33742)
* [Monaco]Fix Json format preview setting (#36867)
* [KBM]Added option for exact match shortcut (#36000)
* Added option for exact match shortcut
* Fix spell-check
* [Deps][Security]Update .NET Packages from 9.0.0 to 9.0.1 (#36879)
* [Deps] Update NuGet packages to version 9.0.1
Updated several NuGet packages from version 9.0.0 to 9.0.1, including:
- Microsoft.Data.Sqlite
- Microsoft.Bcl.AsyncInterfaces
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Logging
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Hosting
- Microsoft.Extensions.Hosting.WindowsServices
- Microsoft.Win32.SystemEvents
- Microsoft.Windows.Compatibility
- System.CodeDom
- System.ComponentModel.Composition
- System.Configuration.ConfigurationManager
- System.Data.OleDb
- System.Diagnostics.EventLog
- System.Diagnostics.PerformanceCounter
- System.Drawing.Common
- System.Management
- System.Runtime.Caching
- System.ServiceProcess.ServiceController
- System.Text.Encoding.CodePages
- System.Text.Json
* [Deps] Update NOTICE.md
* Fix bad merge
* [check-spelling] Update metadata
Update for https://github.com/zadjii-msft/PowerToys/actions/runs/12790673218/attempts/1
Accepted in https://github.com/zadjii-msft/PowerToys/pull/330#issuecomment-2593053640
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
---------
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Laszlo Nemeth <57342539+donlaci@users.noreply.github.com>
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
Co-authored-by: Ionuț Manța <ionut@janeasystems.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
Co-authored-by: PesBandi <127593627+PesBandi@users.noreply.github.com>
Co-authored-by: Wenjian Chern <55335597+Sophanatprime@users.noreply.github.com>
Co-authored-by: Youssef Victor <youssefvictor00@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: leileizhang <leilzh@microsoft.com>
Co-authored-by: Den Delimarsky 🔐 <sign@den.dev>
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
Co-authored-by: Shuai Yuan <128874481+shuaiyuanxx@users.noreply.github.com>
Co-authored-by: moooyo <42196638+moooyo@users.noreply.github.com>
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Jerry Xu <n.xu@outlook.com>
Co-authored-by: Demitrius Nelon <denelon@microsoft.com>
Co-authored-by: Kai Tao <69313318+vanzue@users.noreply.github.com>
Co-authored-by: Connor Plante <150482134+plante-msft@users.noreply.github.com>
Co-authored-by: Connor Plante <connor.plante@gmail.com>
Co-authored-by: Domen Soklič <soklicd@gmail.com>
Co-authored-by: Hao Liu <liuhaobupt@163.com>
Co-authored-by: Hao Liu (from Dev Box) <haoliu3@microsoft.com>
Co-authored-by: immi <iafullprogrammer@gmail.com>
Co-authored-by: Asif Islam <77113884+asif4318@users.noreply.github.com>
Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com>
Co-authored-by: Dave Rayment <dave.rayment@gmail.com>
Co-authored-by: Neil McAlister <pingzing@users.noreply.github.com>
Co-authored-by: Stefan Markovic <stefansjfw@users.noreply.github.com>
Hey guess what, 24px is too tall! If you reserver 24 for the titlebar
"drag area", it'll steal input from the top half of the back button,
making it un-clickable. fun!
Adds a setting to control if the `Details` pane is shown for apps on the main page or not. I'm defaulting this to off, because that pane doesn't add any value currently.
The ListItems were having their icons manually initialized to `icon`, which was always passed as `string.Empty`.
I suspect this is vestigial from PT Run - where the icon would be paseed in based on the theme. This prevented us from being able to fall back to the icon from the command, which is where we stuck the actual icon
The meat of this PR is in `Microsoft.CmdPal.UI\CmdPal.Branding.props`.
**TL;DR**: You can build cmdpal locally and have it not conflict with the selfhost build, allowing you to use the selfhost CmdPal while _also_ building and testing new features in a _separate_ package.
This PR allows us to have different packages deployed by the build, depending on the "branding" of cmdpal which you're building. It's highly cribbed from the Terminal's concept of branding.
This is all keyed off the `CommandPaletteBranding` property. This accepts different values:
* `Release` / `Preview` / `Canary`: These are all the same currently. This is the "release" / "stable" branded version
* `Dev` (or omitted, which is the default for local builds): Build the "dev" version of the package
closes#297
Co-authored-by: Stefan Markovic <stefan@janeasystems.com>
* Refactor package.h
* Install on install
* Fix install, remove package on uninstall and some auto-format
* Start on enable() and close on PT close
* Fix build
* Change settings to toggle. If not installed, install on enable
* Fix disable
* Add infobar to PT Run page
* Remove trailing sln project
* remove reference
* Remove comment
This never got hooked up in TRA. Now it is.
And it actually does things smartly - it'll dismiss all the old extension instances, then re-populate all of them. Really helpful for testing extensions. You don't need to keep re-launching the palette, you can just reload and presto - we'll release the old package, let the new one deploy, then load the new one.
It also revealed that we were updating the `.SearchText` from #234 on the UI thread. Oh no! Can't do that - that might be a x-proc call. Very bad. So that fixes this.
This adds one _last_ change to the API to allow apps to specify different icons for light and dark mode.
If it's important to an app to specify different icons for light vs dark mode, then `IconInfo` is exactly what you want to use. It contains _two_ `IconDataType`s, for two different icons. Simple as that.
And to keep things even easier, I slapped on a `IconInfo(string)` constructor, so that you can easily build a `IconInfo` with both icons set to the same string. Especially useful for font icons, which we're using everywhere already. That allows almost all the extensions to have _no code change_ here, so that's super!
Some of the places where we were evaluating if an icon existed or not - that needs to move into the view. `ShellPage.xaml.cs` does one variant of that already for `IDetails.HeroImage`. The view is the only part of the app that knows what the theme is.
Closes#78
This is the implementation of what was spec'd in #282.
When we get an `ItemsChanged`, we'll look through the top level commands, slice out all the old ones, then fetch the new ones and stitch them in the same place in the list.
I've only implemented it for the Bookmarks provider so far.
Closes#277
As discussed in #273.
This will allow extensions that want to navigate around the page stack
more control.
For example, the Obsidian Notes extension will want to start with a form
for "Set up vault path". When they submit, instead of just going
home, they'll want to GoToPage('com.obsidian.notes', mode=GoHome), so
that submitting the form takes them to the notes list, rather than just
_home_.
Doesn't actually implement this, of course. Just gets the API ready for
it.
This subtly regressed in #244, so subtly that I didn't really notice it till I fixed it.
In that PR, we replaced the `visibility` binding of the `ProgressBar` with a binding to `IsInitialized`. For most pages, this actually just works fine - they're only initialized once they return some results. And most pages are only loading until they first return something.
But the trick is with pages that do some `Loading` _after_ they're initialized. For them, the progress bar never shows up, because `Initialized` is already true.
I actually only stumbled upon this because of a totally different bug (which this also fixes).
In rare cases we'd load a little out of order, and the ShellPage would try to determine if it should hide the `ErrorMessage` or not. About 25% of the time, it would evaluate `{x:Bind ViewModel.CurrentPage.ErrorMessage, Converter={StaticResource StringNotEmptyToVisibilityConverter}, Mode=OneWay}` _before_ the `CurrentPage` got set, so it would show it initially. That looked real janky.
Right now, the main page really explodes if an extension dies. It really does not like it.
Instead, this PR changes it so that if we fail to load the properties from an ICommandItem, we won't kill the whole page, we'll just replace that _single_ item with an error item. The item _would_ look like:

however, we ended up just silently ignoring the item entirely.
Random nits, part the first.
Emoji render just a little too big currently, and they get clipped.
This PR fixes that, by making emoji icons have just a bit of negative padding, to give them space to not get clipped.
Is also replaces the icons on the Services page, because the icon on the list items was the icon of the thing to do to the service (i.e. running services would have a "stop" icon, which is insane). Of course, this made the emoji problem much more apparent.
Okay I made everything worse in #291, this should actually fix it.
I have no idea why it passed before. Must have been branched from before the upstream change
When I pilfered the ShortcutControl, I didn't change the namespaces at
all. I also didn't build the whole PT sln.
After the latest merge with upstream, either I built more or new rules
got added, and now there are conflicts, since the same exact type is
being built in two places.
Easy enough to fix that
I just wanted to make loading JSON settings a little easier.
* "Well, these `SettingsManager` classes all do the same thing, what if they shared a base class?"
* "You know, I bet I could put all the built-in settings into one file if we 'namespaced' the individual settings"
* "Hey what about those bodgy core settings pages, those need to be not just an adaptive card"
* "Woah, the `SettingsCard` in the toolkit is really cool"
* "Dang look I bet I can stick all the extensions into that page pretty trivially"
* "Okay it wasn't that trivial but hey it works, and it's awesome"
* "You know, PT already has this awesome keybinding editor. How hard could that be to stick in there"
* "Once again, pretty hard, but that mostly works"
* "Yes, yes, resources, we need localization, that's not too hard"
* "Yea saving to a file isn't too hard"
* "I should probably use that hotkey setting when we actually bind the key"
and then accidentally the whole thing

---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
if you don't hang onto a reference to the RenderedAdaptiveCard, then the GC might clean it up sometime, even while the card is in the UI tree. If this gets GC'd, then it'll revoke our Action handler, and the form will do seemingly nothing.
This PR adjusts the UX for single-clicking / double-clicking on list items. With this change:
- A single-click on a list item will navigate the user to that list item. It will not automatically invoke the associated command.
- A double-click on a list item will invoke the command for the list item.
It is a really small code change, _but_ I have a suspicion that there are cleaner ways to handle what I'm doing. Since it is so small, I figured just creating the PR and getting quick @zadjii-msft feedback would do the trick.
Random nits, part the second
TRA is particular about form pages. It'll actually break itself if an extension throws an exception (which it should do). The POC was more forgiving (but technically incorrect)
Well, turns out, all the form pages we had did not give an F and just threw exceptions. They shouldn't! That's bad!
This is a feature request @plante-msft has had for a while, but I don't see an open issue for it.
Does what title says, navigates backwards when a user types `Backspace` and the filterbox is already empty.
The functionality works as follows:
1. If a user presses down on the backspace key with an empty query and holds the backspace key, cmdpal will not navigate back until the key is released
2. If a user presses down on the backspace key with a non-empty query and holds the backspace key, cmdpal will not navigate back even after the key is released. This is to ensure that folks can hold backspace and delete the entire text field without inadvertently getting sent backwards in the flow. In this case, they would have to explicitly hit backspace again.
TLDR - hitting backspace will only ever navigate back on release AND if backspace was originally hit with an empty query.
Specs out #277
Extensions might want to change their list of top-level commands. Classic example is the bookmarks provider, or the spongebot.
The API needs to allow this. This wasn't a problem in the prototype, because the prototype literally fetched the commands every time it went home.
Both these methods are operating on a BG thread, not the UI thread. They can't touch the ObservableCollection, otherwise they'll just throw exceptions.
Yea, this one's stupid. I spent too long debugging why changing the list
of tags in an extension didn't do anything. Turns out, we just never had
XAML listen for the PropertyChanged. That hurts.
Specs #261
##### Empty content
Developers can specify an `EmptyState` to customize the way the list page looks
when there are no search results. This will control what's displayed to the user
when both:
* `IsLoading = false`
* `GetItems()` returns null or an empty list
This property is observable like anything else, which allows developers to
change the empty state contextually. For example, consider a "search winget"
extension:
* If the user hasn't typed anything yet -> `Title="Start typing to search winget"`
* If the user has typed and no results were found -> `Title="No results found"`,
`Subtitle="Your search '...' returned no packages on winget"`
Originally a part of #264
I need command providers to have an ID, so that we can differentiate between multiple providers in the same package.
It's really only relevant for _us_, but I don't know what the future has in store for us.
Also includes a minor refactoring that combines a couple of the built-ins into a single provider. Reload and quit aren't really separate from _the app itself_.
## Summary of the Pull Request
This PR is ready to review with a bunch of code clean-up around shell and page initialization/navigation, progress, errors, and the back button.
There's still some future items to think about, but that's beyond the scope of this work right now. See more notes in comments below on changes:
> Alright, I cleaned up all the Page Initialization and Navigation code for Shell, it's all centralized there now (which makes sense) and removes 3x duplicated code we had in the ExtPage templates. They're just basic XAML controls now which don't really need to worry about how they get loaded, and just get their VMs.
>
> I also tidied up the massive if statement we had in ShellPage.xaml.cs for each page type so we have a singular logical flow that just branches in two statements with an inline switch for the VM constructor and the page type.
>
> In the future, we may want to cache some page VMs there, so if you navigate back/forth we don't reload everything...
>
> This also let us remove a message which was effectively just internal communication. Should be a bit cleaner now, certainly easier to add new page types now too.
These are some of the last remnants of things from the original MVVM setup when we were still testing patterns and then just copied.
This uses `IsInitialized` for tracking the progress bar and bubbles up errors better without blocking the app (and provides better context for errors).
This also fixes the issue with the Back Button stealing focus instead of the search box (by moving it to the Shell page to leave the SearchBox control as just responsible for the searchbox/keyboard input).
-------
Future Open questions/TODO:
- [ ] How do we better track the parent extension/owner of pages/commands/etc... for error reporting?
- [x] Need to clean-up backend logic of VMs for the loading state for the new Shell page centralization
- [x] For instance, progress only happens like once now...
- [x] May be able to centralize some of the loading bits logic?
- [x] Finalize some brushes for error items
- [ ] Still need to potentially track individual issues loading specific items, but maybe this is a good enough start for a single PR once the above are addressed?
- [ ] Cache page VMs?
- [ ] Clean-up async loading of pages and their content
Helps with #220.
This will make #238 easier as then we don't need as much XAML/Loading glue for those
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Mike Griese <zadjii@gmail.com>
I think this is what @joadoumie was seeing when he thought the main page crashed a lot.
Some weird bug where the main page gcrashes with some frequency if the first thing you type is a space. Weird. `FuzzySearch` just can't handle the space
As it stands, since the shell/run handler always exactly matches the `SearchText`, it _always_ shows up first in the results.
That's annoying. Make it a little less popular. Sometimes, you just have to be mean to the kid that's really, really popular.
I think this swaps the POC for TRA in PowerToys.
I don't think I have enough disk space left on this machine currently to actually _build_ PowerToys all up (🙃) so I'm gonna see what CI comes up with.
---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
Co-authored-by: Stefan Markovic <stefan@janeasystems.com>
Honestly, code is pretty simple.
* Add an `AliasManager` to track the alias strings bound to which commands.
* Only a couple aliases are built-in currently. The ones from PT Run.
* When the text is updated on the MainPage, if it matches an alias, we'll immediately just _do that command_.
* When we do fire off an alias, we need to clear the search text on the main page, because we _don't_ want to come back with that text populated (as opposed to something like `masto↲` which we would want to leave in the search box
Closes#143
---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
- Integrated into PowerToys - add module iface project
- Added settings page
- Added to installer
- CI updates to sign msix and it's content and to check if msix content is signed
TODO:
- see how to install msix dependencies automatically
- Start app automatically after installing from settings?
- Installed by default?
_targets #224_
A big collection of UX nits.
* The command buttons at the bottom work now.
* The context menu works with `enter` now
* `ctrl+enter` will do the secondary command now
* `ctrl+k` will open the context menu now
* Lists will do a better job of starting with a selected item, so that you can immediately start arrowing through the list
* Lists will also do a better job of keeping at least one item selected as the list changes.
* I manually dispatch a `CurrentPageViewModel.Filter = FilterBox.Text` when the filterbox backspaces to a single character. IIRC there's a bug in the debouncer upstream, but I had no patience for that
* I reworded some things and changed some icons.
* "Execute shell commands" felt _so_ "I am a 1337 haxor", when "sir, this is a run dialog"
* "Switch between open windows" is tooooooooo lllllllllllooooooooooooonnnnnnngggggggggg
Co-authored-by: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
Co-authored-by: Mike Griese <zadjii@gmail.com>
* [Workspaces] implement the move feature (#35480)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* fix Move attribute after launch and snapshot
* Extend WindowArranger with PWA functionality to detect different PWA apps. PwaHelper moved to the common library
* fix repeat counter in the editor
* Code optimization
* code cleanup, optimization
* fix double-processing window
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* [KeyboardManager]Fix mapping shift to numpad (#35890)
* Keyboard Manger fix numpad as shift
Fixed shift not being released if a numpad key as shift.
* Added comments
* Fix typo
* Fix the numpad unlocked key not working if the locked version is overridden by shift
* Fix spelling check.
* Revert the VK_CLEAR change.
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* [Analyzers] Update .editorconfig with rules to relax IDE errors (#36095)
* [Analyzers] Remove duplicate pascal case style from .editorconfig
* [Analyzers] Configured severity for individual IDE and CA rules showing as errors in VS
Set severity for IDE0005, IDE0008, IDE0016, IDE0018, IDE0019, IDE0021, IDE0022, IDE0023, IDE0025, IDE0027, IDE0028, IDE0029, IDE0031, IDE0032, IDE0034, IDE0036, IDE0039, IDE0042, IDE0044, IDE0045, IDE0046, IDE0047, IDE0057, IDE0051, IDE0052, IDE0054, IDE0055, IDE0056, IDE0057, IDE0059, IDE0060, IDE0061, IDE0063, IDE0071, IDE0073, IDE0074, IDE0075, IDE0077, IDE0078, IDE0083, IDE0090, IDE0100, IDE0130, IDE160, IDE180, IDE0200, IDE0240, IDE0250, IDE0251, IDE0260, IDE0270, IDE0290, IDE0300, IDE0301, IDE0305, IDE1005, IDE1006, CA1859, CA2022, CA2263
* [Analyzers] Fix mismatched analyzer descriptions
* [Analyzers] Fix misspelling
* Update .editorconfig
Made the following style rules `silent` instead of `suggestion`:
- Use explicit type instead of 'var'
- Use expression body for ...
- Use block-scoped namespace
* [Analyzers] Set IDE0290 to silent
* [Analyzers] Remove IDE1006 configuration from .editorconfig in favor of making exclusions for the few entries
* [Analyzers][Indexer] Add IDE1006 suppressions
* [Analyzers][Peek] Add IDE1006 suppression
* [Analyzers][MWB] Add IDE1006 suppression.
* [Analyzers][Plugins] Add IDE1006 suppression
* [Analyzers][ImageResizer] Suppress IDE0073 to retain original copyright
* [Analyzers] Remove IDE0073 severity change in .editorconfig
---------
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
* [Workspaces] PWA follow-up (#36217)
* [PTRun][Calculator]Allow scientific notation with lowercase 'e' (#36187)
* [Workspaces] Add encoder parameter to bitmap.save() (#36228)
* [Workspaces] Add encoder parameter to bitmap.save()
* 1 more call fixed
* Move repeated code to the csharp library
* [Workspaces] Implement store of app window's size and position (#36086)
* [Workspaces] Implement store of app window's size and position
* Modifying the default values to -1. The program will use the original default values for the first run.
* [ScreenRuler]Add setting to show the measurement in an extra unit (#35887)
* display ruler: supporting millimeter and other units
* Measurement Tool: UI Setting for an extra unit
* Update images
* spelling
* spelling
* suit code style
* Fix for code review
* remove weird file
* rename field
* [Deps]Update MSTest from 3.5.0 to 3.6.3 (#36115)
* Update MSTest from 3.5.0 to 3.6.3
* Use STA attributes that are now part of MSTest
* Adding Jerry to community.md (#36232)
Update COMMUNITY.md
* [Workspaces] Arranger: smart timer (#36096)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] Arranger: Reset wait timer after each successful arrange action
* fix merge error
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Upgrade to check-spelling v0.0.24 (#36235)
This upgrades to [v0.0.24](https://github.com/check-spelling/check-spelling/releases/tag/v0.0.24).
A number of GitHub APIs are being turned off shortly, so you need to upgrade or various uncertain outcomes will occur.
There's a new accessibility forbidden pattern:
> Do not use `(click) here` links
> For more information, see:
> * https://www.w3.org/QA/Tips/noClickHere
> * https://webaim.org/techniques/hypertext/link_text
> * https://granicus.com/blog/why-click-here-links-are-bad/
> * https://heyoka.medium.com/dont-use-click-here-f32f445d1021
```pl
(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:</|\]\()
```
There are some minor bugs that I'm aware of and which I've fixed since this release, but I don't expect to make another release this month.
I've added a pair of patterns for includes and pragmas. My argument is that the **compiler** will _generally_ tell you if you've misspelled an include and the **linker** will _generally_ tell you if you misspell a lib.
- There's a caveat here: If your include case-insensitively matches the referenced file (but doesn't properly match it), then unless you either use a case-sensitive file system (as opposed to case-preserving) or beg clang to warn, you won't notice when you make this specific mistake -- this matters in that a couple of Windows headers (e.g. Unknwn.h) have particular case and repositories don't tend to consistently/properly write them.
* Adjust to community.md, shifting jerry's github user name (#36242)
Update COMMUNITY.md
* [AOT compatible] Resolve AOT Build Error in Peek.UI (#36194)
* add partial for aot support
* add Microsoft.NET.ILLink.Tasks to packages.props
* format
* Revert "format"
This reverts commit 742d5e2214.
* add Microsoft.NET.ILLink.Tasks to notice.md
* add auto reference
* update script to remove the 'Auto-reference line'
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Awake Updates - `TILLSON_11272024` (#36049)
* Update with bug fixes for tray icon and support for parent process
* Process information enum
* Update the docs
* Fix spelling
* Make sure that PID is used in PT config flow
* Logic for checks based on #34148
* Update with link to PR
* Fixes#34717
* Small cleanup
* Proper task segmentation in a function
* Cleanup the code
* Fix synchronization context issue
* Update planning doc
* Test disabling caching to see if that manages to pass CI
* Cleanup to make sure that we're logging things properly.
* Update ci.yml
* Disable cache to pass CI
* Retry logic
* Cleanup
* Code cleanup
* Fixes#35848
* Update notes and codename
* After third attempt, log error instead of throwing exception
* More cleanup to avoid double execution
* Add expected word
* Safeguards for bad values for timed keep-awake
* More updates to make sure I am using uint
* Update error message
* Update packages
* Fix notice and revert CsWinRT upgrade
* Codename update
* Update expect.txt
* Update the struct
* Ensuring we're properly awaiting tray initialization
* Update to make sure tray reflects the bound process
* Cleanup, proper JSON serialization for logs.
* Not needed.
* Add command validation logic
* Moving the initialization logic earlier
* Make sure we show the display state in the tooltip
* Update tray string
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update src/modules/awake/Awake/Core/Manager.cs
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* Update logic for icon resets
* Update doc
* Simplify function for setting mode shell icon
* Issues should be properly linked
* Minor cleanup
* Update timed behavior
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* [Workspaces] detecting right app version (#36100)
* [Workspaces] Add move functionality
* spell checker
* [Workspaces] Modify Arranger to move apps without launch
* moved ipc helper
* removed callback
* use LauncherStatus in WindowArranger
* wait for launching next app
* launch in a separate thread and protect by mutexes
* update app version in advance
* changed canceling launch
* increased waiting time
* Fix optional parameter load from json
* changed arranger waiting time
* additional waiting time for Outlook
* added app id
* ensure ids before launch
* set id in editor
* minor updates
* [Workspaces] Move: Get the nearest window when moving a window
* [Workspaces] convert optional boolean to enum to avoid json problems
* Handle case when the new Application Property "moveIfExists" does not exist
* Re-implementing app-window pairing for moving feature.
* spell checker
* XAML formatting
* Fixing bug: IPC message not arriving
* spell checker
* Removing app-level-setting for move app. Also fixed compiler errors due styling.
* Updating editor window layout
* Re-implementing window positioning UI elements
* XAML formatting
* Code review findings
* Code cleanup
* Code cleanup
* Code cleanup
* code cleanup
* Code cleanup
* Code cleanup
* [Workspaces] fix detection of specific version of apps
---------
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
* Move the XamlStyler config to src/ (#36202)
my never ending goal to minimize files in the root dir
* [AdvancedPaste]Add Semantic Kernel opt-in to allow chaining of paste actions (#35902)
* [AdvancedPaste] Semantic Kernel support
* Changed log-line with potentially sensitive info
* Spellcheck issues
* Various improvements for Semantic Kernel
* Spellcheck issue
* Refactored Clipboard routines
* Added integration tests for KernelService
* Extra telemetry for AdvancedPaste
* Added 'Hotkey' suffix to AdvancedPaste_Settings telemetry event
* Added IsSavedQuery
* Added KernelQueryCache
* Refactoring
* Added KernelQueryCache to BugReportTool delete list
* Added opt-n for Semantic Kernel
* Fixed bug with KernelQueryCache
* Ability to view last AI chat message on error
* Improved kernel query cache
* Used System.IO.Abstractions and improved tests
* Fixed under-count of token usage
* Used Semantic Kernel icon
* Cleanup
* Add missing EndProject line
* Fix dependency version conflicts
* Fix NOTICE.md
* Correct place of SemanticKernel in NOTICE.md
* Unlinked CustomPreview toggle from AI
* Added Microsoft.Bcl.AsyncInterfaces dependency to AdvancedPaste
* Fixed NOTICE.md order
* Moved Custom Preview to behaviour section
* Made Image to Text raise error on empty output
* Added AIServiceBatchIntegrationTests
* Updated AIServiceBatchIntegrationTests
* Added prompt moderation
* Moved GPO Infobar to better location
* [Launcher]Port from WPF-UI to .NET 9 WPF (#36215)
* Initial implementation
* Fix fluent style
* Fix no endline
* Update expect.txt
* Fix formatting
* Fix light theme looking bad on Windows 10
* fix formatting
* test change
* Now really fixed W10
* Add a comment
* Fix typos
* Fix spellcheck errors
* Fix spellcheck pattern for websites
* Change patterns for spellcheck in the right file
* Fix XAML styling
* Fix contrast colors on W11
* Fix formatting
* Removed emty line
* Fix formatting
* Added comment to fluentHC file
* fix comment
* Fix Windows10 again.
Adress feedback.
* W11 fix chaning from high contrast to normal not having correct background
* W10 Fix high contrast not working after switching from light/dark moed
* Address feedback
* Fix formatting
* Second W11 fix chaning from high contrast to normal not having correct background
* [UX]Updating New+ and Settings icons (#36290)
* Updated icons
* Updating more icons and icos
* [Settings][Dashboard] Accessibility fixes (#36280)
* make narrator announce buttons/toggles
* add toggles module name
* [ci]Sign OpenAI dll that's not signed (#36299)
* Update CODEOWNERS to include gordon, jerry and kayla (#36308)
* Update CODEOWNERS
* Update names.txt
* Making the powertoys-code-owners team code owners (#36310)
* Update CODEOWNERS
* Update names.txt
* Update CODEOWNERS
* [FZEditor]Fix Create new layout dialog radio buttons IsChecked values (#36320)
* 0.87 changelog (#36335)
* 0.87 changelog
* Fix spellcheck
* Update README.md
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
---------
Co-authored-by: Laszlo Nemeth <57342539+donlaci@users.noreply.github.com>
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
Co-authored-by: Ionuț Manța <ionut@janeasystems.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
Co-authored-by: Ani <115020168+drawbyperpetual@users.noreply.github.com>
Co-authored-by: PesBandi <127593627+PesBandi@users.noreply.github.com>
Co-authored-by: Wenjian Chern <55335597+Sophanatprime@users.noreply.github.com>
Co-authored-by: Youssef Victor <youssefvictor00@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: leileizhang <leilzh@microsoft.com>
Co-authored-by: Den Delimarsky 🔐 <sign@den.dev>
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com>
Add support for fallback commands again. Couple important parts:
* Lists shouldn't contain items with blank `Title`s. That's spec'd that way, and allows fallback items to hide themselves if they don't want to be shown for a given search string
* The CommandProviderWrapper, as well as extension infrastructure needs to know to get the fallbacks out of a commandprovider too.
* `TopLevelCommandWrapper` needs to know when its model changes, to update itself in the list
------
Co-authored-by: Mike Griese <zadjii@gmail.com>
This was originally based off `dev/migrie/f/ux-nits`, which is #229
* Adds support for our `win+ctrl+.` global hotkey again.
* Makes our window a transient toolwindow. It doesn't show up in alt+tab. It can only be summoned with the hotkey
* Unless you're debugging, because that's an absolute chore
* Manually makes Quit visible as a command. Quit is usually a fallback command, but I implemented that _right after this commit_. However, I _believe_ the fallback commands need #224 to merge, whereas this subset of deltas didn't exactly
Closes#136
Has a contrast issue with foreground text though:

@ niels9001 think we should have a 'smart' thing that tries to create a contrasting brush for the text based on the background brush or would it be best to let devs config this as part of the tag?
For some reason my pokedex sample extension isn't loading, so that'd be the real test for colors... 😆
* Add the app's icon, if we can
* Add a setting to display the results in-order (THE NEW DEFAULT)
* Change a couple strings to be tighter, less "power-user"-sounding
* Let the code formatter do its buisiness
Originally from 0b789ad, on `dev/migrie/f/stash-forms-should-submit`, which was buried like 7 branches deep.
Co-authored-by: Mike Griese <zadjii@gmail.com>
Just to prove that they work.
This adds the filtering and weighting we were using before to TRA. Lists all get updated in-place, so that the ListView won't flicker like crazy as items get added. And for lists where items get inserted in the middle, we'll update smoothly.
* 4ad92b64ff429b6959285b6cf88d0feacb643be9...642d98d0571b5d6e03a6faa431c00ede27ce4b24 is what adds support for dynamic lists.
* 09b63d6 I moved some files around to make more sense.
* 09b63d6...2016bcb is where I added apps back onto the main page.
When the `MainListPage` gets a filter string, it will filter both top-level commands and the apps from the `AllAppsPage`.
I also made the MainListPage show us that it's loading, by setting `IsLoading = appsLoading || extensionsLoading` (more or less).
Does NOT add support for updating fallback items quite yet. One step at a time.
---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
Fixes#213
Replaces PR #218
FYI @Ryken100 (thanks for the info and assist in debugging the issue and discussing possible avenues of resolution)
Thanks @zadjii-msft for validating the end path in #218
Before:
```xml
<Border x:Name="IconBorder"
Grid.Column="0"
Width="16"
Height="16"
Margin="0,0,0,0">
<!-- LoadIconBehavior will magically fill this border up with an icon -->
<Interactivity:Interaction.Behaviors>
<cmdpalUI:LoadIconBehavior Source="{x:Bind Icon, Mode=OneWay}"/>
</Interactivity:Interaction.Behaviors>
</Border>
```
After:
```xml
<cpcontrols:IconBox
Grid.Column="0"
Width="16"
Height="16"
Margin="0,0,0,0"
SourceKey="{x:Bind Icon, Mode=OneWay}"
SourceRequested="{x:Bind help:IconCacheProvider.SourceRequested}" />
```
The IconCacheProvider is the translation layer between having a light-weight control and our specific app's logic/desire for an icon cache, using the deferred event pattern:
```cs
public static partial class IconCacheProvider
{
private static readonly IconCacheService IconService = new(Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread());
public static async void SourceRequested(IconBox sender, SourceRequestedEventArgs args)
{
if (args.Key == null)
{
return;
}
if (args.Key is IconDataType iconData)
{
var deferral = args.GetDeferral();
args.Value = await IconService.GetIconSource(iconData);
deferral.Complete();
}
}
}
```
## Details
`IconBox` is a custom control that's a ContentControl, its generic (toolkitable) and should be able to be styled and templated (haven't tested, but no reason it shouldn't as a XAML `ContentControl`, should help @niels9001 a ton).
It knows how to take an `IconSource` and create the underlying `IconElement` as its content.
It can also take any general value as a `SourceKey` and via an implementation of the `SourceRequested` event, translate a bound general object into the `IconSource` required. This is how caching can be provided by an application as well, for instance (like we'll do here). This uses the deferred events pattern to await the call to the `SourceRequested` event which may need to load data asynchronously
We create a static x:Bind helper `IconCacheProvider` to encapsulate our shared logic for our eventual Icon cache.
Also:
- Renamed IconCacheService.xaml.cs -> IconCacheService.cs
- Removed old broken behavior (believe ultimate issue was due to instability in loaded/unloaded events, i.e. issue https://github.com/microsoft/microsoft-ui-xaml/issues/1900)
- XAML Styler also did its thing... (some conflict here in config from PowerToys to resolve later, imagine this is also a consequence of us not having CI setup in fork...)
Replaces PR #218
IconBox is a custom control that's a ContentControl, it's generic (toolkitable) and should be able to be styled and templated.
It knows how to take an IconSource and create the underlying IconElement as its content.
It can also take any general value as a `SourceKey` and via an implementation of the SourceRequested event, translate a bound general object into the `IconSource` required. This is how caching can be provided by an application as well, for instance (like we'll do here).
This uses the deferred events pattern to await the call to the `SourceRequested` event which may need to load data asynchronously
We create a static x:Bind helper `IconCacheProvider` to encapsulate our shared logic for our eventual Icon cache.
Renamed IconCacheService.xaml.cs -> IconCacheService.cs
Removed old broken behavior (believe ultimate issue was due to instability in loaded/unloaded events, i.e. issue https://github.com/microsoft/microsoft-ui-xaml/issues/1900)
XAML Styler also did its thing...
This allows extension objects to write error messages specifically to the page that owns them. We don't need the `ShowExceptionMessage` anymore, because that just tossed the error at whatever page was open (even if it wasn't the page that had an error).
I also made this a `IPageContext`, rather than `IErrorContext`, so we could pass the page's task scheduler to that object too. That lets us have one base `UpdateProperties` implementation for all extension objects.
I think this sneakily also adds support for `Page.Title` (separate from `Page.Name`)
Closes#203
Just some minor clean-up/perf things I was trying, doesn't actually fix anything though, unfortunately (outside of maybe making startup a bit faster)...
Does NOT fix https://github.com/zadjii-msft/PowerToys/issues/213
We were effectively getting called to load images twice in a few spots, and we were trying to load them everywhere at startup. This minimized that in a few places, but we can't use x:Phase in the DataTemplate for the List Items (as it needs a UIElement), so that caused some issues.
I thought I had a fix for all the duplicate items loading on the home page, but alas no. Have to continue digging into that, but got side-tracked by the above.
This adds a magic helper to load icons for us. Any time you want an icon, just do this:
```xaml
<Border Width="16"
Height="16"
Margin="4,4,4,4">
<Interactivity:Interaction.Behaviors>
<cmdpalUI:LoadIconBehavior Source="{x:Bind ViewModel.PrimaryAction.Icon, Mode=OneWay}"/>
</Interactivity:Interaction.Behaviors>
</Border>
```
And that'll magically give us a border filled with the icon, and updating with the binding.
I believe it'll also work with `IRandomAccessStreamReference`s, but I didn't actually test that with #151 yet.
I didn't actually implement the "caching" bit of this yet. That'll involve doing some locking per-key inside the factory and I didn't want to futz with that in this initial PR to restore icons
---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
* 5ff225216cab1690ce55088a0aa2fc1af013c867 Adds the ViewModel
* The rest of the commits work on adding it to the View.
I had to re-add `CommunityToolkit.WinUI.UI.Controls.Markdown` to get the MD rendered again.
---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
Co-authored-by: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
_targets #192_
Adds our own struct to the API for passing colors around. This is lifted straight out of the Terminal, which had to deal with this quite a lot.
Since this color is a struct (so that it trivially marshals across the ABI), it can't be _null_. So we also added `OptionalColor`, which is explicitly "Maybe a color, maybe not". We were bit enough times by trying to have a special secret `INVALID_COLOR` value that it ultimately made sense just to put another bool in there.
While I'm touching the SDK and breaking everyone, I figured I'd also do the `s/Loading/IsLoading/g` thing now too.
---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
Doesn't use all these everywhere, but starts plumbing them into ViewModel's so that @niels9001 can start using more things in more places.

I didn't actually colorize the tags, because that requires a Brush, and I don't think I'm supposed to put brushes in the viewmodels
ref #73
WASDK including WebView2 was a mistake.
Supersedes #200
I also had to:
* Manually restore the WebView2 package into `/packages`. I'm assuming this was just VS being dumb and most people won't have to?
* `git clean -fdx -e *.user -e *.cmd -e packages/** -e Appx/** -e *.svg`
* I did it this way because MAYBE i had a couple WIP extensions that I didn't want to nuke, and one .svg file in particular that I yanked from espn.com that I didn't want to nuke
Rebase of #201, onto `main`, to avoid the wacky conflicts circa #200 ~ #205
Can you believe, for a second there, I almost forgot we were building a Run replacement.
---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
* not super happy with this approach - scratch that, not happy at all
* that's a bit better, still gonna need a review, but it works atm
* going home is better than not... for save action in settings
* welp, undoing that. that did NOT work. something is going on with RaiseSettingsChanged
* hmmm... update() doesn't work the way I want it to - on to the next one
* working on file saving... not working yet
* saving to/loading from file works... but needs some refactoring I'd imagine
* we should dismiss palette on launch...
* make settings a context menu command
* add icon as content in .csproj
* fix icon name
* remove hardcoding settings file
* move SettingsJsonPath to Settings Manager class
* more sensical version of saved settings
* remove settings.json from csproj
* removing comment
* whoops, removing unused Settings.json idea
* no more hadcorded strings... helo Resources!
* here you go
* dont do anything to setting if key is not found in payload
* ChoiceSetSetting example working with fake setting in terminal...
* remove random extra terminal settings changes
* working on shell plugin from PT Run
* getting closer to a reasonable prototype
* it kinda makes some sense now
* maybe ChoiceSetSetting should should only take in array of Choices with the default one being just the first choice
* I think this fixes our winmd pains, but at what cost
* fix naming for command
* fixing vd extension publish profiles + a few other things
* Add choice setting example to the sample pages
* add an additional choice in sample pages choice set example
* add icon
* whoops, forgot the command context menu was broken before this fix!
* address first few PR comments
* removed extra file + removing wox refs in .resx
* changed for loop to for each
* fixing some things for PR review
---------
Co-authored-by: Jordi Adoumie <jordiadoumie@microsoft.com>
Co-authored-by: Mike Griese <migrie@microsoft.com>
## Summary of the Pull Request
Packing the SDK into a nuget package and creating the build scripts and pipeline to build it.
Pipeline: will auto build the SDK and publish it to ADO artifacts in that build.
Script: Devs can build nuget locally by running BuildSDKHelper.ps1. This will build and pack the SDK nuget and place it in src\modules\cmdpal\extensionsdk\_build. This directory has been added to the nuget.config as well.
A lot of this is just samples work, so skip on down to `src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/ActionBarViewModel.cs`.
* Updates the Action Bar with the title of the currently active page when we navigate to it
* listens for PropChanged events from `ICommandItem`s in lists and on `IPage`'s (to display a loading bar)
* Also didn't put this on the ShellPage quite yet, because the diff was already massive, and there's complicated "are _we_ loading the page? did the `IPage` say it was loading?" plumbing that needs to be done.
* adds rudimentary support for showing an exception, if there's an error we catch
* I didn't add log this everywhere yet though, since we're not 100% confident on the messaging infrastructure here
* I decided against putting this on the shell page, because I want users to be able to _go back_ from a page with an exception, and that didn't seem trivial if it was on the shellpage itself
* Then updates a bunch of extensions to better utilize the loading state.
* Then discovers a really weird bug with event callbacks in WinRT, so I decided to wrap those in try/catches to have extensions explode less often. (#181)
* Then also adds a bunch of "evil" samples, to make a unified place of "things to try and break us"
ref #73
---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
Targets both #175 (which targets #171), and #172, so the delta is very sloppy.
There's also some sloppy bits of delta here where I tried to see if the single-instance thing fixed the RoOriginate thing.
I'm gonna try to tidy all this up a bit.
Refs #73
On top of #175
This applies the same loading setup between the View and the ViewModel that we had for the ShellPage/ShellViewModel to the ListPage/ListViewModel.
We could abstract this in the View a bit to make work across different combinations of page types and viewmodels later, so they're all consistent, e.g. IInitializableViewModel interface for the `InitializeCommand`.
_targets #171_
This is the direction I was thinking with the comments in https://github.com/zadjii-msft/PowerToys/issues/73#issuecomment-2496004179.
Mainly,
* I'm making sure that ViewModels which wrap up some extension object all have a local copy of their data.
* They all use an `async Task InitializePropertiesAsync()` to retrieve their properties from the extension itself.
* Beyond the `ExtensionObject` they own, they only keep around _other view models_.
I did this for `ListItem` and `CommandContextItem` currently. They both inherit from `CommandItemViewModel`, so they're really all doing the same thing.
If this seems like the direction we want to go, I can tidy up ListPage too, and keep wrapping up more extension objects like this.
The BODGY thing I'm doing here is
```cs
viewModel.InitializePropertiesAsync().ContinueWith(t => { /*TODO this feels dirty*/ });
```
in `ListViewModel.cs`. Basically just yeeting off a task to load the properties for the item (separately for each item?!). Feels DEFINITELY wrong.
* Allows `enter` to activate items again
* populates the context menu in the `ActionBar` with real values, as the user moves the selection
* Also adds a generic `PerformCommandMessage`, which lets us have one message for "go to a page, or invoke a command"
ref #73
1. Manually copy `Microsoft.CmdPal.Extensions.winmd` into our helper library's output directory. If we do that, then it rolls up to the packages that reference it.
* This only started failing for me on 17.13. Before that (I think on 17.11) this just worked automatically?
* This feels bodgy
2. Update the helper script to be more informative
Refs #104. I don't want to say that it fixes it till we never see it again, but I think this fixes it.
I did not test this on 17.11. I'll need to find a machine that has it to make sure I don't explode the world
d26bf6e7bca938305e3d7f60072c9c3dbc3fb581 with the notable changes
This is needed in order to build successfully other PT modules that use CommunityToolkit.Mvvm nuget package package. Warnings are introduced by newer version of MVVM package used for CmdPal - 8.4.0-preview2. I tried using the same MVVM used in PT but then CmdPal fails to build. I guess let's go with this here as I expect we'll bump mvvm package sometime soon on upstream so issues will be resolved on PT side.
<!-- 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
- 17a3088ea581ec0826ffa212103fe3099d085c32 Switches non-AOT safe RegisterAll call to Register with type for Messenger pattern
- fa962a574db0bcf168f322127bc3fbae8c649e7a Use Dependency Injection for Constructor of ShellViewModel to start this pattern going (as we covered in the MVVM crash course mtg)
- 0bdd21a837352bba13901a7fc58ff28f89551147 Re-add Quit/Reload and use Messenger, but they won't appear in UI yet as Fallback Commands and we don't have search
- dd1b1289cb4ccf4a1dece59f5ed4bb206c5ee39a Setup initial debounce strategy for search in UI layer, though search still not implemented (think found a WCT bug too, will investigate)
- 98041ea11043732fa449c7a99d9e64d43597fcaf Update to latest WCT packages to help us test before our release 😅
Does the `ExtendsContentIntoTitleBar` thing to hide the titlebar.
Also re-adds the logic that resizes our drag rect, so that the window is movable again.
This is my absolute first attempt at doing anything in the MVVM project, so I want to make sure i'm not wildly off base.
* 7afc7954b Simplest possible thing: Add the other builltins
* Just re-includes the old builtins, save for quit and reload.
* c203c3385 Styles from the original prototype too
* Adds the ListItem styling from before, with the subtitles below. Leaves space for icons, but I'm leaving them out for now.
* 56eb141bf Navigate deeper into lists
* My first attempt at doing things The Right Way - I think I can just send messages like this, to have the ShellPage navigate us around
* 57bb6ebe6 Navigate back too
* Similarly - if we can go in, we should be able to go out
* 5c87a62bf slide-y navigations
* I like the slide transitions, so I just wanted to see them in action again. It's _good_
* b1ef6896a Keep focus in the search box
* When we navigate to a new list page, try to keep the focus in the search box still
This PR targets #160. A lot of the ideas that led here were written down there first. Especially the "stub" command bits, which precipitated the value for an interface that matched what the top-level commands can really return.
The TL;DR of this PR is found here:
https://github.com/zadjii-msft/PowerToys/issues/153#issuecomment-2486367825
* [x] Closes#153
* [x] Closes#109
Shockingly, the code change is kinda small. It's mostly just careful find/replace's.
Fallback handlers took the biggest delta, but even they work again in the prototype.
One final yolo for the prototype app, just to see how it feels.
This adds very rudimentary alias support to the prototype app. I only hardcoded a few of them - calculator, registry, windows settings, and my own virtual desktop switcher. The aliases are powered by the ICommand.Id, added in #160
Now that we have the alias for the calculator though, it needed to be a lot better. I did that too. Now it saves your history (per launch session), and you can copy the results to the clipboard. And also use TextToSuggest to fill in the current result. And also if you select an old result, it'll plop it back into the search text.
Cleans up a huge remaining TODO section from the spec about the extension lifecycle.
This documents affordances for extensions to be lazy-loaded, so that we don't always load every extension process. Extensions can also opt-out of this behavior.
This one doesn't actually have code associated with it. It sounded like a lot to write, for code that would eventually just be tossed next week.
It does, however, have a drive-by fix for the spongebot extension
Closes#81
What it says on the tin.
I usually keep this in the palette, but I keep also clean building and blowing away my `state.json`
---------
Co-authored-by: Mike Griese <migrie@microsoft.com>
Probably the last real prototype commit.
There was a collection of _little things_ that made the current state of the prototype a little wacky. This fixes a lot of them, so that the prototype is in a "demoable" state.
* Updates the WinUI version - there was a bugfix in that minor version bump that's needed to help fix the `E_LAYOUTCYCLE`.
* The list no longer flickers uncontrollably as it loads top-level commands
* filtering the list is a lot more efficient (still not what it used to be though)
* Forms us a `ListView` instead of an `ItemsRepeater`. `ItemsView` also had a layout cycle, go figure.
* Fixes the namespace of the samples extension, so it doesn't conflict with the SSH one
* Adds a bunch of icons, subtitles
* When the list updates, we'll try to maintain the selected item (really useful for something like the mastodon extension)
* When we update tthe filter text, we'll do _way_ better at actually updating our own `SelectedItem`,
* so that the Details doesn't stay open on an app if you hit `esc`
* so that the selection doesn't.... fuck off to space (closes#155)
* Fixes the calculator command to show up originally in the list
* Includes _some_ of the styling changes @niels9001 is working on (notably, the subtitle being on it's own line)
* I think also fixes#113
Resurrects the Pokedex extension I was working on before Luca was born.
This is a simple sample of a list with a _lot_ of items, and tags tags tags. It helps to repro a E_LAYOUT_CYCLE that we were seeing.
This also fixes that layout cycle, by removing that unneeded `StackPanel`
Fixes #WaitItLooksLikeINeverFiledThis
As discussed in #121.
Adds a new `IListItem.TextToSuggest` property. If an extension populates that, and the user hits right-arrow when the item is selected, we'll set the `SearchText` to that text.
I didn't give it a UI treatment, because
1. I'm not good at XAML
2. As noted in https://github.com/zadjii-msft/PowerToys/issues/121#issuecomment-2464704543, there's complicated edge cases here. You have to track what's actually been typed, and then also have a ghost suggestion for the very first item (before the user types/up/downs at all).
I didn't think it was valuable to implement that right now before we have A Real App.
* targets #144
* which targets #142
* which targets #141
and those guys are all merged as of #150
Originally in #142 and #144, but github didn't automatically change the base branch 😨
-----
As discussed in #77.
Biggest change is that `IDynamicListPage` doesn't have `GetItems(String query)` anymore. Instead, the host will call the `SearchText` setter, and the list can raise `ItemsChanged` to let the host know to call `GetItems` again
See src/modules/cmdpal/Exts/EverythingExtension/Pages/EverythingExtensionPage.cs for an example of how to update dynamic extensions.
Closes#131Closes#77
----
* I put the sample pages into a single top-level command, so deploying that extension didn't add 5 top-level commands to your palette
* I tightened up some of the phrasing for the samples, and the builtins, to be less repetitive
* I added a few icons
* I made the markdown sample longer (and work more reliably)
* and also thank you Hawker for auto-format on save, you the man
This updates the spec to enable CmdPal to host settings for extensions. Extensions can provide us essentially, a FormPage, and we'll give that special treatment as _the settings_ for the extension. We're gonna use this in #100 in the future.
For now, I also added a helper set of classes for quickly constructing a `Settings` object, which is basically just a dictionary. Notably though, it lets us define simple control types for each of these settings, which we can then turn into the `IFormPage` on the developer's behalf.
See the [`SampleSettingsPage.cs`](https://github.com/zadjii-msft/PowerToys/compare/main...dev/migrie/s/settings-for-extensions#diff-ac06e39258579222e94539315ad59e0bf04f3b0f3e83a2f8a11aa5a42d569ebe) for an example.
Closes#123
* [Settings]Fix release cycle links in OOBE What's New page (#35801)
* Fix release cycle link in OOBE
Previously it would point to the 5ft last release instead.
* Adressed feedback
* [Deps]Upgrade System.IO.Abstractions (#35656)
* Upgrade System.IO.Abstractions to the latest stable release
Whoops.
We were accidentally deploying all the extension packages to the _same_ directory. That meant we could only ever register one at a time - including the extension host. yikes.
## Summary of the Pull Request
- integrate all projects into PowerToys.sln
- remove all other .sln files
- remove unneeded files IMO (LET ME KNOW IF SOME OF THOES FILES ARE ACTUALLY NEEDED!)
Allow extensions to send status messages to the host app.
As an example, you can now:
```cs
ExtensionHost.LogMessage(new LogMessage() { Message = "This is a test, from the HackerNews sample" });
```
And have that appear in the host apps debug console.
Closes#134Closes#118
Should also make resolving #87 and #135 easier.
We don't have the design of these status messages totally planned out yet. But this should at least make it possible. For those in the back, **this does not actually display these messages anywhere in the host UX currently**.
-----
Other information that's currently included:
* The host app's HWND. Way too many times does the Windows API need an HWND, which extensions won't have, but the host app does.
* The `LanguageOverride`. This is in case we ever want to support `PrimaryLanguageOverride` in the host app.
Actually implements the mastodon extension. Open APIs are great. My baby sleeping for four hours is even better.
This sample has a list of posts. Each item has Details, which are the post bodies. viewing the post opens a form page with the whole thread of that post and any replies on it.
* closes#101
* closes#79
* Also removes the space for the `HeroImage` if we don't need it.
* Fixes an issue where forms straight up didn't work (they weren't loading on the main thread)
* Adds a helper `OpenUrl` command (does what it says on the tin)
This extension covers a lot of concepts so I think it's a valuable test. I'm hoping to do auth for allowing you to post/comment/favorite/boost/etc in the future.
Also helped understand what we need for pagination.
Also revealed that ItemsRepeaters are cursed.
As discussed.
I'm getting rid of ``ISection[]`` and replacing that with just a `String Section { get; }`[^1] property on `ListItem`'s themselves.
I didn't want to bother wasting engineering resurrecting the `SectionListView` thing in the prototype without `ISection`s, so I'll just leave that for us to implement The Right Way in the MVVM exe.
This should keep the prototype running, and keep us moving forward
[^1]: we discussed making this an object. I didn't here, but we probably can in the future.
* first pass for windows services core ext
* added Windows Registry Plugin
* updated PR to reflect wt profiles, registry, and services extensions and incorporating feedback
* first pass for windows settings
* Added gh issues for TODOs
* fixed placeholder text for open command and added additional GH issue refs
* move list page and command to ctor to avoid new allocation each time TopLevelCommands is invoked
* change KeepOpen to Dismiss on CommandResult for OpenSettingsCommand
---------
Co-authored-by: Mike Griese <migrie@microsoft.com>
* first pass for windows services core ext
* added Windows Registry Plugin
* updated PR to reflect wt profiles, registry, and services extensions and incorporating feedback
* fixing dead code
This is his Everything extension from the Hackathon. I'm merging this in as-is, to use as a base for future testing. I don't want to have a bunch of prototypes that are totally orphaned
It requires Everything to be running in the background.
My changes are
* 0e2d9edfcec65b032adc860ffb5be04bb3076f07: merge main
* 7d1e4dfeb54e58838c75a2209bd85dc2ccf14448: don't use an absolute path to everything64.dll
* 3f71bd5670e98d508291516db34c583a2d2d9e13: Add a `Details` to the error element that's displayed when there's an exception from an extension.
* 67453d732f0e825913f232e04d05d934306518c7: Add actual error messages specific to Everything
* a69f811594aa4f18756e60293e7bcd9cee16341a: Use the x86 path to the icon, if needed
---------
Co-authored-by: Connor Plante <connor.plante@gmail.com>
Does some quick plumbing to show things in the existing UI via MVVM.
TODO: Need to sort out how to better separate the models and viewmodels and how things behave within our special top-level 'main' page vs. extension pages, etc...
* All the `ActionProvider`s were renamed to `CommandProvider`
* `Page`s all got a `Title`
* `IListItem` got it own `Icon`
* `ActionResult` -> `CommandResult`
* add all the pubxml's we lost
As in title.
I'm adding a `ExtensionObject<T>` object too. It doesn't _enforce_ anything. We can use it to wrap up things we get from extensions. You get the object back out with `.Unsafe`, which is a mental clue "this object might not live in this process". It'll at least give us a better clue of all the places where accessing the object might not totally be safe.
Also fixes a bug that makes cmdpal a bit more resilient to an extension dying and being reloaded. Just go to all apps & back, and presto, reload.
* Moving plugin folder
* all .net now pointing to the tool ver prop
* fixing cpp proj
* consolidation of packages
* removing non root nuget config
* Update src/modules/cmdpal/ToolingVersions.props
---------
Co-authored-by: Mike Griese <migrie@microsoft.com>
value:Please make sure to [search for existing issues](https://github.com/microsoft/PowerToys/issues) before filing a new one!
- type:markdown
attributes:
value:|
We are aware of the following high-volume issues and are actively working on them. Please check if your issue is one of these before filing a new bug report:
* **PowerToys Run crash related to "Desktop composition is disabled"**: This may appear as `COMException: 0x80263001`. For more details, see issue [#31226](https://github.com/microsoft/PowerToys/issues/31226).
* **PowerToys Run crash with `COMException (0xD0000701)`**: For more details, see issue [#30769](https://github.com/microsoft/PowerToys/issues/30769).
* **PowerToys Run crash with a "Cyclic reference" error**: This `System.InvalidOperationException` is detailed in issue [#36451](https://github.com/microsoft/PowerToys/issues/36451).
- id:version
type:input
attributes:
label:Microsoft PowerToys version
placeholder:X.XX.X
description:Hover over the system tray icon or look at Settings
description:Hover over system tray icon or look at Settings
validations:
required:true
@@ -27,7 +20,7 @@ body:
type:dropdown
attributes:
label:Installation method
description:How / where was PowerToys installed from?
description:How / Where was PowerToys installed from?
# Should be `for its` (possessive) or `because it is`
\bfor it(?:'s| is)\b
# Should be `lends`
\bleads(?= credence)
\bit's(?= own\b)
# Should be `log in`
\blogin to the
@@ -272,34 +140,12 @@
# Should be `long-standing`
\blong standing\b
# Should be `lose`
(?<=\bwill )loose\b
# `apt-key` is deprecated
# ... instead you should be writing a pair of files:
# ... * the gpg key added to a distinct key ring file based on your project/distro/key...
# ... * the sources.list in a district file -- not simply appended to `/etc/apt/sources.list` -- (there is a newer format [DEB822](https://manpages.debian.org/bookworm/dpkg-dev/deb822.5.en.html)) that references the gpg key.
# Alternatively, if you're using check-spelling v0.0.25+, and you would like to _check_ the Non-English content for spelling errors, you can. For information on how to do so, see:
# Update Lorem based on your content (requires `ge` and `w` from https://github.com/jsoref/spelling; and `review` from https://github.com/check-spelling/check-spelling/wiki/Looking-for-items-locally )
description: 'Guidelines for creating custom agent files for GitHub Copilot'
applyTo: '**/*.agent.md'
---
# Custom Agent File Guidelines
Instructions for creating effective and maintainable custom agent files that provide specialized expertise for specific development tasks in GitHub Copilot.
## Project Context
- Target audience: Developers creating custom agents for GitHub Copilot
- File format: Markdown with YAML frontmatter
- File naming convention: lowercase with hyphens (e.g., `test-specialist.agent.md`)
- Location: `.github/agents/` directory (repository-level) or `agents/` directory (organization/enterprise-level)
- Purpose: Define specialized agents with tailored expertise, tools, and instructions for specific tasks
- Official documentation: https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/create-custom-agents
## Required Frontmatter
Every agent file must include YAML frontmatter with the following fields:
```yaml
---
description:'Brief description of the agent purpose and capabilities'
name:'Agent Display Name'
tools:['read','edit','search']
model:'Claude Sonnet 4.5'
target:'vscode'
infer:true
---
```
### Core Frontmatter Properties
#### **description** (REQUIRED)
- Single-quoted string, clearly stating the agent's purpose and domain expertise
- Should be concise (50-150 characters) and actionable
- Example: `'Focuses on test coverage, quality, and testing best practices'`
#### **name** (OPTIONAL)
- Display name for the agent in the UI
- If omitted, defaults to filename (without `.md` or `.agent.md`)
- Use title case and be descriptive
- Example: `'Testing Specialist'`
#### **tools** (OPTIONAL)
- List of tool names or aliases the agent can use
- Supports comma-separated string or YAML array format
- If omitted, agent has access to all available tools
- See "Tool Configuration" section below for details
#### **model** (STRONGLY RECOMMENDED)
- Specifies which AI model the agent should use
- Supported in VS Code, JetBrains IDEs, Eclipse, and Xcode
Return: Number of files processed and any issues found`
});
// Step 2: Analyze (depends on Step 1)
constanalysis=awaitrunSubagent({
description:'Analyze processed data',
prompt:`You are the Data Analyst specialist.
Project: ${projectName}
Input: ${basePath}/processed/
Output: ${basePath}/analysis/
Task:
1. Read processed files from input
2. Generate analysis report
3. Write to: ${basePath}/analysis/report.md
Return: Key findings and identified patterns`
});
```
### Key Points
- **Pass variables in prompts**: Use `${variableName}` for all dynamic values
- **Keep prompts focused**: Clear, specific tasks for each sub-agent
- **Return summaries**: Each sub-agent should report what it accomplished
- **Sequential execution**: Use `await` to maintain order when steps depend on each other
- **Error handling**: Check results before proceeding to dependent steps
### ⚠️ Tool Availability Requirement
**Critical**: If a sub-agent requires specific tools (e.g., `edit`, `execute`, `search`), the orchestrator must include those tools in its own `tools` list. Sub-agents cannot access tools that aren't available to their parent orchestrator.
**Example**:
```yaml
# If your sub-agents need to edit files, execute commands, or search code
tools:['read','edit','search','execute','agent']
```
The orchestrator's tool permissions act as a ceiling for all invoked sub-agents. Plan your tool list carefully to ensure all sub-agents have the tools they need.
### ⚠️ Important Limitation
**Sub-agent orchestration is NOT suitable for large-scale data processing.** Avoid using `runSubagent` when:
- Processing hundreds or thousands of files
- Handling large datasets
- Performing bulk transformations on big codebases
- Orchestrating more than 5-10 sequential steps
Each sub-agent call adds latency and context overhead. For high-volume processing, implement logic directly in a single agent instead. Use orchestration only for coordinating specialized tasks on focused, manageable datasets.
## Agent Prompt Structure
The markdown content below the frontmatter defines the agent's behavior, expertise, and instructions. Well-structured prompts typically include:
1.**Agent Identity and Role**: Who the agent is and its primary role
2.**Core Responsibilities**: What specific tasks the agent performs
3.**Approach and Methodology**: How the agent works to accomplish tasks
4.**Guidelines and Constraints**: What to do/avoid and quality standards
5.**Output Expectations**: Expected output format and quality
### Prompt Writing Best Practices
- **Be Specific and Direct**: Use imperative mood ("Analyze", "Generate"); avoid vague terms
- **Define Boundaries**: Clearly state scope limits and constraints
- **Include Context**: Explain domain expertise and reference relevant frameworks
- **Focus on Behavior**: Describe how the agent should think and work
- **Use Structured Format**: Headers, bullets, and lists make prompts scannable
## Variable Definition and Extraction
Agents can define dynamic parameters to extract values from user input and use them throughout the agent's behavior and sub-agent communications. This enables flexible, context-aware agents that adapt to user-provided data.
### When to Use Variables
**Use variables when**:
- Agent behavior depends on user input
- Need to pass dynamic values to sub-agents
- Want to make agents reusable across different contexts
- Require parameterized workflows
- Need to track or reference user-provided context
**Examples**:
- Extract project name from user prompt
- Capture certification name for pipeline processing
- Identify file paths or directories
- Extract configuration options
- Parse feature names or module identifiers
### Variable Declaration Pattern
Define variables section early in the agent prompt to document expected parameters:
```markdown
# Agent Name
## Dynamic Parameters
- **Parameter Name**: Description and usage
- **Another Parameter**: How it's extracted and used
## Your Mission
Process [PARAMETER_NAME] to accomplish [task].
```
### Variable Extraction Methods
#### 1. **Explicit User Input**
Ask the user to provide the variable if not detected in the prompt:
```markdown
## Your Mission
Process the project by analyzing your codebase.
### Step 1: Identify Project
If no project name is provided, **ASK THE USER** for:
- Project name or identifier
- Base path or directory location
- Configuration type (if applicable)
Use this information to contextualize all subsequent tasks.
```
#### 2. **Implicit Extraction from Prompt**
Automatically extract variables from the user's natural language input:
```javascript
// Example: Extract certification name from user input
When invoking a sub-agent, pass all context through template variables in the prompt:
```javascript
// Extract and prepare variables
constbasePath=`projects/${projectName}`;
constinputPath=`${basePath}/src/`;
constoutputPath=`${basePath}/docs/`;
// Pass to sub-agent with all variables substituted
constresult=awaitrunSubagent({
description:'Generate project documentation',
prompt:`You are the Documentation specialist.
Project: ${projectName}
Input: ${inputPath}
Output: ${outputPath}
Task:
1. Read source files from ${inputPath}
2. Generate comprehensive documentation
3. Write to ${outputPath}/index.md
4. Include code examples and usage guides
Return: Summary of documentation generated (file count, word count)`
});
```
The sub-agent receives all necessary context embedded in the prompt. Variables are resolved before sending the prompt, so the sub-agent works with concrete paths and values, not variable placeholders.
### Real-World Example: Code Review Orchestrator
Example of a simple orchestrator that validates code through multiple specialized agents:
- [Your First Custom Agent Tutorial](https://docs.github.com/en/copilot/tutorials/customization-library/custom-agents/your-first-custom-agent)
### Related Files
- [Prompt Files Guidelines](./prompt.instructions.md) - For creating prompt files
- [Instructions Guidelines](./instructions.instructions.md) - For creating instruction files
## Version Compatibility Notes
### GitHub.com (Coding Agent)
- ✅ Fully supports all standard frontmatter properties
- ✅ Repository and org/enterprise level agents
- ✅ MCP server configuration (org/enterprise)
- ❌ Does not support `model`, `argument-hint`, `handoffs` properties
### VS Code / JetBrains / Eclipse / Xcode
- ✅ Supports `model` property for AI model selection
- ✅ Supports `argument-hint` and `handoffs` properties
- ✅ User profile and workspace-level agents
- ❌ Cannot configure MCP servers at repository level
- ⚠️ Some properties may behave differently
When creating agents for multiple environments, focus on common properties and test in all target environments. Use `target` property to create environment-specific agents when necessary.
description: 'Guidelines for creating high-quality custom instruction files for GitHub Copilot'
applyTo: '**/*.instructions.md'
---
# Custom Instructions File Guidelines
Instructions for creating effective and maintainable custom instruction files that guide GitHub Copilot in generating domain-specific code and following project conventions.
## Project Context
- Target audience: Developers and GitHub Copilot working with domain-specific code
- File format: Markdown with YAML frontmatter
- File naming convention: lowercase with hyphens (e.g., `react-best-practices.instructions.md`)
- Location: `.github/instructions/` directory
- Purpose: Provide context-aware guidance for code generation, review, and documentation
## Required Frontmatter
Every instruction file must include YAML frontmatter with the following fields:
```yaml
---
description:'Brief description of the instruction purpose and scope'
applyTo:'glob pattern for target files (e.g., **/*.ts, **/*.py)'
---
```
### Frontmatter Guidelines
- **description**: Single-quoted string, 1-500 characters, clearly stating the purpose
- **applyTo**: Glob pattern(s) specifying which files these instructions apply to
description: 'Guidelines for creating high-quality prompt files for GitHub Copilot'
applyTo: '**/*.prompt.md'
---
# Copilot Prompt Files Guidelines
Instructions for creating effective and maintainable prompt files that guide GitHub Copilot in delivering consistent, high-quality outcomes across any repository.
## Scope and Principles
- Target audience: maintainers and contributors authoring reusable prompts for Copilot Chat.
- Goals: predictable behaviour, clear expectations, minimal permissions, and portability across repositories.
- Primary references: VS Code documentation on prompt files and organization-specific conventions.
## Frontmatter Requirements
Every prompt file should include YAML frontmatter with the following fields:
### Required/Recommended Fields
| Field | Required | Description |
|-------|----------|-------------|
| `description` | Recommended | A short description of the prompt (single sentence, actionable outcome) |
| `name` | Optional | The name shown after typing `/` in chat. Defaults to filename if not specified |
| `agent` | Recommended | The agent to use: `ask`, `edit`, `agent`, or a custom agent name. Defaults to current agent |
| `model` | Optional | The language model to use. Defaults to currently selected model |
| `tools` | Optional | List of tool/tool set names available for this prompt |
| `argument-hint` | Optional | Hint text shown in chat input to guide user interaction |
### Guidelines
- Use consistent quoting (single quotes recommended) and keep one field per line for readability and version control clarity
- If `tools` are specified and current agent is `ask` or `edit`, the default agent becomes `agent`
- Preserve any additional metadata (`language`, `tags`, `visibility`, etc.) required by your organization
## File Naming and Placement
- Use kebab-case filenames ending with `.prompt.md` and store them under `.github/prompts/` unless your workspace standard specifies another directory.
- Provide a short filename that communicates the action (for example, `generate-readme.prompt.md` rather than `prompt1.prompt.md`).
## Body Structure
- Start with an `#` level heading that matches the prompt intent so it surfaces well in Quick Pick search.
- Organize content with predictable sections. Recommended baseline: `Mission` or `Primary Directive`, `Scope & Preconditions`, `Inputs`, `Workflow` (step-by-step), `Output Expectations`, and `Quality Assurance`.
- Adjust section names to fit the domain, but retain the logical flow: why → context → inputs → actions → outputs → validation.
- Reference related prompts or instruction files using relative links to aid discoverability.
## Input and Context Handling
- Use `${input:variableName[:placeholder]}` for required values and explain when the user must supply them. Provide defaults or alternatives where possible.
- Call out contextual variables such as `${selection}`, `${file}`, `${workspaceFolder}` only when they are essential, and describe how Copilot should interpret them.
- Document how to proceed when mandatory context is missing (for example, “Request the file path and stop if it remains undefined”).
## Tool and Permission Guidance
- Limit `tools` to the smallest set that enables the task. List them in the preferred execution order when the sequence matters.
- If the prompt inherits tools from a chat mode, mention that relationship and state any critical tool behaviours or side effects.
- Warn about destructive operations (file creation, edits, terminal commands) and include guard rails or confirmation steps in the workflow.
## Instruction Tone and Style
- Write in direct, imperative sentences targeted at Copilot (for example, “Analyze”, “Generate”, “Summarize”).
- Keep sentences short and unambiguous, following Google Developer Documentation translation best practices to support localization.
- Avoid idioms, humor, or culturally specific references; favor neutral, inclusive language.
## Output Definition
- Specify the format, structure, and location of expected results (for example, “Create an architecture decision record file using the template below, such as `docs/architecture-decisions/record-XXXX.md`).
- Include success criteria and failure triggers so Copilot knows when to halt or retry.
- Provide validation steps—manual checks, automated commands, or acceptance criteria lists—that reviewers can execute after running the prompt.
## Examples and Reusable Assets
- Embed Good/Bad examples or scaffolds (Markdown templates, JSON stubs) that the prompt should produce or follow.
- Maintain reference tables (capabilities, status codes, role descriptions) inline to keep the prompt self-contained. Update these tables when upstream resources change.
- Link to authoritative documentation instead of duplicating lengthy guidance.
## Quality Assurance Checklist
- [ ] Frontmatter fields are complete, accurate, and least-privilege.
- [ ] Inputs include placeholders, default behaviours, and fallbacks.
- [ ] Workflow covers preparation, execution, and post-processing without gaps.
- [ ] Output expectations include formatting and storage details.
description: 'Guidelines for Runner and Settings UI components that communicate via named pipes and manage module lifecycle'
applyTo: 'src/runner/**,src/settings-ui/**'
---
# Runner & Settings UI – Core Components Guidance
Guidelines for modifying the Runner (tray/module loader) and Settings UI (configuration app). These components communicate via Windows Named Pipes using JSON messages.
description: 'Generate an 80-character git commit title for the local diff'
---
# Generate Commit Title
**Goal:** Provide a ready-to-paste git commit title (<= 80 characters) that captures the most important local changes since `HEAD`.
**Workflow:**
1. Run a single command to view the local diff since the last commit:
```@terminal
git diff HEAD
```
2. From that diff, identify the dominant area (reference key paths like `src/modules/*`, `doc/devdocs/**`, etc.), the type of change (bug fix, docs update, config tweak), and any notable impact.
3. Draft a concise, imperative commit title summarizing the dominant change. Keep it plain ASCII, <= 80 characters, and avoid trailing punctuation. Mention the primary component when obvious (for example `FancyZones:` or `Docs:`).
4. Respond with only the final commit title on a single line so it can be pasted directly into `git commit`.
description: 'Generate a PowerToys-ready pull request description from the local diff'
---
# Generate PR Summary
**Goal:** Produce a ready-to-paste PR title and description that follows PowerToys conventions by comparing the current branch against a user-selected target branch.
**Repo guardrails:**
- Treat `.github/pull_request_template.md` as the single source of truth; load it at runtime instead of embedding hardcoded content in this prompt.
- Preserve section order from the template but only surface checklist lines that are relevant for the detected changes, filling them with `[x]`/`[ ]` as appropriate.
- Cite touched paths with inline backticks, matching the guidance in `.github/copilot-instructions.md`.
- Call out test coverage explicitly: list automated tests run (unit/UI) or state why they are not applicable.
**Workflow:**
1. Determine the target branch from user context; default to `main` when no branch is supplied.
2. Run `git status --short` once to surface uncommitted files that may influence the summary.
3. Run `git diff <target-branch>...HEAD` a single time to review the detailed changes. Only when confidence stays low dig deeper with focused calls such as `git diff <target-branch>...HEAD -- <path>`.
4. From the diff, capture impacted areas, key file changes, behavioral risks, migrations, and noteworthy edge cases.
5. Confirm validation: list tests executed with results or state why tests were skipped in line with repo guidance.
6. Load `.github/pull_request_template.md`, mirror its section order, and populate it with the gathered facts. Include only relevant checklist entries, marking them `[x]/[ ]` and noting any intentional omissions as "N/A".
7. Present the filled template inside a fenced ```markdown code block with no extra commentary so it is ready to paste into a PR, clearly flagging any placeholders that still need user input.
description: 'Resolve Code scanning / check-spelling comments on the active PR'
---
# Fix Spelling Comments
**Goal:** Clear every outstanding GitHub pull request comment created by the `Code scanning / check-spelling` workflow by explicitly allowing intentional terms.
**Guardrails:**
- Update only discussion threads authored by `github-actions` or `github-actions[bot]` that mention `Code scanning results / check-spelling`.
- Resolve findings solely by editing `.github/actions/spell-check/expect.txt`; reuse existing entries.
- Leave all other files and topics untouched.
**Prerequisites:**
- Install GitHub CLI if it is not present: `winget install GitHub.cli`.
- Run `gh auth login` once before the first CLI use.
**Workflow:**
1. Determine the active pull request with a single `gh pr view --json number` call (default to the current branch).
2. Fetch all PR discussion data once via `gh pr view --json comments,reviews` and filter to check-spelling comments authored by `github-actions` or `github-actions[bot]` that are not minimized; when several remain, process only the most recent comment body.
3. For each flagged token, review `.github/actions/spell-check/expect.txt` for an equivalent term (for example an existing lowercase variant); when found, reuse that normalized term rather than adding a new entry, even if the flagged token differs only by casing. Only add a new entry after confirming no equivalent already exists.
4. Add any remaining missing token to `.github/actions/spell-check/expect.txt`, keeping surrounding formatting intact.
Figure out required inputs {{issue_number}} from the invocation context; if anything is missing, ask for the value or note it as a gap.
# CONTEXT (brief)
Ground evidence using `gh issue view {{issue_number}} --json number,title,body,author,createdAt,updatedAt,state,labels,milestone,reactions,comments,linkedPullRequests`, and download images to better understand the issue context.
Locate source code in the current workspace; feel free to use `rg`/`git grep`. Link related issues and PRs.
description: 'Perform a comprehensive PR review with per-step Markdown and machine-readable outputs'
---
# Review Pull Request
**Goal**: Given `{{pr_number}}`, run a *one-topic-per-step* review. Write files to `Generated Files/prReview/{{pr_number}}/` (replace `{{pr_number}}` with the integer). Emit machine‑readable blocks for a GitHub MCP to post review comments.
## PR selection
Resolve the target PR using these fallbacks in order:
1. Parse the invocation text for an explicit identifier (first integer following patterns such as a leading hash and digits or the text `PR:` followed by digits).
2. If no PR is found yet, locate the newest `Generated Files/prReview/_batch/batch-overview-*.md` file (highest timestamp in filename, fallback newest mtime) and take the first entry in its `## PRs` list whose review folder is missing `00-OVERVIEW.md` or contains `__error.flag`.
3. If the batch file has no pending PRs, query assignments with `gh pr list --assignee @me --state open --json number,updatedAt --limit 20` and pick the most recently updated PR that does not already have a completed review folder.
4. If still unknown, run `gh pr view --json number` in the current branch and use that result when it is unambiguous.
5. If every step above fails, prompt the user for a PR number before proceeding.
-`gh api repos/:owner/:repo/pulls/{{pr_number}}/files?per_page=250` # patches for line mapping
### Incremental review workflow
1.**Check for existing review**: Read `Generated Files/prReview/{{pr_number}}/00-OVERVIEW.md`
2.**Extract state**: Parse `Last reviewed SHA:` from review metadata section
3.**Detect changes**: Run `Get-PrIncrementalChanges.ps1 -PullRequestNumber {{pr_number}} -LastReviewedCommitSha {{sha}}`
4.**Analyze result**:
-`NeedFullReview: true` → Review all files in the PR
-`NeedFullReview: false` and `IsIncremental: true` → Review only files in `ChangedFiles` array
-`ChangedFiles` is empty → No changes, skip review (update iteration history with "No changes since last review")
5.**Apply smart filtering**: Use the file patterns in smart step filtering table to skip irrelevant steps
6.**Update metadata**: After completing review, save current `headRefOid` as `Last reviewed SHA:` in `00-OVERVIEW.md`
### Reusable PowerShell scripts
Scripts live in `.github/review-tools/` to avoid repeated manual approvals during PR reviews:
| Script | Usage |
| --- | --- |
| `.github/review-tools/Get-GitHubRawFile.ps1` | Download a repository file at a given ref, optionally with line numbers. |
| `.github/review-tools/Get-GitHubPrFilePatch.ps1` | Fetch the unified diff for a specific file within a pull request via `gh api`. |
| `.github/review-tools/Get-PrIncrementalChanges.ps1` | Compare last reviewed SHA with current PR head to identify incremental changes. Returns JSON with changed files, new commits, and whether full review is needed. |
| `.github/review-tools/Test-IncrementalReview.ps1` | Test helper to preview incremental review detection for a PR. Use before running full review to see what changed. |
Always prefer these scripts (or new ones added under `.github/review-tools/`) over raw `gh api` or similar shell commands so the review flow does not trigger interactive approval prompts.
- **Write-after-step rule:** Immediately after completing each TODO step, persist that step's markdown file before proceeding to the next. Generate `00-OVERVIEW.md` only after every step file has been refreshed for the current run.
## Iteration management
- Determine the current review iteration by reading `00-OVERVIEW.md` (look for `Review iteration:`). If missing, assume iteration `1`.
- Extract the last reviewed SHA from `00-OVERVIEW.md` (look for `Last reviewed SHA:` in the review metadata section). If missing, this is iteration 1.
- **Incremental review detection**:
1. Call `.github/review-tools/Get-PrIncrementalChanges.ps1 -PullRequestNumber {{pr_number}} -LastReviewedCommitSha {{last_sha}}` to get delta analysis.
2. Parse the JSON result to determine if incremental review is possible (`IsIncremental: true`, `NeedFullReview: false`).
3. If force-push detected or first review, proceed with full review of all changed files.
4. If incremental, review only the files listed in `ChangedFiles` array and apply smart step filtering (see below).
- Increment the iteration for each review run and propagate the new value to all step files and the overview.
- Preserve prior iteration notes by keeping/expanding an `## Iteration history` section in each markdown file, appending the newest summary under `### Iteration <N>`.
- Summaries should capture key deltas since the previous iteration so reruns can pick up context quickly.
- **After review completion**, update `Last reviewed SHA:` in `00-OVERVIEW.md` with the current `headRefOid` and update the timestamp.
**Default**: If uncertain or files span multiple categories, run all applicable steps. When in doubt, be conservative and review more rather than less.
## TODO steps (one concern each)
1) Functionality
2) Compatibility
3) Performance
4) Accessibility
5) Security
6) Localization
7) Globalization
8) Extensibility
9) SOLID principles
10) Repo patterns
11) Docs & automation coverage for the changes
12) Code comments
13) Copilot guidance (conditional): if changed folders contain `*copilot*.md` or `.github/prompts/*.md`, review diffs **against** that guidance and write `13-copilot-guidance.md` (omit if none).
## Per-step file template (use verbatim)
```md
# <STEP TITLE>
**PR:** (populate with PR identifier) — Base:<baseRefName> Head:<headRefName>
**Review iteration:** ITERATION
## Iteration history
- Maintain subsections titled `### Iteration N` in reverse chronological order (append the latest at the top) with 2–4 bullet highlights.
### Iteration ITERATION
- <Latest key point 1>
- <Latest key point 2>
## Checks executed
- List the concrete checks for *this step only* (5–10 bullets).
## Findings
(If none, write **None**. Defaults have one or more blocks:)
```mcp-review-comment
{"file":"relative/path.ext","start_line":123,"end_line":125,"severity":"high|medium|low|info","tags":["<step-slug>","pr-tag-here"],"related_files":["optional/other/file1"],"body":"Problem → Why it matters → Concrete fix. If spans multiple files, name them here."}
```
Use the second tag to encode the PR number.
```
## Overview file (`00-OVERVIEW.md`) template
```md
# PR Review Overview — (populate with PR identifier)
**Testing**: Use `.github/review-tools/Test-IncrementalReview.ps1 -PullRequestNumber 42374` to preview incremental detection before running full review.
## Scratch cache for large PRs
Create a local scratch workspace to progressively summarize diffs and reload state across runs.
1.**Chunk** each changed file (head): split into ~300–600 LOC or ~4k chars; stable `chunk_id` = hash(path+start).
- Save `chunk` records. Optionally write `file-<hash>.txt` for expensive chunks.
2.**Summarize** per chunk: intent, APIs, risks per TODO step; emit `summary` records (≤600 tokens each).
3.**Issues**: convert findings to machine-readable blocks and emit `issue` records (later rendered to step MD).
4.**Rollups**: build/update `rollup-<step>-v<N>.md` from `summary`+`issue`. Keep prior versions.
5.**Finalize**: write per-step files + `00-OVERVIEW.md` from rollups. Post comments via MCP if available.
### Re-use & token limits
- Always **reload**`index.jsonl` first; skip chunks with same `head_sha` and `range`.
- **Incremental review optimization**: When `Get-PrIncrementalChanges.ps1` returns a subset of changed files, load only chunks from those files. Reuse existing chunks/summaries for unchanged files.
- When context is tight, load only the minimal chunk text (or its saved `file-<hash>.txt`) needed for a comment.
### Original vs diff
- Fetch base content when needed: prefer `git show <baseRefName>:<path>`; fallback `gh api repos/:owner/:repo/contents/<path>?ref=<base_sha>` (base64).
- Use patch hunks from `gh api .../pulls/<PR>/files` to compute **head** line numbers.
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist
- [ ] Closes: #xxx
<!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) -->
- [ ]**Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected
- [ ]**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
- [ ]**Localization:** All enduserfacing 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
@@ -17,7 +16,7 @@
- [ ] [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 -->
<!-- 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 -->
### HACK: On ARM64 builds, building an app with Windows App SDK copies the x64 WebView2 dll instead of the ARM64 one. This task makes sure the right dll is used.
- task:CopyFiles@2
displayName:HACK Copy core WebView2 ARM64 dll to output directory
Write-Host-ForegroundColorGreen"All "$referencedFileVersionsPerDll.keys.Count" libraries are mentioned with the same version across the dependencies.`r`n"
Aaron has helped triaging, discussing, and creating a substantial number of issues and contributed features/fixes. Aaron was the primary person for helping build the File Explorer preview pane handler for developer files.
@@ -39,12 +42,6 @@ Jay has helped triaging, discussing, creating a substantial number of issues and
### [@jefflord](https://github.com/Jjefflord) - Jeff Lord
Jeff added in multiple new features into Keyboard manager, such as key chord support and launching apps. He also contributed multiple features/fixes to PowerToys.
Jiří has contributed a massive number of features and improvements to Command Palette, including drag & drop support, custom themes, Web Search enhancements, Remote Desktop extension fixes, and many UX improvements.
Michael contributed the [initial version](https://github.com/microsoft/PowerToys/issues/23216) of the Mouse Jump tool and [a number of updates](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+author%3Amikeclayton) based on his FancyMouse utility.
Noraa has helped triaging, discussing, and creating a substantial number of issues and contributed features/fixes. Noraa was the primary person for helping build the File Explorer preview pane handler for developer files.
### [@pedrolamas](https://github.com/pedrolamas/) - Pedro Lamas
Pedro helped create the thumbnail and File Explorer previewers for 3D files like STL and GCode. If you like 3D printing, these are very helpful.
@@ -75,12 +69,15 @@ Rafael has helped do the [upgrade from CppWinRT 1.x to 2.0](https://github.com/m
### [@royvou](https://github.com/royvou)
Roy has helped out contributing multiple features to PowerToys Run
### [@ThiefZero](https://github.com/ThiefZero)
ThiefZero has helped out contributing a features to PowerToys Run such as the unit converter plugin
Tobias Sekan has helped out contributing features to PowerToys Run such as Settings plugin, Registry plugin
### [@ThiefZero](https://github.com/ThiefZero)
ThiefZero has helped out contributing a features to PowerToys Run such as the unit converter plugin
## Open source projects
As PowerToys creates new utilities, some will be based off existing technology. We'll continue to do our best to contribute back to these projects but their efforts were the base of some of our projects. We want to be sure their work is directly recognized.
@@ -120,13 +117,14 @@ PowerRename is from Chris's SmartRename and icon rendering for SVGs in File Expl
PowerToys Awake is a tool to keep your computer awake.
Niels has helped drive large sums of our update toward a new [consistent and modern UX](https://github.com/microsoft/PowerToys/issues/891). This includes the [launcher work](https://github.com/microsoft/PowerToys/issues/44), color picker UX update and [icon design](https://github.com/microsoft/PowerToys/issues/1118).
Kayla was a former lead for PowerToys and helped create multiple utilities, maintained the GitHub repo, and collaborated with the community to improve the overall product
### [@oldnewthing](https://github.com/oldnewthing) - Raymond Chen
Find My Mouse is based on Raymond Chen's SuperSonar.
@@ -186,31 +184,33 @@ ZoomIt source code was originally implemented by [Sysinternals](https://sysinter
## PowerToys core team
- [@crutkas](https://github.com/crutkas/) - Clint Rutkas - Lead
- [@cinnamon-msft](https://github.com/cinnamon-msft) - Kayla Cinnamon - Lead
- [@nguyen-dows](https://github.com/nguyen-dows) - Christopher Nguyen - Product Manager
<td>Logs session metrics from launch to dismissal including duration, commands executed, pages visited, search queries, navigation depth, and errors.</td>
</tr>
</table>
### Crop And Lock
<table style="width:100%">
<tr>
@@ -444,10 +363,6 @@ _If you want to find diagnostic data events in the source code, these two links
<!-- Including MessagePack to force version, since it's used by StreamJsonRpc but contains vulnerabilities. After StreamJsonRpc updates the version of MessagePack, we can upgrade StreamJsonRpc instead. -->
<!-- Package Microsoft.Win32.SystemEvents added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.1. This is a dependency of System.Drawing.Common but the 8.0.1 version wasn't published to nuget. -->
<!-- Package System.CodeDom added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.1. This is a dependency of System.Management but the 8.0.1 version wasn't published to nuget. -->
<!-- Package System.Data.SqlClient added to force it as a dependency of Microsoft.Windows.Compatibility to the latest version available at this time. -->
<!-- Package System.Diagnostics.EventLog added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.1. This is a dependency of System.Data.OleDb but the 8.0.1 version wasn't published to nuget. -->
<!-- Package System.Diagnostics.PerformanceCounter added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.11. -->
Microsoft PowerToys is a set of utilities for power users to tune and streamline their Windows experience for greater productivity. For more info on [PowerToys overviews and how to use the utilities][usingPowerToys-docs-link], or any other tools and resources for [Windows development environments](https://learn.microsoft.com/windows/dev-environment/overview), head over to [learn.microsoft.com][usingPowerToys-docs-link]!
For detailed installation instructions and system requirements, visit the [installation docs](https://learn.microsoft.com/windows/powertoys/install).
## Installing and running Microsoft PowerToys
But to get started quickly, choose one of the installation methods below:
<br/><br/>
<details open>
<summary><strong>Download .exe from GitHub</strong></summary>
<br/>
Go to the [PowerToys GitHub releases][github-release-link], click Assets to reveal the downloads, and choose the installer that matches your architecture and install scope. For most devices, that's the x64 per-user installer.
### Requirements
- Windows 11 or Windows 10 version 2004 (code name 20H1 / build number 19041) or newer.
- x64 or ARM64 processor
- Our installer will install the following items:
- [Microsoft Edge WebView2 Runtime](https://go.microsoft.com/fwlink/p/?LinkId=2124703) bootstrapper. This will install the latest version.
### Via GitHub with EXE [Recommended]
Go to the [Microsoft PowerToys GitHub releases page][github-release-link] and click on `Assets` at the bottom to show the files available in the release. Please use the appropriate PowerToys installer that matches your machine's architecture and install scope. For most, it is `x64` and per-user.
<!-- items that need to be updated release to release -->
Download PowerToys from [WinGet][winget-link]. Updating PowerToys via winget will respect the current PowerToys installation scope. To install PowerToys, run the following command from the command line / PowerShell:
Install from the [Microsoft Store's PowerToys page][microsoft-store-link]. You must be using the [new Microsoft Store](https://blogs.windows.com/windowsExperience/2021/06/24/building-a-new-open-microsoft-store-on-windows-11/) which is available for both Windows 11 and Windows 10.
*User scope installer [default]*
### Via WinGet
Download PowerToys from [WinGet][winget-link]. Updating PowerToys via winget will respect current PowerToys installation scope. To install PowerToys, run the following command from the command line / PowerShell:
There are [community driven install methods](./doc/unofficialInstallMethods.md) such as Chocolatey and Scoop. If these are your preferred install solutions, you can find the install instructions there.
</details>
## ✨ What's new
**Version 0.96 (November 2025)**
## Third-Party Run Plugins
For an in-depth look at the latest changes, visit the [Windows Command Line blog](https://aka.ms/powertoys-releaseblog).
There is a collection of [third-party plugins](./doc/thirdPartyRunPlugins.md) created by the community that aren't distributed with PowerToys.
**✨ Highlights**
- Advanced Paste now supports multiple online and on-device AI model providers: Azure OpenAI, OpenAI, Google Gemini, Mistral, Foundry Local and Ollama.
- Command Palette received extensive improvements including file search filters, better clipboard history metadata, context-menu styling, and dozens of bug fixes and enhancements.
- PowerRename can now extract and use photo metadata (EXIF, XMP) in renaming patterns like `%Camera`, `%Lens`, and `%ExposureTime`.
## Contributing
### Advanced Paste
- Advanced Paste now lets you connect to multiple AI providers instead of being limited to a single OpenAI provider. See [Advanced Paste documentation](https://learn.microsoft.com/windows/powertoys/advanced-paste) for usage.
This project welcomes contributions of all types. Besides coding features / bug fixes, other ways to assist include spec writing, design, documentation, and finding bugs. We are excited to work with the power user community to build a set of tools for helping you get the most out of Windows.
### Awake
- The Awake countdown timer now stays accurate over long periods. Thanks [@daverayment](https://github.com/daverayment)!
- Fixed Awake context menu positioning. The fix removed the conversion of the mouse cursor from screen to client-window coordinates, instead using the raw screen coordinates returned by GetCursorPos; the context menu now appears at the correct screen position. Thanks [@lzandman](https://github.com/lzandman)!
We ask that **before you start work on a feature that you would like to contribute**, please read our [Contributor's Guide](CONTRIBUTING.md). We would be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort.
Most contributions require you to agree to a [Contributor License Agreement (CLA)][oss-CLA] declaring that you grant us the rights to use your contribution and that you have permission to do so.
For guidance on developing for PowerToys, please read the [developer docs](/doc/devdocs) for a detailed breakdown. This includes how to setup your computer to compile.
## What's Happening
### PowerToys Roadmap
Our [prioritized roadmap][roadmap] of features and utilities that the core team is focusing on.
### 0.90 - March 2025 Update
In this release, we focused on new features, stability, and automation.
**✨Highlights**

- New module: Command Palette ("CmdPal") - Created as the evolution of PowerToys Run with extensibility at the forefront, Command Palette is a quick launcher with a richer display and additional capabilities without sacrificing performance, allowing you to start anything with the shortcut **Win+Alt+Space**! Thanks [@zadjii-msft](https://github.com/zadjii-msft), [@niels9001](https://github.com/niels9001), [@michael-hawker](https://github.com/michael-hawker), [@joadoumie](https://github.com/joadoumie), [@plante-msft](https://github.com/plante-msft), [@ethanfangg](https://github.com/ethanfangg) and [@krschau](https://github.com/krschau)!
- Enhanced the Color Picker by switching from WPF UI to .NET WPF, resulting in improved themes and visual consistency across different modes. Thanks [@mantaionut](https://github.com/mantaionut)! Thanks [@Jay-o-Way](https://github.com/Jay-o-Way) and [@niels9001](https://github.com/niels9001) for helping with the review!
- Added the ability to delete files directly from Peek, enhancing file management efficiency. Thanks [@daverayment](https://github.com/daverayment) and thanks [@htcfreek](https://github.com/htcfreek) for the review!
- Added support for variables in template filenames, enabling dynamic elements like date components and environment variables for enhanced customization in New+. Thanks [@cgaarden](https://github.com/cgaarden)!
### Color Picker
- Replaced WPF UI with .NET WPF for the Color Picker, enhancing compatibility and improving theme support. Thanks [@mantaionut](https://github.com/mantaionut)! Thanks [@Jay-o-Way](https://github.com/Jay-o-Way) and [@niels9001](https://github.com/niels9001) for helping with the review!
### Command Palette
- The search field in context menus now matches the look of the Command Palette, with a smoke backdrop and improved padding.
- Fallback items such as math calculations or the Run command now appear in results more quickly. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Ensured the command bar updates correctly after navigating to another page and commands are displayed correctly. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- The Command Palette settings page has been reorganized. Activation-key options are grouped under an expander and extension settings are framed for improved readability.
- When you modify a command, its alias, hotkey, and tags now update in the top-level list, keeping the displayed information in sync. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Press `Ctrl + ,` to open Command Palette settings from anywhere. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- You can use `Page Up` and `Page Down` to navigate the list while focus is in the search box. Thanks [@samrueby](https://github.com/samrueby)!
- Fixed an issue where the search box could disappear when navigating pages. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Ensured search text is selected when *Go home when activated* and *Highlight search on activate* are both enabled. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Fixed an issue where Command Palette window occasionally appeared on the taskbar under certain Windows settings. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Ensured that labels and icons of list items and menu items update when they change. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Fixed visibility of list filters when navigating to a content page. Thanks [@DevLGuilherme](https://github.com/DevLGuilherme)!
- Added search to the extension list and a link to extensions on the Microsoft Store. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Added options to open the Command Palette window at its last position or re-center it.
- The Command Palette now remembers its window size after restarting.
- Added a global error handler that logs fatal errors and provides feedback when unexpected failures force Command Palette to close. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Fixed forms and extension settings not showing on some machines due to a missing VC++ runtime.
- Restored ranking of fallback commands for built-in extensions (Sleep, Shutdown, Windows settings, Web search, etc.). Thanks [@jiripolasek](https://github.com/jiripolasek).
- Improved and unified labels and texts across the application!
- Maintainance: Resolved numerous build warnings in Command Palette projects; no user-visible impact. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Maintainance: Fixed a logging issue so exception messages are properly recorded instead of placeholder text, improving troubleshooting. Thanks [@jiripolasek](https://github.com/jiripolasek)!
### Command Palette Extensions
- Bookmarks: Added hints about bookmark placeholders to the Add/Edit Bookmark form. — Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Bookmarks: Improved migration of bookmarks from older versions and fixed an issue where aliases or keyboard shortcuts could be lost after restart. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Clipboard history: Items shown in Command Palette’s clipboard history now include helpful metadata. For example, image items show dimensions, text files show names and sizes, web links include page titles, and text entries display word counts. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- File search: Added filter buttons to show *all items*, *files only*, or *folders only*. Selecting a filter adds `kind:folders` or `kind:not folders` to narrow results.
- System commands: Replaced the `:red_circle:` placeholder with an actual red-circle emoji so the correct icon appears in the UI. Thanks [@samrueby](https://github.com/samrueby)!
- WinGet: Search performance feels more responsive because typed input is now processed via a task queue rather than complex cancellation tokens!
- Window Walker: UWP apps no longer show a "not responding" label when suspended. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Window Walker: Now displays the actual icon of each window rather than using the process icon, improving recognition of PWAs and Python GUIs. Thanks [@Lee-WonJun](https://github.com/Lee-WonJun)!
- Windows Terminal profiles: Fixed a rare crash in the Windows Terminal extension when the `LOCALAPPDATA` environment variable was missing. The path is now retrieved via a reliable API. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Introduced the Windows Command Palette ("CmdPal"), the next iteration of PowerToys Run, designed with extensibility at its core. CmdPal includes features such as searching for installed apps, shell commands, files and WinGet package installation. This module aims to provide a more powerful and flexible launcher experience. Thanks [@zadjii-msft](https://github.com/zadjii-msft), [@niels9001](https://github.com/niels9001), [@michael-hawker](https://github.com/michael-hawker), [@joadoumie](https://github.com/joadoumie), [@plante-msft](https://github.com/plante-msft), and the whole team!
### Find My Mouse
- Activating Find My Mouse no longer makes the cursor change to the busy (hourglass) icon or steals focus from your active application.
### FancyZones
### Hosts File Editor
-Added customizable backup settings allowing users to configure backup frequency, location, and auto-deletion policies. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Fixed a bug where deleting a layout resulted in incorrect data being written to the JSON file.
-Fixed a bug where layout hotkeys were displayed incorrectly, ensuring the hotkey list does not include invalid entries.
- Fixed an issue where the "None" option was missing in the editor layout.
### Image Resizer
- Fixed settings consistency during batch resize operations by capturing settings once before processing. Thanks [@daverayment](https://github.com/daverayment)!
### Light Switch
- Introduced new UI to allow users to manually enter their latitude and longitude in Sunrise to Sunset mode.
- Refactored service with cleaner state management for stability.
- Removed logs from every tick, only logging key events to largely reduce log size.
### Mouse Pointer Crosshairs
- Enabled switching between Mouse Pointer Crosshairs and Gliding Cursor modes. Thanks [@mikehall-ms](https://github.com/mikehall-ms)!
- Fixed warnings in ImageResizer regarding the use of variables "shellItem" and "itemName" without being initialized.
- Enhanced the logger to properly track the file path for easier debugging.
- Refactored the "Common" class into distinct individual classes to enhance maintainability, and updated all references and unit tests to reflect these changes. Thanks [@mikeclayton](https://github.com/mikeclayton) for this!
### New+
- Added support for variables in template filenames, including date/time components, parent folder name, and environment variables. Thanks [@cgaarden](https://github.com/cgaarden)!
### Peek
- Fixed media files remaining locked after preview window closes. Thanks [@daverayment](https://github.com/daverayment)!
- Added a command-line interface for file previewing. See the [Peek documentation](https://learn.microsoft.com/windows/powertoys/peek) for usage. Thanks [@prochan2](https://github.com/prochan2)!
### PowerRename
- PowerRename no longer crashes due to a missing resources file.
- Added photo metadata extraction support using EXIF and XMP for pattern-based renaming with camera info, GPS coordinates, and date taken. See [PowerRename Documentation](https://learn.microsoft.com/en-us/windows/powertoys/powerrename).
- Added the ability to delete the file currently being previewed in Peek, including navigation updates and handling for deleted items. Thanks [@daverayment](https://github.com/daverayment) and thanks [@htcfreek](https://github.com/htcfreek) for your help reviewing this!
### PowerToys Run
- Added retry logic with exponential backoff to handle DWM composition errors during theme changes. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Updated OneNote icons to reflect new Microsoft 365 design. Thanks [@trevorNgo](https://github.com/trevorNgo)!
### Quick Accent
-Added diameter symbol (⌀) for Shift+O in Special Characters mode, thanks to [@anselumjuju](https://github.com/anselumjuju)!
### Zoomit
- Smoothed out zoom-animation in ZoomIt by coalescing mouse-move and timer events, thanks to [@foxmsft](https://github.com/foxmsft)!
- Enabled GIF support for ZoomIt, thanks to [@MarioHewardt](https://github.com/MarioHewardt)!
- Fixed spelling mistakes, and refactored some literal strings to string constants, thanks to [@lzandman](https://github.com/lzandman)!
- Fixed inaccurate "actual size" screenshots in ZoomIt and resolves a GDI handle leak, improving capture fidelity and long-session stability. thanks to [@daverayment](https://github.com/daverayment)!
- Fixed an issue where duplicated applications were shown by ensuring the shell link helper opens .ink files non-exclusively and correctly retrieves the "FullPath". Thanks [@htcfreek](https://github.com/htcfreek) and [@davidegiacometti](https://github.com/davidegiacometti) for review!
-Fixed an issue where applying round corners on Windows 11 build 22000 caused crashes.
- Async the OnRename method to unblock the thread. Thanks [@davidegiacometti](https://github.com/davidegiacometti) for review!
- Added support for using `sq` instead of `^2` in the Unit Converter. Thanks [@PesBandi](https://github.com/PesBandi)!
### Settings
- Fixed title bar overlapping issue at smaller window sizes.
-Refined shortcut control visual design with improved consistency and spacing.
-Added dashboard utilities sorting by name or status.
- Made update notification InfoBar in flyout clickable for direct navigation to update page.
- Expanded installation instructions by default in README.
- Improved accessibility for shortcut conflict button with static resource-based automation properties.
-Added ScrollViewer to Command Palette page in PowerToys Settings. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Fixed module list glitches and Sort Status checkmark issue. Thanks [@daverayment](https://github.com/daverayment)!
-Disabled the spell check feature in the text boxes of plugin settings for PowerToys Run. Thanks [@htcfreek](https://github.com/htcfreek)!
-Fixed an issue where InfoBars for release notes errors were not displayed properly, and added a retry button. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
### Workspaces
-Fixed an issue where some minimized packaged apps (e.g., Microsoft ToDo, Settings) were not snapshotted.
### Documentation
- Added the FirefoxBookmark plugin to the list of Third-Party plugins for PowerToys Run. Thanks [@8LWXpg](https://github.com/8LWXpg)!
- Added the SVGL third-party plugin to PowerToys Run, enabling users to search, browse, and copy SVG logos. Thanks [@SameerJS6](https://github.com/SameerJS6)!
- Added Monaco usage for the Registry Preview.
### Development
- Fixed accessibility by associating controls with labels for screen readers.
- Added accessible name to Shortcut Conflicts button for screen readers.
- Excluded TitleBars from tab navigation across multiple utilities. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Migrated build infrastructure from Windows Server 2019 to Server 2022 with improved failure logging and predictable NuGet package paths.
- Configured build agents to use larger P: drive for release builds to address disk space constraints.
- Enhanced DSC v3 support by organizing resource manifests in a dedicated subfolder with PATH configuration.
- Reduced installer bundle size by 6-7MB through centralized Hybrid CRT configuration across all C++ projects.
- Updated .NET packages to version 9.0.10 for security fixes. Thanks [@snickler](https://github.com/snickler)!
- Fixed spell check dictionary entries for consistency.
- Temporarily removed PowerToys installer path from PATH environment variable to prevent application crashes.
- Added complete OCR UI test coverage with automated tests for activation, settings, language selection, and text extraction.
- Fixed test input for drive path normalization in bookmark resolver unit tests.
- Fixed Peek UI tests by restoring Ctrl+Space activation shortcut for test scenarios.
- Hided apps in PowerToys.SpareApps package from Start Menu. Thanks [@jiripolasek](https://github.com/jiripolasek)!
## 🛣️ Roadmap
We are planning some nice new features and improvements for the next releases – a revamped Keyboard Manager UI, custom endpoint and local model support for Advanced Paste, Command Palette improvements and a brand-new Shortcut Guide experience! Stay tuned for [v0.96][github-next-release-work]!
- Updated WinGet configuration file location and extension. Thanks [@mdanish-kh](https://github.com/mdanish-kh)!
- Removed the Markdown file bypass to ensure CI runs for commits that only update Markdown files.
- Fixed an issue where the default generated file path exceeded the length limit of 260 characters for EnvironmentVariablesUILib.csproj, causing build failures.
- Upgraded WindowsAppSDK to 1.6.250205002 and CsWinRT to 2.2.0. Thanks [@htcfreek](https://github.com/htcfreek) for review!
- Upgraded XamlStyler to 3.2501.8 and dotnet-consolidate to 4.2.0. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Updated .NET Packages from 9.0.2 to 9.0.3.
- Optimized the UI Test Automation Framework and added UI test cases for the Hosts File Editor module.
- Added fuzz testing for RegistryPreview.
- Added new UI tests for the FancyZones editor, including tests for creating, duplicating, editing, and deleting layouts.
- Added telemetry code to measure the module editor open time and evaluate the benefits of applying AOT.
## ❤️ PowerToys Community
The PowerToys team is extremely grateful to have the [support of an amazing active community][community-link]. The work you do is incredibly important. PowerToys wouldn't be nearly what it is today without your help filing bugs, updating documentation, guiding the design, or writing features. We want to say thank you and take time to recognize your work. Your contributions and feedback improve PowerToys month after month!
## Contributing
This project welcomes contributions of all types. Besides coding features / bug fixes, other ways to assist include spec writing, design, documentation, and finding bugs. We are excited to work with the power user community to build a set of tools for helping you get the most out of Windows. We ask that **before you start work on a feature that you would like to contribute**, please read our [Contributor's Guide](CONTRIBUTING.md). We would be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort. Most contributions require you to agree to a [Contributor License Agreement (CLA)][oss-CLA] declaring that you grant us the rights to use your contribution and that you have permission to do so. For guidance on developing for PowerToys, please read the [developer docs](./doc/devdocs) for a detailed breakdown. This includes how to setup your computer to compile.
### What is being planned for version 0.91
## Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct][oss-conduct-code].
For [v0.91][github-next-release-work], we'll work on the items below:
## Privacy Statement
The application logs basic diagnostic data (telemetry). For more privacy information and what we collect, see our [PowerToys Data and Privacy documentation](https://aka.ms/powertoys-data-and-privacy-documentation).
The PowerToys team is extremely grateful to have the [support of an amazing active community][community-link]. The work you do is incredibly important. PowerToys wouldn’t be nearly what it is today without your help filing bugs, updating documentation, guiding the design, or writing features. We want to say thank you and take time to recognize your work. Month by month, you directly help make PowerToys a better piece of software.
## Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct][oss-conduct-code].
## Privacy Statement
The application logs basic diagnostic data (telemetry). For more information on privacy and what we collect, see our [PowerToys Data and Privacy documentation](https://aka.ms/powertoys-data-and-privacy-documentation).
## ⚙️ [Test run in the cloud](https://eng.ms/docs/cloud-ai-platform/azure-edge-platform-aep/aep-security/epsf-edge-and-platform-security-fundamentals/the-onefuzz-service/onefuzz/faq/notwindows/walkthrough)
To submit a job to the cloud you can run with this command:
You want to run with --do-not-file-bugs because if there is an issue with running the parser in the cloud (which is very possible), you don't want bugs to be created if there is an issue. The --duration task is the number of hours you want the task to run. I recommend just running for 1 hour to make sure things work initially. If you don't specify this parameter, it will default to 48 hours. You can find more about submitting a test job here.
OneFuzz will send you an email when the job has started.
A specialized UI test framework for PowerToys that makes it easy to write UI tests for PowerToys modules or settings. Let's start writing UI tests!
## Before running tests
- Install Windows Application Driver v1.2.1 from https://github.com/microsoft/WinAppDriver/releases/tag/v1.2.1 to the default directory (`C:\Program Files (x86)\Windows Application Driver`)
- Enable Developer Mode in Windows settings
## Running tests
- Exit PowerToys if it's running.
- Open `PowerToys.sln` in Visual Studio and build the solution.
- Run tests in the Test Explorer (`Test > Test Explorer` or `Ctrl+E, T`).
## How to add the first UI tests for your modules
- Create a new project and add the following references to the project file. Change the OutputPath to your own module's path.
```
<PropertyGroup>
<OutputType>Library</OutputType>
<!-- This is a UI test, so don't run as part of MSBuild -->
While working on tests, you may need a tool that helps you to view the element's accessibility data, e.g. for finding the button to click. For this purpose, you could use [AccessibilityInsights](https://accessibilityinsights.io/docs/windows/overview).
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.