Merge main into stable for 0.99 release#47042
Merged
LegendaryBlair merged 12 commits intostablefrom Apr 16, 2026
Merged
Conversation
## 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>
<!-- 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
… 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>
) 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>
<!-- 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>
…7008) 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>
## 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
<!-- 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
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>
…#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>
## 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>
## 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Merges all 12 PRs from main into stable for the 0.99 release.
PRs included: