commit c63fa5c21a
Merge: 45b82ef04dfb727f9a
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 13:23:19 2025 -0500
Merge remote-tracking branch 'upstream/main' into dev/migrie/b/426-merge-top-level-abstractions
commit 45b82ef043
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 13:22:23 2025 -0500
fix fallbacks
commit 730b82e737
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 13:08:33 2025 -0500
that's all the SUI changes
commit 0ea2960dd9
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 13:02:27 2025 -0500
update the commands in the SUI when needed
commit f6d3356395
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 12:54:34 2025 -0500
enable / disable on extension page too
commit 550964bcc3
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 10:20:30 2025 -0500
writes the settings
commit d85d6d9f18
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 10:17:44 2025 -0500
this can persist the setting, but doesn't on toggle
commit 482d40c86d
Merge: d791f3527a13abc380
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 08:53:02 2025 -0500
Merge remote-tracking branch 'upstream/main' into dev/migrie/b/426-merge-top-level-abstractions
# Conflicts:
# src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.System/SystemCommandExtensionProvider.cs
# src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.TimeDate/TimeDateCommandsProvider.cs
# src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/CommandProviderWrapper.cs
# src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Commands/MainListPage.cs
# src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/IconDataViewModel.cs
# src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/IconInfoViewModel.cs
# src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Messages/PerformCommandMessage.cs
# src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/ProviderSettings.cs
# src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/ProviderSettingsViewModel.cs
# src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/SettingsModel.cs
# src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/TopLevelCommandManager.cs
# src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/TopLevelViewModel.cs
# src/modules/cmdpal/Microsoft.CmdPal.UI/Pages/ShellPage.xaml.cs
# src/modules/cmdpal/Microsoft.CmdPal.UI/Settings/ExtensionsPage.xaml
commit d791f3527f
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 08:44:09 2025 -0500
starting to add IExtension for built-ins
commit 7f4d85a7f5
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 08:38:01 2025 -0500
disabling extensions
commit 5afe771abc
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 06:28:55 2025 -0500
RIP in peace TopLevelCommandItemWrapper
commit 6b5acbb991
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 05:06:37 2025 -0500
the settings don't crash anymore
commit 7fb8aa4dd5
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 04:02:59 2025 -0500
I think that's all for TLCIW->TLVM. Now need to merge the providers
commit e0d879f241
Merge: f1067c290327814658
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 19 03:13:38 2025 -0500
Merge remote-tracking branch 'origin/main' into dev/migrie/b/426-merge-top-level-abstractions
commit 3278146589
Merge: edad8bf7837cab3800
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Mar 18 20:43:06 2025 -0500
Merge pull request #582 from zadjii-msft/dev/migrie/merge-upstream-again-again
the last one (probably)
commit 37cab3800c
Merge: edad8bf78a62acf7a7
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Mar 18 20:40:46 2025 -0500
Merge remote-tracking branch 'upstream/main' into dev/migrie/merge-upstream-again-again
commit edad8bf784
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Mar 18 17:00:50 2025 -0500
Add a new icon for run (#574)
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)
commit df65e2a568
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Mar 18 17:00:33 2025 -0500
get rid of the thumbnail setting (#575)
commit 1d33f2b645
Author: Niels Laute <niels.laute@live.nl>
Date: Tue Mar 18 19:32:48 2025 +0100
Minor UX tweaks (#562)
- 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
commit e6acb4deb6
Author: moooyo <42196638+moooyo@users.noreply.github.com>
Date: Wed Mar 19 02:26:33 2025 +0800
Migrate system commands extension (#452)
## 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>
commit 973b3323fe
Author: Seraphima Zykova <zykovas91@gmail.com>
Date: Tue Mar 18 19:22:14 2025 +0100
Thumbnails fix (#573)
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
commit 997c8acb46
Author: moooyo <42196638+moooyo@users.noreply.github.com>
Date: Wed Mar 19 02:21:04 2025 +0800
Fix the MSI installer issue when App plugin is running. (#557)
Our App plugin used the ShellLink.Open to retrieve the FullPath. But it would open the ink file exclusively. This may cause some problem. Especially when we try to upgrade some installed App through MSI installer, installer would throw exception and show a prompt to user.
Original discussion here:
1. https://github.com/microsoft/PowerToys/pull/37654
2. https://github.com/microsoft/PowerToys/pull/37924
3. https://github.com/microsoft/PowerToys/pull/37987
Tested locally with VS.
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
commit dc9bc113d8
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Tue Mar 18 15:40:13 2025 +0100
Provide a bit better Settings/OOBE screenshots (#570)
just a bit better placeholders so we don't merge current FIX THIS ones
commit 4e30d9ce88
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Mar 18 09:28:01 2025 -0500
Some better logging for extension startup (#571)
The E_PATH_NOT_FOUND happens if you just delete an extension, without uninstall
This should make extension startup easier to track (at the least)
commit bab156763d
Author: Niels Laute <niels.laute@live.nl>
Date: Tue Mar 18 15:18:38 2025 +0100
ToastWindows tweak (#569)
- 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
commit 56f6f144bd
Author: moooyo <42196638+moooyo@users.noreply.github.com>
Date: Tue Mar 18 21:25:02 2025 +0800
Add Icon for TimeDate extension in settings page. (#565)
1. Remove unused file
2. Fix Icon in Extensions setting page.
3. Fix save settings issue
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
commit 6dcaa8dca4
Author: Niels Laute <niels.laute@live.nl>
Date: Tue Mar 18 14:23:48 2025 +0100
Searchbox with suggest text + cursor fix (#482)
- 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>
commit 47d0538a2f
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Mar 18 08:23:27 2025 -0500
Make sure all the MinVersion's are 19041 (#568)
Closes#493
commit df64a02738
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Mar 18 08:23:18 2025 -0500
Mildly reduce memory leakage (#564)
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.
commit 78c8195668
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Tue Mar 18 11:07:51 2025 +0100
try fix ci 2 (#567)
commit 728b36420c
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Tue Mar 18 09:55:15 2025 +0100
Try fix ci (#566)
commit 90d9bca81d
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Mar 17 15:48:30 2025 -0500
more nits (#563)
* 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>
commit 180ac1e84e
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Mon Mar 17 17:05:17 2025 +0100
Various fixes. See description (#558)
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
commit 0e77697e2a
Author: Niels Laute <niels.laute@live.nl>
Date: Mon Mar 17 14:36:33 2025 +0100
Colored icons (#559)
* AllApps
* File Explorer
* Windows Settings
* Windows Terminal
* DateTime
* Calculator
* Registry
* WinGet
* WebSearch
* Use PNGs instead of SVGs for better rendering
commit 57c193a2d0
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Mon Mar 17 13:31:49 2025 +0000
Fix CommandPalette package checking at runtime (#556)
<!-- 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.
commit 6d07dba9e2
Author: Mike Griese <zadjii@gmail.com>
Date: Sun Mar 16 06:08:31 2025 -0500
Add some tooltips, and tighten up some phrasing (#555)
* 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)
commit 18ff9d4b99
Author: Mike Griese <zadjii@gmail.com>
Date: Sun Mar 16 06:08:15 2025 -0500
Add support for a startup task (#554)
Closes#98
commit f762f0dc37
Author: Mike Griese <zadjii@gmail.com>
Date: Sun Mar 16 06:07:56 2025 -0500
Lazy-init details for app items (#552)
Use less memory on apps by lazy-init'ing details, icons
commit 16650db1c9
Author: Mike Griese <zadjii@gmail.com>
Date: Sat Mar 15 20:02:11 2025 -0500
A pair of threading issues: MoreCommands and Tags (#553)
* 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
commit ef085c532a
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Sat Mar 15 03:08:06 2025 +0000
[OOBE]Fix crash when opening OOBE (#551)
<!-- 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.
commit 4cb35e2954
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Mar 14 12:54:27 2025 -0500
[MAIN] this is so bad (#550)
(cherry picked from commit ddbfbd7b89105a9d3843b7a0284ff03ed367b808)
(cherry picked from commit 803d800923f2144c61a484484a4796667ae57727)
Co-authored-by: Mike Griese <zadjii@gmail.com>
commit cc92362f54
Author: Seraphima Zykova <zykovas91@gmail.com>
Date: Fri Mar 14 18:44:19 2025 +0100
[File Search] Fix unresponsive UI after scrolling (#535)
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.
commit fd5606bcfa
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Mar 13 16:50:40 2025 -0500
[build] fix the bindir (#547)
Co-authored-by: Mike Griese <zadjii@gmail.com>
commit 28f129dc16
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Thu Mar 13 18:32:41 2025 +0000
[Deps]Align Webview2 versions to fix deps.json check (#544)
<!-- 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>
commit b728c341fa
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Mar 13 13:32:03 2025 -0500
Add viewmodels to ConfirmResultArgs (#543)
From #536 originally
Also adds more elaborate samples for them.
Closes#399
---------
Co-authored-by: moooyo <42196638+moooyo@users.noreply.github.com>
commit b92525f9aa
Author: Kayla Cinnamon <cinnamon@microsoft.com>
Date: Thu Mar 13 11:20:55 2025 -0400
update banner on Run page (#540)
Updates the description of Command Palette on the settings page
Updates the banner on the Run settings page promoting Command Palette
commit 9365bc1a7b
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Mar 13 10:06:06 2025 -0500
A bunch of PR nits (#541)
* 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>
commit 916998ff25
Merge: 174cd5d9913d41e0b2
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Mar 13 09:35:10 2025 -0500
Merge pull request #542 from zadjii-msft/dev/migrie/merge-upstream-again
Merges the upstream changes to expect.txt, which the PR is very confused about
commit 13d41e0b27
Merge: 174cd5d99a00f56e31
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Mar 13 09:32:31 2025 -0500
Merge remote-tracking branch 'upstream/main' into dev/migrie/merge-upstream-again
commit 174cd5d99e
Merge: ffab2db1f4c420b59d
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Mar 12 13:05:35 2025 -0500
Merge pull request #539 from zadjii-msft/dev/migrie/sync-upstream
Already kinda did this in #537, but git doesn't know that
commit 4c420b59d9
Merge: ffab2db1fccb77ff60
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Mar 12 13:02:39 2025 -0500
Merge remote-tracking branch 'upstream/main' into dev/migrie/sync-upstream
commit ffab2db1f9
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Mar 12 06:55:46 2025 -0500
Add a README (#538)
Also fix one bug with the bookmarks and quit extensions
commit 2bb66b5404
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Mar 12 06:23:23 2025 -0500
[Deps]Update dependencies to .NET 9.0.3 (#537)
* [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>
commit abdc556ce6
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Wed Mar 12 10:53:18 2025 +0000
[Deps]Update CommunityToolkit.WinUI to 8.2.250129-preview2 (#534)
<!-- 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.
commit f1067c290f
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Mar 11 16:06:39 2025 -0500
Stash working on #426
Goal here is to merge TopLevelCommandItemWrapper -> TopLevelViewModel.
TLVM will have the IListItem implementation. It'll implement it by exposing
properties off the CIVM.
That way, we can wrap up the toplevel CI from the extension into a CIVM,
stash the properties into the CIVM,
then use the TLVM safely.
Otherwise, the way the SUI works today is super unsafe. In fact, TLCIW is
generally unsafe, just didn't realize it. It wasn't copying jack
Stashing cause I have other stuff that needs to get done today
commit b9df74d227
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Mar 11 13:04:59 2025 -0500
Bump the remaining vcxproj's to the new WASDK version (#533)
This is from #531
commit a025870da2
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Mar 11 12:43:48 2025 -0500
Format, and bump the project template to 0.0.9 (#532)
Closes#492Closes#484
commit 3dcf93a3b3
Merge: ab576c6d388677e6b3
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Mar 11 12:41:30 2025 -0500
Merge pull request #531 from zadjii-msft/dev/jaime/merge-latest-main
<!-- 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.
commit 88677e6b37
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Tue Mar 11 15:25:02 2025 +0000
proper fix for spellcheck
commit d11ee7d320
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Tue Mar 11 15:20:22 2025 +0000
Fix spellcheck
commit 5b1d7722bf
Merge: ab576c6d33b05cf127
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Tue Mar 11 14:45:15 2025 +0000
Merge remote-tracking branch 'upstream/main' into main
commit ab576c6d3e
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Mar 11 09:01:41 2025 -0500
Remove all the old samples that we can't ship ourselves (#530)
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
commit 4fca47201d
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Mar 11 08:57:18 2025 -0500
Localize all the remaining in-app resources (#521)
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
commit 971aaceaa3
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Mar 11 08:42:44 2025 -0500
Last API breaks before 0.1 (#529)
* 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
commit bb40313443
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Mar 11 08:09:22 2025 -0500
Uhg, I broke everything (#528)
This is stuff that regressed in #518, for the large part.
This is also about the time I discovered #525, #526 and #527
commit 03db033bba
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Mon Mar 10 18:16:45 2025 +0100
Fix scrolling when many items (e.g. All Apps) and fix Details labels update (#498)
Closes#407 (at least well enough)
Closes#466Closes#481
Related to #365, but doesn't fix that.
commit 68cc9b84f4
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Mon Mar 10 13:51:16 2025 +0000
[GPO]Add a policy for controlling CmdPal enabled state (#503)
As bad as the title sounds.
Fix is as easy as you'd think.
Closes#512.
commit 013881783a
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Mar 10 08:49:31 2025 -0500
fix handling command invokes ON THE UI THREAD (#518)
As bad as the title sounds.
Fix is as easy as you'd think.
Closes#512.
commit 5002889e27
Author: Mike Griese <zadjii@gmail.com>
Date: Mon Mar 10 08:49:24 2025 -0500
`virtual` on all, and other toolkit changes (#515)
Closes#254Closes#472Closes#491
commit 6df8685b96
Author: Mike Griese <zadjii@gmail.com>
Date: Mon Mar 10 08:49:13 2025 -0500
Fix bookmarks bugs by tidying code (#513)
The bookmarks code was always a little wacky. This is 100% less wack.
Fixes#467Fixes#468
commit 26c663e396
Author: Mike Griese <zadjii@gmail.com>
Date: Fri Mar 7 19:59:53 2025 -0600
Add support for alt+left to go back (#487)
Closes#398
commit 27797d031a
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Mar 7 19:59:08 2025 -0600
Add support for svg icons (#486)
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
commit 92106e60de
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Mar 7 19:58:21 2025 -0600
Don't fetch all the items all at once (#501)
_targets #499_
closes#389closes#390closes#391
Probably also closes#388
but also creates #502, and I think that's a reasonable tradeoff
commit 5147b26a01
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Mar 7 19:55:54 2025 -0600
Browse command and EmptyContent (#499)
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
commit abdd298c3c
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Mar 5 16:08:14 2025 -0600
Add support for commands on content pages (#495)
Basically just abstracts what we already had for list items, and uses that abstraction for contentpageviewmodel too
Closes#476
commit 5accdc636f
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Mar 5 16:07:57 2025 -0600
Include the extension name in the weight of the item (#496)
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 🤷
commit 9dc04d8f27
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Mar 5 16:07:41 2025 -0600
This should make details observable (#497)
This doesn't take care of #466, but it is a bug nonetheless
commit fcc350a73c
Merge: 29c5c78ebaaa226f99
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Feb 28 12:45:18 2025 -0600
Merge pull request #469 from zadjii-msft/stefan/try_fix_git_history
Merge upstream PT #14 and try fix git history
commit aaa226f99f
Merge: 29c5c78eb22e29d125
Author: Stefan Markovic <stefan@janeasystems.com>
Date: Fri Feb 28 15:06:18 2025 +0100
Merge remote-tracking branch 'mainPT/main'
commit 29c5c78eb3
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Feb 27 15:04:01 2025 -0600
Bump template to 0.0.7 SDK (#464)
Bump template to 0.0.7 SDK
commit d349e3374e
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Thu Feb 27 22:03:37 2025 +0100
Merge upstream PT #13 (#462)
* [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>
commit eda7e503d8
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 26 12:31:38 2025 -0600
Make a viewmodel for ICommand itself (#463)
Closes#253
This whole `item.Command.Unsafe.Name` buisiness has been weird for far too long
commit 716d0c2b4b
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 26 10:01:04 2025 -0600
Add to the SUI a setting to control where the window is summoned (#461)
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.
commit 626d265f3f
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 26 05:25:43 2025 -0600
Enable editing aliases in the SUI (#460)
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)
commit 5e953dbd94
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 26 05:25:13 2025 -0600
Officially deprecate FormPage and MarkdownPage (#459)
`ContentPage` is the more generic form of this.
I'm deprecating this here in 0.0.8, and in 0.0.9 I'm gonna outright remove it.
commit 7e115735fd
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 26 05:24:53 2025 -0600
A pair of drive-by bug fixes (#457)
* Allow trailing commas in terminal `settings.json`
* in the Clipboard history copy, actually use the toast message
commit c82a8e875f
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Feb 25 05:34:39 2025 -0600
Implement a basic recently-used-apps algorithm (#454)
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
commit cc01986b53
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Feb 25 05:34:06 2025 -0600
Add edit & delete to Bookmarks (#451)
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
commit 4c4d53ec37
Author: Seraphima Zykova <zykovas91@gmail.com>
Date: Tue Feb 25 12:33:31 2025 +0100
[Search files] Loading more items fix (#453)
<!-- 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
commit 23c22331e8
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Feb 21 05:52:15 2025 -0600
add wyhash as an exception (#445)
Boy does PT ever have a lot of sanity checking [[good]]
commit 86911adb5e
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Feb 20 17:06:49 2025 -0600
fix a 'hang' on quit (#444)
Hey guess what, you need to close all the windows.
regressed in #442
commit a4719daf71
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Feb 20 16:10:49 2025 -0600
Add rudimentary support for Toast messages (#442)
Well, I started by wanting to just close#385. Then I thought, "well, the copy command really needs that toast, doesn't it"
one thing lead to another, and now

Closes#385
Closes # what I never filed `ShowToast`, from https://github.com/zadjii-msft/PowerToys/pull/395
commit d3b52660e8
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Feb 20 07:03:59 2025 -0600
Tidy up the clipboard history code (#441)
Tidying from #437
commit e9a8457111
Author: ironyman <ironyman@users.noreply.github.com>
Date: Thu Feb 20 04:40:20 2025 -0800
Add Clipboard History built-in command (#437)
This is a resurrection of #151.
This implements support for the windows clipboard history, as a command palette extension.
---------
Co-authored-by: joadoumie <98557455+joadoumie@users.noreply.github.com>
Co-authored-by: Jordi Adoumie <jordiadoumie@microsoft.com>
Co-authored-by: Mike Griese <migrie@microsoft.com>
Co-authored-by: Changyu Li <changyl@microsoft.com>
commit d214c45cb6
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Feb 20 06:27:10 2025 -0600
Add a setting to revert back to thumbnails (#436)
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.
commit 7c9fa6fb6e
Author: Niels Laute <niels.laute@live.nl>
Date: Thu Feb 20 12:41:14 2025 +0100
CommandBarFlyout restyling (#434)
- Restyled the ListView to make it look like a MenuFlyout
- Added support for displaying the optional shortcut
commit 50fcc4c789
Author: Niels Laute <niels.laute@live.nl>
Date: Thu Feb 20 03:03:42 2025 +0100
Remove nested ListViewItem (#435)
In `ListPage`, the listview had a ListViewItem inside of a ListViewItem.
commit 50ee0b7dab
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 19 16:41:55 2025 -0600
Add the ability to bind a global hotkey to anything (#430)
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
commit 138039caa4
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 19 13:09:25 2025 -0600
Fix copy on calc (also, enable observable context menus) (#433)
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
commit d51c2cc00e
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 19 10:33:00 2025 -0600
Fix the HostingHwnd for built-in (#432)
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
commit 00dd9b6ba2
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 19 10:32:18 2025 -0600
Disable PATH apps by default, and the WW explorer error (#431)
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.
commit e502a126f3
Author: moooyo <42196638+moooyo@users.noreply.github.com>
Date: Wed Feb 19 23:50:29 2025 +0800
Migrate TimeDate extension from PowerToys run to CommandPalette (#412)
## Summary of the Pull Request
* Assets: copied from v1 plugin's images folder.
* Helpers folder: Most of them are ported from V1 plugin. Created settings manager to support settings in this extension.
* Pages folder: Created settingsPage for setting UI. And timeDateExtensionPage is our main page for this extension.
* Program.cs and SampleExtension.cs: auto created by new ext ps script.
* TimeDateExtensionCommandsProvider.cs: Title, description and icon. No any special thing in this file.
* AliasManager: populate our alias (')')
Some features that are not ported into V2:
* Global search support (eg: type now in the mian page search box).
Next steps:
* We need to migate the related ut to v2.
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist
- [ ] **Closes:** #xxx
- [ ] **Communication:** I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
- [ ] **Tests:** Added/updated and all pass
Some manual test result:
extension item:

setting:

extension main page (with empty query string):

Invalid input:

unix timestamp

now:

year:

- [ ] **Localization:** All end user facing strings can be localized
- [ ] **Dev docs:** Added/updated
- [ ] **New binaries:** Added on the required places
- [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries
- [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder
- [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects
- [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml)
- [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx
<!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here -->
## Detailed Description of the Pull Request / Additional comments
<!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
---------
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
commit fb8dfa5184
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 19 09:26:51 2025 -0600
Attempt to fix the crash on launch (#429)
It fixes it On My Machine, but not on Clint's unfortunately
commit 826bbd4733
Author: Niels Laute <niels.laute@live.nl>
Date: Mon Feb 17 20:51:34 2025 +0100
ContentIcon (#428)
- Created ContentIcon to host a UIElement
- Moved converters / template selectors from the root folder to the `Converters` folder.
commit c3f5cce7ce
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Feb 13 18:42:58 2025 -0600
BUILD fix samples
oops
commit f91f591e76
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Feb 13 16:30:08 2025 -0600
Add settings for All Apps (#424)
Expose a couple of the settings for apps as actual settings in the settings UI
commit cd5a541b3e
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Feb 13 11:43:19 2025 -0600
Add a command for quickly creating a new extension (#423)
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
commit ef58863fac
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Feb 13 11:43:01 2025 -0600
Add extension settings to the SUI (#419)
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_
commit 36f42d971c
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Feb 13 11:32:51 2025 -0600
Lock both lists at the same time (#422)
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.
commit 38a7f184c3
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Thu Feb 13 18:32:25 2025 +0100
Port All Apps plugin again (#409)
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
commit b04c04b591
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Feb 13 06:18:51 2025 -0600
BUILD: xaml format (#421)
commit 6b9ea06b02
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Feb 12 20:04:21 2025 -0600
Fix the winget icon (#420)
yea, it was that stupid
commit 93cad5d5c4
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 12 20:04:03 2025 -0600
Developer XAML version of TextToSuggest (#416)
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.
commit 7f6c25b737
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Thu Feb 13 03:03:40 2025 +0100
Merge PT #12 (#417)
* [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>
commit d93e5f5bd7
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 12 15:24:44 2025 -0600
Add a license to our nuget (#418)
title
commit 43bae6f922
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Feb 7 10:44:22 2025 -0600
Add the form data too (#414)
Hey turns out that commented out `dataString` was important!
This isn't _terribly_ breaking, because `IFormContent` is new.
commit 066ebe104e
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Feb 7 10:44:07 2025 -0600
Prepare for a new template project (#410)
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 🫰
commit 595fd3b6ee
Author: Seraphima Zykova <zykovas91@gmail.com>
Date: Fri Feb 7 17:43:40 2025 +0100
[Indexer] File icons (#343)
- [x] **Closes:** #316

commit 4d696e1cfc
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Feb 7 05:15:29 2025 -0600
BUILD: Fix signing the SDK (#413)
thanks dustin
This needed to also happen when we merged the upstream PT in #411
commit c2245be456
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Thu Feb 6 22:45:51 2025 +0100
Merge upstream PT #11 (#411)
* [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>
commit 2f3efa3e46
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Feb 6 05:39:57 2025 -0600
Change the default hotkey to Win+alt+space (#405)
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)
commit 96404f02b2
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Feb 6 05:39:38 2025 -0600
Pilfer `TypedEventHandlerExtensions` from WCT (#404)
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
commit da40c449bd
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 5 10:11:50 2025 -0600
Separate out the nuget, CmdPal, and PT versions (#406)
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
commit b9322373b6
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Feb 5 17:03:12 2025 +0100
Merge upstream PT #10 (#402)
* [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>
commit 6856f4ef3e
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Feb 5 06:50:54 2025 -0600
Change namespace to Microsoft.CommandPalette.Extensions (#403)
* 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`)
commit ce40df9665
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Feb 4 08:40:38 2025 -0600
Remove any straggling references to "Action"s (#401)
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
commit 06aeb227a1
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Feb 4 06:02:37 2025 -0600
Remove the prototype (#400)
Goodnight sweet prince
commit c9c45691a7
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Feb 4 05:44:39 2025 -0600
Attempt to correlate apps to winget packages (#387)
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.
commit 4b67711b70
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Feb 3 16:52:31 2025 -0600
Add AOT support for the SDK and extensions (#394)
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
commit edb61457f4
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Feb 3 16:30:46 2025 -0600
BREAKING: Add ContentPages and Invoke(sender) (#395)
## 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.
commit 1a623ce136
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Feb 3 13:39:42 2025 -0600
get rid of dependency on Wox (#383)
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.
commit e8bab4f5b2
Author: Niels Laute <niels.laute@live.nl>
Date: Mon Feb 3 20:39:13 2025 +0100
Various UX tweaks (#393)
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
commit d86d318a9a
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Jan 29 19:43:44 2025 +0100
Fix icon path (#382)
commit 41dc94aa06
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Jan 29 17:57:50 2025 +0100
Fix bad merge (#381)
commit b7aba2661a
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Jan 29 15:54:27 2025 +0100
Merge PT upstream #9 (#379)
* [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>
commit 0931597d53
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Jan 29 15:47:51 2025 +0100
Fix build until POC is removed (#380)
commit c39141b143
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Jan 29 06:56:10 2025 -0600
Tiny nits for winget (#378)
I guess I only subconsciously knew that the progress value in WinUI was in percent, not [0,1].
Also actually do the description fallback I wanted.
commit 4ce5515ced
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Jan 29 06:32:23 2025 -0600
Remove all the PT Run v1 icons we no longer need (#377)
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
commit cce68789df
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Jan 28 14:21:49 2025 -0600
Remove straggling empty fallbacks (#376)
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.
commit 0fba556782
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Jan 28 13:45:46 2025 -0600
Hot (un)load extensions on (un)install (#375)
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
commit 899c233329
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Jan 27 14:06:09 2025 -0600
Don't move the caret to the end of the input if nothing changed (#374)
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.
commit a89375df1e
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Mon Jan 27 12:03:44 2025 -0800
Farewell (#332)
[Spartans never die](https://www.youtube.com/clip/UgkxrRi5-oeG7thHZ4qH-UNsw2JmyK_GmM0W)
commit f14119a3ff
Author: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com>
Date: Mon Jan 27 21:00:36 2025 +0100
Add isMultiline and placeholder to Input.Text (#371)
Add `isMultiline` and `placeholder` to `Input.Text`.
Default is the current behavior: single line without placeholder.
commit e92a28917e
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Jan 27 13:56:46 2025 -0600
Update acrylic when BG changes (#373)
Closes#225
Yes it absolutely was this easy.
commit 2311b35a08
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Jan 27 13:56:29 2025 -0600
Add sample to validate null arrays (#372)
Closes#221
Turns out that the crash in #221 doesn't actually repro anymore, but this sample will test that case
commit 7416b3462d
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Jan 27 13:56:20 2025 -0600
Add a tray icon (#364)
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?
commit 46bc657945
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Jan 27 13:55:02 2025 -0600
Add support for tags in Details metadata (#368)
Adds support for rendering tags in Details metadata.
As an example, adds tags to winget packages.
Closes#95
Also adds separators, and a sample
commit 621044f3c5
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Jan 27 13:53:14 2025 -0600
Add a page for searching for extensions on winget (#369)
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
commit 28efaa849a
Author: Niels Laute <niels.laute@live.nl>
Date: Mon Jan 27 20:52:47 2025 +0100
Settings in a window (#361)
- 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
commit 62e99fbc70
Author: Seraphima Zykova <zykovas91@gmail.com>
Date: Mon Jan 27 22:52:27 2025 +0300
[Indexer] Support wildcards like PT Run (#336)
Changed query generation to support wildcards like PT Run
commit e51d70e055
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Jan 24 08:24:22 2025 -0600
Fix NOTICE and add version (#362)
I didn't know this file existed, whoops, sorry
commit 8f9534121f
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Jan 24 06:49:18 2025 -0600
Initial draft of the winget extension (#356)
_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?
commit 4d464bc801
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Jan 23 16:06:55 2025 -0600
Add support for hiding messages too (#355)
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.
commit 2d4bead312
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Jan 23 16:06:06 2025 -0600
Fix taskbar summons (#357)
Whoops. Activating the app from the taskbar comes in off the UI thread
This may have been an additional cause of #327
commit 5ed505ac92
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Jan 23 15:48:57 2025 -0600
Add 3 settings for Clint (#347)
* 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
commit 83e13e814b
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Tue Jan 21 14:28:51 2025 +0100
Mere PT upstream #8 (#346)
* [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>
commit 0b60644c57
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Fri Jan 17 14:02:21 2025 +0100
Xaml format (#341)
commit 21c6f9674e
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Jan 17 06:42:06 2025 -0600
Restore a minimized window, before we summon it (#340)
Closes#327
Pretty straightforward this. Just restore the window if we're minimized.
Co-authored-by: Mike Griese <zadjii@gmail.com>
commit 9b97db9cd8
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Fri Jan 17 07:05:37 2025 -0500
Fix the Web Search Fallback Command (#325)
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.
commit d53979bb5d
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Jan 17 06:04:46 2025 -0600
Add a setting that controls if we go back home when summoned or not (#326)
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
commit a06750b18d
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Jan 17 06:04:25 2025 -0600
Add tags to show which commands have aliases (#334)
_targets #281_
Adds tags onto top-level items that have an alias assigned to them

Closes#312
commit b86dfab994
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Jan 17 05:57:21 2025 -0600
Use the SearchText from the extension (#319)
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
commit 5873cacabe
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Jan 17 05:43:17 2025 -0600
Add support for showing status messages in the host (#281)
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>
commit 7da291e398
Author: Mike Griese <zadjii@gmail.com>
Date: Fri Jan 17 04:00:51 2025 -0600
Add a ctor for Tag to initialize the text (#335)
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
commit 67eadef5bf
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Jan 17 04:00:09 2025 -0600
Fix the tag crash (#339)
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
commit 8ed322cce3
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Jan 17 03:58:16 2025 -0600
Use localappdata to store settings, instead of in WindowsApps (#304)
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
commit b7c6c9c2df
Author: Niels Laute <niels.laute@live.nl>
Date: Fri Jan 17 10:51:23 2025 +0100
Refactoring and making Tag control actually work (#280)
This PR:
- moves the tag logic from the ListDetailsPage to the Tag control, so it can be re-used at other places as well.
- provides a default style (that can be easily be extended / overriden) that is theme aware.
- adds a BorderBrush property to the Tag viewmodel so that can be set as well
Default dark:

Default light:

Pokedex:

commit e0e13f5046
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Jan 16 23:18:53 2025 -0600
Fix FontIcon padding, again (#308)
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
commit 8744c79b96
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Jan 15 16:17:20 2025 +0100
Fix bad merge (#331)
commit 1b1d65ef8d
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Jan 15 16:15:09 2025 +0100
Merge upstream PT #7 (#330)
* [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>
commit d970a686ee
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Jan 15 11:02:16 2025 +0100
Generate msix package for local build (#329)
commit 9448d0fb56
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Tue Jan 14 12:17:01 2025 +0100
Xaml format (#328)
commit 30fe5e8d76
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Jan 13 14:54:29 2025 -0600
Fix clicks not working on the top half of the back button (#301)
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!
commit 664218af82
Author: Seraphima Zykova <zykovas91@gmail.com>
Date: Mon Jan 13 23:49:57 2025 +0300
[Indexer] Results ordering (#298)
Changed results ordering to achieve the same relevance as in the current PT Run Indexer.
Also adds fuzzy match support
commit df7878342b
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Jan 13 14:48:32 2025 -0600
Add a setting to control if details are shown for apps (#300)
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.
commit 72f2907485
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Jan 13 10:48:11 2025 -0600
Fix the icons on Window Walker (#310)
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
commit 36635379ce
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Jan 13 08:56:30 2025 -0600
Add support for different "branding" for CmdPal (#299)
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>
commit f5aff80b88
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Fri Jan 10 09:08:00 2025 +0100
Install msix on PT install (#296)
* 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
commit d1c7b3e2da
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Jan 9 17:23:56 2025 -0600
Fix the reload extensions command item (#241)
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.
commit 9292658981
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Thu Jan 9 15:02:39 2025 -0800
Add `??` alias to TRA for web search plugin (#295)
commit 2efdbb6cbd
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Jan 9 16:30:25 2025 -0600
Allow both light and dark icons (#286)
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
commit f679c88a16
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Jan 9 16:05:02 2025 -0600
Implement Allowing CommandProviders to ItemsChanged themselves (#289)
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
commit 9eafc8346e
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Jan 9 16:04:29 2025 -0600
Spec `GoToPageArgs.NavigationMode` (#294)
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.
commit 4b9b15f493
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Jan 9 13:16:09 2025 -0600
Fix `Loading` on pages (#290)
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.
commit 0bd356c11c
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Jan 9 12:44:47 2025 -0600
When an extension item fails to load, replace it with an error item (#293)
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.
commit d7c2037955
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Jan 9 12:22:27 2025 -0600
Add some padding for font icons (#265)
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.
commit 8e66d8ec5b
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Jan 9 10:10:53 2025 -0600
Fix the KB control build, part the second (#292)
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
commit e0654bc88a
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Jan 9 09:09:05 2025 -0600
Fix the namespaces for the pilfered KB control (#291)
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
commit fe2927b683
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Thu Jan 9 07:08:31 2025 -0800
Add WebSearch Plugin from PT Run (#209)
This PR Adds the equivalent functionality as the web search plugin from PT Run:


I also took a spin at adding history items (new concept for plugin) so that users in theory can quickly launch previous queries. You can configure the number of items to show up in your history in the settings of course!


And we got the fallback handler working naturally:

commit d9ce0e8eae
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Thu Jan 9 15:42:39 2025 +0100
Merge upstream PT #6 (#288)
commit 750408629a
Author: Seraphima Zykova <zykovas91@gmail.com>
Date: Thu Jan 9 17:40:36 2025 +0300
Indexer pagination (#287)
Added pagination and updated fetching results to improve performance.
commit 6149981428
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Jan 9 07:00:38 2025 -0600
Add a settings page (#264)
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>
commit 55f4632ad8
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Jan 8 15:36:50 2025 -0600
Fix form submits, once and for all (#284)
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.
commit a56916fc33
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Jan 7 14:44:35 2025 -0600
Format will complain about trailing whitespace (#285)
oops
commit dcb15db3c8
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Tue Jan 7 12:23:04 2025 -0800
Change single/double click behavior on list items (#259)
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.
commit 77cdd2bc9f
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Tue Jan 7 11:24:55 2025 -0800
Change the default debounce timer from 100ms to 50ms (#283)
PowerToys Run has 50ms as the default input smoothing:

This PR simply changes the current value from 100ms to 50ms. This causes a noticeable improvement for fast typers.
commit c275f07f64
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Jan 7 13:19:01 2025 -0600
Fix all the broken form pages (#266)
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!
commit bbff0fe7ab
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Tue Jan 7 04:48:39 2025 -0800
Backspace on empty query in FilterBox navigates back (#260)
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.
commit 0a22219080
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Jan 7 06:40:52 2025 -0600
Allow CommandProviders to ItemsChanged themselves (#282)
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.
commit 182d2b2546
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Jan 7 06:35:33 2025 -0600
Support CommandResult.GoBack in the host (#279)
I think I added this to the spec while there was like, 80 branches flying around and never actually merged support for it in the host app. Oops.
commit 9c416a01db
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Jan 7 06:33:31 2025 -0600
Update observable content on the UI thread (#278)
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.
commit 6a505cd773
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Jan 7 06:24:26 2025 -0600
Tags should be Mode=OneWay in the XAML (#275)
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.
commit b40874a7ad
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Jan 7 06:23:35 2025 -0600
Spec out empty content (#272)
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"`
commit de7fc855f8
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Jan 7 06:20:16 2025 -0600
Introduce an `Id` property for command providers (#269)
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_.
commit 86c614dc59
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Jan 7 06:17:38 2025 -0600
Actually add all the commands to the context menu (#267)
Whoops. Looks like the context menu was pretty specifically _not_
getting initialized with the default command. It definitely should.
commit 3a1f88cfdf
Author: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
Date: Tue Dec 31 10:13:57 2024 -0800
Centralize Loading code for Shell/Pages (#244)
## 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>
commit 86ec28d9e3
Author: Seraphima Zykova <zykovas91@gmail.com>
Date: Tue Dec 31 04:20:59 2024 +0300
File search extension (#183)
Adds support for a basic Indexer-based file search extension.
Co-authored-by: Mike Griese <migrie@microsoft.com>
commit dc0693e0de
Author: Mike Griese <zadjii@gmail.com>
Date: Fri Dec 27 07:12:31 2024 -0600
Don't kill the mainpage when typing a space (#255)
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
commit ada7ca8b96
Author: Mike Griese <zadjii@gmail.com>
Date: Fri Dec 27 07:12:18 2024 -0600
Down-weight fallback handlers (#256)
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.
commit fa2ed4b114
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Dec 25 15:35:07 2024 +0100
Auto install msix deps packages (#252)
* Install msix dependencies automatically
* xaml format
commit 95887afbad
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Dec 19 09:19:32 2024 -0600
Swap the POC for TRA in PowerToys (#246)
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>
commit 769f9dadae
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Dec 19 06:29:03 2024 -0600
Let mike use cmdpal to launch steam games (#249)
The app enumeration was very poorly stolen from PowerToys, and I clearly just skipped the most important category of thing to get right: games

happy holidays everyone
commit 93558d1cde
Author: Niels Laute <niels.laute@live.nl>
Date: Wed Dec 18 23:30:46 2024 +0100
UX tweaks (#248)
- @ zadjii-msft added back button support
- Font tweaks
- Back button animation
- Cleaner shortcut UI
- Created a `Tag` control, but not ready yet. will continue in a separate PR
Before vs after

---------
Co-authored-by: Mike Griese <zadjii@gmail.com>
commit 3795bdd767
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Dec 18 15:03:38 2024 -0600
Fix TRA launching (#247)
This broke in #215
commit 467989bf52
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Dec 18 12:17:14 2024 -0600
Add support for aliases (#236)
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>
commit 291838a28a
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Dec 18 18:59:55 2024 +0100
Integrate into PowerToys (#215)
- 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?
commit 44d574027f
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Dec 18 16:08:06 2024 +0100
Spellcheck additions (#243)
* REVERT THIS: just to trigger spellcheck
* [check-spelling] Update metadata
Update for https://github.com/zadjii-msft/PowerToys/actions/runs/12390783207/attempts/1
Accepted in https://github.com/zadjii-msft/PowerToys/pull/243#issuecomment-2551005106
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Revert "REVERT THIS: just to trigger spellcheck"
This reverts commit f1e87cdb4c.
* manual check and fixes
* [check-spelling] Update metadata
Update for https://github.com/zadjii-msft/PowerToys/actions/runs/12392635493/attempts/1
Accepted in https://github.com/zadjii-msft/PowerToys/pull/243#issuecomment-2551170253
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* manual check and fixes 2
* Add patterns
* No jokes here says spellcheck
* merge and again
* one more
* forbidden patterns fix
* More forbidden patterns fixes
* now?
* now??
---------
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Stefan Markovic <stefansjfw@users.noreply.github.com>
commit 9cd56217a0
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Dec 18 06:20:07 2024 -0600
Hook up the buttons, and othe UX nits (#229)
_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>
commit 2dccda7400
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Dec 18 08:57:45 2024 +0100
Merge PT upstream no.5 (#237)
* [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>
commit 8214331752
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Dec 18 01:55:57 2024 -0600
Use the non-labs markdown block, because pain and suffering (#240)
Co-authored-by: Mike Griese <zadjii@gmail.com>
commit b0bfeec888
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Dec 16 15:49:57 2024 -0600
Make fallback commands work again (#234)
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>
commit 4048d76d87
Author: Mike Griese <zadjii@gmail.com>
Date: Mon Dec 16 15:48:07 2024 -0600
Add global hotkey again (#232)
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
commit 8f122b9a4b
Author: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
Date: Mon Dec 16 13:44:10 2024 -0800
Colorize the tags! (#227)
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... 😆
commit a92b1e61a8
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Dec 16 12:22:07 2024 -0600
Minor Window Walker improvements (#233)
* 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>
commit bf6b6b81b6
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Dec 16 11:38:37 2024 -0600
Add Dynamic lists and Apps on the main page again (#224)
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>
commit 19ddcdee5f
Merge: 3df8c87f528250f99d
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Dec 16 10:30:13 2024 -0600
Add a very obvious GoBack command result
Add a very obvious GoBack command result
Closes#230
commit 28250f99d8
Author: Mike Griese <zadjii@gmail.com>
Date: Sun Dec 15 10:53:56 2024 -0600
Add a very obvious GoBack command result
commit 3df8c87f54
Merge: 4ad92b64f7db7d7ece
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Dec 13 17:37:05 2024 -0600
Two colors for tags
Update the idl to allow us to specify separate FG and BG colors. I think that's better honestly.
commit 7db7d7ece7
Author: Mike Griese <zadjii@gmail.com>
Date: Fri Dec 13 17:36:36 2024 -0600
no yea that's better
commit 5299582d85
Author: Mike Griese <zadjii@gmail.com>
Date: Fri Dec 13 17:24:34 2024 -0600
two colors
commit 4ad92b64ff
Merge: 23e94f2ebc5f0881b4
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Dec 13 11:44:53 2024 -0600
Merge pull request #219 from zadjii-msft/dev/migrie/f/TRA-forms-pr
Get the other two types of pages back in. Form pages and Markdown pages.

When forms fail to parse, we'll display the exception by replacing the card with one of our one authoring

Markdown pages support multiple bodies, and possibly details:


Ref #73
commit 23e94f2eb9
Merge: 3388bb23935f4416fe
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Fri Dec 13 11:27:04 2024 -0500
Merge pull request #188 from zadjii-msft/joadoumie/window-walker
Migrate Window Walker from PT Run
commit 35f4416fe2
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Fri Dec 13 11:23:21 2024 -0500
make toplevelcommand a single object that lives over the lifetime of the app
commit c5f0881b43
Merge: 06a5b55ca3388bb239
Author: Mike Griese <zadjii@gmail.com>
Date: Fri Dec 13 08:34:20 2024 -0600
Merge remote-tracking branch 'origin/main' into dev/migrie/f/TRA-forms-pr
commit 06a5b55caa
Author: Mike Griese <zadjii@gmail.com>
Date: Fri Dec 13 07:59:53 2024 -0600
good feedback from reivew
commit 3388bb2397
Merge: 719cfb34680f63dbb9
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Dec 13 07:08:59 2024 -0600
Merge pull request #222 from zadjii-msft/llama/icon-control
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...)
commit 80f63dbb9d
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Fri Dec 13 00:40:53 2024 -0800
Fix#213 by implementing a light-weight IconBox control
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...
commit fa89e1a879
Merge: afc9279c2719cfb346
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Dec 12 17:23:49 2024 -0600
Merge remote-tracking branch 'origin/main' into dev/migrie/f/TRA-forms-pr
commit afc9279c24
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Dec 12 13:58:21 2024 -0600
show details
commit 7957282af2
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Dec 12 13:30:55 2024 -0600
more samples, styling
commit caf578d0f6
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Dec 12 13:12:42 2024 -0600
it cannot be this easy, right?
commit 0884c8c247
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Dec 12 12:29:51 2024 -0600
Form pages are all wired up
commit 6578549f98
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Dec 12 12:13:02 2024 -0600
plumbing
commit 03b22a545b
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Dec 11 17:10:07 2024 -0600
scrolly posts
commit 0f6adb0b1b
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Dec 11 16:31:42 2024 -0600
static constructors are neat
commit 9a2c0f75c8
Author: Mike Griese <zadjii@gmail.com>
Date: Wed Dec 11 12:07:39 2024 -0600
a binding that makes sense to me
commit 5a366b523b
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Dec 10 17:43:50 2024 -0600
okay, so yes, if an extension implements this by crashing, we'll throw an exception, that makes sense
commit a27cd54501
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Dec 10 16:33:07 2024 -0600
start adding views, but I have branches to merge down now
commit d293421218
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Dec 10 15:35:57 2024 -0600
Do the AdaptiveCards workaround, but with PreserveNewest so it doesn't rebuild every launch
commit 719cfb3469
Merge: 44070f83bbae9c0cf3
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Dec 12 17:11:14 2024 -0600
Merge pull request #217 from zadjii-msft/dev/migrie/f/error-context-pr
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
commit bae9c0cf3b
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Dec 12 14:12:21 2024 -0600
I guess this is how you propertychange a dependencyproperty
commit 4f8b905369
Merge: 4dca9436a44070f83b
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Dec 12 05:48:18 2024 -0600
Merge remote-tracking branch 'origin/main' into dev/migrie/f/error-context-pr
commit 4dca9436aa
Merge: 78e7134b90ffadc56a
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Dec 12 05:48:09 2024 -0600
Merge remote-tracking branch 'origin/main' into dev/migrie/f/error-context-pr
commit 44070f83bd
Merge: 0ffadc56af176b0d05
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Dec 12 05:45:15 2024 -0600
Merge pull request #214 from zadjii-msft/llama/image-loading-perf
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.
commit 7e512565df
Author: joadoumie <98557455+joadoumie@users.noreply.github.com>
Date: Wed Dec 11 21:03:04 2024 -0500
fixed a bunch of PR comments
commit f176b0d058
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Wed Dec 11 12:03:56 2024 -0800
Ensure the equality checks for our ViewModels use the underlying Model object so even if we create a new wrapper we'll compare it against what it actually contains.
commit e791bcdbcd
Merge: eb93950010ffadc56a
Author: joadoumie <98557455+joadoumie@users.noreply.github.com>
Date: Wed Dec 11 12:56:24 2024 -0500
Merge remote-tracking branch 'origin/main' into joadoumie/window-walker
commit 0ffadc56aa
Merge: 6a7a2442dc208d4b84
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Dec 11 05:19:31 2024 -0600
Merge pull request #212 from zadjii-msft/dev/migrie/b/TRA-quits-extensions-on-close
Ref #73.
What it says on the tin. Terminate extensions when the main window closes.
commit 7580872e82
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Tue Dec 10 17:33:49 2024 -0800
Attempt to fix duplicate items (doesn't work)
commit 436ae902f6
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Tue Dec 10 17:33:28 2024 -0800
Clean-up DP patterns in Loading Behavior
commit 80c538733d
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Tue Dec 10 17:32:03 2024 -0800
Iniital attempt at deferring loading of some images
commit 6a7a2442d9
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Dec 10 17:34:55 2024 -0600
Load icons again (#208)
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>
commit 78e7134b93
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Dec 10 17:14:51 2024 -0600
remove this unneeded nonsense
commit 3aebd83847
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Dec 10 15:18:36 2024 -0600
Just make the scheduler part of the page context, that makes more sense
commit b731fe9c14
Author: Mike Griese <zadjii@gmail.com>
Date: Mon Dec 9 08:37:10 2024 -0600
everyone gets an exception context
commit 1f6daecf98
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Dec 10 16:39:10 2024 -0600
Add support for the Details pane again (#202)
* 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>
commit a6eba69e60
Merge: 42a913180f769446ac
Author: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
Date: Tue Dec 10 14:26:32 2024 -0800
Merge pull request #199 from zadjii-msft/llama/page-filtering
[WIP] Some initial clean-up for Current Page and test Filtering
commit c208d4b842
Author: Mike Griese <zadjii@gmail.com>
Date: Tue Dec 10 11:58:54 2024 -0600
Terminate extensions on exit (again)
commit f769446ac9
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Tue Dec 10 00:02:03 2024 -0800
Close when we hit Esc at top-level
commit 6810d2cd8a
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Mon Dec 9 23:55:01 2024 -0800
Add some memory to the SearchBox based on the last Filter of the VM
commit 39bb62ca1c
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Mon Dec 9 23:54:16 2024 -0800
Fix issue with initial values not showing up (not added during load when there's no Filter)
commit 25550fb756
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Mon Dec 9 23:53:34 2024 -0800
Uncomment Code that was due to a local stale extension
commit c4b930c6d9
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Mon Dec 9 17:24:46 2024 -0800
Use existing StringMatcher.FuzzySearch helper for the pattern matching of search box
commit cc13026941
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Fri Dec 6 18:11:55 2024 -0800
Some intial clean-up for Current Page and test Filtering
Has some issues still... (in part needs to update toolkit package for debounce extension update...)
commit 42a9131800
Merge: a3ea4497765668a07b
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Mon Dec 9 20:35:08 2024 -0500
Merge pull request #210 from zadjii-msft/llama/fix-webview2
Fix missed config update to WebView2 version
commit 65668a07b3
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Mon Dec 9 17:25:49 2024 -0800
Fix missed config update to WebView2 version from https://github.com/zadjii-msft/PowerToys/pull/205
commit a3ea44977b
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Dec 9 15:05:58 2024 -0600
Windows.UI.Color considered harmful (#196)
_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>
commit 8d8c8c6ab7
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Dec 9 11:44:25 2024 -0800
Add a bunch more ListItem viewmodel properties, namely tags (#192)
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
commit 186d411382
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Dec 9 10:28:43 2024 -0800
Bump our WebView2 version, to fix a bunch of build breaks (#205)
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
commit b586dd611b
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Dec 9 10:10:13 2024 -0800
Add a fallback command for she shell command extension (#207)
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>
commit b7f32e1d18
Author: Eric Johnson <ericjohnson327@gmail.com>
Date: Mon Dec 9 09:26:24 2024 -0800
fix pipeline build (#204)
These copy file tasks were from before moving sdk generation to its own stage. These are no longer needed.
commit e147abd73d
Merge: d881cf89acb963f7ed
Author: Eric Johnson <ericjohnson327@gmail.com>
Date: Fri Dec 6 12:49:25 2024 -0800
Merge pull request #198 from zadjii-msft/user/ejohn/sdkFix
Fix the sdk generation script
commit cb963f7ed1
Author: Eric Johnson <ericjohnson327@gmail.com>
Date: Fri Dec 6 10:49:38 2024 -0800
Fix the sdk generation script
commit d881cf89a6
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Fri Dec 6 09:51:39 2024 -0500
Add the shell plugin from PT Run, and a ChoiceSet settings helper (#185)
* 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>
commit aeb39043fe
Author: Eric Johnson <ericjohnson327@gmail.com>
Date: Fri Dec 6 06:48:19 2024 -0800
Adding extensions SDK nuget generation (#184)
## 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.
commit b16537dd01
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Dec 5 14:07:40 2024 -0800
Add the All Apps page to the MVVM app. (#190)
Pretty straightforward. This never got ported, because it didn't have a CommandProvider. Now it does.
commit 2b986196d6
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Dec 5 09:43:27 2024 -0800
Bind to Page properties, and add support for item propchange's (#186)
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>
commit ef35a4ca32
Merge: 0ccbfd955b082ed45e
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Wed Dec 4 18:28:31 2024 +0100
Merge pull request #189 from zadjii-msft/stefan/merge_main_pt_4
Merge upstream PowerToys #4
commit b082ed45e8
Author: Stefan Markovic <stefan@janeasystems.com>
Date: Wed Dec 4 17:53:20 2024 +0100
merge conflict fix
commit 5c45cddf86
Merge: 0ccbfd955e0949cb4e
Author: Stefan Markovic <stefan@janeasystems.com>
Date: Wed Dec 4 17:46:32 2024 +0100
Merge remote-tracking branch 'mainPT/main' into stefan/merge_main_pt_4
commit eb9395001f
Merge: 79f24bc290ccbfd955
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Tue Dec 3 10:01:36 2024 -0800
merging main into branch
commit 0ccbfd955d
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Dec 2 16:35:56 2024 -0800
Load extensions into TRA (#176)
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
commit 7f9608f21d
Author: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
Date: Thu Nov 28 03:35:11 2024 -0800
ListViewModel Loading Pattern (#180)
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`.
commit c66efdaa32
Author: Niels Laute <niels.laute@live.nl>
Date: Wed Nov 27 19:44:14 2024 +0100
Niels9001/ux explorations (#174)
UX changes:

commit 858db45ece
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Nov 27 10:20:42 2024 -0800
Add more layers of ViewModels to wrap extension objects (#175)
_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.
commit f7a1d23358
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Nov 27 10:19:09 2024 -0800
Populate the context menu with actual items (#171)
* 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
commit 1279241322
Merge: 51e2ad83355b07c597
Author: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
Date: Tue Nov 26 16:04:59 2024 -0800
Merge pull request #177 from zadjii-msft/dev/migrie/single-instance
Make the app single-instanced again
commit 51e2ad8333
Merge: 01d56665ce4b78a7c3
Author: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
Date: Tue Nov 26 16:02:08 2024 -0800
Merge pull request #178 from zadjii-msft/dev/migrie/silencio-debugo
Silence nativeDebugging spew
commit e4b78a7c34
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Nov 26 14:24:21 2024 -0600
silencio nativeDebugging
commit 55b07c597a
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Nov 26 15:16:23 2024 -0600
The amazing duplicating copyright header
commit 8b3325bb03
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Nov 26 11:11:33 2024 -0600
making it single instanced wasn't the source of the rooriginates
commit 01d56665c9
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Nov 26 13:08:19 2024 -0800
I think this fixes our winmd pains, but at what cost (#172)
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
commit 79f24bc290
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Mon Nov 25 15:40:39 2024 -0800
cleaned up command result
commit 6e3507af16
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Mon Nov 25 15:36:39 2024 -0800
returning a new commanditem each time in toplevelcommands seems to work best?
commit 1147b9a7af
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Mon Nov 25 15:18:09 2024 -0800
commit before I remove cancellation token (I hope)
commit 652ed91d81
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Mon Nov 25 10:35:33 2024 -0800
it works... but is a bit buggy
commit 014a340c7a
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Mon Nov 25 12:26:23 2024 +0100
Merge latest PowerToys upstream (#173)
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.
commit 7f026592bf
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sun Nov 24 16:34:24 2024 -0800
mid merge -- doesn't build
commit 3ce188d47a
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sun Nov 24 09:39:49 2024 -0800
no more errors
commit 7b597c047e
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sun Nov 24 09:39:31 2024 -0800
bug fix
commit 8de07ae5c7
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sun Nov 24 09:39:02 2024 -0800
adding settings manager
commit 679c0a9cbe
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sun Nov 24 08:39:08 2024 -0800
removed empty folders
commit cfc9b1c057
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sun Nov 24 08:35:39 2024 -0800
fix properites bug
commit adce6da4ba
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sun Nov 24 08:34:54 2024 -0800
add built in window walker command to Poc
commit 5203d716be
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sun Nov 24 08:32:51 2024 -0800
scaffolding set up for window walker migration from og PT Run Plugin
commit e45c253fd9
Author: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
Date: Fri Nov 22 04:47:31 2024 -0800
Some various minor clean-up (#170)
<!-- 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 😅
commit c0589f833a
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Nov 22 04:42:33 2024 -0800
Hide the titlebar, again (#169)
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.
commit dcc56861b9
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Nov 21 09:55:02 2024 -0800
A couple small MVVM changes, as a sanity check (#168)
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
commit 0a275fd7bd
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Nov 21 08:05:17 2024 -0800
ListItems, ContextItems, and the TopLevel are `ICommandItem`s (#164)
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.
commit b1039f74cc
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Nov 21 07:49:15 2024 -0800
Add aliases to the protoype; improve calculator command (#167)
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.
commit 6b21ef2e5d
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Nov 21 04:49:14 2024 -0800
Remaining spec details for the extension lifecycle (#160)
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
commit da314ce4c7
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Nov 21 06:47:25 2024 -0600
Add a snippet for making a new PR (#165)
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>
commit cc3f1f9515
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Thu Nov 21 07:46:10 2024 -0500
Add Settings to Terminal Profiles Extension (Core) (#162)
## Summary of the Pull Request
This PR adds the equivalent settings functionality seen in PT Run Profiles Plugin out of the box.
It leverages the Settings class helpers to create the settings form.
Here are some screenshots of the resulting changes:



---------
Co-authored-by: Jordi Adoumie <jordiadoumie@microsoft.com>
Co-authored-by: Mike Griese <migrie@microsoft.com>
commit fdc483ce2c
Merge: 175a16058f67521750
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Nov 21 06:36:57 2024 -0600
Merge pull request #159 from zadjii-msft/dev/migrie/check-extensions-script
To help debug #104, though, doesn't fix it
commit 175a16058d
Merge: dc8a529e8a6eeba981
Author: Mike Griese <zadjii@gmail.com>
Date: Thu Nov 21 06:24:47 2024 -0600
Merge pull request #166 from zadjii-msft/dev/migrie/f/side-by-side-prototype
What it says on the tin.
commit a6eeba9816
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Nov 21 06:23:16 2024 -0600
Allow the prototype and TRA to run at the same time
commit dc8a529e86
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Nov 15 11:00:15 2024 -0800
A collection of prototype fixes (#158)
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
commit 42e7566926
Author: Mike Griese <zadjii@gmail.com>
Date: Fri Nov 15 12:54:14 2024 -0600
Add `AccentColor`s to `Page`s (#157)
Just for @ niels9001 to play around with.
commit f675217508
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Nov 15 08:44:29 2024 -0600
Add a helper to sanity check extension installs
commit eb76898d2c
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Nov 15 05:31:46 2024 -0800
Fix a layout cycle crash in the prototype (#156)
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
commit 1e7cc5cbda
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Nov 12 05:58:43 2024 -0800
Spec, basic impl for `TextToSuggest` (#145)
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
commit a41e7e7d00
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Nov 12 05:55:40 2024 -0800
MAIN: Update lists for better dynamic lists, pagination, async (#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
commit b96ab5e871
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Nov 12 05:37:51 2024 -0800
Add helper classes for very simple settings (#141)
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
commit 4a23ba25ac
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Tue Nov 12 14:37:23 2024 +0100
Merge upstream main (#149)
* [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
commit 8344fe77a6
Author: Mike Griese <migrie@microsoft.com>
Date: Mon Nov 11 05:36:16 2024 -0800
Fix the build (#146)
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.
commit b10325430c
Author: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Date: Fri Nov 8 19:02:07 2024 +0100
Integrate into PowerToys.sln (#140)
## 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!)
commit c319a74e74
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Nov 5 10:22:15 2024 -0600
Create an `IExtensionHost` class, to enable logging (#137)
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.
commit 6ee3ad68b0
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Nov 5 10:21:39 2024 -0600
Implement the "explore" page from mastodon (#132)
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.
commit 40dc46b6e1
Merge: 87869265020914094a
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Tue Nov 5 13:29:33 2024 +0000
Merge upstream main into zadjii-msft/stefan/merge_pt_main
Merge PT main
commit 20914094a9
Merge: 878692650eed39e5d1
Author: Stefan Markovic <stefan@janeasystems.com>
Date: Tue Nov 5 14:12:01 2024 +0100
Merge remote-tracking branch 'mainPT/main' into stefan/merge_pt_main
commit 878692650a
Author: Mike Griese <migrie@microsoft.com>
Date: Sun Nov 3 10:38:18 2024 -0600
Removed sections from the spec, prototype (#129)
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.
commit 3ef20c5b23
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Sun Nov 3 09:47:15 2024 -0500
Adding Windows Settings from PT Plugin (#128)
* 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>
commit 580fe99094
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Thu Oct 31 11:56:00 2024 -0400
Adding Windows Services, Registry Core Ext from PT Run (#120)
* 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
commit ae5e6ed594
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Oct 23 14:54:46 2024 -0500
Add Connor's Everything extension (#106)
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>
commit 2c8e24ad65
Merge: 7b0b298f04db1cc8fc
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Wed Oct 23 15:03:47 2024 -0400
Merge pull request #119 from zadjii-msft/joadoumie/windows-terminal
Adding Windows Terminal Plugin from PT Run
commit 4db1cc8fcc
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Wed Oct 23 15:00:20 2024 -0400
Added runas admin to Context Menu
commit 63dcead687
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Wed Oct 23 14:35:51 2024 -0400
Added terminal icon for profiles
commit f878b42abe
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Wed Oct 23 11:36:02 2024 -0400
launching works for profiles
commit 8e9e9f1a66
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Wed Oct 23 10:25:21 2024 -0400
terminal profiles showing up
commit 7b0b298f00
Merge: c7fae3012950f6afdd
Author: Clint Rutkas <clint@rutkas.com>
Date: Mon Oct 21 20:30:56 2024 -0700
Merge pull request #105 from microsoft/main
sync to main
commit 950f6afdda
Merge: dc7c7ef2bc7fae3012
Author: Clint Rutkas <clint@rutkas.com>
Date: Mon Oct 21 20:29:41 2024 -0700
Merge branch 'main' into main
commit c7fae30123
Merge: 8ba46547607ec7980d
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Oct 8 17:26:40 2024 -0700
Merge branch 'microsoft:main' into main
commit 8ba465476f
Merge: 57fe0280b474c6f732
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Sep 27 03:43:06 2024 -0700
Merge branch 'microsoft:main' into main
commit 57fe0280b3
Merge: e5b1594db94931494f
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Mon Sep 23 11:56:42 2024 -0400
Merge pull request #71 from zadjii-msft/joadoumie/sample-clean-up
sample clean up
commit 94931494f3
Author: joadoumie <98557455+joadoumie@users.noreply.github.com>
Date: Mon Sep 23 11:54:38 2024 -0400
sample clean up
commit e5b1594dba
Merge: 18f6b5b0fb99f530cc
Author: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
Date: Fri Sep 20 15:24:16 2024 -0700
Merge pull request #68 from zadjii-msft/llama/di+vm
Setup DependencyInjection
commit 18f6b5b0fd
Merge: 9ab84cb3a88e5ad1f3
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Fri Sep 20 15:53:13 2024 -0400
Merge pull request #69 from zadjii-msft/users/ethanfang/youtube-ext
YouTube Extension for Command Palette
commit b99f530cc5
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Fri Sep 20 10:33:16 2024 -0400
nits
commit 88e5ad1f3d
Author: Ethan Fang <ethanfang@microsoft.com>
Date: Fri Sep 20 00:10:21 2024 -0500
Updated naming and taggin
commit 53b584049c
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Thu Sep 19 15:35:35 2024 -0700
Basic keyboard handling in SearchBox demonstrating decoupled control messaging
commit e6df40eec7
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Thu Sep 19 12:37:03 2024 -0700
Use ObservableGroupedCollection to handle grouping of sections for UI between ViewModel and View
ObservableGroupedCollection is from MVVM Toolkit: https://learn.microsoft.com/dotnet/communitytoolkit/mvvm/observablegroupedcollections
commit 4cba257bdd
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Wed Sep 18 16:46:02 2024 -0700
Setup DependencyInjection for the initialization of the Built-In Providers and the main view model
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...
commit 9ab84cb3a5
Merge: 66411a91c7ac0358a5
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Thu Sep 19 13:06:04 2024 -0400
Merge pull request #70 from zadjii-msft/krschau/size-acrylic
commit 7ac0358a5d
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Thu Sep 19 12:56:28 2024 -0400
Bring in window size and acrylic
commit 19f46d2c71
Author: Ethan Fang <ethanfang@microsoft.com>
Date: Thu Sep 19 10:41:41 2024 -0500
updates based on Jordi convo
commit 70ddb2e0ac
Merge: 8524961d3961823d6a
Author: Ethan Fang <ethanfang@microsoft.com>
Date: Thu Sep 19 10:11:16 2024 -0500
Merge branch 'users/ethanfang/youtube-ext' of https://github.com/zadjii-msft/PowerToys into users/ethanfang/youtube-ext
commit 8524961d34
Author: Ethan Fang <ethanfang@microsoft.com>
Date: Thu Sep 19 10:11:01 2024 -0500
minor fixes to query size and naming
commit 66411a91cb
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Thu Sep 19 10:30:58 2024 -0400
Fix copyright in editorconfig
commit 9316566f91
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Thu Sep 19 10:13:55 2024 -0400
Cleanup / typos
commit 961823d6a9
Merge: 0a6b500e15ceb38671
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Thu Sep 19 09:51:58 2024 -0400
Merge branch 'main' into users/ethanfang/youtube-ext
commit 0a6b500e1a
Author: Ethan Fang <ethanfang@microsoft.com>
Date: Thu Sep 19 01:31:48 2024 -0500
YouTube Extension V0 Complete
commit 5ceb38671a
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Wed Sep 18 18:56:23 2024 -0400
Fix some typos
commit 36195db409
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Wed Sep 18 18:44:57 2024 -0400
tabs -> spaces
commit 0a02d19701
Merge: 22cfd608695c880ca2
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Wed Sep 18 18:40:27 2024 -0400
Merge pull request #67 from zadjii-msft/user/krschau/actionbar
Add ActionBar control
commit 95c880ca21
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Wed Sep 18 17:40:52 2024 -0400
Add ViewModels for ActionBar
commit e9ee4046df
Author: Ethan Fang <ethanfang@microsoft.com>
Date: Wed Sep 18 15:04:41 2024 -0500
savings changes for jordi to play around
commit b7a4706e49
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Wed Sep 18 15:20:09 2024 -0400
Add ActionBar
commit 22cfd60863
Merge: 71375e75f12f29ab6a
Author: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
Date: Wed Sep 18 11:25:29 2024 -0700
Merge pull request #65 from zadjii-msft/llama/ext
Add ShellPage
commit 71375e75f1
Merge: 2cfbe6894080d21b09
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 18 11:03:10 2024 -0700
Merge pull request #66 from zadjii-msft/dev/crutkas/moveAppsToDedicatedPlugin
refactoring apps to dedicated project
commit 080d21b09f
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 18 11:02:47 2024 -0700
removing x86 references
commit 6b7930a879
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 18 10:57:20 2024 -0700
refactoring apps to dedicated project
commit 12f29ab6a3
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Tue Sep 17 15:56:28 2024 -0700
Setup ShellPage and Loading Placeholder
commit c92800fc32
Author: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Date: Tue Sep 17 15:07:14 2024 -0700
Give new UI app same identity as POC
commit 2cfbe68942
Merge: 5f778cfe4d7a07dc7c
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 18 09:10:43 2024 -0700
Merge branch 'microsoft:main' into main
commit 5f778cfe43
Merge: a8f12731a2f64260fe
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Wed Sep 18 11:37:23 2024 -0400
Merge pull request #64 from zadjii-msft/krschau/searchbar
Make SearchBar its own control
commit 2f64260fef
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Tue Sep 17 19:22:14 2024 -0400
Put back events
commit d6636b9450
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Wed Sep 18 11:24:38 2024 -0400
Add SearchBar
commit a8f12731a2
Merge: 316aefba69561ff9e2
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Wed Sep 18 11:11:01 2024 -0400
Merge pull request #63 from zadjii-msft/user/krschau/converters2
Use built in converters
commit 9561ff9e28
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Tue Sep 17 20:07:29 2024 -0400
Use built in converters
commit 52cac94e26
Author: Ethan Fang <ethanfang@microsoft.com>
Date: Tue Sep 17 16:17:49 2024 -0500
tags, details, & minor updates
commit 316aefba64
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Tue Sep 17 16:35:07 2024 -0400
Add assets
commit b12930e943
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Tue Sep 17 15:41:12 2024 -0400
cleanup
commit 91f659e1ed
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 17 12:23:44 2024 -0700
Shuffling a smidge just for visual to know UI vs POC
commit 40ef2547ee
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 17 12:17:14 2024 -0700
Getting MVVM in
commit 355762629f
Merge: 3403031501748b7803
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Tue Sep 17 14:52:43 2024 -0400
Remove unused title bar (#62)
Remove unused title bar
commit 1748b78034
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Tue Sep 17 14:38:34 2024 -0400
Remove some stuff we don't use
commit 3403031505
Merge: 1436fc0d6bb51ca544
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Tue Sep 17 13:34:55 2024 -0400
Merge pull request #61 from zadjii-msft/joadoumie/sample-updates
small changes to sample
commit bb51ca544f
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Tue Sep 17 13:33:50 2024 -0400
small changes to sample
commit 26ced6c51e
Merge: 54e7f694c1436fc0d6
Author: Ethan Fang <ethanfang@microsoft.com>
Date: Tue Sep 17 12:17:01 2024 -0500
Merge branch 'main' of https://github.com/zadjii-msft/PowerToys into users/ethanfang/youtube-ext
commit 1436fc0d6e
Merge: 8395c50093c44be064
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Tue Sep 17 13:07:57 2024 -0400
Merge pull request #60 from zadjii-msft/niels9001/fluent3
[UX] Fluent design
commit 54e7f694c8
Author: Ethan Fang <ethanfang@microsoft.com>
Date: Tue Sep 17 12:04:34 2024 -0500
YouTube Extension with API Auth (& verification) as well as "Search Videos" command (working)
commit 3c44be0648
Author: Niels Laute <niels.laute@live.nl>
Date: Tue Sep 17 16:56:15 2024 +0200
More tweaks
commit a5b861280f
Author: Niels Laute <niels.laute@live.nl>
Date: Tue Sep 17 15:15:37 2024 +0200
Other pages
commit ac23fd2c9e
Author: Niels Laute <niels.laute@live.nl>
Date: Tue Sep 17 14:42:17 2024 +0200
Moving styles to resourcedictionary
commit 964c5eb5cd
Author: Niels Laute <niels.laute@live.nl>
Date: Tue Sep 17 14:38:19 2024 +0200
Adding SubtleButtonStyle
commit bd4e058c6f
Author: Niels Laute <niels.laute@live.nl>
Date: Tue Sep 17 14:31:49 2024 +0200
Initial pass
commit 8395c50093
Merge: fed65966255b4ad62b
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Mon Sep 16 17:16:30 2024 -0400
Merge pull request #58 from krschau/main
Fix namespaces
commit 55b4ad62bf
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Mon Sep 16 16:42:02 2024 -0400
Fix more namespaces
commit 4a5fd00ce1
Author: Kristen Schau <47155823+krschau@users.noreply.github.com>
Date: Mon Sep 16 15:30:26 2024 -0400
DeveloperCommandPalette -> WindowsCommandPalette
commit fed659662f
Merge: 6ec2079352fd268784
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Fri Sep 13 14:11:55 2024 -0700
Merge pull request #56 from zadjii-msft/joadoumie/updating-docs
fixing bugs in my docs
commit 2fd268784e
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Fri Sep 13 14:08:23 2024 -0700
fixing bugs in my docs
commit 6ec2079353
Merge: 598a00f13c71881af5
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Fri Sep 13 14:06:13 2024 -0700
Merge pull request #55 from zadjii-msft/joadoumie/updating-docs
more doc updates
commit c71881af54
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Fri Sep 13 13:54:58 2024 -0700
more doc updates
commit 598a00f13e
Merge: f06dd26d4c5dc35ce4
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Fri Sep 13 13:31:18 2024 -0700
Merge pull request #54 from zadjii-msft/joadoumie/updating-docs
doc edits
commit c5dc35ce4a
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Fri Sep 13 13:29:17 2024 -0700
doc edits
commit f06dd26d41
Merge: 2335e85b010afc7e6c
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Fri Sep 13 13:23:30 2024 -0700
Merge pull request #53 from zadjii-msft/joadoumie/updating-docs
updating docs
commit 10afc7e6ca
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Fri Sep 13 13:21:47 2024 -0700
updating docs
commit 2335e85b00
Merge: f464b697977e0449b5
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Fri Sep 13 10:14:47 2024 -0700
Merge pull request #52 from zadjii-msft/joadoumie/modify-template
tweaking template
commit 77e0449b56
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Fri Sep 13 09:44:59 2024 -0700
Adding folder structure to match docs
commit 1de870a8a8
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Fri Sep 13 09:40:31 2024 -0700
tweaking template
commit f464b6979c
Merge: d89d2c9c1a1a2677c2
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 12 08:51:34 2024 -0700
Merge pull request #51 from zadjii-msft/merge-wasdk-1.6
Merge latest PowerToys main with Windows App SDK 1.6
commit a1a2677c2d
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Thu Sep 12 11:22:12 2024 +0100
Reference WebView2 on Projects where WinAppSDK is referenced
commit 869fd972db
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Thu Sep 12 11:07:18 2024 +0100
Put .vsconfig more in line with versions in PowerToys
commit f96c03de4a
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Thu Sep 12 10:51:18 2024 +0100
Adding partial to classes that implement WinRT interfaces
commit 882205b8ab
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Thu Sep 12 10:41:13 2024 +0100
Add WebView 2 projects alongside Windows App SDK
commit 0b0cf459a3
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Thu Sep 12 10:40:55 2024 +0100
Update versions to WASDK 1.6
commit 44a04630f4
Merge: d89d2c9c17e99389b6
Author: Jaime Bernardo <jaime@janeasystems.com>
Date: Thu Sep 12 10:08:16 2024 +0100
Merge branch 'main' into merge-wasdk-1.6
commit d89d2c9c1c
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 10 14:59:56 2024 -0700
slamming in public profiles
commit 5b48d5f6ea
Merge: fc90b2a32b82840c5e
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Mon Sep 9 09:01:53 2024 -0700
Merge pull request #50 from zadjii-msft/joadoumie/sample-extension
SSH / Sample Pages Exetnsion
commit b82840c5ed
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sat Sep 7 22:31:52 2024 -0700
dynamic list page example
commit 7f489f2c13
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sat Sep 7 09:12:47 2024 -0700
Add example for list page with details
commit 3cf16421bb
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sat Sep 7 08:59:33 2024 -0700
cleaned up form page example
commit 9ba9a93cb5
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sat Sep 7 08:40:20 2024 -0700
fixing bugs
commit 74c7f83482
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sat Sep 7 08:18:05 2024 -0700
ty clint
commit 350ffd372a
Merge: 55bef30b0fc90b2a32
Author: Jordi Adoumie <98557455+joadoumie@users.noreply.github.com>
Date: Sat Sep 7 08:11:28 2024 -0700
Merge branch 'main' into joadoumie/sample-extension
commit 55bef30b01
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sat Sep 7 07:59:02 2024 -0700
fix bug
commit 600d039084
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sat Sep 7 07:51:53 2024 -0700
added sample form
commit 4f14db8772
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Sat Sep 7 00:36:47 2024 -0700
adding additional samples
commit b8ac6b82a8
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Fri Sep 6 23:29:57 2024 -0700
fix naming in .csproj
commit e2c220f5a9
Author: Jordi Adoumie <jordiadoumie@microsoft.com>
Date: Fri Sep 6 23:24:10 2024 -0700
working implementation of SSH Keychain Extension
commit fc90b2a32e
Merge: d157db277133627ac2
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Sep 6 17:05:16 2024 -0700
Merge pull request #49 from zadjii-msft/dev/crutkas/remainingErrors
resolving last errors
commit 133627ac2e
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Sep 6 15:42:16 2024 -0700
removing property
commit c36da68701
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Sep 6 15:41:26 2024 -0700
last error!
commit 4524a6c079
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Sep 6 15:37:10 2024 -0700
more and more :)
commit d157db277e
Merge: 3b7a33b3da76af1f8c
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Sep 6 13:30:23 2024 -0700
Merge pull request #48 from zadjii-msft/dev/crutkas/addArmBackIn
Recovering arm64 support and adjusting runtime ID for x64
commit a76af1f8c7
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Sep 6 13:29:44 2024 -0700
missed one
commit f77a747d15
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Sep 6 13:27:51 2024 -0700
Recovering arm64 support and adjusting runtime ID for x64
commit 3b7a33b3dc
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Sep 6 14:12:27 2024 -0500
Some other SDK renaming (to get rid of old `Actions` references) (#47)
* 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
commit f5d58be822
Author: Mike Griese <migrie@microsoft.com>
Date: Fri Sep 6 12:53:29 2024 -0500
Add a class diagram (#44)
this represents the CURRENT STATE of the spec
commit 6c8f1bf8ba
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Sep 6 10:46:58 2024 -0700
Moving to root cmdpal (#46)
should be unified root now for most things
commit 623ceec2c8
Merge: 95df52dc4af1bfc817
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Sep 6 08:52:12 2024 -0700
Merge pull request #45 from zadjii-msft/dev/crutkas/pathToRoot
simplifying path roots for cpp
commit af1bfc8170
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Sep 6 08:23:34 2024 -0700
simplifying path roots
commit 95df52dc44
Merge: d7a1d2777a1220e2a4
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Sep 6 07:01:41 2024 -0700
Merge pull request #43 from zadjii-msft/dev/crutkas/restOfCleanup
Whole lotta cleanup, calling it a night
commit a1220e2a4f
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 21:59:18 2024 -0700
adjusting
commit cce3124cdd
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 21:47:07 2024 -0700
more adjustments
commit 3c3c82298a
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 21:40:47 2024 -0700
getting errors fixed
commit 283d74511c
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 21:39:35 2024 -0700
more errors
commit 3258d5c52c
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 21:16:24 2024 -0700
adjusting form stuff
commit 411fab236d
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 21:13:10 2024 -0700
few more, onward to 50
commit 4c353f2464
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 21:10:33 2024 -0700
samll adjustments
commit 737495d251
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 21:07:31 2024 -0700
More cleanup!
commit 2fb5251f38
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 21:02:58 2024 -0700
more clenaup
commit 4f6ed8f91b
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 20:56:53 2024 -0700
lotta cleanup
commit d7a1d27778
Merge: 586d6172a452f26c53
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 20:37:59 2024 -0700
Merge pull request #42 from zadjii-msft/dev/crutkas/sdkRefactorPart3
Dev/crutkas/sdk refactor part3
commit 452f26c53d
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 20:36:26 2024 -0700
operational!
commit a93d8b94d1
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 20:34:50 2024 -0700
should be passing,
commit 234a9314a3
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 17:12:15 2024 -0700
more updates :)
commit d6f62c0e81
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 16:35:31 2024 -0700
getting tag compliant again
commit 2e32cfad0e
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 16:35:07 2024 -0700
vars
commit 28cd7967d0
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 16:02:38 2024 -0700
defaults / spacing
commit e6d4cde45f
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 15:54:04 2024 -0700
lotta baseline adjustments
commit 586d6172a5
Merge: 3b1c615e49591d75d4
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 13:55:18 2024 -0700
Merge branch 'microsoft:main' into main
commit 3b1c615e43
Merge: 4b7b72882cd5975403
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 13:54:48 2024 -0700
Merge pull request #41 from zadjii-msft/dev/crutkas/sdkRefactorPart2
More renaming and making stuff private
commit cd59754031
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 13:09:45 2024 -0700
More renaming and making stuff private
commit 4b7b728825
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Sep 5 14:04:29 2024 -0500
Rename the extension SDK to `Microsoft.CmdPal.Extensions` (#40)
This obviously touched the entire world
commit ecaa2235af
Merge: 44e95187ef436bbfe5
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 11:33:14 2024 -0700
Merge pull request #39 from zadjii-msft/dev/crutkas/sdkRenaming
Initial SDK refactors
commit f436bbfe50
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 11:11:23 2024 -0700
updating details too
commit 25947ce10c
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 10:38:41 2024 -0700
doing a few initial fixes
commit 44e95187e0
Merge: 9ae70eff98dda9a3d5
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 10:14:59 2024 -0700
Merge pull request #38 from zadjii-msft/dev/crutkas/additionalCleanup
Dev/crutkas/additional cleanup
commit 8dda9a3d5e
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 10:13:46 2024 -0700
undoing warning
commit 599cec3c30
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Sep 5 10:13:29 2024 -0700
more baseline cleanup
commit 9ae70eff91
Merge: bb77b33c0fd464f1a3
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 20:59:10 2024 -0700
Merge pull request #37 from zadjii-msft/dev/crutkas/moreBaseCleanup
Dev/crutkas/more base cleanup
commit fd464f1a3a
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 20:58:15 2024 -0700
more baseline cleanup efforts
commit 5001d88c44
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 20:39:20 2024 -0700
abstracting files out
commit bb77b33c05
Merge: d7189bf0ac4bcd25e4
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 17:06:52 2024 -0700
Merge pull request #36 from zadjii-msft/dev/crutkas/moreBaseCleanup
Dev/crutkas/more base cleanup
commit c4bcd25e43
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 16:57:30 2024 -0700
breaking more out
commit 62783f3bd5
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 16:55:30 2024 -0700
more breaking stuff out
commit a84905426b
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 16:51:10 2024 -0700
renaming
commit 0c6ce7bfe0
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 16:49:44 2024 -0700
Changing name of commnad
commit 5165a0df49
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 16:35:54 2024 -0700
Getting a bunch more setup
commit d7189bf0ad
Merge: 67387214f6c0f28429
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 16:23:41 2024 -0700
Merge pull request #35 from zadjii-msft/dev/crutkas/abstractSettings
Abstracting core settings out
commit 6c0f28429e
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 16:22:51 2024 -0700
Abstracting core settings out
commit 67387214f6
Merge: 457dcbfb8a4897b597
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 15:57:48 2024 -0700
Merge pull request #34 from zadjii-msft/dev/crutkas/continueFixes
Bookmarks abstracted out of main project
commit a4897b5976
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 15:49:11 2024 -0700
namespace adjustment
commit 75ab71f55a
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 15:44:53 2024 -0700
bookmarks are moved to new project
commit 0ec9bbb02f
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 15:36:35 2024 -0700
few more errors knocked out
commit 14c8f79130
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 15:29:14 2024 -0700
simplifying namespaces
commit f185bc6442
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 15:27:17 2024 -0700
moving bookmarks and centeralizing json loader
commit 457dcbfb8d
Merge: 8d65662f1076841ac7
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 15:01:09 2024 -0700
Merge pull request #33 from zadjii-msft/dev/crutkas/goingAroundTheWorldWithMoreFixes
moving calc back into individual project
commit 8d65662f10
Merge: b5a48292e6de494d82
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 15:00:59 2024 -0700
Merge pull request #32 from zadjii-msft/dev/crutkas/moreCleanup
Bookmarks so it can serialize / deserialize via objects
commit 076841ac70
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 13:58:15 2024 -0700
moving calc back into individual project
commit 6de494d826
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 13:23:09 2024 -0700
Booksmarks now use proper serialization
commit cee0d3adb6
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 09:49:04 2024 -0700
bunch of cleanup
commit b5a48292ef
Merge: 751cdcf1637afde122
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 07:16:21 2024 -0700
Merge pull request #31 from zadjii-msft/dev/migrie/fix-form-pages
Fix form pages
commit 751cdcf166
Merge: 94cadcf1b6e1ca090d
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 07:16:07 2024 -0700
Merge pull request #30 from zadjii-msft/dev/migrie/vcxproj-relative-path
Use the nuget packages at the PowerToys root
commit 94cadcf1bf
Merge: 0e2872968f12b9f4c4
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 07:15:55 2024 -0700
Merge pull request #29 from zadjii-msft/dev/migrie/template-project
Add a template project and a script to generate an extension
commit 0e28729683
Merge: 5a93de4c4c2a47aed2
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Sep 4 07:15:40 2024 -0700
Merge pull request #28 from zadjii-msft/dev/crutkas/fixMore
lotta more fixes
commit 37afde1226
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Sep 4 09:07:23 2024 -0500
Fix form pages
Also, add the spongebot settings page back to test
This fixes the form bubbling thing I was talking about with @crutkas
commit 6e1ca090d3
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Sep 4 06:40:06 2024 -0500
readme
commit 61e0cb53cc
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Sep 4 06:35:30 2024 -0500
less punishing
commit 7220c979ad
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Sep 4 06:27:30 2024 -0500
make this point at the PowerToys root packages
commit f12b9f4c4d
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Sep 4 06:05:14 2024 -0500
sure
commit c2a47aed27
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 23:26:20 2024 -0700
more stuff
commit c212c9cbad
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 23:19:53 2024 -0700
more cleanup
commit f9cb4e20ab
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 23:15:13 2024 -0700
more and more
commit 384bf6caa7
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 23:12:35 2024 -0700
more basic cleanu
commit d0646488f1
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 23:04:30 2024 -0700
Fixing more errors
commit 34dda73784
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 22:52:24 2024 -0700
More stuff
commit 442b77cf27
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 22:44:19 2024 -0700
Getting a bunch of errors done
commit 5a93de4c46
Merge: 9963a0a8a87d176203
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 16:46:48 2024 -0700
Merge pull request #27 from zadjii-msft/dev/crutkas/uiCleanupPart3
Fixing string loader
commit 87d1762031
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 16:46:10 2024 -0700
Fixing string loader
commit 9963a0a8a5
Merge: 0bcc1841e7575bb7e4
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 15:34:09 2024 -0700
Merge pull request #26 from zadjii-msft/dev/crutkas/moreUiCleanup
refactor for process termination
commit 7575bb7e4f
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 15:10:09 2024 -0700
init checkin
commit 0010511749
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Sep 3 16:55:11 2024 -0500
That's right - we can generate template projects easily now
commit 6dc3e9ce94
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Sep 3 16:20:14 2024 -0500
I think this works
commit 0bcc1841ef
Merge: c51a29353d33aa63b7
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 14:13:12 2024 -0700
Merge pull request #24 from zadjii-msft/dev/crutkas/refactorSponge
init pass
commit c51a293535
Merge: 8d37fe6005c439e777
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 14:13:00 2024 -0700
Merge pull request #25 from zadjii-msft/dev/crutkas/cleanupOnUi
lots of baseline adjustments
commit 5c439e7773
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 14:02:37 2024 -0700
lots of baseline adjustments
commit d33aa63b72
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 13:20:48 2024 -0700
init pass
commit b55f81a5a0
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Sep 3 14:48:30 2024 -0500
template project (does this work?)
commit 8d37fe6005
Merge: a6e29784b5afb9b1ef
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 11:05:59 2024 -0700
Merge pull request #23 from zadjii-msft/dev/crutkas/pullOutClasses
Breaking out files from SDK default class
commit 5afb9b1ef8
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Sep 3 11:04:12 2024 -0700
Only refactor is breaking out the single file.
commit a6e29784be
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Sep 3 12:42:14 2024 -0500
Move builtins into sane places (#22)
Gets rid of the `AllApps.csproj` and `Calculator.csproj`
Makes the namespaces a bit more consistent
The sln now looks like

with the "sample" extensions here

to better differentiate between built-in ones and the sample ones
@crutkas as an FYI because I know this was driving him mad
commit a8d69fa45b
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Sep 3 10:35:58 2024 -0500
Adds a 'Reload extensions' builtin ; fix a bunch of string.Empty's (#21)
* Adds a 'Reload extensions' builtin ; fix a bunch of string.Empty's
* whoops
commit c85bc0c372
Merge: 79cfa5dd9e9c77e81c
Author: Clint Rutkas <clint@rutkas.com>
Date: Mon Sep 2 21:15:32 2024 -0700
Merge pull request #20 from zadjii-msft/dev/crutkas/cleanpu
media player plugin
commit e9c77e81cb
Author: Clint Rutkas <clint@rutkas.com>
Date: Mon Sep 2 21:14:36 2024 -0700
media player online
commit 79cfa5dd95
Merge: cab4b4638789245ff9
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Aug 30 23:54:02 2024 -0700
Merge pull request #19 from zadjii-msft/dev/crutkas/cleanpu
cleanup, whitespace and brackets
commit 789245ff9e
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Aug 30 23:50:56 2024 -0700
fixing whitespace style stuff
commit cab4b46388
Merge: 255dc68f4c0b2f1654
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Aug 30 16:40:56 2024 -0700
Merge pull request #18 from zadjii-msft/dev/crutkas/hackerNews
Dev/crutkas/hacker news
commit c0b2f1654a
Author: Clint Rutkas <clint@rutkas.com>
Date: Fri Aug 30 16:38:52 2024 -0700
hackernews now passes
commit ea4bbda107
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 21:28:10 2024 -0700
Common is now error free
commit 255dc68f4f
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 21:22:26 2024 -0700
Calculator module is online
commit 99a616ced2
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Aug 29 16:32:34 2024 -0500
Actually close extension processes when we exit (#14)
* makes `quit` not crash the app
* makes any close actually tell our extensions to exit
once again, thanks devhome folks
commit c9871e6540
Merge: b5ff99ba3da09538f4
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 14:17:19 2024 -0700
Merge pull request #13 from zadjii-msft/dev/crutkas/moreFixes
headers
commit da09538f47
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 14:13:58 2024 -0700
headers
commit b5ff99ba3f
Merge: b59c114cff9aa1be67
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 14:09:05 2024 -0700
Merge pull request #12 from zadjii-msft/dev/crutkas/whitespace1
Headers
commit f9aa1be671
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 14:08:00 2024 -0700
Headers
commit b59c114cf0
Merge: 6328ff1161ac57956e
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 13:53:13 2024 -0700
Merge pull request #11 from zadjii-msft/dev/crutkas/dsafdsaWhiteSpace
small whitespace checkin part 1
commit 1ac57956eb
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 13:52:19 2024 -0700
smaller whitespace checkin
commit 6328ff1160
Author: Mike Griese <migrie@microsoft.com>
Date: Thu Aug 29 15:26:55 2024 -0500
Use the actual devhome code for loading extensions (#8)
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.
commit 1120e673f7
Merge: 5e64ec2198a14aad2b
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 13:07:48 2024 -0700
Merge pull request #7 from zadjii-msft/dev/crutkas/analyzersOnline
analyzers online
commit 8a14aad2bc
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 13:03:29 2024 -0700
analyzers on but as warnings
commit 5e64ec219e
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 12:34:56 2024 -0700
Moving Extensions into main so we don't break stuff (#6)
* Adding in exts
* modifying exts
* deleting outdated azure extentions
* removing x86
commit a0dd9d161f
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 12:34:46 2024 -0700
Dev/crutkas/name spacepart1 (#5)
* updating namespace for common
* Adjusting folder structure now so we can do larger move
commit 1a89580d7c
Merge: 6291692982bc3606b5
Author: Clint Rutkas <clint@rutkas.com>
Date: Thu Aug 29 08:29:06 2024 -0700
Merge pull request #4 from zadjii-msft/dev/crutkas/startToBreakoutCode
Getting more of the projects broken into into files. Based on #3
commit 2bc3606b59
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Aug 28 23:13:57 2024 -0700
removing some older references, breaking stuff into diff class files
commit b29d8cdb8b
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Aug 28 22:48:18 2024 -0700
renaming the c# projects
commit 280e80c9bb
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Aug 28 21:26:52 2024 -0700
Getting stuff on base + baseline sln
commit 6291692980
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Aug 28 18:00:39 2024 -0700
Dev/crutkas/sln adjustment (#2)
* 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>
commit d3ed9f84dd
Author: Clint Rutkas <clint@rutkas.com>
Date: Wed Aug 28 16:06:42 2024 -0700
Getting pubxml included
commit 8c2339c1bd
Merge: 9948714ae31abbd54a
Author: Mike Griese <migrie@microsoft.com>
Date: Wed Aug 28 12:48:21 2024 -0500
Merge branch 'main' of https://github.com/zadjii-msft/PowerToys
commit 9948714ae9
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Aug 27 17:00:31 2024 -0700
removing arm / x86
commit 3890d385e7
Merge: 91b7e96bdb3b26b4f6
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Aug 27 15:33:20 2024 -0700
Merge branch 'dev/cmdpal/main' of https://github.com/microsoft/powertoys into dev/cmdpal/main
commit 91b7e96bdb
Author: Clint Rutkas <clint@rutkas.com>
Date: Tue Aug 27 15:33:09 2024 -0700
Adjusting solution so x64 and Arm64 only.
commit b3b26b4f69
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Aug 27 16:29:00 2024 -0500
Whoops M.T.UI shouldn't be in the cmdpal code - I didn't understand how VS works with C#
commit ac240df991
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Aug 27 09:47:53 2024 -0500
extensions too
commit b5bcbcc433
Author: Mike Griese <migrie@microsoft.com>
Date: Tue Aug 27 09:34:44 2024 -0500
Initial commit: the core project builds
Windows Command Palette ("CmdPal") is the next iteration of PowerToys Run. With extensibility at its core, the Command Palette is your one-stop launcher to start _anything_.
By default, CmdPal is bound to <kbd>Win+Alt+Space</kbd>.


----
This brings the current preview version of CmdPal into the upstream PowerToys repo. There are still lots of bugs to work out, but it's reached the state we're ready to start sharing it with the world. From here, we can further collaborate with the community on the features that are important, and ensuring that we've got a most robust API to enable developers to build whatever extensions they want.
Most of the built-in PT Run modules have already been ported to CmdPal's extension API. Those include:
* Installed apps
* Shell commands
* File search (powered by the indexer)
* Windows Registry search
* Web search
* Windows Terminal Profiles
* Windows Services
* Windows settings
There are a couple new extensions built-in
* You can now search for packages on `winget` and install them right from the palette. This also powers searching for extensions for the palette
* The calculator has an entirely new implementation. This is currently less feature complete than the original PT Run one - we're looking forward to updating it to be more complete for future ingestion in Windows
* "Bookmarks" allow you to save shortcuts to files, folders, and webpages as top-level commands in the palette.
We've got a bunch of other samples too, in this repo and elsewhere
### PowerToys specific notes
CmdPal will eventually graduate out of PowerToys to live as its own application, which is why it's implemented just a little differently than most other modules. Enabling CmdPal will install its `msix` package.
The CI was minorly changed to support CmdPal version numbers independent of PowerToys itself. It doesn't make sense for us to start CmdPal at v0.90, and in the future, we want to be able to rev CmdPal independently of PT itself.
Closes#3200, closes#3600, closes#7770, closes#34273, closes#36471, closes#20976, closes#14495
-----
TODOs et al
**Blocking:**
- [ ] Images and descriptions in Settings and OOBE need to be properly defined, as mentioned before
- [ ] Niels is on it
- [x] Doesn't start properly from PowerToys unless the fix PR is merged.
- https://github.com/zadjii-msft/PowerToys/pull/556 merged
- [x] I seem to lose focus a lot when I press on some limits, like between the search bar and the results.
- This is https://github.com/zadjii-msft/PowerToys/issues/427
- [x] Turned off an extension like Calculator and it was still working.
- Need to get rid of that toggle, it doesn't do anything currently
- [x] `ListViewModel.<FetchItems>` crash
- Pretty confident that was fixed in https://github.com/zadjii-msft/PowerToys/pull/553
**Not blocking / improvements:**
- Show the shortcut through settings, as mentioned before, or create a button that would open CmdPalette settings.
- When PowerToys starts, CmdPalette is always shown if enabled. That's weird when just starting PowerToys/ logging in to the computer with PowerToys auto-start activated. I think this should at least be a setting.
- Needing to double press a result for it to do the default action seems quirky. If one is already selected, I think just pressing should be enough for it to do the action.
- This is currently a setting, though we're thinking of changing the setting even more: https://github.com/zadjii-msft/PowerToys/issues/392
- There's no URI extension. Was surprised when typing a URL that it only proposed a web search.
- [x] There's no System commands extension. Was expecting to be able to quickly restart the computer by typing restart but it wasn't there.
- This is in PR https://github.com/zadjii-msft/PowerToys/pull/452
---------
Co-authored-by: joadoumie <98557455+joadoumie@users.noreply.github.com>
Co-authored-by: Jordi Adoumie <jordiadoumie@microsoft.com>
Co-authored-by: Mike Griese <zadjii@gmail.com>
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Michael Hawker <24302614+michael-hawker@users.noreply.github.com>
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Kristen Schau <47155823+krschau@users.noreply.github.com>
Co-authored-by: Eric Johnson <ericjohnson327@gmail.com>
Co-authored-by: Ethan Fang <ethanfang@microsoft.com>
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* Adding in monaco usage for Reg preview
Looks like this was missed, adding in
* Add Monaco Editor license to NOTICE.md
adding in with peek
* Adding Registry Preview to top bullet list
* Add variable support - initial version without UI
* Add variable in template filename support in New+
* Fix XAML style
* Addressed code review feedback
* [SVGThumbnail] Check fill-rule in SVG file and apply it.
* [SVGThumbnail] Comment added
* [SVGThumbnail] SvgContents is used instead of all html content.
* [SVGThumbnail] - Use SvgContents to extract and modify SVG styles efficiently
- Add retry logic and error handling for WebView2 initialization
* use Linq
---------
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Leilei Zhang <leilzh@microsoft.com>
* Fix snapshotting minimized packaged apps
* Fix window arranger to work with the same windows as the snapshot tool.
* spell checker
* optimising code
* Remove filter condition.
* Add Delete functionality for Peek.
* Updated the "No More Files" text block to use a Uid to load its resource text. Also altered the text style to be consistent with the FailedFallbackPreviewControl error page.
* Revert "Delete Directory.Packages.props"
This reverts commit 3a10918c9f91de64785722e4bdb33c58d1c2daea.
* Attempt to appease the spell-checking bot by renaming flag const.
* Show error message InfoBar if file deletion failed.
* Resolve XAML styling.
* XAML styling fix.
* Settings app updates for new delete confirmation setting.
* Add delete confirmation dialog and settings to Peek. Add shell notification event after delete operation.
* Spelling updates.
* Spelling update.
* Remove permanent delete parameter, YAGNI. Add hwnd parameter to delete so warning dialogs are correctly parented. Fix flags to not hide permanent delete warning.
* Simplify delete confirmation dialog. Remove workaround for focus visual issue. Ensure delete confirmation dialog is closed when the main window visibility is toggled.
* Fix delete delay. Do not regard user cancellations of permanent deletes as an error, but log them as info anyway. More descriptive name for delete confirmation dialog checkbox.
* Fix multiple Content_KeyUp events being raised for MainWindow.
* Synchronise ConfirmFileDelete setting between Peek and Settings app.
* Update following review: split System usings from others; do not log deleted item name.
* Fix XAML style
* first launch test
* add FancyZonesEditorHelper
* click monitor test and add FindByAccessibilityId function
* add ui initialization tests and add exit scope exe function
* add cleanup test function and change file init
* add TemplateLayoutsTest and add LayoutTypeEnumExtension.cs and Element class add sendkey function
* add UI Initialize Test
* add OpenEditLayoutDialog test case and add By type
* add LayoutHotkeysTest
* add EditLayoutTests and add element drag function
* add DeleteLayouTest and change cleanup to base class and change FindByAccessibilityId to By.AccessibilityId
* add DefaultLayoutsTest
* add CustomLayoutsTest
* add CreateLayoutTest
* add CopyLayoutTest
* add ApplyLayoutTest
* add some cleanup code
* fix spelling error
* fix DeleteLayoutWithHotkey test code bug
* change code
* fix restart exe some bug
* move first lunch text code to new file
* test write file error
* fix test code init fancyzone file error
* test maxsize button
* get current window size
* change layout count
* change test case work windows size
* change fancyzone editor window size
* change fancyzone editor window size and change element move rule
* change window size
---------
Co-authored-by: Zhaopeng Wang <zhaopengwang@microsoft.com>
* Initial implementation
* fix style
* Added border to popup
* More changes
* Now use accent color for select button
* Addressed feedback
* fix formatting
* Fix pressing the select in HC mode hiding its text
* Fix W10 hc1 and hc2 hover select button text invisible
* Update src/modules/colorPicker/ColorPickerUI/Controls/ColorPickerControl.xaml
Co-authored-by: Niels Laute <niels.laute@live.nl>
* Addresed feedback regarding FontFamily
* Made the titlebar part of the body
* fix wrong variable
* Added system menu option on right click on toolbar.
Fixed hide then show removing Mica effect
* Fix spell-check
* Fix xaml styling
---------
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
* First Draft
* Update according to comments as well as re-reading
* Finished multiple wording comments
* Removed the module name that appeared at the beginning of the sentence, as it was already included in the section name.
* Add more UI-Test, refactor UITestAutomation
* Convert manual test-case to automation
UI-Tests:
Validating Empty-view is shown if no entries in the list.
Validating Empty-view is NOT shown if 1 or more entries in the list.
Validating Add-an-entry HyperlinkButton in Empty-view works correctly.
Validating Adding-entry Button works correctly.
Validating the Add button should be Disabled if more than 9 hosts in one entry.
Validating the Add button should be Enabled if less or equal 9 hosts in one entry.
Validating error message should be shown if not run as admin.
Validating Warning-Dialog will be shown if 'Show a warning at startup' toggle is On.
Validating Warning-Dialog will NOT be shown if 'Show a warning at startup' toggle is Off.
Validating click 'Quit' button in Warning-Dialog, the Hosts File Editor window would be closed.
Validating click 'Accept' button in Warning-Dialog, the Hosts File Editor window would NOT be closed.
---------
Co-authored-by: Jerry Xu <nxu@microsoft.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* [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>
* 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>
* 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.
* [PowerRename]Add `$`, `^` and `.*` to RegEx cheatsheet
* Add * and +, remove combinations
* correct spelling
* Add ? and \s
* fix spelling once again
* 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.
* 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>
* 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
---------
* 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
* 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.
* 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
[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)
* [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
* 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.
* 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>
* add context menus
* string resources for contextmenu
* fix line break parsing for MULTI_SZ
* better presentation of multiline values and value tooltip
* cleanup
* 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>
* 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
* [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
* 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
* 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>
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.
* 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>
* [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
* 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>
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>
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>
* 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
* [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
* [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>
* 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>
* 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>
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.
* [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>
* 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
* [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.
* 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>
* [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>
* [FilePreview] Use syntax highlighting for .srt
* Change customTokenColors to customTokenThemeRules
* Ignore text on the same line as a timestamp
* Update tokenization rules
* PowerAccent with multi-language selection
- Updated Language enum, method signatures, and settings to support multiple language selections.
- Remove ALL language and added special characters language instead.
- Modified UI to use ListView with checkboxes for language selection, including a "Select All" option.
- Adjusted ViewModel and code-behind to handle multi-selection logic.
- Updated Resources.resw and PowerAccentViewModel.cs to reflect these changes.
* Changes Language selection UI
- Groups languages into two groups
- Sort them by localized language name
- Remove unneeded looping when no languages selected
* add Run support for UUIDv7 generation
* simplify comments and maybe satisfy spell check
* fix endianess
* prefer stack allocation for temporary fixed-size buffer
* perhaps the async test caused the pipeline to hang
* switch to .NET 9 BCL implementation of UUIDv7
* add UUIDv7 to input query suggestions + update exception messages to include v7
* simplify Guid description switch + update devdocs
* [Workspaces] PWA: first steps: implement PWA app searcher, add basic controls to the editor
* spell checker
* Snapshot tool: adding command line args for edge
* PWA: add icon handling, add launch of PWA
* Impllement Aumid getters and comparison to connect PWA windows and processes. Update LauncherUI, Launcher
* Minor fixes, simplifications
* Spell checker
* Removing manual PWA selection, spell checker
* Fix merge conflict
* Trying to convince spell checker, that "PEB" is a correct word.
* XAML format fix
* Extending snapshot tool by logs for better testablility
* spell checker fix
* extending logs
* extending logs
* Removing some logs, modifying search criteria for pwa helper process search
* extending PWA detection for the case the directory with the app-id is missing
* Fix issue when pwaAppId is null
* fix missing pwa-app-id handling in the editor. Removed unused property (code cleaning) and updating json parser in Launcher
* Code cleaning: Moving duplicate code to a common project
* Fix issue: adding new Guid as app id if it is empty
* Code cleanup: moving Pwa related code from snapshotUtils to PwaHelper
* Code cleaning
* Code cleanup: Move common Application model to Csharp Library
* code cleanup
* modifying package name
* Ading project reference to Common.UI
* Code cleaning, fixing references
---------
Co-authored-by: donlaci <donlaci@yahoo.com>
1. Clearer Section Headings: Renamed sections like "Indicating Interest in Issues" to improve readability.
2. Conciseness and Flow: Shortened sentences and rephrased for directness.
3. Improved Organization: Streamlined instructions in sections like “Filing an Issue” and “Contributing Fixes/Features.”
4. Reduced Redundancy: Simplified repetitive language, especially in localization and contribution details.
5. Enhanced Call to Action: Adjusted "Help Wanted" and "Becoming a Collaborator" to guide users clearly on next steps.
2024-11-20 09:24:04 -08:00
2068 changed files with 119221 additions and 20361 deletions
# 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 )
# Even repositories expecting pure English content can unintentionally have Non-English content... People will occasionally mistakenly enter [homoglyphs](https://en.wikipedia.org/wiki/Homoglyph) which are essentially typos, and using this pattern will mean check-spelling will not complain about them.
#
# If the content to be checked should be written in English and the only Non-English items will be people's names, then you can consider adding this.
#
# 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:
# See https://www.grammarly.com/blog/cannot-or-can-not/
# > Don't use `can not` when you mean `cannot`. The only time you're likely to see `can not` written as separate words is when the word `can` happens to precede some other phrase that happens to start with `not`.
# > `Can't` is a contraction of `cannot`, and it's best suited for informal writing.
# > In formal writing and where contractions are frowned upon, use `cannot`.
# > It is possible to write `can not`, but you generally find it only as part of some other construction, such as `not only . . . but also.`
# - if you encounter such a case, add a pattern for that case to patterns.txt.
# 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 )
# 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 )
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.
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.
Rafael has helped do the [upgrade from CppWinRT 1.x to 2.0](https://github.com/microsoft/PowerToys/issues/1907). He directly provided feedback to the CppWinRT team for bugs from this migration as well.
@@ -112,6 +130,8 @@ Find My Mouse is based on Raymond Chen's SuperSonar.
Crop And Lock is based on the original work of Robert Mikhayelyan, with Program Manager support from [@kevinguo305](https://github.com/kevinguo305) - Kevin Guo.
ZoomIt's Video Recording Session code is based on Robert Mikhayelyan's https://github.com/robmikh/capturevideosample code.
### Microsoft InVEST team
This amazing team helped PowerToys develop PowerToys Run and Keyboard manager as well as update our Settings to v2. @alekhyareddy28, @arjunbalgovind, @jyuwono@laviusmotileng-ms, @ryanbodrug-microsoft, @saahmedm, @somil55, @traies, @udit3333
@@ -151,28 +171,51 @@ Other contributors:
* Paul Schmitt - WWL
* And many other Users!
## ZoomIt original contributors
ZoomIt source code was originally implemented by [Sysinternals](https://sysinternals.com):
- [@markrussinovich](https://github.com/markrussinovich) - Mark Russinovich
- [@foxmsft](https://github.com/foxmsft) - Alex Mihaiuc
- [@johnstep](https://github.com/johnstep) - John Stephens
## PowerToys core team
- [@crutkas](https://github.com/crutkas/) - Clint Rutkas - Lead
- [@ethanfangg](https://github.com/ethanfangg) - Ethan Fang - Lead
Below is our guidance for how to report issues, propose new features, and submit contributions via Pull Requests (PRs). Our philosophy is heavily based around understanding the problem and scenarios first, this is why we follow this pattern before work has started.
Below is our guidance for reporting issues, proposing new features, and submitting contributions via Pull Requests (PRs). Our philosophy is to understand the problem and scenarios first, which is why we follow this pattern before work starts.
1. There is an issue
2. There has been a conversation
3. There is agreement on the problem, the fit for PowerToys, and the solution to the problem (implementation)
1. There is an issue.
2. There has been a conversation.
3. There is agreement on the problem, the fit for PowerToys, and the solution to the problem (implementation).
## Filing an issue
## Filing an Issue
Please follow this simple rule to help us eliminate any unnecessary wasted effort & frustration, and ensure an efficient and effective use of everyone's time - yours, ours, and other community members':
**Importance of Filing an Issue First**
> 👉 If you have a question, think you've discovered an issue, would like to propose a new feature, etc., then find/file an issue **BEFORE** starting work to fix/implement it.
Please follow this rule to help eliminate wasted effort and frustration, and to ensure an efficient and effective use of everyone’s time:
When requesting new features / enhancements, understanding problem and scenario around it is extremely important. Having additional evidence, data, tweets, blog posts, research, ... anything is extremely helpful. This information provides context to the scenario that may otherwise be lost.
> 👉 If you have a question, think you've discovered an issue, or would like to propose a new feature, please find/file an issue **BEFORE** starting work to fix/implement it.
* Don't know whether you're reporting an issue or requesting a feature? File an issue
* Have a question that you don't see answered in docs, videos, etc.? File an issue
* Want to know if we're planning on building a particular feature? File an issue
* Got a great idea for a new utility or feature? File an issue/request/idea
* Don't understand how to do something? File an issue/Community Guidance Request
* Found an existing issue that describes yours? Great - upvote and add additional commentary / info / repro-steps / etc.
When requesting new features or enhancements, providing additional evidence, data, tweets, blog posts, or research is extremely helpful. This information gives context to the scenario that may otherwise be lost.
A quick search before filing an issue also could be helpful. It is likely someone else has found the problem you're seeing, and someone may be working on or have already contributed a fix!
* Unsure whether it’s an issue or feature request? File an issue.
* Have a question that isn't answered in the docs, videos, etc.? File an issue.
* Want to know if we’re planning a particular feature? File an issue.
* Got a great idea for a new utility or feature? File an issue/request/idea.
* Don’t understand how to do something? File an issue/Community Guidance Request.
* Found an existing issue that describes yours? Great! Upvote and add additional commentary, info, or repro steps.
### How to tell the PowerToys team this is an interesting thing to focus on
A quick search before filing an issue could be helpful. It’s likely someone else has found the same problem, and they may even be working on or have already contributed a fix!
Upvote the original issue by clicking its [+😊] button and hitting 👍 (+1) icon or a different one. This way allows us to measure how impactful different issues are compared to others. The issue with comments like "+1", "me too", or similar is they actually make it harder to have a conversation and harder to quickly determine trending important requests.
### Indicating Interest in Issues
To let the team know which issues are important, upvote by clicking the [+😊] button and the 👍 icon on the original issue post. Avoid comments like "+1" or "me too" as they clutter the discussion and make it harder to prioritize requests.
---
## Contributing fixes / features
## Contributing Fixes/Features
Please comment on [our "Would you like to contribute to PowerToys?" thread](https://github.com/microsoft/PowerToys/issues/28769) to let us know you're interested in working on something before you start the work. Not only does this avoid multiple people unexpectedly working on the same thing at the same time but it enables us to make sure everyone is clear on what should be done to implement any new functionality. It's less work for everyone, in the long run, to establish this up front.
Please comment on our ["Would you like to contribute to PowerToys?"](https://github.com/microsoft/PowerToys/issues/28769) thread to let us know you're interested in working on something before you start. This helps avoid multiple people unexpectedly working on the same thing and ensures everyone is clear on what should be done. It's less work for everyone to establish this up front.
### Localization issues
### Localization Issues
Please file localization issues, so our internal localization team can identify and fix them. However we currently don't accept community Pull Requests fixing localization issues. Localization is handled by the internal Microsoft team only.
For localization issues, please file an issue to notify our internal localization team, as community PRs for localization aren't accepted. Localization is handled exclusively by the internal Microsoft team.
### To Spec or not to Spec
### To Spec or Not to Spec
A key point is for everyone to understand the approach that will be taken. We want to be sure if anyone does work, we will accept it in. Items that are larger in scope we'll want some type of spec to understand what is being planned and have a discussion. Specs help collaborators discuss different approaches to solve a problem, describe how the feature will behave, how the feature will impact the user, what happens if something goes wrong, etc. Driving towards agreement in a spec, before any code is written, often results in simpler code, and less wasted effort in the long run.
A key point is for everyone to understand the approach that will be taken. We want to be sure that any work done will be accepted. Larger-scope items will require a spec to outline the approach and allow for discussion. Specs help collaborators consider different solutions, describe feature behavior, and plan for errors. Achieving agreement in a spec before writing code often results in simpler code and less wasted effort.
For such scenarios, once a team member has agreed with your approach, skip ahead to the section headed "Development" section below.
Team members will be happy to help review specs and guide them to completion.
Once a team member has agreed with your approach, proceed to the "Development" section below. Team members are happy to help review specs and guide them to completion.
### Help Wanted
Once the team has approved an issue/spec approach to solving, development can proceed. If no developers are immediately available, the spec can be parked ready for a developer to get started. Parked specs' issues will be labeled "Help Wanted". To find a list of development opportunities waiting for developer involvement, visit the Issues and filter on [the Help-Wanted label](https://github.com/microsoft/PowerToys/labels/Help%20Wanted).
Once the team has approved an issue/spec approach, development can proceed. If no developers are immediately available, the spec may be parked and labeled "Help Wanted," ready for a developer to get started. For development opportunities, visit [Issues labeled HelpWanted](https://github.com/microsoft/PowerToys/labels/Help%20Wanted).
---
@@ -55,18 +55,18 @@ Once the team has approved an issue/spec approach to solving, development can pr
Follow the [development guidelines](https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/readme.md).
### Naming of features and functionality
### Naming Features and Functionality
Naming should be descriptive and straightforward. We want names to be clear about functionality and usefulness moving forward.
Names should be descriptive and straightforward, clearly reflecting functionality and usefulness.
### How can I become a collaborator on the PowerToys team
### Becoming a Collaborator on the PowerToys Team
Be a great community member. Just help out a lot and make useful additions, filing bugs/suggestions, help develop fixes and features, code reviews, and always, docs. Lets continue to make the PowerToys repository a great spot to learn and make a great set of utilities.
Be an active community member! Make helpful contributions by filing bugs, offering suggestions, developing fixes and features, conducting code reviews, and updating documentation.
When the time comes, Microsoft will reach out and help make you a formal team member. Just make sure they can reach out to you :)
When the time comes, Microsoft will reach out to you about becoming a formal team member. Just make sure they have a way to contact you. 😊
---
## Thank you
## Thank You
Thank you in advance for your contribution!
Thank you in advance for your contribution! We appreciate your help in making PowerToys a better tool for everyone.
<!-- 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. -->
@@ -34,19 +34,19 @@ Microsoft PowerToys is a set of utilities for power users to tune and streamline
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 -->
@@ -92,107 +92,103 @@ For guidance on developing for PowerToys, please read the [developer docs](/doc/
Our [prioritized roadmap][roadmap] of features and utilities that the core team is focusing on.
### 0.86 - October 2024 Update
### 0.89 - February 2025 Update
In this release, we focused on new features, stability, and improvements.
In this release, we focused on new features, stability, accessibility and automation.
**Highlights**
- Advanced Paste has new abilities: Image to text, and paste to file (text / png / html).
-In settings, we've adjusted the left navigation to group the utilities. As the number of utilities shipped with PowerToys keeps growing, we felt this was a needed adjustment. Thanks everyone for your feedback!
-Workspaces received many bug fixes, including the proper launching of many instances of the same application in the same workspace. Note, we are still actively looking at how to properly handle PWA detection.
-We've added a diagnostic data (telemetry) opt-in option in the Settings General tab. As it is off-by-default, we encourage users to turn it on as that helps direct our development efforts and their journeys. More information about the data we collect can be found in the [PowerToys Data and Privacy documentation](https://aka.ms/powertoys-data-and-privacy-documentation) and what each event does.
**✨Highlights**
- Enhanced Advanced Paste by adding media transcoding support to convert different video and audio file formats! Thanks [@snickler](https://github.com/snickler) for your help!
-Fixed crashes when loading thumbnails after the .NET 9 update and resolved PowerLauncher.exe blocking other MSI installers from creating shortcuts!
-Fixed accessibility issues across FancyZones, Image Resizer, and Settings to improve screen reader support and clarity!
-Enhanced UI automation framework across modules and added new tests to cover manual checks, with more improvements coming!
### General
-Added a setting for diagnostic data (telemetry) opt-in (off by default, however, see above for why we encourage you to opt-in!) and user controls to view data.
-Improved exception logging by adding the type of Exception and InnerException. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
-Fixed an issue where updating PowerToys on Windows 11 did not properly update context menu entries, impacting New+, PowerRename, Image Resizer, and File Locksmith.
-Updated .NET Packages from 9.0.1 to 9.0.2. Thanks [@snickler](https://github.com/snickler) for this.
- Enabled compatibility with VS17.3 and later, for C++23. Thanks [@LNKLEO](https://github.com/LNKLEO) for this.
### Advanced Paste
- Added new built-in actions: Image to text, and paste txt, png or html as a file.
- Added media transcoding support to convert different video and audio file formats, improved UI layouts, refined clipboard handling, and integrated Semantic Kernel for smarter pasting. Thanks [@snickler](https://github.com/snickler) for your help!
### Mouse Jump
### FancyZones
-Refactored the common classes into a separate project. Thanks [@mikeclayton](https://github.com/mikeclayton)!
- Brought back the telemetry events that were deleted across previous refactoring efforts.
-Fixed accessibility by improving the text for monitors, ensuring clearer naming and help text for screen readers.
### Image Resizer
- Fixed issues with Width and Height fields in Image Resizer's Custom preset, ensuring empty values no longer cause errors, settings save correctly, and auto-scaling behaves as expected. Thanks [@daverayment](https://github.com/daverayment)!
- Fixed accessibility by ensuring screen readers announce selected image dimensions in the combo-box for better navigation.
### Monaco Preview
- Fixed open link in default browser rather than Microsoft Edge. Thanks [@OldUser101](https://github.com/OldUser101)!
### Mouse Highlighter
- Fixed a highlight released on an Administrator window will start fading, instead of staying on the screen indefinitely until the mouse button is pressed again on an unelevated window.
### Mouse Without Borders
- Fixed an issue in service mode where copy-paste and drag-drop file transfers didn’t work, ensuring seamless file operations.
- Enabled GPO for enable/disable for Mouse Without Borders in Service Mode. Thanks [@htcfreek](https://github.com/htcfreek) for review and comments!
- Fixed code maintainability by refactoring the oversized 'Common' class in Mouse Without Borders into smaller, focused classes for better structure and clarity. Thanks [@mikeclayton](https://github.com/mikeclayton) and thanks [@htcfreek](https://github.com/htcfreek) for review!
- Refactored the Logger common classes. Thanks [@mikeclayton](https://github.com/mikeclayton)!
### New+
- Fixed the telemetry event for when the modules is enabled or disabled. (This was a hotfix for 0.85)
- Fixed bug when creating folders or files that contain Unicode characters. Thanks [@cgaarden](https://github.com/cgaarden)!
- Fixed bug when the name of a new folder collided with an already existing folder. Thanks [@cgaarden](https://github.com/cgaarden)!
- Updated the New+ icons to the fluent style.
### Peek
- Folder preview enumeration of size and number of files is now more responsive and faster. Thanks [@daverayment](https://github.com/daverayment)!
### PowerRename
- Supported negative value as Start value in regular expression, e.g. ${start=-1314}
- Enhanced RegEx help by adding $, ^, quantifiers, and common patterns for better usability. Thanks [@PesBandi](https://github.com/PesBandi) and thanks [@htcfreek](https://github.com/htcfreek) for review.
### PowerToys Run
-Handled a culture not found error when checking for right-to-left languages.
- Fixed the WebSearch plugin results title being trimmed in the UI. Thanks [@octastylos-pseudodipteros](https://github.com/octastylos-pseudodipteros)!
-The Unit Converter plugin will now show more significant digits. Thanks [@PesBandi](https://github.com/PesBandi)!
-Improved error handling when copying to the clipboard results in an error. Thanks [@PesBandi](https://github.com/PesBandi)!
- Fixed crashes when loading thumbnails after the .NET 9 update by disabling CETCompat.
-Fixed PowerLauncher.exe blocking other MSI installers creating shortcuts. Thanks [@OneBlue](https://github.com/OneBlue)!
- Fixed Run’s dark mode detection to work reliably, preventing issues with incorrect theme detection and ensuring a smoother user experience. Thanks [@daverayment](https://github.com/daverayment)!
-Fixed list separator handling in Calculator, allowing functions with multiple arguments to work correctly across different locales. For example pow(2;3) would be replaced with pow(2,3). Thanks [@PesBandi](https://github.com/PesBandi) and thanks [@htcfreek](https://github.com/htcfreek) for review!
-Fixed angle unit conversions in the PowerToys Run calculator, allowing quick conversions between radians, degrees, and gradians. Thanks [@OldUser101](https://github.com/OldUser101)!
### Quick Accent
- Added support for the Serbian Cyrillic character set. Thanks [@Sirozha1337](https://github.com/Sirozha1337)!
### Registry Preview
- Adopted the Monaco Editor as the UI text editor. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Added ǎ, ǒ and ǔ to the IPA character set. Thanks [@PesBandi](https://github.com/PesBandi)!
- Added ` (backtick) and ~ (tilde) to the VK_OEM_5 character set. Thanks [@xanatos](https://github.com/xanatos)!
- Added ς (final sigma) to the Greek character set. Thanks [@IamSmeagol](https://github.com/IamSmeagol)!
### Settings
-Fixed a crash when trying to access a non-existing templates folder from the New+ page. (This was a hotfix for 0.85)
-Added a navigation tree to group utilities in the left navigation menu.
-Sorted the list of languages in the language selection combo box in the General tab. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Fixed the state of the info bar about templates not being backed up to not close and react to the module's enabled state in the New+ page. Thanks [@htcfreek](https://github.com/htcfreek)!
- Fixed a crash caused by a dangling thread.
- Clicking a notification about there being an update available should now correctly open the Settings application in the General tab.
- Fixed a UI freeze when trying to access the Diagnostic Data Viewer files. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
-Enabled GPO for the "run at startup" setting. Thanks [@htcfreek](https://github.com/htcfreek) for review and comments!
-Fixed accessibility issue by allowing screen readers to announce the group name for secondary links in Settings pages, instead of reading link descriptions without context.
-Fixed an issue where the Color Picker shortcut was not displaying correctly in the Dashboard.
### Workspaces
- Fixed launching the incorrect workspace when launching many workspaces quickly through shortcuts. (This was a hotfix for 0.85)
- Fixed launching many instances of the same application in a workspace.
- Fixed a crash when a previously captured monitor ID no longer existed.
- Fixed an issue causing the wrong coordinates to be saved for minimized applications.
- Fixed an issue causing a crash when stress testing workspace launching.
- Fixed application launching when UAC is off and every application always runs elevated.
- Fixed if a window was last placed on a disconnected monitor, it launches minimized and repositions within the main monitor's visible area when restored, instead of remaining off-screen and invisible.
- Fixed on ARM64 to correctly display icons for packaged apps by resolving path mismatches.
### ZoomIt
- Fixed warning C4706 and related error C2220 during build. Thanks [@xanatos](https://github.com/xanatos)!
### Documentation
-Added HackMD plugin mention to thirdPartyRunPlugins.md. Thanks [@8LWXpg](https://github.com/8LWXpg)!
-Added SSH plugin mention to thirdPartyRunPlugins.md. Thanks [@8LWXpg](https://github.com/8LWXpg)!
-Added the [Data and Privacy documentation](https://github.com/microsoft/PowerToys/blob/main/DATA_AND_PRIVACY.md) to the repo.
-Fixed runner-ipc.md doc on the broken link. Thanks [@daverayment](https://github.com/daverayment)!
-Fixed the new plugin checklist by updating the target framework, removing duplicates, and improving statement organization. Thanks [@hlaueriksson](https://github.com/hlaueriksson)!
-Updated runner documentation to align with the latest code structure.
### Development
-Fixed the CI precheck action to take into account the recent changes in CI actions.
- Added the new Microsoft org issue types to the issue templates. Thanks [@Aaron-Junker](https://github.com/Aaron-Junker)!
-Updated System.Text.Json to 8.0.5 and System.Runtime.Caching to 8.0.1 and related dependencies to the latest to address security reports. Thanks [@snickler](https://github.com/snickler)!
-Updated WinAppSDK to 1.6.1 and CsWinRT to 2.1.5. Thanks [@snickler](https://github.com/snickler)!
-Upgraded the WpfUI dependency to 3.0.5.
- Updated MessagePack to 2.5.187 and StreamJsonRpc to 2.19.27 to address security reports.
- Removed some of the hacks that are no longer needed that tried to force same dependency versions in .csproj files.
- Removed the Markdown file exclusions from the conditions that trigger a full CI test.
- CI fails again when there are XAML style errors in a PR.
- Fixed CI actions that were not failing when one of the powershell scripts they tried to run was failing.
- Fixed analyzer violations to allow fully building PowerToys on Visual Studio 17.12. Thanks [@snickler](https://github.com/snickler)!
-Stabilized pipeline on ARM64 and forked build.
- Added fuzz testing for HostUILib, added as part of pipeline for OneFuzz.
-Fixed and improved UI-Test automation framework, and added new test cases for the FancyZones and Hosts module.
-Optimized Logger function as AOT compatible, improving performance by 18%.
-Made Common.UI and Setting.UI to be AOT compatible.
### What is being planned for version 0.90
#### What is being planned for version 0.87
For [v0.90][github-next-release-work], we'll work on the items below:
For [v0.87][github-next-release-work], we'll work on the items below:
- Stability / bug fixes
- New module: PowerToys Run v2
- New module: File Actions Menu
-Integrate Sysinternals ZoomIt
-Working on installer upgrades
- Upgrading keyboard manager's editor UI
- Stability / bug fixes
## PowerToys Community
@@ -214,6 +210,5 @@ The application logs basic diagnostic data (telemetry). For more information on
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)
* The id can be anything. Recommended is one of the file extensions. For example "php" or "reg".
4. In case you wish to add a custom color for a token, you can do so by adding the following line to [`customTokenColors.js`](/src/Monaco/customTokenColors.js):
4. In case you wish to add a custom color for a token, you can do so by adding the following line to [`customTokenThemeRules.js`](/src/Monaco/customTokenThemeRules.js):
Note: since _background activation_ implies that your toast handler will be invoked in a separate process, you can't share data directly from within a handler and your PT process. Also, since PT is currently a Desktop Bridge app, _foreground activation_ is [handled the same as background](https://learn.microsoft.com/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl#foreground-vs-background-activation), therefore we don't make a dedicated API for it. You can read more on the rationale of the current design [here](https://github.com/microsoft/PowerToys/pull/1178#issue-368768337).
Note: since _background activation_ implies that your toast handler will be invoked in a separate process, you can't share data directly from within a handler and your PT process. Also, since PT is currently a Desktop Bridge app, _foreground activation_ is [handled the same as background](https://learn.microsoft.com/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl#foreground-vs-background-activation), therefore we don't make a dedicated API for it. You can read more on the [rationale of the current design](https://github.com/microsoft/PowerToys/pull/1178#issue-368768337).
[The localization step](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L45-L52) is run on the pipeline before the solution is built. This step runs the [build-localization](https://github.com/microsoft/PowerToys/blob/main/.pipelines/build-localization.cmd) script, which generates resx files for all the projects with localization enabled using the `Localization.XLoc` package.
The [`Localization.XLoc`](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/build-localization.cmd#L24-L25) tool is run on the repo root, and it checks for all occurrences of `LocProject.json`. Each localized project has a `LocProject.json` file in the project root, which contains the location of the English resx file, list of languages for localization, and the output path where the localized resx files are to be copied to. In addition to this, some other parameters can be set, such as whether the language ID should be added as a folder in the file path or in the file name. When the CDPX pipeline is run, the localization team is notified of changes in the English resx files. For each project with localization enabled, a `loc` folder (see [this](https://github.com/microsoft/PowerToys/tree/main/src/modules/launcher/Microsoft.Launcher/loc) for example) is created in the same directory as the `LocProject.json` file. The folder contains language specific folders which in turn have a nested folder path equivalent to `OutputPath` in the `LocProject.json`. Each of these folders contain one `lcl` file. The `lcl` files contain the English resources along with their translation for that language. These are described in more detail [here](#lcl-files). Once the `.resx` files are generated, they will be used during the `Build PowerToys` step for localized versions of the modules.
The [`Localization.XLoc`](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/build-localization.cmd#L24-L25) tool is run on the repo root, and it checks for all occurrences of `LocProject.json`. Each localized project has a `LocProject.json` file in the project root, which contains the location of the English resx file, list of languages for localization, and the output path where the localized resx files are to be copied to. In addition to this, some other parameters can be set, such as whether the language ID should be added as a folder in the file path or in the file name. When the CDPX pipeline is run, the localization team is notified of changes in the English resx files. For each project with localization enabled, a `loc` folder (see [this](https://github.com/microsoft/PowerToys/tree/main/src/modules/launcher/Microsoft.Launcher/loc) for example) is created in the same directory as the `LocProject.json` file. The folder contains language specific folders which in turn have a nested folder path equivalent to `OutputPath` in the `LocProject.json`. Each of these folders contain one `lcl` file. The `lcl` files contain the English resources along with their translation for that language. These are described in more detail in the [Lcl files section](#lcl-files). Once the `.resx` files are generated, they will be used during the `Build PowerToys` step for localized versions of the modules.
Since the localization script requires certain nuget packages, the [`restore-localization`](https://github.com/microsoft/PowerToys/blob/main/.pipelines/restore-localization.cmd) script is run before running `build-localization` to install all the required packages. This script must [run in the `restore` step](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L37-L39) of pipeline because [the host is network isolated](https://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/2066/Consuming-Packages-in-a-CDPx-Pipelinhttps://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/2066/Consuming-Packages-in-a-CDPx-Pipeline?anchor=overview) at the `build` step. The [Toolset package source](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L23) is used for this.
Since the localization script requires certain nuget packages, the [`restore-localization`](https://github.com/microsoft/PowerToys/blob/main/.pipelines/restore-localization.cmd) script is run before running `build-localization` to install all the required packages. This script must [run in the `restore` step](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L37-L39) of pipeline because [the host is network isolated](https://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/2066/Consuming-Packages-in-a-CDPx-Pipeline?anchor=overview) at the `build` step. The [Toolset package source](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L23) is used for this.
The process and variables that can be tweaked on the pipeline are described in more detail [here](https://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/290/Localization).
The process and variables that can be tweaked on the pipeline are described in more detail on [onebranch (account required) under Localization](https://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/290/Localization).
The localized resource dlls for C# projects are added to the MSI only for build on the pipeline. This is done by checking if the [`IsPipeline` variable is defined](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L804-L805), which gets defined before building the installer on the pipeline [here](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/.pipelines/build-installer.cmd#L4). This is done because the localized resx files are only present on the pipeline, and not having this check would result in the installer project failing to build locally.
The localized resource dlls for C# projects are added to the MSI only for build on the pipeline. This is done by checking if the [`IsPipeline` variable is defined](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L804-L805), which gets defined before [building the installer on the pipeline](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/.pipelines/build-installer.cmd#L4). This is done because the localized resx files are only present on the pipeline, and not having this check would result in the installer project failing to build locally.
## Enabling localization on a new project
To enable localization on a new project, the first step is to create a file `LocProject.json` in the project root.
@@ -45,7 +45,7 @@ For example, for a project in the folder `src\path` where the resx file is prese
]
}
```
The rest of the steps depend on the project type and are covered in the sections below. The steps to add the localized files to the MSI can be found [here](#Enabling-localized-MSI-for-a-new-project).
The rest of the steps depend on the project type and are covered in the sections below. The steps to add the localized files to the MSI can be found in [Enabling localized MSI for a new project](#Enabling-localized-MSI-for-a-new-project).
### C++
C++ projects do not support `resx` files, and instead use `rc` files along with `resource.h` files. The CDPX pipeline however doesn't support localizing `rc` files and the other alternative they support is directly translating the resources from the binary which makes it harder to maintain resources. To avoid this, a custom script has been added which expects a resx file and converts the entries to an rc file with a string table and adds resource declarations to a resource.h file so that the resources can be compiled with the C++ project.
@@ -59,7 +59,7 @@ After generating the resx file, rename the existing rc and h files to ProjName.b
</Target>
```
This event runs a script which generates a resource.h and ProjName.rc in the `Generated Files` folder using the strings in all the resx files along with the existing information in resource.base.h and ProjName.base.rc. The script can be found [here](https://github.com/microsoft/PowerToys/blob/main/tools/build/convert-resx-to-rc.ps1). The script uses [`resgen`](https://learn.microsoft.com/dotnet/framework/tools/resgen-exe-resource-file-generator#Convert) to convert the resx file to a string table expected in the .rc file format. When the resources are added to the rc file the `IDS_` prefix is added and resource names are in upper case (as it was originally). Any occurrences of `"` in the string resource is escaped as `""` to prevent build errors. The string tables are added to the rc file in the following format:
This event runs a script which generates a resource.h and ProjName.rc in the `Generated Files` folder using the strings in all the resx files along with the existing information in resource.base.h and ProjName.base.rc. The script is [convert-resx-to-rc.ps1](https://github.com/microsoft/PowerToys/blob/main/tools/build/convert-resx-to-rc.ps1). The script uses [`resgen`](https://learn.microsoft.com/dotnet/framework/tools/resgen-exe-resource-file-generator#Convert) to convert the resx file to a string table expected in the .rc file format. When the resources are added to the rc file the `IDS_` prefix is added and resource names are in upper case (as it was originally). Any occurrences of `"` in the string resource is escaped as `""` to prevent build errors. The string tables are added to the rc file in the following format:
Since there is no API to identify the `AFX_TARG_*`, `LANG_*` or `SUBLANG_*` values from each langId from the pipeline, these are hardcoded in the script (for each language) as done [here](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/tools/build/convert-resx-to-rc.ps1#L50-L77). **If any other languages are added in the future, this script will have to be updated.** In order to determine what are the language codes, you can open the rc file in Resource View, right click the string table and press `Insert Copy` and choose the corresponding language. This autogenerates the required code and can be used to figure out the language codes. The files also add the resource declarations to a resource.h file, starting from 101 by default(this can be changed by an optional argument). Since the output files will be generated in `Generated Files`, any includes in these two files will require an additional `..\` and wherever resource.h is used, it will have to be included as `Generated Files\resource.h`. While adding `resource.base.h` and `ProjName.base.rc` to the vcxproj, these should be modified to not participate in the build to avoid build errors:
Since there is no API to identify the `AFX_TARG_*`, `LANG_*` or `SUBLANG_*` values from each langId from the pipeline, these are hardcoded in the script (for each language) as done in [lines 50-77 of `convert-resx-to-rc.ps1`](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/tools/build/convert-resx-to-rc.ps1#L50-L77). **If any other languages are added in the future, this script will have to be updated.** In order to determine what are the language codes, you can open the rc file in Resource View, right click the string table and press `Insert Copy` and choose the corresponding language. This autogenerates the required code and can be used to figure out the language codes. The files also add the resource declarations to a resource.h file, starting from 101 by default(this can be changed by an optional argument). Since the output files will be generated in `Generated Files`, any includes in these two files will require an additional `..\` and wherever resource.h is used, it will have to be included as `Generated Files\resource.h`. While adding `resource.base.h` and `ProjName.base.rc` to the vcxproj, these should be modified to not participate in the build to avoid build errors:
```
<None Include="Resources.resx" />
```
@@ -86,7 +86,7 @@ Since C# projects natively support `resx` files, the only step required here is
**Note:** Building with localized resources may cause a build warning `Referenced assembly 'mscorlib.dll' targets a different processor` which is a VS bug. More details can be found [here](https://github.com/microsoft/PowerToys/issues/7269).
**Note:** Building with localized resources may cause a build warning `Referenced assembly 'mscorlib.dll' targets a different processor` which is a VS bug. More details can be found in [PowerToys issue #7269](https://github.com/microsoft/PowerToys/issues/7269).
**Note:** If a project needs to be migrated from XAML resources to resx, the easiest way to convert the resources would be to change to format to `=` separates resources by either manually (by Ctrl+H on a text editor), or by a script, and then running [`resgen`](https://learn.microsoft.com/dotnet/framework/tools/resgen-exe-resource-file-generator#Convert) on `Developer Command Prompt for VS` to convert it to resx format.
```
@@ -153,7 +153,7 @@ For C++ and UWP projects no additional files are generated with localization tha
```
For C# projects, satellite dlls are generated when the project is built. For a project named `ProjName`, files are created in the format `langId\ProjName.resources.dll` where `langId` is in the same format as the lcl files. The satellite dlls need to be included with the MSI, but they must be added only if the solution is built from the build farm, as the localized resx files will not be present on local machines (and that could cause local builds of the installer to fail).
This can be done by adding the directory name of the project [here](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L806) and a resource component for the project can be created [here](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L845-L847) in this format:
This can be done by adding the directory name of the project to [Product.wxs near line 806](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L806) and a resource component for the project can be created in [Product.wxs near lines 845-847](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L845-L847) in this format:
@@ -25,13 +25,13 @@ This file contains documentation for all the methods involved in key/shortcut re
- Check if any shortcut remap is currently invoked. This is required to ensure that two remaps don't occur simultaneously at a time, and we send key up events for the shortcuts only if they are actually invoked and not for artificial key up events. In addition to that, while a remap is in the middle of execution, the keyboard state will not match the physical keys, so we do not want a remap <kbd>Ctrl+A</kbd> to <kbd>Ctrl+V</kbd> to also trigger the remap from <kbd>Ctrl+V</kbd> to <kbd>Alt+V</kbd> on pressing <kbd>Ctrl+A</kbd> on the keyboard.
- Get the remap table as per the `activatedApp` argument (i.e. if it is empty, we get the global shortcut remap table and otherwise we get the corresponding app-specific shortcut remap table).
- Iterate over the list of remaps in descending order of number of keys in the shortcut. This is required **for shortcut to key remaps** to ensure that if a user has both <kbd>Ctrl+A</kbd> and <kbd>Ctrl+Shift+A</kbd> remapped to some keys, and the user presses <kbd>Ctrl+Shift+A</kbd>, then we prefer the <kbd>Ctrl+Shift+A</kbd> remap. This logic would not be required if there were only shortcut to shortcut remaps, as they are invoked only on exact match.
- If any shortcut was found to be invoked (from the first step), then we skip till we find the matching shortcut remap. If not we check if the modifiers of the original shortcut are pressed down. If they are, we check if the current key event is a key down event and it matches the action key of the original shortcut. For shortcut to shortcut and for disabling a shortcut [we have an additional step](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L208-L212) where we check if any other key is pressed apart from the original shortcut. This is required because for these two features we allow the remaps only if those exact keys are pressed. The method used for this is described in detail [here](keyboardmanagercommon.md#IsKeyboardStateClearExceptShortcut). If a win key was pressed, we store whether it was the left or the right one, in order to determine which key to set for remaps from/to the common Win key code which we added. This is so that pressing and releasing Left Win key results in that Win key getting modified and not the Right Win key.
- If any shortcut was found to be invoked (from the first step), then we skip till we find the matching shortcut remap. If not we check if the modifiers of the original shortcut are pressed down. If they are, we check if the current key event is a key down event and it matches the action key of the original shortcut. For shortcut to shortcut and for disabling a shortcut [we have an additional step](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L208-L212) where we check if any other key is pressed apart from the original shortcut. This is required because for these two features we allow the remaps only if those exact keys are pressed. The method used for this is [described in detail](keyboardmanagercommon.md#IsKeyboardStateClearExceptShortcut). If a win key was pressed, we store whether it was the left or the right one, in order to determine which key to set for remaps from/to the common Win key code which we added. This is so that pressing and releasing Left Win key results in that Win key getting modified and not the Right Win key.
- If the remap is to a key, we send a dummy key event followed by releasing the original shortcut's modifiers and setting the target key (or doing nothing if it is remapped to disable) and we suppress the event.
- If the remap is to a shortcut, if the modifiers in the original shortcut are present in the target, we only set the additional modifiers and the action key of the target. If it isn't, we send a dummy key event followed by releasing the modifiers which are not common, and setting the remaining ones in the target along with the action key.
- For both cases, we set the `isShortcutInvoked` flag to true, and set the `KeyboardManagerState.activatedApp` if it is an app-specific shortcut remap.
- For the `isShortcutInvoked` is true scenario (i.e. the initial remap keydown section is done) there are several cases depending on the key pressed or released:
- [**Case 1:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L339-L430) If a modifier in the original shortcut is released, we need to reset back to the physical keys pressed.
- For remap to shortcut, we release the target action key if it is currently pressed, and depending on whether all the modifiers of the original shortcut are present in the target, we release the target modifiers that are not common, and set the remaining original shortcut modifiers except the one that was released. We do not need to send the original action key as that will get generate it's own key event if it is held down.
- For remap to shortcut, we release the target action key if it is currently pressed, and depending on whether all the modifiers of the original shortcut are present in the target, we release the target modifiers that are not common, and set the remaining original shortcut modifiers except the one that was released. We do not need to send the original action key as that will get generate its own key event if it is held down.
- For remap to key, we release the target key if it is pressed (and it is not remapped to Disable), and we set the original shortcut modifiers.
- For both the cases we send a dummy key event at the end, since we are setting modifiers without any other key after that, and we reset all the remap variables.
- [**Case 2:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L435-L461) If the original shortcut's action key is pressed again, we send the target shortcut's action key or the target key again (or for disable we just suppress the event).
@@ -57,9 +57,9 @@ This file contains documentation for all the methods involved in key/shortcut re
## HandleAppSpecificShortcutRemapEvent
[This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L754-L809) is used for handling app-specific shortcut to shortcut and shortcut to key remaps. The general logic is as follows:
- Check if the `dwExtraInfo` field is set to `KEYBOARDMANAGER_SHORTCUT_FLAG`. This indicates that the key event was generated by the KBM shortcut remap method using `SendInput`. This ensures that we don't read events generated by the shortcut remap method, but we still read events which are generated by the key remap method.
- Get the name of the process in the foreground. This is done using `GetCurrentApplication` which uses `GetForegroundWindow` to get the window handle and `get_process_path` from the common lib. This approach can fail for UWP apps in full screen, so for that scenario we use the `GetGUIThreadInfo` approach to find the correct window handle, and hence the correct process name. This method is described in more detail [here](keyboardmanagercommon.md#Foreground-app-detection)
- Get the name of the process in the foreground. This is done using `GetCurrentApplication` which uses `GetForegroundWindow` to get the window handle and `get_process_path` from the common lib. This approach can fail for UWP apps in full screen, so for that scenario we use the `GetGUIThreadInfo` approach to find the correct window handle, and hence the correct process name. This method is [described in more detail](keyboardmanagercommon.md#Foreground-app-detection)
- By checking `KeyboardManagerState.GetActivatedApp` we check if an app-specific shortcut is currently invoked. If so, we consider this application to be the activated app. This is required because some shortcut remaps could cause the current app to lose focus and hence until the shortcut is completely released we should allow that remap to continue, otherwise the user could end up in a state where some keys do not get released. For example: remap <kbd>Ctrl+A</kbd> to <kbd>Alt+Tab</kbd> for Edge, when a user presses <kbd>Ctrl+A</kbd> the window loses focus as <kbd>Alt+Tab</kbd> gets executed.
- If there is no app-specific shortcut currently invoked, we check if the foreground process is present in the list of app-specific remaps, either with or without the file extension and caseinsensitive. If it is, this is considered to be the activated app.
- If there is no app-specific shortcut currently invoked, we check if the foreground process is present in the list of app-specific remaps, either with or without the file extension and case-insensitive. If it is, this is considered to be the activated app.
- Call `HandleShortcutRemapEvent` with the `activatedApp` argument so that app-specific shortcut remapping takes place if it applies for the current key event.
## HandleSingleKeyToggleToModEvent (Obsolete - Code from PoC which is commented out)
@@ -81,4 +81,4 @@ The [`MockedInput`](https://github.com/microsoft/PowerToys/blob/main/src/modules
- For modifiers the behavior is slightly different as if the key state of the L/R version is modified, it should also modify the common version, and if a common version is released, it should release both the L and R versions.
### Tests for single key remaps and shortcut remaps
Using the MockedInput handler, all the expected (and known) key scenarios that can occur for while pressing a [remapped key](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/SingleKeyRemappingTests.cpp) or [remapped shortcut](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/OSLevelShortcutRemappingTests.cpp) are tested. The foreground app behavior which is specific to app-specific shortcuts is tested [here](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/AppSpecificShortcutRemappingTests.cpp).
Using the MockedInput handler, all the expected (and known) key scenarios that can occur for while pressing a [remapped key](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/SingleKeyRemappingTests.cpp) or [remapped shortcut](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/OSLevelShortcutRemappingTests.cpp) are tested. The foreground app behavior which is specific to app-specific shortcuts is tested in [AppSpecificShortcutRemappingTests.cpp](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/AppSpecificShortcutRemappingTests.cpp).
@@ -27,14 +27,14 @@ This file contains the documentation for the KeyboardManager PowerToy module whi
The `KeyboardManager` module has [3 main class members](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L54-L61):
- A static pointer to the current object of `KeyboardManager`. This is required for using the `KeyboardManager` object in the low level keyboard hook handler as that method must be static. This is described in more detail in [this section](#Low-level-keyboard-hook-handler).
- An object of type `Input`, which is used for all the operations that involving getting or setting keyboard states. This is wrapped in an object to allow testing the remapping methods.
- An object of type `KeyboardManagerState`. This object contains all the data related to remappings and is also used in the sense of a View Model as it used to communicate common data that is shared between the KBM UI and the backend. This class is described in more detail [here](keyboardmanagercommon.md#keyboardmanagerstate).
- An object of type `KeyboardManagerState`. This object contains all the data related to remappings and is also used in the sense of a [View Model as it used to communicate common data that is shared between the KBM UI and the backend](keyboardmanagercommon.md#keyboardmanagerstate).
## Enable/Disable
On enabling KBM, the low level keyboard hook is started, and it is unhooked on disable. This is done to allow users to manually restart KBM if some other application which registers a keyboard hook was launched after PowerToys, so that it can be brought back to the highest priority hook (as the last hook to be registered receives the input first as mentioned [here](https://learn.microsoft.com/windows/win32/winmsg/about-hooks#hook-procedures)).
On enabling KBM, the low level keyboard hook is started, and it is unhooked on disable. This is done to allow users to manually restart KBM if some other application which registers a keyboard hook was launched after PowerToys, so that it can be brought back to the highest priority hook (as the [last hook to be registered receives the input first](https://learn.microsoft.com/windows/win32/winmsg/about-hooks#hook-procedures)).
In addition to stopping the hook, any active KBM UI windows are also closed on disabling. This is done because the KBM UI uses the same keyboard hook for the Type button where you can type a key/shortcut, so if KBM is disabled the windows would not be completely functional.
The enable/disable code can be found [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L301-L322)
The [enable/disable code can be found in dllmain.cpp](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L301-L322)
## Settings format
KBM uses two sets of settings files.
@@ -101,10 +101,10 @@ KBM uses two sets of settings files.
-`originalKeys` stores the key/shortcut which is to be pressed for the remap, and `newKeys` stores the key/shortcut which is to be executed.
- Both contain semi-colon separated virtual key codes. For `remapKeys`, `originalKeys` must have only one key code, whereas for `remapShortcuts` it must have at least two key codes.
-`inProcess` sub-key was added in `remapKeys` because there was a possibility of adding the registry based remapping approach (used by [SharpKeys](https://github.com/randyrants/sharpkeys)), so that would be under a separate sub-key while `inProcess` would be for keyboard hook based remaps. This was deprioritized as there weren't enough requests for it.
-`remapShortcuts` is split into `global` and `appSpecific`, where `global` remaps would apply to all applications, whereas `appSpecific` would apply on when the `targetApp` is in focus. `targetApp` must be the process name of the app (with or without it's extension), e.g. `msedge` or `msedge.exe` for Microsoft Edge.
-`remapShortcuts` is split into `global` and `appSpecific`, where `global` remaps would apply to all applications, whereas `appSpecific` would apply on when the `targetApp` is in focus. `targetApp` must be the process name of the app (with or without its extension), e.g. `msedge` or `msedge.exe` for Microsoft Edge.
## Loading settings
KBM settings are loaded only on the C++ side only at start up, in the [constructor](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L67-L68). The settings file may get modified from the KBM UI on applying new remappings, but the file is not read again. The files are read from the PowerToys Settings process whenever a change is made to the file (using a FileWatcher) or whenever the KBM page is opened. The settings are updated only when the user presses the OK button from either of the Remap Keys or Remap Shortcuts windows. This is described in more detail [here](keyboardmanagerui.md#ok-and-cancel-button).
KBM settings are loaded only on the C++ side only at start up, in the [constructor](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L67-L68). The settings file may get modified from the KBM UI on applying new remappings, but the file is not read again. The files are read from the PowerToys Settings process whenever a change is made to the file (using a FileWatcher) or whenever the KBM page is opened. The settings are updated only when the user presses the OK button from either of the Remap Keys or Remap Shortcuts windows. This is described in more detail [keyboardmanagerui: OK and Cancel button](keyboardmanagerui.md#ok-and-cancel-button).
## Low level keyboard hook handler
Since the [`hook_proc`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L330-L349) cannot be a member function in the class, this is declared `static` and a `static pointer` to the `KeyboardManager` project is used ([`keyboardmanager_object_ptr`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L54-L55)).
@@ -117,22 +117,23 @@ As seen in the code for `hook_proc`, similar to other keyboard hooks in PowerToy
The [`HandleKeyboardHookEvent`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L384-L458) is the method which calls the corresponding remapping methods in the required order. The following checks are executed in order:
- **`KeyboardManagerState.AreRemappingsEnabled`:** This returns false while the KBM remap tables are getting updated. If it is in this state, `HandleKeyboardHookEvent` returns `0`, i.e. the key event is not suppressed and is forwarded normally.
- **Check for `KEYBOARDMANAGER_SUPPRESS_FLAG`:** If the key event has the suppress flag, the method returns 1 to suppress the key event.
- **[`KeyboardManagerState.DetectSingleRemapKeyUIBackend`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L399-L408):** This method is used for handling hook operations for the single key Type UI in the Remap keys window. If the Remap keys window is open, then `HandleKeyboardHookEvent` returns `0` and the key event is forwarded normally. If the left column Type button is clicked on the Remap keys window and the window is in focus, then the key event is suppressed and the UI is updated with the latest key from the recent key events. This method is described in more detail [here](keyboardmanagercommon.md#DetectSingleRemapKeyUIBackend-and-DetectShortcutUIBackend).
- **[`KeyboardManagerState.DetectShortcutUIBackend(data, true)`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L410-L419):** This method is used for handling hook operations for the shortcut Type UI in the Remap keys window (when `isRemapKey` arg is `true`). If the Remap keys window is open, then `HandleKeyboardHookEvent` returns `0` and the key event is forwarded normally. If the right column Type button is clicked on the Remap keys window and the window is in focus, then the key event is suppressed and the UI is updated with the shortcut from the recent key events. This method is described in more detail [here](keyboardmanagercommon.md#DetectSingleRemapKeyUIBackend-and-DetectShortcutUIBackend).
- **`HandleSingleKeyRemapEvent`:** This method handles the single key remap logic. If a remapping takes place, the key event is suppressed. This method is described in more detail [here](keyboardeventhandlers.md#HandleSingleKeyRemapEvent).
- **[`KeyboardManagerState.DetectSingleRemapKeyUIBackend`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L399-L408):** This method is used for handling hook operations for the single key Type UI in the Remap keys window. If the Remap keys window is open, then `HandleKeyboardHookEvent` returns `0` and the key event is forwarded normally. If the left column Type button is clicked on the Remap keys window and the window is in focus, then the key event is suppressed and the UI is updated with the latest key from the recent key events. This method is described in more detail in [DetectSingleRemapKeyUIBackend and DetectShortcutUIBackend](keyboardmanagercommon.md#DetectSingleRemapKeyUIBackend-and-DetectShortcutUIBackend).
- **[`KeyboardManagerState.DetectShortcutUIBackend(data, true)`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L410-L419):** This method is used for handling hook operations for the shortcut Type UI in the Remap keys window (when `isRemapKey` arg is `true`). If the Remap keys window is open, then `HandleKeyboardHookEvent` returns `0` and the key event is forwarded normally. If the right column Type button is clicked on the Remap keys window and the window is in focus, then the key event is suppressed and the UI is updated with the shortcut from the recent key events. This method is also described in more detail in [DetectSingleRemapKeyUIBackend and DetectShortcutUIBackend](keyboardmanagercommon.md#DetectSingleRemapKeyUIBackend-and-DetectShortcutUIBackend).
- **`HandleSingleKeyRemapEvent`:** This method handles the single key remap logic. If a remapping takes place, the key event is suppressed. This method is described in more detail in [HandleSingleKeyRemapEvent](keyboardeventhandlers.md#HandleSingleKeyRemapEvent).
- **[`KeyboardManagerState.DetectShortcutUIBackend(data, false)`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L430-L439):** This method is used for handling hook operations for the shortcut Type UI in the Remap shortcuts window (when `isRemapKey` arg is `false`). If the Remap shortcuts window is open, then `HandleKeyboardHookEvent` returns `0` and the key event is forwarded normally. If the Type button is clicked on the Remap shortcuts window and the window is in focus, then the key event is suppressed and the UI is updated with the shortcut from the recent key events. **Since this is executed after the single key remap method, all single key remappings are applied when the user is on the Remap shortcuts window.**
- **`HandleAppSpecificShortcutRemapEvent`:** This method handles the app-specific shortcut remap logic. If a remapping takes place, the key event is suppressed. This method is described in more detail [here](keyboardeventhandlers.md#HandleAppSpecificShortcutRemapEvent). **Since this is executed after the single key remap method, single key remappings have precedence over shortcut remaps and are correspondingly reflected in shortcut remaps.**
- **`HandleOSLevelShortcutRemapEvent`:** This method handles the global shortcut remap logic. If a remapping takes place, the key event is suppressed. This method is described in more detail [here](keyboardeventhandlers.md#HandleOSLevelShortcutRemapEvent). The app-specific remap method is executed before this because if a shortcut is remapped to different keys/shortcuts for a particular app and globally, the app-specific variant should be preferred if that app is in focus. **Since this is executed after the single key remap method, single key remappings have precedence over shortcut remaps and are correspondingly reflected in shortcut remaps.**
- **`HandleAppSpecificShortcutRemapEvent`:** This method handles the app-specific shortcut remap logic. If a remapping takes place, the key event is suppressed. This method is described in more detail in [HandleAppSpecificShortcutRemapEvent](keyboardeventhandlers.md#HandleAppSpecificShortcutRemapEvent). **Since this is executed after the single key remap method, single key remappings have precedence over shortcut remaps and are correspondingly reflected in shortcut remaps.**
- **`HandleOSLevelShortcutRemapEvent`:** This method handles the global shortcut remap logic. If a remapping takes place, the key event is suppressed. This method is described in more detail under [HandleOSLevelShortcutRemapEvent](keyboardeventhandlers.md#HandleOSLevelShortcutRemapEvent). The app-specific remap method is executed before this because if a shortcut is remapped to different keys/shortcuts for a particular app and globally, the app-specific variant should be preferred if that app is in focus. **Since this is executed after the single key remap method, single key remappings have precedence over shortcut remaps and are correspondingly reflected in shortcut remaps.**
**Note:** Single key remaps need to be executed before shortcut remaps, because otherwise there can be several logical issues. For example if a user has Ctrl remapped to X and Ctrl+A remapped to Y, we can't detect Ctrl+A because the moment Ctrl is pressed it would be remapped to X before the system ever sees Ctrl+A. This is why the design decision was made to separate Remap keys and Remap shortcuts, and all key remaps are reflected in the shortcut remaps.
## Custom Action to launch KBM UI
KBM uses the [`call_custom_action`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L249-L280) method from the `PowertoyModuleIface` in order to launch the KBM UI when the user clicks the Remap a key or Remap a shortcut button from the KBM settings page. On clicking the button, we check if there is already any active KBM UI window, and if there is it is brought to the foreground. If not, the corresponding KBM UI window is launched on a separate detached thread. The UI is described in more detail [here](keyboardmanagerui.md).
KBM uses the [`call_custom_action`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L249-L280) method from the `PowertoyModuleIface` in order to launch the KBM UI when the user clicks the Remap a key or Remap a shortcut button from the KBM settings page. On clicking the button, we check if there is already any active KBM UI window, and if there is it is brought to the foreground. If not, the corresponding KBM UI window is launched on a separate detached thread. The UI is described in more detail in [Keyboard Manager UI](keyboardmanagerui.md).
## SendInput Special Scenarios
### Extended keys
Certain keys such as the arrow keys, <kbd>right Ctrl/Alt</kbd>, and <kbd>Del/Home/Ins</kbd>, etc need to be sent with the `KEYEVENTF_EXTENDEDKEY` flag because otherwise the NumPad versions get sent, which can cause weird behavior when NumLock is on. The code can be found [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L190-L194) and the list of extended keys in code can be found [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L73-L98). Docs about extended keys can be found [here](https://learn.microsoft.com/windows/win32/inputdev/about-keyboard-input#extended-key-flag).
Certain keys such as the arrow keys, <kbd>right Ctrl/Alt</kbd>, and <kbd>Del/Home/Ins</kbd>, etc need to be sent with the `KEYEVENTF_EXTENDEDKEY` flag because otherwise the NumPad versions get sent, which can cause weird behavior when NumLock is on. The code can be found where [`SetKeyEvent` checks `IsExtendedKey(keyCode)`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L190-L194) and the list of extended keys in code can be found in [`IsExtendedKey`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L73-L98). Docs about extended keys can be found in [Keyboard Input Overview: Extended-Key Flag
Certain applications (such as Windows Terminal) may filter out key events which are set to scan code 0. Even though the `KEYEVENTF_SCANCODE` flag is not set, the `wScan` field is still sent, which defaults to 0. To avoid this issue we use the `MapVirtualKey` API to find the scan code from the virtual key code. Code can be found [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L196-L198).
Certain applications (such as Windows Terminal) may filter out key events which are set to scan code 0. Even though the `KEYEVENTF_SCANCODE` flag is not set, the `wScan` field is still sent, which defaults to 0. To avoid this issue we use the `MapVirtualKey` API to find the scan code from the virtual key code. Code can be found in [`SetKeyEvent`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L196-L198).
## Special Scenarios
Since we are using low level keyboard hooks and not actual OS level input handling certain scenarios with input require workarounds as do they not interact well with the OS input logic directly. These are covered in the sub-sections below.
@@ -156,7 +157,7 @@ The dummy key event is currently used in the following places (the linked code s
The <kbd>Num Lock</kbd> key state is updated by the OS before it is intercepted by low level hooks. This causes the issue that even if you suppress a <kbd>Num Lock</kbd> key event, <kbd>Num Lock</kbd> will still get toggled. In order to work around this, in the [`hook_proc`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L340-L344) whenever we suppress a <kbd>Num Lock</kbd> key down event, we send an additional <kbd>Num Lock</kbd> key up followed by key down so that the <kbd>Num Lock</kbd> state is reverted to it's previous value before the suppressed event. These are sent with a `KEYBOARDMANAGER_SUPPRESS_FLAG` in the `dwExtraInfo` field, so that we suppress them at the start of the hook (see code [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L811-L825)). Since these events will update the <kbd>Num Lock</kbd> state before the low level hooks, by suppressing them we ensure that these are not sent to any other hooks/applications and hence are only processed by the OS.
The <kbd>Num Lock</kbd> key state is updated by the OS before it is intercepted by low level hooks. This causes the issue that even if you suppress a <kbd>Num Lock</kbd> key event, <kbd>Num Lock</kbd> will still get toggled. In order to work around this, in the [`hook_proc`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L340-L344) whenever we suppress a <kbd>Num Lock</kbd> key down event, we send an additional <kbd>Num Lock</kbd> key up followed by key down so that the <kbd>Num Lock</kbd> state is reverted to its previous value before the suppressed event. These are sent with a `KEYBOARDMANAGER_SUPPRESS_FLAG` in the `dwExtraInfo` field, so that we suppress them at the start of the hook (see code in [`SetNumLockToPreviousState`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L811-L825)). Since these events will update the <kbd>Num Lock</kbd> state before the low level hooks, by suppressing them we ensure that these are not sent to any other hooks/applications and hence are only processed by the OS.
This assumes that KBM is the last hook to be registered (since another hook-based app like AutoHotkey could remap NumLock to some other key which could mess up this logic).
@@ -167,7 +168,7 @@ While using Japanese IME on Windows, shortcuts like <kbd>Shift/Alt/Ctrl</kbd> +
These shortcuts are detected before low level hooks, and hence cause issues while remapping <kbd>Caps Lock</kbd> to <kbd>Shift/Alt/Ctrl</kbd> or vice-versa, as there could be an intermediate state where the system detects both the keys as being pressed. This results in a state where the modifier key does not get released since the OS suppresses the key up messages before they reach the low level hooks.
In order to work around this when a key down for the modifier is being processed, we send a key up for the modifier key with the `KEYBOARDMANAGER_SUPPRESS_FLAG` in the `dwExtraInfo` field, so that we suppress them at the start of the hook, and this key event would only be processed by the OS, without getting forwarded to other hooks/apps. The approach is described in more detail at [this comment](https://github.com/microsoft/PowerToys/issues/3397#issuecomment-640136416), as discussed with the AutoHotkey team. The code for the workaround can be found [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L827-L846). Tests for these scenarios have also been added at:
In order to work around this when a key down for the modifier is being processed, we send a key up for the modifier key with the `KEYBOARDMANAGER_SUPPRESS_FLAG` in the `dwExtraInfo` field, so that we suppress them at the start of the hook, and this key event would only be processed by the OS, without getting forwarded to other hooks/apps. The approach is described in more detail at [this comment](https://github.com/microsoft/PowerToys/issues/3397#issuecomment-640136416), as discussed with the AutoHotkey team. The code for the workaround can be found in [`ResetIfModifierKeyForLowerLevelKeyHandlers`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L827-L846). Tests for these scenarios have also been added at:
- [Tests for workaround on single key remaps](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/test/SingleKeyRemappingTests.cpp#L110-L219)
- [Tests for workaround on shortcut remaps](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/test/OSLevelShortcutRemappingTests.cpp#L1935-L2144)
@@ -189,8 +190,8 @@ Using a driver approach has the benefit of not depending on precedence orders as
## Telemetry
Keyboard Manager emits the following telemetry events (implemented in [trace.h](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/trace.h) and [trace.cpp](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/trace.cpp)):
- **`KeyboardManager_EnableKeyboardManager`:** Logs a `boolean` value storing the KBM toggle state. It is logged whenever KBM is enabled or disabled (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L305-L316)).
- **`KeyboardManager_KeyRemapCount`:** Logs the number of key to key and key to shortcut remaps (i.e. all the remaps on the Remap a key window). This gets logged on saving new settings in the Remap a key window (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L159-L163)).
- **`KeyboardManager_OSLevelShortcutRemapCount`:** Logs the number of global shortcut to shortcut and shortcut to key remaps. This gets logged on saving new settings in the Remap a shortcut window (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L220)).
- **`KeyboardManager_AppSpecificShortcutRemapCount`:** Logs the number of app-specific shortcut to shortcut and shortcut to key remaps. This gets logged on saving new settings in the Remap a shortcut window (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L221)).
- **`KeyboardManager_Error`:** Logs the occurrence of an error in KBM with the name of the method, error code and the corresponding error message. This is currently used only for logging `SetWindowsHookEx` failures (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L364-L369)).
- **`KeyboardManager_EnableKeyboardManager`:** Logs a `boolean` value storing the KBM toggle state. It is logged whenever KBM is enabled or disabled (emitted in [`enable`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L305-L306) and [`disable`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L315-L316)).
- **`KeyboardManager_KeyRemapCount`:** Logs the number of key to key and key to shortcut remaps (i.e. all the remaps on the Remap a key window). This gets logged on saving new settings in the Remap a key window (emitted at [the end of `ApplySingleKeyRemappings`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L159-L163)).
- **`KeyboardManager_OSLevelShortcutRemapCount`:** Logs the number of global shortcut to shortcut and shortcut to key remaps. This gets logged on saving new settings in the Remap a shortcut window (emitted at [the end of `ApplyShortcutRemappings`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L220)).
- **`KeyboardManager_AppSpecificShortcutRemapCount`:** Logs the number of app-specific shortcut to shortcut and shortcut to key remaps. This gets logged on saving new settings in the Remap a shortcut window (emitted [after calling `OSLevelShortcutRemapCount` in `ApplyShortcutRemappings`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L221)).
- **`KeyboardManager_Error`:** Logs the occurrence of an error in KBM with the name of the method, error code and the corresponding error message. This is currently used only for logging `SetWindowsHookEx` failures (emitted [at the end of `start_lowlevel_keyboard_hook`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L364-L369)).
@@ -37,7 +37,7 @@ The [`SaveConfigToFile`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a
To prevent the UI thread and low level hook thread from concurrently accessing the remap tables we use an [`atomic bool` variable](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.h#L91-L92), which is set to `true` while the tables are getting updated. When this is `true` the hook will skip all remappings. Use of mutexes in the hook were removed to prevent reentrant mutex bugs.
## KeyDelay
[This class](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/KeyDelay.cpp) implements a queue based approach for processing key events and based on the time difference between key down and key up events [executes separate methods for `ShortPress`, `LongPress` or `LongPressReleased`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyDelay.h#L69-L72). The class is used for the hold Enter/Esc functionality required for making the Type window accessible and prevent keyboard traps (see [this](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp#L273-L292) for an example of it's usage). The `KeyEvents` are added to the queue from the hook thread of KBM, and a separate [`DelayThread`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyDelay.cpp#L142-L166) is used to process the key events by checking the `time` member in the key event. The thresholds for short vs long press and hold wait timeouts are `static` constants, but if the module is extended for other purposes these could be made into arguments.
The [KeyDelay class](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/KeyboardManagerEditorLibrary/KeyDelay.cpp) implements a queue based approach for processing key events and based on the time difference between key down and key up events [executes separate methods for `ShortPress`, `LongPress` or `LongPressReleased`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyDelay.h#L69-L72). The class is used for the hold Enter/Esc functionality required for making the Type window accessible and prevent keyboard traps (see [this call to `keyboardManagerState.RegisterKeyDelay`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp#L273-L292) for an example of its usage). The `KeyEvents` are added to the queue from the hook thread of KBM, and a separate [`DelayThread`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyDelay.cpp#L142-L166) is used to process the key events by checking the `time` member in the key event. The thresholds for short vs long press and hold wait timeouts are `static` constants, but if the module is extended for other purposes these could be made into arguments.
**Note:** [Deletion of the `KeyDelay`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyDelay.cpp#L4-L12) object should never be called from the `DelayThread` i.e. from within one of the 3 handlers, as it can re-enter the mutex and would lead to a deadlock. This can be avoided by either deleting it on a separate thread or as done in the KBM UI, on the dispatcher thread. See [this PR](https://github.com/microsoft/PowerToys/pull/6959#issue-496583547) for more details on this issue.
@@ -45,16 +45,16 @@ To prevent the UI thread and low level hook thread from concurrently accessing t
The [`Shortcut` class](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/Shortcut.h) is a data structure for storing key combinations which are valid shortcuts and it contains several methods which are used for shortcut specific operations. [`RemapShortcut`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/RemapShortcut.h) consists of a shortcut/key union (`std::variant`), along with other boolean flags which are required on the hook side for storing any relevant keyboard states mid-execution.
### IsKeyboardStateClearExceptShortcut
[This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Shortcut.cpp#L665-L813) is used by the `HandleShortcutRemapEvent` to check if any other keys on the keyboard have been pressed apart from the keys in the shortcut. This is required because shortcut to shortcut remaps should not be applied if the shortcut is pressed with other keys. The method iterates over all the possible key codes, except any keys that are considered reserved, unassigned, OEM-specific or undefined, as well as mouse buttons (see list [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Shortcut.cpp#L628-L663)).
[This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Shortcut.cpp#L665-L813) is used by the `HandleShortcutRemapEvent` to check if any other keys on the keyboard have been pressed apart from the keys in the shortcut. This is required because shortcut to shortcut remaps should not be applied if the shortcut is pressed with other keys. The method iterates over all the possible key codes, except any keys that are considered reserved, unassigned, OEM-specific or undefined, as well as mouse buttons (see [list in `IgnoreKeyCode`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Shortcut.cpp#L628-L663)).
### CheckModifiersKeyboardState
[This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Shortcut.cpp#L517-L614) uses `GetVirtualKeyState` (internally calls `GetAsyncKeyState` in production code), to check if all the modifiers of the current shortcut are being pressed. Since Win doesn't have a non-L/R key code we check this by checking both LWIN and RWIN.
### Tests
Tests for some methods in the `Shortcut` class can be found [here](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/ShortcutTests.cpp).
Tests for some methods in the `Shortcut` class can be found in [`OSLevelShortcutRemappingTests.cpp`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/KeyboardManagerEngineTest/OSLevelShortcutRemappingTests.cpp) and [`AppSpecificShortcutRemappingTests.cpp`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/KeyboardManagerEngineTest/AppSpecificShortcutRemappingTests.cpp).
## Helpers
[This namespace](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/Helpers.cpp) has any methods which are used across either UI or the backend which aren't specific to either. Some of these methods have tests [here](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/SetKeyEventTests.cpp).
[This namespace](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/Helpers.cpp) has any methods which are used across either UI or the backend which aren't specific to either. Some of these methods have tests in [`SetKeyEventTests.cpp`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/KeyboardManagerEngineTest/SetKeyEventTests.cpp).
### Foreground App Detection
[`GetCurrentApplication`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L226-L268) is used for detecting the foreground process for App-specific shortcuts. The logic is very similar to that used for FZ's app exception feature, involving `GetForegroundWindow` and `get_process_path`. The one additional case which has been added is for full-screen UWP apps, where the above method fails and returns `ApplicationFrameHost.exe`. The [`GetFullscreenUWPWindowHandle`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L210-L224) uses `GetGUIThreadInfo` API to find the window linked to the GUI thread. This logic is based on [this stackoverflow answer](https://stackoverflow.com/questions/39702704/connecting-uwp-apps-hosted-by-applicationframehost-to-their-real-processes/55353165#55353165).
@@ -23,7 +23,7 @@ The KBM UI was originally implemented as a XAML Island, but in order to easily s
Mica is then achieved by calling [`BackdropMaterial::SetApplyToRootOrPageBackground()`](https://github.com/microsoft/PowerToys/blob/b3f27057d43445abc59aa04405f7c24bb895a61c/src/modules/keyboardmanager/KeyboardManagerEditorLibrary/EditKeyboardWindow.cpp#L388-L400) in both of the editor windows, or falls back to the `ApplicationPageBackgroundThemeBrush` background if Mica isn't available.
The UI was also updated to use WinUI 2.8 to match the look and feel of the Fluent design language of Windows 11 and the rest of PowerToys. There has been talk about [migrating the implementation to XAML files instead of code-behind](https://github.com/microsoft/PowerToys/issues/2027) and [utilizing WinUI 3 going forward](https://github.com/microsoft/PowerToys/issues/15870). More about the update can be read in [here](https://github.com/microsoft/PowerToys/pull/28473).
The UI was also updated to use WinUI 2.8 to match the look and feel of the Fluent design language of Windows 11 and the rest of PowerToys. There has been talk about [migrating the implementation to XAML files instead of code-behind](https://github.com/microsoft/PowerToys/issues/2027) and [utilizing WinUI 3 going forward](https://github.com/microsoft/PowerToys/issues/15870). More about the update can be read in [[Keyboard Manager] Modernize the editor UI - PR#28473](https://github.com/microsoft/PowerToys/pull/28473).
[**Link to the original documentation**](https://github.com/microsoft/PowerToys/blob/b3f27057d43445abc59aa04405f7c24bb895a61c/doc/devdocs/modules/keyboardmanager/keyboardmanagerui.md#c-xaml-islands)
@@ -43,7 +43,7 @@ When the `EditKeyboardWindow`/`EditShortcutsWindow` is created, [we iterate thro
### OK and Cancel button
[On pressing the OK button](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L66-L89) in `EditKeyboardWindow`, first the [`CheckIfRemappingsAreValid` method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L10-L44) is executed which performs basic validity checks on the current remappings in the remap buffer (`static SingleKeyRemapControl::singleKeyRemapBuffer`), such as if there are no NULL columns and none of the source keys are repeated. All other validity checks are assumed to happen while the user adds the remapping. If this is found to be invalid a ContentDialog is displayed which shows that some remappings are invalid and if the user proceeds only the valid ones will be applied. If it is valid [`GetOrphanedKeys`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L46-L75) is executed which checks if any keys are orphaned (i.e. the key has been remapped and no other key has been remapped to it, so there is no way to send that key code), and a dialog is shown for notifying the user with a list of orphaned keys. After this the settings are [applied by adding it to the `KeyboardManagerState.singleKeyReMap` member](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L102-L164) and they are saved to the JSON file. `EditShortcutsWindow` differs slightly from this, as there is no orphaned keys check, and [on pressing OK](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditShortcutsWindow.cpp#L32-L47) both the global and app-specific shortcuts are validated and [updated](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L166-L223).
The code used for updating the remapping tables in `KeyboardManagerState` can be found [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L104-L183). For shortcut remaps, the `sortedKeys` vectors are updated and re-sorted whenever an element is added to them (like [this](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L135-L136)).
The code used for updating the remapping tables in `KeyboardManagerState` can be found in [KeyboardManagerState.cpp lines 104-183](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L104-L183). For shortcut remaps, the `sortedKeys` vectors are updated and re-sorted whenever an element is added to them (like [this code in `KeyboardManagerState::AddOSLevelShortcut`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L135-L136)).
On pressing OK (after confirmation dialogs) or Cancel, the window is closed and UI states are reset.
@@ -106,4 +106,9 @@ Unlike the Single Key handler, there is a different set of errors that can occur
**Note:** After updating the buffer we have [code to handle a special case](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L269-L279), which was required to prevent scenarios where a drop down can get deleted but the corresponding `KeyDropDownControl` object isn't deleted. The code checks if the drop down is still linked to the parent and accordingly deletes the `KeyDropDownControl` object from the vector.
**IgnoreKeyToShortcutWarning special case:** [An additional](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L177-L181) check was added to ignore the Map to Same key error when an existing remapping is loaded. This was because a remapping like Ctrl->Ctrl+A has an intermediate step of Ctrl->Ctrl, which could lead to an error of invalid input, even though Ctrl+A is valid. The only way to actually add this is from the Type button or by adding them in a different order (like typing Shift+A and then changing Shift to Ctrl). Since the intermediate check could fail, this was causing the app to crash since the Xaml Island wouldn't be completely loaded at that point and the Flyout can't be displayed. [This](https://github.com/microsoft/PowerToys/issues/6695) is the linked issue which describes the repro scenario.
**IgnoreKeyToShortcutWarning special case:**
[An additional](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L177-L181) check was added to ignore the Map to Same key error when an existing remapping is loaded.
This was because a remapping like Ctrl->Ctrl+A has an intermediate step of Ctrl->Ctrl, which could lead to an error of invalid input, even though Ctrl+A is valid.
The only way to actually add this is from the Type button or by adding them in a different order (like typing Shift+A and then changing Shift to Ctrl).
Since the intermediate check could fail, this was causing the app to crash since the Xaml Island wouldn't be completely loaded at that point and the Flyout can't be displayed.
[Issue #6695](https://github.com/microsoft/PowerToys/issues/6695) is the linked issue which describes the repro scenario.
@@ -16,7 +16,7 @@ PowerToys Run UI is written in the WPF framework. The UI code is present in the
3.**[`ResultList.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml)**: This control implements the UI component for displaying results (marked in green in Fig 1). It consists of a `ListView` WPF control with a custom `ItemTemplate` to display application logo, name, tooltip text, and context menu.
## Data flow
The backend code is written using the `Model-View-ViewModel (MVVM)` structural design pattern. Plugins act as `Model` in this project. A detailed overview of the project's structure is given [here](/doc/devdocs/modules/launcher/project_structure.md).
The backend code is written using the `Model-View-ViewModel (MVVM)` structural design pattern. Plugins act as `Model` in this project. A detailed overview of the project's structure is given in [Project Structure](/doc/devdocs/modules/launcher/project_structure.md).
#### Flow of data between UI(view) and ViewModels
Data flow between View and ViewModel follows typical `MVVM` scheme. Properties in viewModels are bound to WPF controls and when these properties are updated, `INotifyPropertyChanged` handler is invoked, which in turn updates UI. The diagram below provides a rough sketch of the components involved.
- [ ] The plugin is a project under `modules\launcher\Plugins`
- [ ] Microsoft plugin project name pattern: `Microsoft.PowerToys.Run.Plugin.{PluginName}`
- [ ] Community plugin project name pattern: `Community.PowerToys.Run.Plugin.{PluginName}`
- [ ] The plugin target framework should be `net8.0-windows`
- [ ] The plugin target framework should be `net9.0-windows10.0.22621.0`
- [ ] If the plugin uses any 3rd party dependencies the project file should import `DynamicPlugin.props`
- [ ] 3rd party dependencies must be compatible with .NET 9
- [ ] The plugin has to contain a `plugin.json` file of the following format in its root folder:
```json
@@ -16,7 +17,7 @@
"Author":string,
"Version":"1.0.0",// For future compatibility
"Language":"csharp",// So far we support only csharp
"Website":"https://aka.ms/powertoys",
"Website":"https://aka.ms/powertoys",// Has to be an absolute uri starting with "http://" or "https://".
"ExecuteFileName":string,// Should be {Type}.PowerToys.Run.Plugin.{PluginName}.dll
"IcoPathDark":string,// Path to dark theme icon. The path is relative to the root plugin folder
"IcoPathLight":string// Path to light theme icon. The path is relative to the root plugin folder
@@ -35,10 +36,10 @@ public static string PluginID => "xxxxxxx"; // The part xxxxxxx stands for the p
- [ ] Plugin's output code and assets have to be included in the installer [`Product.wxs`](/installer/PowerToysSetup/Product.wxs)
- [ ] Test the plugin with a local build. Build the installer, install, check that the plugin works as expected
- [ ] All plugin's binaries have to be included in the signed build [`pipeline.user.windows.yml`](/.pipelines/pipeline.user.windows.yml)
- [ ] The plugin target framework has to be net8.0-windows. All dependencies should be compatible with .NET 8.
Some localization steps can only be done after the first pass by the localization team to provide the localized resources.
In the PR that adds a new plugin, reference a new issue to track the work for fully enabling localization for the new plugin.
- [ ] Add the resource folder to https://github.com/microsoft/PowerToys/blob/21247c0bb09a1bee3d14d6efa53d0c247f7236af/installer/PowerToysSetup/Product.wxs#L825
- [ ] Add the resource files under the section https://github.com/microsoft/PowerToys/blob/21247c0bb09a1bee3d14d6efa53d0c247f7236af/installer/PowerToysSetup/Product.wxs#L882
- [ ] Your plugin's executable file (DLL) has to have correct version informations after building it. (This version information will be shown on the settings page.)
The Value Generator plugin is used to generate hashes for strings, to calculate base64 encodings, escape and encode URLs/URIs and to generate GUIDs versions 1, 3, 4 and 5.
The Value Generator plugin is used to generate hashes for strings, to calculate base64 encodings, escape and encode URLs/URIs and to generate GUIDs of version 1, 3, 4, 5, and 7.

@@ -34,7 +34,10 @@ The Value Generator plugin is used to generate hashes for strings, to calculate
- Utility class for generating or calculating GUIDs
- Generating GUID versions 1 and 4 is done using builtin APIs. [`UuidCreateSequential`](https://learn.microsoft.com/en-us/windows/win32/api/rpcdce/nf-rpcdce-uuidcreatesequential) for version 1 and `System.Guid.NewGuid()` for version 4
- Generating GUID versions 1, 4, and 7 is done using builtin APIs:
- [`UuidCreateSequential`](https://learn.microsoft.com/en-us/windows/win32/api/rpcdce/nf-rpcdce-uuidcreatesequential) for version 1
-`System.Guid.NewGuid()` for version 4
-`System.Guid.CreateVersion7()` for version 7
- Versions 3 and 5 take two parameters, a namespace and a name
- The namespace must be a valid GUID or one of the [predefined ones](https://datatracker.ietf.org/doc/html/rfc4122#appendix-C)
- The `PredefinedNamespaces` dictionary contains aliases for the predefined namespaces
@@ -96,7 +96,7 @@ The plugin uses only these interfaces (all inside the `Main.cs`):
#### Build Dependency
Access to PluginManager was needed to make this plugin work. Because of this a reference to PowerToys.PowerLauncher was needed.
Since History Plugin needs a reference to PowerToys.PowerLauncher, it cannot be set as a dependency reference in PowerToys.PowerLauncher project (else a circular reference would exist).
Since History Plugin needs a reference to PowerToys.PowerLauncher, it cannot be set as a dependency reference in PowerToys.PowerLauncher project (else a circular reference would exist).
This means that if you build PowerToys.PowerLauncher only it will not build History Plugin. You will need to manually build History Plugin at least once and again manually if you change it.
@@ -32,7 +32,7 @@ Each plugin implements the `IPlugin` interface which comprises of the `Init()` a
### Score
- The user query is executed against each of the plugins and the result list view is updated with results from each of the plugins.
- The ordering of the results is based on the `Score` of each Result.
- Each plugin assigns a score to a result based on it's relevance. The results with higher scores are displayed higher in the list view and vice versa.
- Each plugin assigns a score to a result based on its relevance. The results with higher scores are displayed higher in the list view and vice versa.
## Plugin settings
Plugin settings that are editable from the settings are stored in `PowerToys Run\settings.json`. In the very first run, those settings are populated from plugin' `plugin.json` file. Unlike Wox we do not support multiple action keywords. Instead, we have `ActionKeyword` and `IsGlobal` options.
@@ -23,7 +23,7 @@ There are broadly two different categories of applications:
5. Common start menu (Applications which are common to all users)
8. Locations pointed to by the PATH environment variable.
- To prevent applications and shortcuts present in multiple locations from showing up as duplicate results, we consider apps with the same name, executable name and full path to be the same.
- The subtitle of the application result is set based on it's application type. It could be one of the following:
- The subtitle of the application result is set based on its application type. It could be one of the following:
@@ -10,7 +10,7 @@ Fig 1. Project along with their dependencies in `PowerToys Run` ecosystem.
This is the startup project for the `PowerToys Run.` It is a WPF desktop application and follows the `Model-View-ViewModel (MVVM)` design pattern. Plugins play the role of `Model` and provide data to `ViewModel.`
[`PowerLauncher.Telemetry`](/src/modules/launcher/PowerLauncher.Telemetry) is a .net core project that contains telemetry events generated by `PowerLauncher.` These events have been discussed in detail [here](/doc/devdocs/modules/launcher/telemetry.md).
[`PowerLauncher.Telemetry`](/src/modules/launcher/PowerLauncher.Telemetry) is a .net core project that contains telemetry events generated by `PowerLauncher.` These events have been discussed in detail in [Launcher Telemetry](/doc/devdocs/modules/launcher/telemetry.md).
#### [`Wox.Core`](/src/modules/launcher/Wox.Core)
[`Wox.Core`](/src/modules/launcher/Wox.Core) is a .net core project that contains helper classes required by the `PowerLauncher` project. Two major functionalities encapsulated in this project are [`PluginManager`](/src/modules/launcher/Wox.Core/Plugin/PluginManager.cs) and [`Query Builder.`](/src/modules/launcher/Wox.Core/Plugin/QueryBuilder.cs) [`PluginManager`](/src/modules/launcher/Wox.Core/Plugin/PluginManager.cs) provides an interface for managing C# plugins. [`Query Builder.`](/src/modules/launcher/Wox.Core/Plugin/QueryBuilder.cs) decimate user-typed query string and creates a [`Query`](/src/modules/launcher/Wox.Plugin/Query.cs) object. [`Query`](/src/modules/launcher/Wox.Plugin/Query.cs) object contains the action keyword and cleaned query, which is then sent to all plugins.
@@ -19,6 +19,6 @@ This is the startup project for the `PowerToys Run.` It is a WPF desktop applica
[`Wox.Infrastructure`](/src/modules/launcher/Wox.Infrastructure) is a .net core project that contains helper classes required for image manipulation and storage by the `PowerLauncher` project and the plugins. [`ImageLoader.cs`](/src/modules/launcher/Wox.Infrastructure/Image/ImageLoader.cs) class is used to load icons for `Win32` program. It also provides caching functionality to speed up image loading for frequently queried programs.
[`Wox.Plugin`](/src/modules/launcher/Wox.Plugin) contains interfaces that facilitate communication between `PowerLauncher` and plugins. These interfaces have been discussed in detail [here](/doc/devdocs/modules/launcher/architecture.md#flow-of-data-between-viewmodels-and-pluginsmodel). It also contains a helper class for logging. [`Log.cs`](/src/modules/launcher/Wox.Plugin/Logger/Log.cs) provides an abstraction for logging error, information, and output to text files. These files are stored at `%userprofile%/appdata/local/microsoft/powertoys/powertoys run/Logs.`
[`Wox.Plugin`](/src/modules/launcher/Wox.Plugin) contains interfaces that facilitate communication between `PowerLauncher` and plugins. These interfaces have been discussed in detail in [Flow of data between ViewModels and Plugins(Model)](/doc/devdocs/modules/launcher/architecture.md#flow-of-data-between-viewmodels-and-pluginsmodel). It also contains a helper class for logging. [`Log.cs`](/src/modules/launcher/Wox.Plugin/Logger/Log.cs) provides an abstraction for logging error, information, and output to text files. These files are stored at `%userprofile%/appdata/local/microsoft/powertoys/powertoys run/Logs.`
@@ -4,18 +4,10 @@ Contains the executable starting point, initialization code and the list of know
#### [`powertoy_module.h`](/src/runner/powertoy_module.h) and [`powertoy_module.cpp`](/src/runner/powertoy_module.cpp)
Contains code for initializing and managing the PowerToy modules. `PowertoyModule` is a RAII-style holder for the `PowertoyModuleIface` pointer, which we got by [invoking module DLL's `powertoy_create` function](https://github.com/microsoft/PowerToys/blob/1760af50c8803588cb575167baae0439af38a9c1/src/runner/powertoy_module.cpp#L13-L24).
Contains code that handles the various events listeners, and forwards those events to the PowerToys modules. You can learn more about the current event architecture [here](/doc/devdocs/shared-hooks.md).
Contains code for registering the low level keyboard event hook that listens for keyboard events. Please note that `signal_event` is called from the main thread for this event.
Contains code for registering a Windows event hook through `SetWinEventHook`, that listens for various events raised when a window is interacted with. Please note, that `signal_event` is called from a separate `dispatch_thread_proc` worker thread, so you must provide thread-safety for your `signal_event` if you intend to receive it. This is a subject to change.
#### [`tray_icon.cpp`](/src/runner/tray_icon.cpp)
Contains code for managing the PowerToys tray icon and its menu commands. Note that `dispatch_run_on_main_ui_thread` is used to
transfer received json message from the [Settings window](/doc/devdocs/settings.md) to the main thread, since we're communicating with it from [a dedicated thread](https://github.com/microsoft/PowerToys/blob/7357e40d3f54de51176efe54fda6d57028837b8c/src/runner/settings_window.cpp#L267-L271).
Contains code for starting the PowerToys settings window and communicating with it. Settings window is a separate process, so we're using [Windows pipes](https://learn.microsoft.com/windows/win32/ipc/pipes) as a transport for json messages.
@@ -33,3 +25,24 @@ Contains code for telemetry.
#### [`svgs`](/src/runner/svgs/)
Contains the SVG assets used by the PowerToys modules.
- Any changes to the UI are saved by the settings process in the `settings.json` file located within the `/Local/Microsoft/PowerToys/Launcher/` folder.
- PT Run watches for any changes within this file and updates it's general settings or propagates the information to the plugins, depending on the type of information.
- PT Run watches for any changes within this file and updates its general settings or propagates the information to the plugins, depending on the type of information.
Eg: The maximum number of results drop down updates the maximum number of rows in the results list which updates the general settings of PT Run whereas the drive detection checkbox details are dispatched to the indexer plugin.
`Settings` is Windows App Sdk WinUI3 .Net Unpackaged desktop application. More details about Windows App Sdk can be found [here](https://github.com/microsoft/WindowsAppSDK#windows-app-sdk---calling-all-windows-developers). More details about WinUI can be found [here](https://microsoft.github.io/microsoft-ui-xaml/about.html#what-is-it).
`Settings` is Windows App Sdk WinUI3 .Net Unpackaged desktop application. More details about Windows App Sdk can be found in [Windows App SDK - Calling all Windows developers!](https://github.com/microsoft/WindowsAppSDK#windows-app-sdk---calling-all-windows-developers). More details about WinUI can be found in [Build apps with WinUI](https://developer.microsoft.com/en-us/windows/develop/).
## Settings V2 Project structure
The Settings project .Net WinUI3 based project which
The Settings v2 process uses two way IPC to communicate with the runner process.
## Initialization
- On the settings' side, the two way IPC delegates are contained with the [`ShellPage.xaml.cs`](/src/settings-ui/Settings.UI/Views/ShellPage.xaml.cs) file. The delegates are static and the views for all the powerToys send the ipc information to the viewmodels as `ShellPage.DefaultSndMSGCallBack`.
- These delegates are initialized within the [`MainWindow.xaml.cs`](/src/settings-ui/Settings.UI/MainWindow.xaml.cs) file in the `Settings.Runner` project.
- On the settings' side, the two way IPC delegates are contained with the [`ShellPage.xaml.cs`](/src/settings-ui/Settings.UI/SettingsXAML/Views/ShellPage.xaml.cs) file. The delegates are static and the views for all the powerToys send the ipc information to the viewmodels as `ShellPage.DefaultSndMSGCallBack`.
- These delegates are initialized within the [`MainWindow.xaml.cs`](/src/settings-ui/Settings.UI/SettingsXAML/MainWindow.xaml.cs) file in the `Settings.Runner` project.
## Types of IPC delegates
@@ -14,12 +14,12 @@ The Settings v2 process uses two way IPC to communicate with the runner process.
3.`CheckForUpdates`
## Sending information to runner
- The settings process communicates with the runner by using the delegates defined within the [`ShellPage.xaml.cs`](/src/settings-ui/Settings.UI/Views/ShellPage.xaml.cs) file.
- The settings process communicates with the runner by using the delegates defined within the [`ShellPage.xaml.cs`](/src/settings-ui/Settings.UI/SettingsXAML/Views/ShellPage.xaml.cs) file.
- Depending on the type of object sending the information, the json is created accordingly.
- If any information has been modified by the user in the GeneralSettings page, then the json file sent to the runner has the name set to `general`, whereas if any information has been modified by the user in any powertoy related settings page, the name of the json file being communicated with the runner is set to `powertoy`.
## Receiving information from runner
- The `ShellPage`object has a `IPCResponseHandleList` which is a list of functions which handle IPC responses.
- The `ShellPage`object has a `IPCResponseHandleList` which is a list of functions which handle IPC responses.
- Whenever any information is sent from the runner each of the functions in the handle list perform their action on that json object.
- One example of where information sent from the runner is being processed by the settings is in [`GeneralPage.xaml.cs`](/src/settings-ui/Settings.UI/Views/GeneralPage.xaml.cs) when the user clicks the check for updates button. The information displayed after, such as the user has the latest version installed is a result of this handle.
- One example of where information sent from the runner is being processed by the settings is in [`GeneralPage.xaml.cs`](/src/settings-ui/Settings.UI/SettingsXAML/Views/GeneralPage.xaml.cs) when the user clicks the check for updates button. The information displayed after, such as the user has the latest version installed is a result of this handle.
This command line application generates a report about the connected webcams on the desktop called "WebcamReport.txt". The report contains the following information about every webcam:
@@ -10,8 +10,9 @@ The build ID can be found in `Core\Constants.cs` in the `BuildId` variable - it
The build ID moniker is made up of two components - a reference to a [Halo](https://en.wikipedia.org/wiki/Halo_(franchise)) character, and the date when the work on the specific build started in the format of `MMDDYYYY`.
- [#35250](https://github.com/microsoft/PowerToys/issues/35250) Updates the icon retry policy, making sure that the icon consistently and correctly renders in the tray.
- [#35848](https://github.com/microsoft/PowerToys/issues/35848) Fixed a bug where custom tray time shortcuts for longer than 24 hours would be parsed as zero hours/zero minutes.
- [#34716](https://github.com/microsoft/PowerToys/issues/34716) Properly recover the state icon in the tray after an `explorer.exe` crash.
- Added configuration safeguards to make sure that invalid values for timed keep-awake times do not result in exceptions.
- Updated the tray initialization logic, making sure we wait for it to be properly created before setting icons.
- Expanded logging capabilities to track invoking functions.
- Added command validation logic to make sure that incorrect command line arguments display an error.
- Display state now shown in the tray tooltip.
- When timed mode is used, changing the display setting will no longer reset the timer.
- Updating the initialization logic to make sure that settings are respected for proper group policy and single-instance detection.
- [#34148] Fixed a bug from the previous release that incorrectly synchronized threads for shell icon creation and initialized parent PID when it was not parented.
- [#34148](https://github.com/microsoft/PowerToys/issues/34148) Fixed a bug from the previous release that incorrectly synchronized threads for shell icon creation and initialized parent PID when it was not parented.
@@ -39,6 +39,10 @@ Contact the developers of a plugin directly for assistance with a specific plugi
| [GitHubRepo](https://github.com/8LWXpg/PowerToysRun-GitHubRepo) | [8LWXpg](https://github.com/8LWXpg) | Search and open GitHub repositories |
| [ProcessKiller](https://github.com/8LWXpg/PowerToysRun-ProcessKiller) | [8LWXpg](https://github.com/8LWXpg) | Search and kill processes |
| [ChatGPT](https://github.com/ferraridavide/ChatGPTPowerToys) | [ferraridavide](https://github.com/ferraridavide) | Ask a question to ChatGPT |
| [CanIUse](https://github.com/skttl/ptrun-caniuse) | [skttl](https://github.com/skttl) | Look up browser feature support with caniuse.com |
| [TailwindCSS](https://github.com/skttl/ptrun-tailwindcss) | [skttl](https://github.com/skttl) | Search the documentation of TailwindCSS |
| [HttpStatusCodes](https://github.com/grzhan/HttpStatusCodePowerToys) | [grzhan](https://github.com/grzhan) | Search for http status codes |
| [SVGL](https://github.com/Sameerjs6/powertoys-svgl) | [SameerJS6](https://github.com/SameerJS6) | Search, Browse and copy SVG logos from SVGL. |
## Extending software plugins
@@ -58,3 +62,6 @@ Below are community created plugins that target a website or software. They are
| [PowerSearch for 1Password](https://github.com/KairuDeibisu/PowerToysRunPlugin1Password) | [KairuDeibisu](https://github.com/KairuDeibisu) | An unofficial plugin for searching 1Password for usernames and passwords |
| [HackMD](https://github.com/8LWXpg/PowerToysRun-HackMD) | [8LWXpg](https://github.com/8LWXpg) | Open HackMD notes |
| [SSH](https://github.com/8LWXpg/PowerToysRun-SSH) | [8LWXpg](https://github.com/8LWXpg) | Connect to ssh clients |
| [Bilibili](https://github.com/Whuihuan/PowerToysRun-Bilibili) | [Whuihuan](https://github.com/Whuihuan) | Use AVID or BVID to parse and jump to Bilibili |
| [YubicoOauthOTP](https://github.com/dlnilsson/Community.PowerToys.Run.Plugin.YubicoOauthOTP) | [dlnilsson](https://github.com/dlnilsson) | Display generated codes from OATH accounts stored on the YubiKey in powerToys Run |
| [Firefox Bookmark](https://github.com/8LWXpg/PowerToysRun-FirefoxBookmark) | [8LWXpg](https://github.com/8LWXpg) | Open bookmarks in Firefox based browser |
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.