mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-07-09 20:09:28 +02:00
cc2e404d13ae4e151ca72f6e18005b181df2e9d5
9067 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
cc2e404d13 |
Fix PowerRename to continue after per-item rename failures
Agent-Logs-Url: https://github.com/microsoft/PowerToys/sessions/e6409325-1f8a-4ff0-b614-2950de17758b Co-authored-by: moooyo <42196638+moooyo@users.noreply.github.com> |
||
|
|
15c1aeba21 | Initial plan | ||
|
|
5520ae4cfa |
[PowerDisplay] Fix startup restore, volume init, and identify window lifecycle (#47051)
<!-- 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 - **Volume initialization**: Read VCP 0x62 on monitor discovery so `CurrentVolume` reflects actual hardware state instead of staying at the 50% default. - **Brightness capability check**: Guard brightness init behind `SupportsBrightness` flag, consistent with contrast/volume handling. - **IdentifyWindow lifecycle**: Replace fire-and-forget `Task.Delay` with `DispatcherQueueTimer` (UI-thread-safe, stoppable on dispose). Swap `Activate`/`PositionOnDisplay` order to eliminate first-show flicker. - **Startup restore fix**: Change `MonitorStateEntry` fields to `int?` so unset values (`null`) aren't confused with zero — prevents writing default 0% brightness/volume to hardware on startup. - **Restore/profile apply refactor**: Push value validation down to `Set*Async` (continuous → `Math.Clamp`, discrete → capabilities check), extract unified `TryRestore` helper, remove redundant `IsValueInRange` and `> 0` checks. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed --------- Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|
|
beddc3b065 |
[ImageResizer] Fix JsonPropertyName forwarding in ObservableProperty generator (#47056)
<!-- 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 This issue introduced by our recent WinUI 3 migration <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] Closes: #47055 <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed Co-authored-by: Yu Leng <yuleng@microsoft.com> Co-authored-by: Claude Opus 4 <noreply@anthropic.com> |
||
|
|
088da21a70 |
Update default module states (#47027)
## Summary - **Disable 7 modules by default** for new users: PowerToys Run, Crop and Lock, Advanced Paste, Hosts File Editor, Registry Preview, Environment Variables, Workspaces - **Swap default hotkeys**: Command Palette now defaults to \Alt+Space\, PowerToys Run now defaults to \Win+Alt+Space\ - Update unit test to reflect PowerLauncher default-off state ## Changes | File | Change | |------|--------| | \EnabledModules.cs\ | Set 7 module defaults to off | | \PowerLauncherProperties.cs\ | Default hotkey → \Win+Alt+Space\ | | \SettingsModel.cs\ (CmdPal) | Default hotkey → \Alt+Space\ | | \General.cs\ (test) | Assert PowerLauncher is false | ## Validation - Existing unit test updated to match new defaults - No ABI or IPC contract changes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
befb5c672e |
Fix AdvancedPaste auto-copy failing on Electron/Chromium apps (#46486)
## Summary Fixes #46485 AdvancedPaste's auto-copy feature fails on Electron/Chromium-based apps (e.g. Microsoft Teams, VS Code, browsers) because `WM_COPY` is delivered successfully but silently ignored by these apps. ## Problem The auto-copy code sends `WM_COPY` via `SendMessageTimeout`. For standard Win32 controls this works, but Electron apps accept the message delivery without actually copying to clipboard. The code treated successful delivery as success and **never fell back to `SendInput` Ctrl+C**. ## Changes **`src/modules/AdvancedPaste/AdvancedPasteModuleInterface/dllmain.cpp`**: - **Changed retry logic**: Each attempt now tries both `WM_COPY` and `SendInput` Ctrl+C. If `WM_COPY` is delivered but clipboard is unchanged, it falls through to Ctrl+C instead of giving up. - **Extracted `poll_clipboard_sequence()` helper**: Reusable clipboard polling logic (checks `GetClipboardSequenceNumber` over N polls with configurable delay). - **Extracted `send_ctrl_c_input()` helper**: Sends Ctrl+C via `SendInput` with `CENTRALIZED_KEYBOARD_HOOK_DONT_TRIGGER_FLAG`. - **Improved logging**: Each strategy logs clearly whether it succeeded or fell through, making future debugging easier. ## Validation - [x] Manual testing with Microsoft Teams (Electron): auto-copy now works for selected text - [x] Standard Win32 apps (Notepad, etc.): `WM_COPY` still works on first try, no regression - [x] No new warnings or errors in build --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
578554d157 |
[Settings] Format last update check date with friendly relative dates (#46923)
## Summary Formats the Last checked date on the General and Dashboard pages with friendly relative strings instead of raw date/time output. **Before:** Last checked: 4/12/2026 1:22:00 PM **After:** Last checked: Today at 1:22 PM / Yesterday at 3:45 PM ### Changes - Add LastCheckedDateTime property to UpdatingSettings exposing the parsed DateTime - Create FriendlyDateHelper in Settings.UI that formats Today/Yesterday with localized resource strings, falling back to the full culture-specific format for older dates - Update GeneralViewModel and CheckUpdateControl to use the friendly format - Add localized resource strings General_LastCheckedDate_TodayAt and General_LastCheckedDate_YesterdayAt Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
e4f98897ce |
Add window positioning and sizing with Alt+mouse button (#47024)
Re-creation of #46817 from an internal branch to work around stale code-scanning merge protection. ## Original PR See #46817 for full context, discussion, and review history. ## Summary This adds a new toy, GrabAndMove (previously WinPos), that allows dragging (left click) or resizing (right click) of windows while the Alt key is pressed. Closes: #269 ## PR Checklist - [x] Communication: discussed with core contributors - [ ] Tests: Added/updated and all pass - [ ] Localization: All end-user-facing strings can be localized - [ ] Dev docs: Added/updated --------- Co-authored-by: foxmsft <foxmsft@hotmail.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Muyuan Li (from Dev Box) <muyuanli@microsoft.com> Co-authored-by: Niels Laute <niels.laute@live.nl> Co-authored-by: Alex Mihaiuc <amihaiuc@microsoft.com> |
||
|
|
be1e749574 |
Add telemetry support for CLI modules (#46872)
<!-- 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 This PR adds comprehensive localization and telemetry support to the modules with CLI (FileLocksmith, Awake, ImageResizer), improving user experience for international users and enabling usage tracking for product insights. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed |
||
|
|
dc57d22754 |
[Settings] Fix Dashboard layout and 1px alignment offset (#46922)
## Summary Fixes layout issues on the Settings Dashboard page: - **Scroll area fix**: The scroll area on the Home page extended far beyond the content, leaving a large empty space below the modules list. (By wrapping the quick launch / shortcuts cards into a `StackPanel` vs separate `Grid.Rows` - **Resizing fix**: On main, resizing states are not applied when making the window smaller. This is now fixed. - **1px alignment fix**: Fixed a 1-pixel vertical alignment mismatch on the Dashboard shortcut conflict control. Closes #45925 Closes #41523 |
||
|
|
99ef5948b0 |
[PD] Fix thread safety, color temperature guard, and log accuracy (#47008)
Mark _disposed and _isDirty as volatile for correct cross-thread visibility. Guard color temperature apply/restore behind ShowColorTemperature to avoid writing unsupported VCP codes. Fix misleading log message in Settings UI profile apply path. <!-- 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 <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|
|
218a01c1a9 |
Fix for back up folder path being clipped (#46920)
<!-- 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 Before: <img width="661" height="530" alt="image" src="https://github.com/user-attachments/assets/b77c12b2-481f-4f77-8f74-fa679331a604" /> After: <img width="678" height="365" alt="image" src="https://github.com/user-attachments/assets/ea997ab6-f1f5-4191-ac24-15885b2e19d3" /> <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] Closes: #27366 <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
1c7f3d832c |
[Text Extractor] Remove WPF-UI in favor of Fluent theming in WPF (#46218)
Replaces the `WPF-UI` dependency in Text Extractor with native WPF
Fluent theming (`ThemeMode="System"`), custom
`SubtleButtonStyle`/`SubtleToggleButtonStyle` control templates, and
Segoe Fluent Icons font — eliminating the third-party library while
retaining light/dark theme support.
## Summary of the Pull Request
- Drops `xmlns:ui` (WPF-UI) from `App.xaml` and `OCROverlay.xaml`
- Removes `Wpf.Ui.Appearance.SystemThemeWatcher.Watch()` call; replaced
by `ThemeMode="System"` on `<Application>`
- Defines inline `SubtleButtonStyle` and `SubtleToggleButtonStyle` using
WinUI-aligned resource brush names (`SubtleFillColorSecondaryBrush`,
`AccentFillColorDefaultBrush`, etc.)
- Replaces `<ui:SymbolIcon>` with `<TextBlock
FontFamily="{DynamicResource SymbolThemeFontFamily}">` using Unicode
glyph codes
- Background uses `SolidBackgroundFillColorBaseBrush` instead of
`ApplicationBackgroundBrush`
| Light | Dark |
|-------|------|
|

|

|
## PR Checklist
- [ ] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [ ] **Tests:** Added/updated and all pass
- [ ] **Localization:** All end-user-facing strings can be localized
- [ ] **Dev docs:** Added/updated
- [ ] **New binaries:** Added on the required places
- [ ] [JSON for
signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json)
for new binaries
- [ ] [WXS for
installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs)
for new binaries and localization folder
- [ ] [YML for CI
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml)
for new test projects
- [ ] [YML for signed
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml)
- [ ] **Documentation updated:** If checked, please file a pull request
on [our docs
repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys)
and link it here: #xxx
## Detailed Description of the Pull Request / Additional comments
Related: #46220
## Validation Steps Performed
Verified light and dark themes render correctly with proper accent
highlight on the active toggle button.
---------
Co-authored-by: Joe Finney <josephfinney@LIVE.COM>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: niels9001 <9866362+niels9001@users.noreply.github.com>
|
||
|
|
ff87dce4a4 |
[PD] Clean up PowerDisplay: fix resource leaks, remove dead code, and fix some bugs (#46979)
- Replace custom GetLastError P/Invoke with Marshal.GetLastWin32Error and add SetLastError=true - Fix resource leaks: dispose DpiSuppressor on window close, dispose MonitorViewModels on refresh, destroy unused small icon handle, wrap WMI outParams in using block - Remove unused code: IProfileService, ColorTemperatureHelper, ProfileHelper (Lib), CustomVcpValueMappingExtensions, IPCMessageAction, UpdatePropertySilently, LocalizedCodeNameProvider, bring_to_front, Constants.h - Convert recursive MccsCapabilitiesParser.TryParseEntry to iterative loop - Simplify ProfileService to static class - Use std::atomic for m_enabled flag in module interface - Change default activation shortcut to Win+Ctrl+Shift+P - Add null-coalescing fallback for ActivationShortcut property - Add PowerDisplay to ModuleHelper name mapping - Update GPO policy to target PowerToys 0.99.0 - Fix NamedPipeProcessor to break on pipe close and reduce log verbosity - Add ShortcutControl workaround in Settings UI <!-- 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 <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [x] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [x] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed Co-authored-by: Yu Leng <yuleng@microsoft.com> Co-authored-by: Claude Opus 4 <noreply@anthropic.com> |
||
|
|
758a60103c |
CmdPal: Include new transitive dependencies in SLNF (#46896)
<!-- 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 This PR adds new transitive dependencies to Command Palette’s SLNF (UI tests -> UITestAutomation -> ...), and introduces a new SLNF that excludes UI tests entirely, making it leaner. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed |
||
|
|
f8cadbf7f0 |
Fix AlwaysOnTop sound playing when pin/unpin fails (#46910)
## Summary of the Pull Request
`ProcessCommand` played the pin/unpin sound unconditionally, regardless
of whether `SetWindowPos` succeeded. This caused spurious audio feedback
when targeting desktop, taskbar, task view, start menu, or elevated
windows from a non-elevated process.
Gate sound playback on actual state change:
```cpp
bool stateChanged = false;
// ...
if (UnpinTopmostWindow(window)) { stateChanged = true; /* ... */ }
// ...
if (PinTopmostWindow(window)) { stateChanged = true; /* ... */ }
// ...
if (stateChanged && AlwaysOnTopSettings::settings()->enableSound)
m_sound.Play(soundType);
```
## PR Checklist
- [ ] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [ ] **Tests:** Added/updated and all pass
- [ ] **Localization:** All end-user-facing strings can be localized
- [ ] **Dev docs:** Added/updated
- [ ] **New binaries:** Added on the required places
- [ ] [JSON for
signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json)
for new binaries
- [ ] [WXS for
installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs)
for new binaries and localization folder
- [ ] [YML for CI
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml)
for new test projects
- [ ] [YML for signed
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml)
- [ ] **Documentation updated:** If checked, please file a pull request
on [our docs
repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys)
and link it here: #xxx
## Detailed Description of the Pull Request / Additional comments
`PinTopmostWindow` and `UnpinTopmostWindow` already return `bool`
indicating success, and the existing code already branches on those
return values for bookkeeping and telemetry — but the sound playback at
the end of `ProcessCommand` ignored the result. Added a `stateChanged`
flag set only inside the success branches, then checked before calling
`m_sound.Play()`.
## Validation Steps Performed
- Verified that the `soundType` / `stateChanged` logic covers all four
paths: pin success, pin failure, unpin success, unpin failure.
- Code review passed with no comments.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: niels9001 <9866362+niels9001@users.noreply.github.com>
|
||
|
|
0819a6268b |
[CmdPal] Move dev docs to doc/devdocs/modules/cmdpal (#46926)
## Summary Move Command Palette developer documentation from \src/modules/cmdpal/doc\ to \doc/devdocs/modules/cmdpal\, consistent with the location of other module dev docs. Also updates the spell-check exclude path for the moved \.pdn\ file. Points 2 and 3 from the issue (extension settings how-to and details pane markdown documentation) are addressed in the windows-dev-docs-pr repo. Closes #38107 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
a31f82fcbd |
[CmdPal] Fix Window Walker 'Not Responding' tag illegible in dark mode (#46924)
## Summary The 'Not Responding' tag in Window Walker used a hardcoded crimson foreground color (rgb 220,20,60) that was illegible against the dark tag background in dark mode. **Fix:** Remove the hardcoded color override so the tag uses the default theme-aware TagForeground brush, which is legible in both light and dark modes. Closes #40219 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
daeb2e1ef4 |
Fix CmdPal Calc extension unit test failure in non-English cultures (#46911)
## Summary of the Pull Request `TrigModeSettingsTest` fails under cultures using `,` as decimal separator (e.g., `de-DE`, `fr-FR`). Two root causes: the C++ calculator engine's `ToWStringFullPrecision` doesn't pin the stream locale, and the test classes don't set a deterministic thread culture. ## PR Checklist - [x] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated ## Detailed Description of the Pull Request / Additional comments **C++ locale fix** — `ExprtkEvaluator.cpp`: `std::wostringstream` defaults to the global C++ locale, which can be changed to the system locale by the runtime. Pin it to `std::locale::classic()` so the decimal separator is always `.` across the WinRT boundary: ```cpp std::wostringstream oss; oss.imbue(std::locale::classic()); oss << std::fixed << std::setprecision(15) << value; ``` **Test culture setup** — `QueryTests.cs`, `QueryHelperTests.cs`: Added `TestInitialize`/`TestCleanup` to set thread culture to `en-US`, matching the existing pattern across all TimeDate test classes. **Non-English culture test cases** — New `TrigModeSettingsTest_NonEnglishCulture` parameterized over `de-DE` and `fr-FR` verifies `outputUseEnglishFormat: true` produces `.`-separated output regardless of `CurrentCulture`. ## Validation Steps Performed - Code review passed with no actionable findings (naming convention matches existing TimeDate test pattern across 7+ files) - New `TrigModeSettingsTest_NonEnglishCulture` test exercises the exact failure scenario from the issue --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: niels9001 <9866362+niels9001@users.noreply.github.com> |
||
|
|
0089de33bd |
[PD] Re-enable PowerDisplay (#46489)
<!-- 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 1. Re-enable PowerDisplay for PowerToys. 2. Add PowerDisplay back into installer. 3. Use new PowerDisplay icon and logo. 4. Fix some DPI related issue. 5. UI/UX improvement. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] Closes: #1052 <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [x] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [x] **Tests:** Added/updated and all pass - [x] **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 Pull new code from this branch. Set up PowerDisplay.UI as startup project. Click run in VS. Or, build whole solution, set up runner as startup project. Click run to test full experience. --------- Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Niels Laute <niels.laute@live.nl> |
||
|
|
3e2914a0b2 |
Add unit tests for Hosts ValidationHelper and ColorPicker format conversions (#46679)
## Summary of the Pull Request Adds comprehensive unit tests for two previously untested areas to improve test coverage and prevent regressions: 1. **Hosts ValidationHelper** (`ValidationHelperTest.cs`) — 25+ test cases covering `ValidIPv4`, `ValidIPv6`, and `ValidHosts` methods 2. **ColorPicker ColorFormatHelper conversions** (`ColorFormatConversionTest.cs`) — 50+ test cases covering CMYK, HSB, HSI, HWB, CIE XYZ, CIE LAB, Oklab, Oklch, sRGB-to-linear, NCol conversions, plus expanded `GetStringRepresentation` tests for Red, White, Green, and Blue colors across all supported formats ## PR Checklist - [x] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized — N/A (test-only changes) - [ ] **Dev docs:** Added/updated — N/A (test-only changes) - [ ] **New binaries:** Added on the required places — N/A (no new binaries) ## Detailed Description of the Pull Request / Additional comments ### Hosts ValidationHelper (`src/modules/Hosts/Hosts.Tests/ValidationHelperTest.cs`) - Tests `ValidIPv4` with valid addresses (loopback, private ranges, broadcast), invalid addresses (out of range octets, wrong format, CIDR notation), and null/whitespace inputs - Tests `ValidIPv6` with valid addresses (loopback, full/compressed notation, link-local, IPv4-mapped), invalid addresses (extra groups, invalid hex digits), and null/whitespace inputs - Tests `ValidHosts` with valid hostnames, FQDNs, max host count boundary (using `Consts.MaxHostsCount` dynamically for both exact-boundary and exceeds-boundary tests), and invalid hostnames ### ColorPicker Format Conversions (`src/modules/colorPicker/ColorPickerUI.UnitTests/Helpers/ColorFormatConversionTest.cs`) - Tests `ConvertToCMYKColor` for Black, White, Red, Green, Blue, and Mid Gray - Tests `ConvertToHSBColor`, `ConvertToHSIColor`, `ConvertToHWBColor` for primary colors - Tests `ConvertToCIEXYZColor` and `ConvertToCIELABColor` including D65 illuminant verification and negative b* assertion for Blue - Tests `ConvertToOklabColor` and `ConvertToOklchColor` including chroma non-negativity - Tests `ConvertSRGBToLinearRGB` for linear and gamma paths - Tests `ConvertToNaturalColor` for hue letter mapping (R exact match, G and B prefix assertions) - Tests `GetStringRepresentation` with Red, White, Green, Blue across all 11+ format types (Decimal values use BGR byte order via `%Dv` format: Red → "255", Blue → "16711680") - Tests `GetDefaultFormat` returns non-empty strings for all known format names - Tests edge cases: empty/null format strings defaulting to hex output ### Spell-check allow list - Added `SRGBTo` to `.github/actions/spell-check/allow/code.txt` to resolve unrecognized-spelling alerts ### StyleCop / code analysis fixes - Resolved SA1512, SA1515, CA1866, and CA1310 analyzer warnings to comply with repo coding standards ### Code review fixes - Renamed `ConvertToCIELAB_Blue_HasNegativeA` → `ConvertToCIELAB_Blue_HasNegativeB` with corrected comment to match the actual b* axis assertion - Replaced hardcoded 12-host string with dynamic `Consts.MaxHostsCount + 1` in the exceeds-max-count boundary test - Renamed `ConvertToNaturalColor_Green_ReturnsG0` → `ConvertToNaturalColor_Green_HueStartsWithG` and `ConvertToNaturalColor_Blue_ReturnsB0` → `ConvertToNaturalColor_Blue_HueStartsWithB` to accurately reflect prefix-only assertions ## Validation Steps Performed - Verified test files follow existing MSTest patterns (`[TestClass]`, `[TestMethod]`, `[DataTestMethod]`, `[DataRow]`) - Verified all referenced classes and methods exist and are accessible (correct namespaces and visibility) - Verified namespace consistency with existing test files in each project - Used dynamic `Consts.MaxHostsCount` rather than hardcoded values for all boundary tests - Verified Decimal format expected values match the `%Dv` (BGR order) implementation: `R + G*256 + B*65536` - Verified test method names accurately describe their assertions --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: crutkas <1462282+crutkas@users.noreply.github.com> |
||
|
|
3554f0884b |
spelling: move to v0.0.26 (#46851)
This fixes, among other things, the issue with fork PRs. --------- Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com> |
||
|
|
ad60090096 |
[KBM] Fixes to text replacement issues (#46794)
<!-- 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 This PR attempts to fix some of the issues that were introduced in 0.98.0 with text replacement <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] Closes: #46498 - [x] Closes: #46440 - [x] Closes: #46366 <!-- 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 In 0.98.0 I made a change to support multiline text replacement using Ctrl + V. This was very inconsistent so I have reverted back to _basically_ the same approach we were using before except now when we encounter a newline indicator we send "Shift + Enter" so that this works in chat boxes and plan editors. <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed Manual testing with single line and multiline replacements in Teams, Terminal, Git bash, Edge, etc |
||
|
|
de6a609d16 |
[KBM] Manual key selection — code review fixes (#46377)
Addresses code review feedback on the KBM manual key selection feature.
No new user-facing behavior; all changes are correctness, robustness,
and maintainability fixes.
## Summary of the Pull Request
- **Localization:** All hard-coded `RemappingDialog.Title` assignments
replaced with `ResourceHelper.GetString()`; added
`RemappingDialog_TitleEdit` resource key
- **VK_DISABLED centralization:** Replaced scattered `0x100`/`"256"`
literals and local `const string vkDisabledCode` with `private const int
VkDisabled = 0x100` / `private const string VkDisabledString = "256"` on
`MainPage`
- **Disable action validation:** Added
`ValidationHelper.ValidateDisableMapping()` — same trigger-key rules as
other action types (empty keys, modifier-only, illegal shortcuts,
duplicates, conflicting modifier variants); wired into
`ValidateMapping()` switch
- **Binding-safe dropdown revert:** `TriggerKeyDropDown_KeyChanged` /
`ActionKeyDropDown_KeyChanged` no longer set `dropDown.KeyName =
e.OldKeyName` on failure (breaks `{Binding}` expression); now use
`RevertKeySelection(keys, index)` which does
`ObservableCollection.RemoveAt` + `Insert` to force a binding-tracked
refresh without touching the DP directly. `NewKeyCode == 0` ("None") is
rejected via the same path
- **Dropdown validation:** `ValidateDropDownSelection` skips
`string.IsNullOrEmpty` placeholder slots (added by
`HandleAutoGrowShrink`) when checking repeated-modifier and max-size
rules
- **`SetActionType`:** Replaced hard-coded `SelectedIndex` with
tag-matching iteration over `ActionTypeComboBox.Items`; immune to XAML
item reorder
- **`ServiceStatusHelper`:** Dispose all `Process` objects returned by
`GetProcessesByName` before returning; prevents handle accumulation on
the 3-second polling timer
- **`KeyDropDownButton.GetKeyList()`:** Filter out `KeyCode == 0`
entries (native "None" sentinel for shortcut lists) before caching
- **`SettingsManager`:** `_mappingService!` used consistently in
`CreateSettingsFromKeyboardManagerService`
- **`KeyboardHookHelper`:** Constructor catch broadened from
`DllNotFoundException or InvalidOperationException` to `Exception`
## PR Checklist
- [ ] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [ ] **Tests:** Added/updated and all pass
- [x] **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
## Detailed Description of the Pull Request / Additional comments
The `RevertKeySelection` pattern: in WinUI, assigning directly to a
bound `DependencyProperty` overwrites the binding expression. Using
`ObservableCollection.RemoveAt` + `Insert` instead raises
`CollectionChanged(Replace)`, causing the binding to re-read from the
source without clearing the expression.
```csharp
private static void RevertKeySelection(ObservableCollection<string> keys, int index)
{
string current = keys[index];
keys.RemoveAt(index);
keys.Insert(index, current);
}
```
## Validation Steps Performed
Manually verified: dropdown key selection and revert on invalid
selection, Disable mapping save/load with the new validation, "None"
absent from key picker flyout, `SetActionType` correctly selects items
with preserved XAML order.
---------
Co-authored-by: Zach Teutsch <88554871+zateutsch@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
|
||
|
|
243255ecea |
Fix quote breakout in launcher shell plugin commands (#45554)
## Summary of the Pull Request Fixes a command breakout vulnerability in the Shell plugin where user input containing double quotes could be manipulated to execute arbitrary sub-processes. By escaping double quotes, inputs like `test" & calc.exe` are treated as literal strings rather than shell command separators. ## PR Checklist - [ ] Closes: #xxx - [x] **Communication:** Proactive fix for command execution logic. - [x] **Tests:** Verified locally. - [x] **Localization:** N/A - [x] **Dev docs:** N/A - [x] **New binaries:** N/A - [x] **Documentation updated:** N/A ## Detailed Description of the Pull Request / Additional comments Escaping double quotes in the command string before it is passed to the shell prevents the breakout vector I identified while still allowing environment variables to expand as expected. I also removed some redundant property assignments in the shell helpers to keep the logic focused on the core fix. ## Validation Steps Performed Standard diagnostic commands like `ping` and `ipconfig` continue to function as expected via PowerToys Run. Malicious strings designed to break out of quotes now fail to execute sub-commands, as confirmed during local verification. --------- Co-authored-by: LegendaryBlair <legendaryblair@icloud.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
1e1bd07087 |
Add CmdPalLogger, Provider, and extension method (#46768)
This pull request introduces a new logging infrastructure for the CmdPal module by integrating the Microsoft.Extensions.Logging (MEL) abstraction and routing all log output through the existing `ManagedCommon.Logger`. The changes add a custom logger, logger provider, and extension method for easy registration, and update dependencies and service configuration to enable the new logging system. > This logging is not in use currently, but will be in a future PR. **Logging Infrastructure Integration:** * Added a new `CmdPalLogger` class implementing `ILogger`, which delegates logging calls to `ManagedCommon.Logger` to centralize and standardize log output. * Implemented `CmdPalLoggerProvider` to create and manage `CmdPalLogger` instances, allowing MEL-based logging throughout the application. * Introduced `CmdPalLoggingExtensions.AddCmdPalLogging` for registering the logger provider via dependency injection, ensuring all MEL logging is routed appropriately. * Updated `App.xaml.cs` to register the new logging system with `services.AddCmdPalLogging()`, enabling the infrastructure at application startup. [[1]](diffhunk://#diff-84386fa8a23e7058525bd269788bbf9e352b1f49d08e5f877059386ba3b83222R8) [[2]](diffhunk://#diff-84386fa8a23e7058525bd269788bbf9e352b1f49d08e5f877059386ba3b83222R129-R130) **Project and Dependency Updates:** * Updated the project file `Microsoft.CmdPal.Common.csproj` to reference the `ManagedCommon` project and to include a folder for the new logging code. [[1]](diffhunk://#diff-affab7e2df96d3b8073ab649e4ef5a34d459cd69e525573fd6426d698efec18fR29) [[2]](diffhunk://#diff-affab7e2df96d3b8073ab649e4ef5a34d459cd69e525573fd6426d698efec18fR64-R67) |
||
|
|
32b4080007 |
[CmdPal Extension Template] Adding skills and instructions (#46683)
## Summary of the Pull Request Adds Copilot instructions and skills to the CmdPal extension template so that when developers create a new extension via "Create a new extension", the generated project includes AI-assisted development guidance out of the box. I verified the skills on my own extension: <img src="https://github.com/user-attachments/assets/24bddefd-f38a-4faa-aaf0-686bcb891241"> ## PR Checklist - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx ## Detailed Description of the Pull Request / Additional comments ### Problem When developers create a new Command Palette extension, the generated project contains only source code and build configuration — no AI-assisted development guidance. This means Copilot and other AI tools have no context about CmdPal extension APIs, patterns, or publishing workflows. ### Solution Added **2 instruction files** and **5 skills** (11 markdown files total) to the extension template at `src/modules/cmdpal/ExtensionTemplate/TemplateCmdPalExtension/.github/`: **Instructions:** | File | Purpose | |------|---------| | `copilot-instructions.md` | Top-level project overview: structure, conventions, build/deploy workflow, skill inventory | | `instructions/cmdpal-extension.instructions.md` | Comprehensive 353-line API reference covering extension architecture, all page types, content types, commands/results, items, icons, dynamic updates, and debugging | **Skills:** | Skill | Description | Why | |-------|-------------|-----| | `publish-extension` | Microsoft Store (MSIX) + WinGet (EXE) + GitHub Actions automation | Every extension eventually needs distribution | | `add-adaptive-card-form` | Adaptive Cards Designer workflow + template JSON patterns | Forms are the primary way to collect user input | | `add-extension-settings` | ToggleSetting / TextSetting / ChoiceSetSetting + persistence | 12 of 20 built-in extensions use settings | | `add-dock-band` | Single/multi-button bands, WrappedDockItem, live-updating | Enables persistent toolbar widgets | | `add-fallback-commands` | FallbackCommands() + DynamicListPage + CancellationToken | 14 of 20 built-in extensions use fallback commands | ### Code changes - **`ExtensionTemplateService.cs`** — Added `.md` to `_copyAsIsTemplateExtensions` so markdown files are properly handled during template extraction - **`template.zip`** — Regenerated to include the new `.github/` directory (19KB → 44KB) - **`.github/actions/spell-check/expect.txt`** — Added 17 Inno Setup constants/flags, placeholder identifiers, and technical tokens from the new skill files to the spell-check allowlist ### Content sources - Instructions derived from the **SamplePagesExtension** (all 20+ sample pages), the **CmdPal extension SDK** (IDL + toolkit base classes), and **official MS Learn documentation** - Publishing skill based on the [Publish Command Palette extensions](https://learn.microsoft.com/windows/powertoys/command-palette/publishing-your-extension) docs - Patterns verified against all 20 real CmdPal extensions in the repo ## Validation Steps Performed 1. ✅ All 7 `ExtensionTemplateServiceTests` pass: - `CreateExtension_BuildsExtensionFromTemplateArchive` - `CopyTemplateFile_RewritesTextFiles` - `CopyTemplateFile_CopiesUnchangedTextFilesVerbatim` - `CopyTemplateFile_CopiesBinaryFilesWithoutRewritingContents` - `TemplateFileHandling_ThrowsForUnknownExtension` - `TemplateExtensionCategories_AreDisjointAndCoverTemplateZip` — validates `.md` is in the extension lists - `TemplateZipFiles_AllUseKnownHandling` — validates all zip entries have known handling 2. ✅ Verified `template.zip` contains all 31 entries (20 original + 11 new `.md` files) 3. ✅ Verified directory structure is preserved correctly in the zip 4. ✅ Added 17 flagged tokens to `expect.txt` to resolve `check-spelling` CI failures — all are valid technical terms (Inno Setup constants/flags, domain names, Windows environment variables, code example placeholders) that appear inside code blocks in the skill documentation 5. ✅ `check-spelling` CI passes with 0 new misspelled words found on the latest commit --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: niels9001 <9866362+niels9001@users.noreply.github.com> |
||
|
|
47c1fb5418 |
Spelling: Add names added in #46582 to the spellchecker dictionary (#46765)
<!-- 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 See title Ref: #46582 <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed |
||
|
|
8ee3d64667 |
CmdPal: Fix inline code text color in Details panel ignoring theme (#46739)
## Summary of the Pull Request Inline code (backtick-wrapped text) in the Details panel renders white regardless of theme, making it invisible on light backgrounds. The `DefaultMarkdownThemeConfig` in CmdPal was missing `InlineCode*` styling properties, so the toolkit's `MarkdownTextBlock` fell back to non-theme-aware defaults. The Settings UI already had this configured correctly. Fixes: #46734 ## PR Checklist - [x] **Tests:** XAML-only change; no behavioral logic affected - [ ] **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 ## Detailed Description of the Pull Request / Additional comments Added theme-aware `InlineCode*` properties to `DefaultMarkdownThemeConfig` in two files, matching the existing pattern from `Settings.UI/App.xaml`: - **`ShellPage.xaml`** — Details panel (the reported bug) - **`ContentPage.xaml`** — Content page markdown (consistency) Properties added: ```xml InlineCodeForeground="{StaticResource TextFillColorSecondaryBrush}" InlineCodeBackground="{StaticResource ControlFillColorDefaultBrush}" InlineCodeBorderBrush="{StaticResource ControlElevationBorderBrush}" InlineCodeCornerRadius="2" InlineCodePadding="2,0,2,1" ``` These `StaticResource` brushes resolve per-theme (Light/Dark/HighContrast) automatically. ## Validation Steps Performed - Verified the Settings UI already uses this exact pattern in `App.xaml` (`DescriptionTextMarkdownThemeConfig`) and renders inline code correctly across themes. - Confirmed no other `MarkdownThemes` definitions exist in the CmdPal module. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: michaeljolley <1228996+michaeljolley@users.noreply.github.com> |
||
|
|
51c9bc4930 |
CmdPal: give each built-in extension its own settings file (#46685)
## Summary of the Pull Request
Each built-in CmdPal extension was reading and writing settings directly
to a shared `settings.json` file, which could be silently overwritten by
the persistence service. This PR gives each extension its own
`{namespace}.settings.json` file and adds transparent migration from the
legacy shared file.
## PR Checklist
- [x] Closes: #46667
- [x] **Communication:** I've discussed this with core contributors
already.
- [ ] **Tests:** Added/updated and all pass
- [ ] **Localization:** N/A — no user-facing strings changed
- [ ] **Dev docs:** N/A — internal implementation detail
- [ ] **New binaries:** N/A — no new binaries
## Detailed Description of the Pull Request / Additional comments
### Core change — `JsonSettingsManager` (extensions SDK)
Added `MigrateFromLegacyFile(string legacyFilePath)` to
`src/modules/cmdpal/extensionsdk/Microsoft.CommandPalette.Extensions.Toolkit/JsonSettingsManager.cs`:
- Skips if the per-extension file already exists (idempotent).
- Reads the legacy shared `settings.json`, extracts only the keys the
current extension owns via `Settings.Update()`, and writes them to the
new per-extension path.
- Logs on failure without throwing.
### Per-extension changes (11 SettingsManager files)
Each built-in extension's `SettingsJsonPath()` now returns
`{namespace}.settings.json` instead of `settings.json`, and a new
`LegacySettingsJsonPath()` helper preserves the old path for migration:
- `Microsoft.CmdPal.Ext.Apps` — `AllAppsSettings.cs`
- `Microsoft.CmdPal.Ext.Calc` — `Helper/SettingsManager.cs`
- `Microsoft.CmdPal.Ext.ClipboardHistory` — `Helpers/SettingsManager.cs`
- `Microsoft.CmdPal.Ext.Registry` — `Helpers/SettingsManager.cs`
- `Microsoft.CmdPal.Ext.RemoteDesktop` — `Settings/SettingsManager.cs`
- `Microsoft.CmdPal.Ext.Shell` — `Settings/SettingsManager.cs`
- `Microsoft.CmdPal.Ext.System` — `Helpers/SettingsManager.cs`
- `Microsoft.CmdPal.Ext.TimeDate` — `Helpers/SettingsManager.cs`
- `Microsoft.CmdPal.Ext.WebSearch` — `Helpers/SettingsManager.cs`
- `Microsoft.CmdPal.Ext.WindowWalker` — `Helpers/SettingsManager.cs`
- `Microsoft.CmdPal.Ext.WindowsTerminal` — `Helpers/SettingsManager.cs`
## Validation Steps Performed
- Built the solution and confirmed all 11 extensions compile cleanly.
- Launched CmdPal with an existing shared `settings.json` containing
settings for multiple extensions. Verified each extension created its
own `{namespace}.settings.json` and loaded the correct values.
- Confirmed subsequent launches skip migration (per-extension file
already exists).
- Verified the persistence service no longer overwrites
extension-specific settings.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
||
|
|
ddff66c088 |
Chore(deps): Bump azure/login from 2 to 3 (#46323)
Bumps [azure/login](https://github.com/azure/login) from 2 to 3. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/azure/login/releases">azure/login's releases</a>.</em></p> <blockquote> <h2>Azure Login Action v3</h2> <h2>What's Changed</h2> <ul> <li>upgrade nodejs from 20 to 24 and update dependencies by <a href="https://github.com/YanaXu"><code>@YanaXu</code></a> in <a href="https://redirect.github.com/Azure/login/pull/578">Azure/login#578</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Azure/login/compare/v2.3.0...v3">https://github.com/Azure/login/compare/v2.3.0...v3</a></p> <h2>Azure Login Action v3.0.0</h2> <h2>What's Changed</h2> <ul> <li>Upgrade nodejs from 20 to 24 and update dependencies by <a href="https://github.com/YanaXu"><code>@YanaXu</code></a> in <a href="https://redirect.github.com/Azure/login/pull/578">Azure/login#578</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Azure/login/compare/v2.3.0...v3.0.0">https://github.com/Azure/login/compare/v2.3.0...v3.0.0</a></p> <h2>Azure Login Action v2.3.0</h2> <h2>What's Changed</h2> <ul> <li>Replace the invalid link for the GitHub Action Doc by <a href="https://github.com/MoChilia"><code>@MoChilia</code></a> in <a href="https://redirect.github.com/Azure/login/pull/510">Azure/login#510</a></li> <li>Bump braces from 3.0.2 to 3.0.3 by <a href="https://github.com/YanaXu"><code>@YanaXu</code></a> in <a href="https://redirect.github.com/Azure/login/pull/511">Azure/login#511</a></li> <li>Mention "allow-no-subscriptions" in missing subscriptionId error by <a href="https://github.com/MoChilia"><code>@MoChilia</code></a> in <a href="https://redirect.github.com/Azure/login/pull/512">Azure/login#512</a></li> <li>Log more claims for OIDC login by <a href="https://github.com/MoChilia"><code>@MoChilia</code></a> in <a href="https://redirect.github.com/Azure/login/pull/520">Azure/login#520</a></li> <li>Use <code>--client-id</code> for user-assigned managed identity authentication in Azure CLI v2.69.0 or later. by <a href="https://github.com/MoChilia"><code>@MoChilia</code></a> in <a href="https://redirect.github.com/Azure/login/pull/514">Azure/login#514</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Azure/login/compare/v2.2.0...v2.3.0">https://github.com/Azure/login/compare/v2.2.0...v2.3.0</a></p> <h2>Azure Login Action v2.2.0</h2> <h2>What's Changed</h2> <ul> <li>Replace <code>az --version</code> with <code>az version</code> by <a href="https://github.com/MoChilia"><code>@MoChilia</code></a> in <a href="https://redirect.github.com/Azure/login/pull/450">Azure/login#450</a></li> <li>Update documentation for setting audience when environment is set by <a href="https://github.com/jcantosz"><code>@jcantosz</code></a> in <a href="https://redirect.github.com/Azure/login/pull/455">Azure/login#455</a></li> <li>Fix <a href="https://redirect.github.com/azure/login/issues/459">#459</a>: Errors when registering cloud profile for AzureStack by <a href="https://github.com/MoChilia"><code>@MoChilia</code></a> in <a href="https://redirect.github.com/Azure/login/pull/466">Azure/login#466</a></li> <li>Fix typo by <a href="https://github.com/KronosTheLate"><code>@KronosTheLate</code></a> in <a href="https://redirect.github.com/Azure/login/pull/483">Azure/login#483</a></li> <li>move pre cleanup to main and add pre-if and post-if by <a href="https://github.com/YanaXu"><code>@YanaXu</code></a> in <a href="https://redirect.github.com/Azure/login/pull/484">Azure/login#484</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/jcantosz"><code>@jcantosz</code></a> made their first contribution in <a href="https://redirect.github.com/Azure/login/pull/455">Azure/login#455</a></li> <li><a href="https://github.com/KronosTheLate"><code>@KronosTheLate</code></a> made their first contribution in <a href="https://redirect.github.com/Azure/login/pull/483">Azure/login#483</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Azure/login/compare/v2.1.1...v2.2.0">https://github.com/Azure/login/compare/v2.1.1...v2.2.0</a></p> <h2>v2.1.1</h2> <h2>What's Changed</h2> <ul> <li>Disable information output in Connect-AzAccount by <a href="https://github.com/YanaXu"><code>@YanaXu</code></a> in <a href="https://redirect.github.com/Azure/login/pull/448">Azure/login#448</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/jiasli"><code>@jiasli</code></a> made their first contribution in <a href="https://redirect.github.com/Azure/login/pull/438">Azure/login#438</a></li> <li><a href="https://github.com/isra-fel"><code>@isra-fel</code></a> made their first contribution in <a href="https://redirect.github.com/Azure/login/pull/446">Azure/login#446</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Azure/login/compare/v2.1.0...v2.1.1">https://github.com/Azure/login/compare/v2.1.0...v2.1.1</a></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
e28ed8a566 |
Revert "Pin check-spelling action to v0.0.26 (a35147f)" (#46749)
Reverts microsoft/PowerToys#46746 ok, gordon said this change is unrelated to the pipeline, revert it. |
||
|
|
4f693778f2 |
Pin check-spelling action to v0.0.26 (a35147f) (#46746)
<!-- 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 discussed here: https://github.com/check-spelling/check-spelling/issues/103 Merge it first to test if we can fix this issue. It blocked our PR pipeline which created from the forked repo. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
e1ad13ab34 |
Peek: Auto detect file name encoding when previewing zip file (#44799)
<!-- 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 Auto detect file name encoding when previewing zip file <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] Closes: #44790 <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [x] **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 The encoding of file names in zip files defaults to the native encoding of the creator's OS. For example, a zip file created on a zh-CN Windows PC uses GBK. However, currently peek always uses UTF-8 when opening zip file, resulting in garbled text. Here I added an auto-detection mechanism in peek to support different zip filename encodings. <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed 1. Turn on peek 2. Download this file: [chinese-example.zip](https://github.com/user-attachments/files/24155422/chinese-example.zip) 3. Select this file and press Ctrl+Space Previous behaviour (incorrect): <img width="1964" height="1326" alt="Image" src="https://github.com/user-attachments/assets/2d331647-5761-4331-97ba-4c4c01132afb" /> Current behaviour (correct): <img width="2026" height="1269" alt="图片" src="https://github.com/user-attachments/assets/db456426-f7f6-467c-8f3c-1e01cba44fec" /> |
||
|
|
cea0497bb9 |
Refactor PadImage to use out param and improve disposal (#44906)
Refactored PadImage to return a bool and use an out parameter for the padded bitmap, with [NotNullWhen(true)] for nullability. Updated GetWindowBoundsImage to handle disposal of the original bitmap when padding is applied, improving memory management and code clarity. <!-- 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 <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed |
||
|
|
fd5be6d04e |
Fix SA1614: Add text to empty parameter documentation (#46706)
Add meaningful descriptions to 3 empty param XML doc tags in BaseDscTest.cs and ShellHelpers.cs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
4dfdf46e0d |
Fix WMC1506 XAML compiler warnings in AdvancedPaste (#46726)
## Summary
Fixes all 13 **WMC1506** XAML compiler warnings ("OneWay bindings
require at least one of their steps to support raising notifications
when their value changes") by changing \Mode=OneWay\ to \Mode=OneTime\
on \x:Bind\ expressions bound to non-observable properties.
## Details
**Root cause:** \PasteFormat\ (plain sealed class) and \ClipboardItem\
(plain class) do not implement \INotifyPropertyChanged\. Using
\Mode=OneWay\ on their properties creates subscriptions that will never
fire, generating WMC1506 warnings.
**Fix:** Changed to \Mode=OneTime\ which is semantically correct — these
properties are set once and never change after construction.
**Files changed:**
- \ClipboardHistoryItemPreviewControl.xaml\ — 2 bindings (\Header\,
\Timestamp\)
- \MainPage.xaml\ — 11 bindings across \PasteFormat\ and \ClipboardItem\
DataTemplates
**Note on ClipboardHistoryItemPreviewControl:** Its computed properties
(\Header\, \Timestamp\) are refreshed via \Bindings.Update()\ when the
\ClipboardItem\ DependencyProperty changes. \Bindings.Update()\ forces
re-evaluation of all \x:Bind\ bindings regardless of mode, so \OneTime\
works correctly here.
## Validation
- [x] Full solution build passes (exit code 0)
- [x] Zero WMC1506 warnings after changes (was 13 before)
- [x] No behavioral changes — only binding mode optimization
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
||
|
|
1c4ecc23c6 |
Cleanup md files (root folder) (#46582)
<!-- 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 Cleaning up Markdown files, including: - [Learn Authoring Pack](https://marketplace.visualstudio.com/items?itemName=docsmsft.docs-authoring-pack) in Visual Studio Code - consolidating list item bullets - spelling and grammar - HTML tables and links to Markdown To do: - [x] Sentence casing in headers https://learn.microsoft.com/en-us/style-guide/capitalization#sentence-style-capitalization-in-titles-and-headings (Copilot quotum was reached 🤓) - [ ] NOTICE.md: text in code blocks or not?? --------- Co-authored-by: Niels Laute <niels.laute@live.nl> |
||
|
|
5888f6eb7f |
Chore(deps): Bump azure/cli from 2 to 3 (#46562)
Bumps [azure/cli](https://github.com/azure/cli) from 2 to 3. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/azure/cli/releases">azure/cli's releases</a>.</em></p> <blockquote> <h2>GitHub Action for Azure CLI v3</h2> <h2>What's Changed</h2> <ul> <li>Updated to use node24 by <a href="https://github.com/thomas-temby"><code>@thomas-temby</code></a> in <a href="https://redirect.github.com/Azure/cli/pull/197">Azure/cli#197</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Azure/cli/compare/v2.2.0...v3">https://github.com/Azure/cli/compare/v2.2.0...v3</a></p> <h2>GitHub Action for Azure CLI v3.0.0</h2> <h2>What's Changed</h2> <ul> <li>Updated to use node24 by <a href="https://github.com/thomas-temby"><code>@thomas-temby</code></a> in <a href="https://redirect.github.com/Azure/cli/pull/197">Azure/cli#197</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Azure/cli/compare/v2.2.0...v3.0.0">https://github.com/Azure/cli/compare/v2.2.0...v3.0.0</a></p> <h2>GitHub Action for Azure CLI v2.2.0</h2> <h2>What's Changed</h2> <ul> <li>Mount <code>AZURE_CONFIG_DIR</code> folder instead of <code>~/.azure</code> by <a href="https://github.com/MoChilia"><code>@MoChilia</code></a> in <a href="https://redirect.github.com/Azure/cli/pull/176">Azure/cli#176</a></li> <li>FIX: Broken links by appended dot azcliversion errors by <a href="https://github.com/nselpriv"><code>@nselpriv</code></a> in <a href="https://redirect.github.com/Azure/cli/pull/178">Azure/cli#178</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/nselpriv"><code>@nselpriv</code></a> made their first contribution in <a href="https://redirect.github.com/Azure/cli/pull/178">Azure/cli#178</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Azure/cli/compare/v2.1.0...v2.2.0">https://github.com/Azure/cli/compare/v2.1.0...v2.2.0</a></p> <h2>GitHub Action for Azure CLI v2.1.0</h2> <h2>What's Changed</h2> <ul> <li>docs: add yaml syntax highlighting to workflow examples by <a href="https://github.com/baysideengineer"><code>@baysideengineer</code></a> in <a href="https://redirect.github.com/Azure/cli/pull/141">Azure/cli#141</a></li> <li>Fix <a href="https://redirect.github.com/azure/cli/issues/153">#153</a>: Prevent stdout cutoff in Azure CLI versions by <a href="https://github.com/MoChilia"><code>@MoChilia</code></a> in <a href="https://redirect.github.com/Azure/cli/pull/154">Azure/cli#154</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/baysideengineer"><code>@baysideengineer</code></a> made their first contribution in <a href="https://redirect.github.com/Azure/cli/pull/141">Azure/cli#141</a></li> <li><a href="https://github.com/isra-fel"><code>@isra-fel</code></a> made their first contribution in <a href="https://redirect.github.com/Azure/cli/pull/151">Azure/cli#151</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Azure/cli/compare/v2.0.0...v2.1.0">https://github.com/Azure/cli/compare/v2.0.0...v2.1.0</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/Azure/cli/blob/master/ReleaseProcess.md">azure/cli's changelog</a>.</em></p> <blockquote> <p><strong>Releasing a new version</strong></p> <p>Semanting versioning is used to release different versions of the action. Following steps are to be followed :</p> <ol> <li>Create a new branch for every major version. <br /> Example, releases/v1, releases/v2.</li> <li>For every minor and patch release for a major version, update the corresponding release branch. <br /> Example, for releasing v1.1.1, update releases/v1.</li> <li>Create tags for every new release (major/minor/patch). <br /> Example,v1.0.0. , v1.0.1, v2.0.1, etc. and also have tags like v1, v2 for every major version release.</li> <li>On releasing minor and patch versions, update the tag of the corresponding major version. <br /> Example, for releasing v1.0.1, update the v1 tag to point to the ref of the current release. <br /> The following commands are to be run on the release\v1 branch so that it picks the latest commit and updates the v1 tag accordingly : (Ensure that you are on same commit locally as you want to release)</li> </ol> <ul> <li><code>git tag -fa v1 -m "Update v1 tag"</code></li> <li><code>git push origin v1 --force</code></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
152f64151b |
Fix MSTEST0017: Correct assertion argument order (#46712)
Swap expected/actual arguments in 22 Assert calls to follow the correct MSTest convention of Assert.AreEqual(expected, actual). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
76b773b016 |
Fix SA1616: Add text to empty return value documentation (#46718)
Add meaningful descriptions to 6 empty returns XML doc tags across DSC, CmdPal, and Extensions.Toolkit. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
0da5602f68 |
CmdPal: Update CommunityToolkit.WinUI to 8.2.251219 and remove SearchBar debouncer hacks (#46027)
## Summary of the Pull Request Updates all `CommunityToolkit.WinUI` packages from `8.2.250402` to `8.2.251219` (latest stable) and removes three workaround hacks from `SearchBar.xaml.cs` that were added to paper over bugs in the `CommunityToolkit.WinUI.Extensions` debouncer (`Debounce` with `immediate: true` not firing correctly). Those bugs were fixed upstream and are included in `8.2.251219`. ## PR Checklist - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx ## Detailed Description of the Pull Request / Additional comments ### Package update (`Directory.Packages.props`) All `CommunityToolkit.WinUI` packages bumped from `8.2.250402` → `8.2.251219`: - `CommunityToolkit.WinUI.Animations` - `CommunityToolkit.WinUI.Collections` - `CommunityToolkit.WinUI.Controls.Primitives` - `CommunityToolkit.WinUI.Controls.SettingsControls` - `CommunityToolkit.WinUI.Controls.Segmented` - `CommunityToolkit.WinUI.Controls.Sizers` - `CommunityToolkit.WinUI.Converters` - `CommunityToolkit.WinUI.Extensions` ### Hack removals (`SearchBar.xaml.cs`) All three hacks were in `SearchBar.xaml.cs` (`Controls/`), tagged `TODO GH #245`: - **`FilterBox_TextChanged` — "TERRIBLE HACK"**: Forced `DoFilterBoxUpdate()` immediately for any single-character input, then returned early—bypassing the debouncer entirely. Now the debouncer's `immediate: FilterBox.Text.Length <= 1` path handles this correctly. - **Escape key handler**: After `FilterBox.Text = string.Empty`, manually pushed the empty string to `CurrentPageViewModel.SearchTextBox`. The `TextChanged` event fires after the assignment and the debouncer (with `immediate: true` for length 0) now handles propagation. - **Backspace key handler (`else if (e.Key == VirtualKey.Back)` block)**: Pre-emptively set `CurrentPageViewModel.SearchTextBox` to the *pre-deletion* text in `FilterBox_KeyDown`. Entire block removed; `TextChanged` + debouncer handle the post-deletion update correctly. ## Validation Steps Performed Manually verified in CmdPal that: - Typing aliases (single-character triggers) still activates filtering immediately - Pressing Escape clears the search box and resets the filter - Pressing Backspace correctly updates search results after each deletion <!-- START COPILOT ORIGINAL PROMPT --> <details> <summary>Original prompt</summary> > > ---- > > *This section details on the original issue you should resolve* > > <issue_title>Update to the latest `CommunityToolkit.WinUI.Extensions` and remove hacks</issue_title> > <issue_description>_originally filed by @zadjii-msft_ > > See https://github.com/zadjii-msft/PowerToys/pull/236#discussion_r1887714771 > > I had to stick a couple of HACKs into `SearchBar.xaml.cs` to work around bugs in the toolkit debouncer. Those bugs have since been fixed upstream, hooray! We just need a new version of the package shipped and we can get rid of them. > > ref https://github.com/zadjii-msft/PowerToys/issues/236 > > ---- > > Also! > > Revert > > ``` > // TODO(stefan): REVERT THIS TO DASHBOARD PAGE!!!! SPELCHHHHEEK FAIL > ``` > > from https://github.com/zadjii-msft/PowerToys/issues/215</issue_description> > > ## Comments on the Issue (you are @copilot in this section) > > <comments> > <comment_new><author>@niels9001</author><body> > @zadjii-msft @michaeljolley I assume we are on a later version now? Do we still need to remove the hacks?</body></comment_new> > <comment_new><author>@zadjii-msft</author><body> > We sure do! > > There's the SearchBar.xaml.cs ones, and I also had to manually copy over the `TypedEventHandlerExtensions.cs`</body></comment_new> > </comments> > </details> <!-- START COPILOT CODING AGENT SUFFIX --> - Fixes microsoft/PowerToys#38285 <!-- START COPILOT CODING AGENT TIPS --> --- 🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. [Learn more about Advanced Security.](https://gh.io/cca-advanced-security) --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: niels9001 <9866362+niels9001@users.noreply.github.com> Co-authored-by: Niels Laute <niels.laute@live.nl> |
||
|
|
565094abbe |
Fix SA1623: Fix property documentation summaries (#46717)
Update 29 property XML doc summaries to begin with Gets, Gets or sets, or Gets a value indicating whether as required by StyleCop SA1623. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
1314f68602 |
Fix SA1622: Add text to empty generic type parameter documentation (#46707)
Add meaningful description to 1 empty typeparam XML doc tag in BaseDscTest.cs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
fbad0dce9c |
Add /need-monitor-info command (#45636)
<!-- 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 <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed |
||
|
|
36a5b77e6c |
chore: Update to WIL 1.0.250325.1 (#43503)
## Summary of the Pull Request Updates the Windows Implementation Library (WIL) to version 1.0.250325.1. This fixes some static analysis warnings in C++ projects that use WIL. The version is now managed centrally via `Directory.Packages.props` (Central Package Management), replacing the previous per-project `packages.config` approach. ## PR Checklist - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx ## Detailed Description of the Pull Request / Additional comments - Updated `Microsoft.Windows.ImplementationLibrary` from `1.0.231216.1` to `1.0.250325.1` in `Directory.Packages.props`. - The change is a single-line update since the codebase uses Central Package Management — all C++ projects reference WIL via `PackageReference` without specifying a version number directly. ## Validation Steps Performed - Verified `Directory.Packages.props` correctly reflects the new WIL version `1.0.250325.1`. - Merged latest `main` branch to resolve conflicts arising from the migration to Central Package Management. Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: niels9001 <9866362+niels9001@users.noreply.github.com> |
||
|
|
4ce451edd0 |
[ImageResizer] Fix the missing settings of png encoder (#46695)
- Apply codec-specific encoder properties (e.g. JPEG quality) in the transcode path when transforms are required, matching WPF behavior. - Apply PngInterlaceOption to the WinRT PNG encoder via the "InterlaceOption" BitmapPropertySet entry; previously the setting was persisted but never passed to the encoder. <!-- 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 <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
42924e71c7 |
Fix the build.ps1 that does not work well with -RestoreOnly switch (#46012)
<!-- 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 Fix the `build.ps1` that does not work well with `-RestoreOnly` switch. Also there is `.slnf` now and the build script should support it. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed |
||
|
|
addebb8126 |
[QuickAccent] Add capitalization for Superscript Latin Small Letter N (#46571)
## Summary of the Pull Request Adds capitalization for ⁿ (U+207F Superscript Latin Small Letter N -> ᴺ (U+1D3A Modifier Letter Capital N). This technically isn't a Unicode case pair, however there isn't any official capitalization for ⁿ and also where else would a user expect ᴺ if not on Shift+N. ## PR Checklist - [x] Closes: #26060 - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [x] **Localization:** All end-user-facing strings can be localized - [x] **Dev docs:** No need - [x] **New binaries:** None - [x] **Documentation updated:** No need ## 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 Manually tested |
||
|
|
3b6453c932 |
Improve DSC documentation (#42554)
<!-- 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 This documentation enhances the DSC documentation by incorporating reference documents and providing examples. Closes #42552. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] Closes: #xxx - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed --------- Co-authored-by: Niels Laute <niels.laute@live.nl> |