From 2c4aab9d872e493292ef66982d05ae87e97dfcb6 Mon Sep 17 00:00:00 2001 From: Jaylyn Barbee <51131738+Jaylyn-Barbee@users.noreply.github.com> Date: Wed, 22 Oct 2025 14:59:36 -0400 Subject: [PATCH 1/9] Light Switch Hotfixes v2 (#42774) Should fix: #42627 Issue: Suntimes not updating within the day if the mode changes to SunsetToSunrise Fix: Update suntimes in the service if the mode is changed to Sun mode. Other: small bug fixes (brackets, etc) --- .../LightSwitchService/LightSwitchService.cpp | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/modules/LightSwitch/LightSwitchService/LightSwitchService.cpp b/src/modules/LightSwitch/LightSwitchService/LightSwitchService.cpp index 69fe38248f..7ebe4a67eb 100644 --- a/src/modules/LightSwitch/LightSwitchService/LightSwitchService.cpp +++ b/src/modules/LightSwitch/LightSwitchService/LightSwitchService.cpp @@ -16,6 +16,8 @@ SERVICE_STATUS g_ServiceStatus = {}; SERVICE_STATUS_HANDLE g_StatusHandle = nullptr; HANDLE g_ServiceStopEvent = nullptr; static int g_lastUpdatedDay = -1; +static ScheduleMode prevMode = ScheduleMode::Off; +static std::wstring prevLat, prevLon; VOID WINAPI ServiceMain(DWORD argc, LPTSTR* argv); VOID WINAPI ServiceCtrlHandler(DWORD dwCtrl); @@ -185,20 +187,28 @@ DWORD WINAPI ServiceWorkerThread(LPVOID lpParam) if (isLightActive) { if (settings.changeSystem && !isSystemCurrentlyLight) + { SetSystemTheme(true); Logger::info(L"[LightSwitchService] Changing system theme to light mode."); + } if (settings.changeApps && !isAppsCurrentlyLight) + { SetAppsTheme(true); Logger::info(L"[LightSwitchService] Changing apps theme to light mode."); + } } else { if (settings.changeSystem && isSystemCurrentlyLight) + { SetSystemTheme(false); Logger::info(L"[LightSwitchService] Changing system theme to dark mode."); + } if (settings.changeApps && isAppsCurrentlyLight) + { SetAppsTheme(false); - Logger::info(L"[LightSwitchService] Changing apps theme to light mode."); + Logger::info(L"[LightSwitchService] Changing apps theme to dark mode."); + } } }; @@ -228,6 +238,23 @@ DWORD WINAPI ServiceWorkerThread(LPVOID lpParam) LightSwitchSettings::instance().LoadSettings(); const auto& settings = LightSwitchSettings::instance().settings(); + // Check for changes in schedule mode or coordinates + bool modeChangedToSunset = (prevMode != settings.scheduleMode && + settings.scheduleMode == ScheduleMode::SunsetToSunrise); + bool coordsChanged = (prevLat != settings.latitude || prevLon != settings.longitude); + + if ((modeChangedToSunset || coordsChanged) && settings.scheduleMode == ScheduleMode::SunsetToSunrise) + { + Logger::info(L"[LightSwitchService] Mode or coordinates changed, recalculating sun times."); + update_sun_times(settings); + SYSTEMTIME st; + GetLocalTime(&st); + g_lastUpdatedDay = st.wDay; + prevMode = settings.scheduleMode; + prevLat = settings.latitude; + prevLon = settings.longitude; + } + // If schedule is off, idle but keep watching settings and manual override if (settings.scheduleMode == ScheduleMode::Off) { From dd420509ab4568ab71e77842c7eb9f562aa33952 Mon Sep 17 00:00:00 2001 From: Mason Bergstrom <13530957+MasonBergstrom@users.noreply.github.com> Date: Wed, 22 Oct 2025 21:06:33 -0700 Subject: [PATCH 2/9] [Mouse Without Borders] Adding Horizontal Scrolling Support (#42179) ## Summary of the Pull Request Added support for horizontal scrolling to Mouse Without Borders, instead of being a no-op. ## PR Checklist - [x] Closes: #37037 - [x] **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 Works in a backward compatible fashion, continuing to be a no-op when forwarded to an older version, but works once both devices are updated. ## Validation Steps Performed Built on two separate devices that are paired with each other. First tested with one device updated and one on the old code, confirming backwards compatibility support. Second tested both devices updated, confirming horizontal scroll is now working on remote device. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/modules/MouseWithoutBorders/App/Class/Common.VK.cs | 1 + src/modules/MouseWithoutBorders/App/Class/InputSimulation.cs | 3 +++ src/modules/MouseWithoutBorders/App/Class/NativeMethods.cs | 1 + 3 files changed, 5 insertions(+) diff --git a/src/modules/MouseWithoutBorders/App/Class/Common.VK.cs b/src/modules/MouseWithoutBorders/App/Class/Common.VK.cs index 79aa50c6dc..3f54a0281d 100644 --- a/src/modules/MouseWithoutBorders/App/Class/Common.VK.cs +++ b/src/modules/MouseWithoutBorders/App/Class/Common.VK.cs @@ -112,6 +112,7 @@ namespace MouseWithoutBorders internal const int WM_RBUTTONDBLCLK = 0x206; internal const int WM_MBUTTONDBLCLK = 0x209; internal const int WM_MOUSEWHEEL = 0x020A; + internal const int WM_MOUSEHWHEEL = 0x020E; internal const int WM_KEYDOWN = 0x100; internal const int WM_KEYUP = 0x101; diff --git a/src/modules/MouseWithoutBorders/App/Class/InputSimulation.cs b/src/modules/MouseWithoutBorders/App/Class/InputSimulation.cs index 0bbd8014ae..e735db814c 100644 --- a/src/modules/MouseWithoutBorders/App/Class/InputSimulation.cs +++ b/src/modules/MouseWithoutBorders/App/Class/InputSimulation.cs @@ -204,6 +204,9 @@ namespace MouseWithoutBorders.Class case Common.WM_MOUSEWHEEL: mouse_input.mi.dwFlags |= (int)NativeMethods.MOUSEEVENTF.WHEEL; break; + case Common.WM_MOUSEHWHEEL: + mouse_input.mi.dwFlags |= (int)NativeMethods.MOUSEEVENTF.HWHEEL; + break; case Common.WM_XBUTTONUP: mouse_input.mi.dwFlags |= (int)NativeMethods.MOUSEEVENTF.XUP; break; diff --git a/src/modules/MouseWithoutBorders/App/Class/NativeMethods.cs b/src/modules/MouseWithoutBorders/App/Class/NativeMethods.cs index 539e0267bd..831144f377 100644 --- a/src/modules/MouseWithoutBorders/App/Class/NativeMethods.cs +++ b/src/modules/MouseWithoutBorders/App/Class/NativeMethods.cs @@ -556,6 +556,7 @@ namespace MouseWithoutBorders.Class XDOWN = 0x0080, XUP = 0x0100, WHEEL = 0x0800, + HWHEEL = 0x1000, VIRTUALDESK = 0x4000, ABSOLUTE = 0x8000, } From c26dfef81b5aad59e8d7ca29bdaf078b63c29e90 Mon Sep 17 00:00:00 2001 From: Kai Tao <69313318+vanzue@users.noreply.github.com> Date: Thu, 23 Oct 2025 16:20:40 +0800 Subject: [PATCH 3/9] Find My Mouse: Cursor should not go busy & window should not be active (#42795) ## Summary of the Pull Request Fix two issue in find my mouse: #42758 #42765 ## PR Checklist - [x] Closes: #42758 and #42765 - [ ] **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 ## Validation Steps Performed | Problem | Before | After this fix | |----------|---------|----------------| | Mouse Loading status | html
| html
| | Current window lose focus | html
| html
| The window lose focus test: Currently after activate the find my mouse, the window lose focus, after the fix, foreground window is still the focused window, And my keystroke will directly apply in the foreground window. Maybe hard to see in the video. --- src/modules/MouseUtils/FindMyMouse/FindMyMouse.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/MouseUtils/FindMyMouse/FindMyMouse.cpp b/src/modules/MouseUtils/FindMyMouse/FindMyMouse.cpp index adf5075837..c94c79e178 100644 --- a/src/modules/MouseUtils/FindMyMouse/FindMyMouse.cpp +++ b/src/modules/MouseUtils/FindMyMouse/FindMyMouse.cpp @@ -269,6 +269,10 @@ LRESULT SuperSonar::BaseWndProc(UINT message, WPARAM wParam, LPARAM lParam) n case WM_NCHITTEST: return HTTRANSPARENT; + + case WM_SETCURSOR: + SetCursor(LoadCursor(nullptr, IDC_ARROW)); + return TRUE; } if (message == WM_PRIV_SHORTCUT) @@ -535,7 +539,7 @@ void SuperSonar::StartSonar() Trace::MousePointerFocused(); // Cover the entire virtual screen. // HACK: Draw with 1 pixel off. Otherwise, Windows glitches the task bar transparency when a transparent window fill the whole screen. - SetWindowPos(m_hwnd, HWND_TOPMOST, GetSystemMetrics(SM_XVIRTUALSCREEN) + 1, GetSystemMetrics(SM_YVIRTUALSCREEN) + 1, GetSystemMetrics(SM_CXVIRTUALSCREEN) - 2, GetSystemMetrics(SM_CYVIRTUALSCREEN) - 2, 0); + SetWindowPos(m_hwnd, HWND_TOPMOST, GetSystemMetrics(SM_XVIRTUALSCREEN) + 1, GetSystemMetrics(SM_YVIRTUALSCREEN) + 1, GetSystemMetrics(SM_CXVIRTUALSCREEN) - 2, GetSystemMetrics(SM_CYVIRTUALSCREEN) - 2, SWP_NOACTIVATE); m_sonarPos = ptNowhere; OnMouseTimer(); UpdateMouseSnooping(); From d64f06906cfe4b116547a3b83747c50b232eeae3 Mon Sep 17 00:00:00 2001 From: Mike Hall Date: Thu, 23 Oct 2025 11:21:01 +0100 Subject: [PATCH 4/9] Enable switching to and from MousePointerCrosshairs and Gliding Cursor (#42105) ## Summary of the Pull Request This PR enables a user to switch between Mouse Pointer Crosshairs and Gliding Cursor (or the other way round!). The primary change is to the underlying state machine that's shared between Mouse Pointer Crosshairs and Gliding Cursor, both are implemented in the same Mouse Module. ## PR Checklist - [ ] Closes: #xxx - [x] **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 See above - this is primarily a change to the shared state machine between Mouse Pointer Crosshairs and Gliding Cursor - this change enables transition between Mouse Pointer Crosshairs and Gliding Cursor, the underlying state is reset when a user transitions from Gliding to Mouse Pointer and back again. ## Validation Steps Performed Validation on a Windows Surface Laptop 7 Pro for the following states. - Mouse Pointer Crosshairs and Gliding Cursor NOT active - enable/disable Mouse Pointer Crosshairs - Mouse Pointer Crosshairs and Gliding Cursor NOT active - enable/step states for Gliding Cursor - Activate and disable Mouse Pointer Crosshairs - Activate and step through Gliding Cursor - Mouse Pointer Crosshairs Active - Switch to Gliding Cursor - Gliding Cursor Active - Switch to Mouse Pointer Crosshairs --- .../MousePointerCrosshairs/dllmain.cpp | 98 ++++++++++++------- 1 file changed, 63 insertions(+), 35 deletions(-) diff --git a/src/modules/MouseUtils/MousePointerCrosshairs/dllmain.cpp b/src/modules/MouseUtils/MousePointerCrosshairs/dllmain.cpp index fd144e807b..b460e29643 100644 --- a/src/modules/MouseUtils/MousePointerCrosshairs/dllmain.cpp +++ b/src/modules/MouseUtils/MousePointerCrosshairs/dllmain.cpp @@ -14,6 +14,9 @@ extern void InclusiveCrosshairsRequestUpdatePosition(); extern void InclusiveCrosshairsEnsureOn(); extern void InclusiveCrosshairsEnsureOff(); extern void InclusiveCrosshairsSetExternalControl(bool enabled); +extern void InclusiveCrosshairsSetOrientation(CrosshairsOrientation orientation); +extern bool InclusiveCrosshairsIsEnabled(); +extern void InclusiveCrosshairsSwitch(); // Non-Localizable strings namespace @@ -244,12 +247,19 @@ public: return false; } - if (hotkeyId == 0) + if (hotkeyId == 0) // Crosshairs activation { + // If gliding cursor is active, cancel it and activate crosshairs + if (m_glideState.load() != 0) + { + CancelGliding(true /*activateCrosshairs*/); + return true; + } + // Otherwise, normal crosshairs toggle InclusiveCrosshairsSwitch(); return true; } - if (hotkeyId == 1) + if (hotkeyId == 1) // Gliding cursor activation { HandleGlidingHotkey(); return true; @@ -268,25 +278,44 @@ private: SendInput(2, inputs, sizeof(INPUT)); } - // Cancel gliding without performing the final click (Escape handling) - void CancelGliding() + // Cancel gliding with option to activate crosshairs in user's preferred orientation + void CancelGliding(bool activateCrosshairs) { int state = m_glideState.load(); if (state == 0) { return; // nothing to cancel } + + // Stop all gliding operations StopXTimer(); StopYTimer(); m_glideState = 0; - InclusiveCrosshairsEnsureOff(); + UninstallKeyboardHook(); + + // Reset crosshairs control and restore user settings InclusiveCrosshairsSetExternalControl(false); + InclusiveCrosshairsSetOrientation(m_inclusiveCrosshairsSettings.crosshairsOrientation); + + if (activateCrosshairs) + { + // User is switching to crosshairs mode - enable with their settings + InclusiveCrosshairsEnsureOn(); + } + else + { + // User canceled (Escape) - turn off crosshairs completely + InclusiveCrosshairsEnsureOff(); + } + + // Reset gliding state if (auto s = m_state) { s->xFraction = 0.0; s->yFraction = 0.0; } - Logger::debug("Gliding cursor cancelled via Escape key"); + + Logger::debug("Gliding cursor cancelled (activateCrosshairs={})", activateCrosshairs ? 1 : 0); } // Stateless helpers operating on shared State @@ -425,21 +454,22 @@ private: { return; } - // Simulate the AHK state machine + int state = m_glideState.load(); switch (state) { - case 0: + case 0: // Starting gliding { - // For detect for cancel key + // Install keyboard hook for Escape cancellation InstallKeyboardHook(); - // Ensure crosshairs on (do not toggle off if already on) - InclusiveCrosshairsEnsureOn(); - // Disable internal mouse hook so we control position updates explicitly + + // Force crosshairs visible in BOTH orientation for gliding, regardless of user setting + // Set external control before enabling to prevent internal movement hook from attaching InclusiveCrosshairsSetExternalControl(true); - // Override crosshairs to show both for Gliding Cursor InclusiveCrosshairsSetOrientation(CrosshairsOrientation::Both); + InclusiveCrosshairsEnsureOn(); // Always ensure they are visible + // Initialize gliding state s->currentXPos = 0; s->currentXSpeed = s->fastHSpeed; s->xFraction = 0.0; @@ -447,20 +477,17 @@ private: int y = GetSystemMetrics(SM_CYVIRTUALSCREEN) / 2; SetCursorPos(0, y); InclusiveCrosshairsRequestUpdatePosition(); + m_glideState = 1; StartXTimer(); break; } - case 1: - { - // Slow horizontal + case 1: // Slow horizontal s->currentXSpeed = s->slowHSpeed; m_glideState = 2; break; - } - case 2: + case 2: // Switch to vertical fast { - // Stop horizontal, start vertical (fast) StopXTimer(); s->currentYSpeed = s->fastVSpeed; s->currentYPos = 0; @@ -471,33 +498,37 @@ private: StartYTimer(); break; } - case 3: - { - // Slow vertical + case 3: // Slow vertical s->currentYSpeed = s->slowVSpeed; m_glideState = 4; break; - } - case 4: + case 4: // Finalize (click and end) default: { - UninstallKeyboardHook(); - // Stop vertical, click, turn crosshairs off, re-enable internal tracking, reset state + // Complete the gliding sequence StopYTimer(); m_glideState = 0; LeftClick(); - InclusiveCrosshairsEnsureOff(); + + // Restore normal crosshairs operation and turn them off InclusiveCrosshairsSetExternalControl(false); - // Restore original crosshairs orientation setting InclusiveCrosshairsSetOrientation(m_inclusiveCrosshairsSettings.crosshairsOrientation); - s->xFraction = 0.0; - s->yFraction = 0.0; + InclusiveCrosshairsEnsureOff(); + + UninstallKeyboardHook(); + + // Reset state + if (auto sp = m_state) + { + sp->xFraction = 0.0; + sp->yFraction = 0.0; + } break; } } } - // Low-level keyboard hook procedures + // Low-level keyboard hook for Escape cancellation static LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION) @@ -509,14 +540,11 @@ private: { if (inst->m_enabled && inst->m_glideState.load() != 0) { - inst->UninstallKeyboardHook(); - inst->CancelGliding(); + inst->CancelGliding(false); // Escape cancels without activating crosshairs } } } } - - // Do not swallow Escape; pass it through return CallNextHookEx(nullptr, nCode, wParam, lParam); } From c6c7bfb8613ede7a88378cc14d0daf67b5bb4bfa Mon Sep 17 00:00:00 2001 From: Jaylyn Barbee <51131738+Jaylyn-Barbee@users.noreply.github.com> Date: Thu, 23 Oct 2025 12:18:45 -0400 Subject: [PATCH 5/9] Updated installer hashes for 0.95.1 (#42820) Title, updating installer links for next release. --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 85fad26e1f..efb0366409 100644 --- a/README.md +++ b/README.md @@ -56,17 +56,17 @@ Go to the [PowerToys GitHub releases][github-release-link], click Assets to reve [github-next-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.96%22 [github-current-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.95%22 -[ptUserX64]: https://github.com/microsoft/PowerToys/releases/download/v0.95.0/PowerToysUserSetup-0.95.0-x64.exe -[ptUserArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.95.0/PowerToysUserSetup-0.95.0-arm64.exe -[ptMachineX64]: https://github.com/microsoft/PowerToys/releases/download/v0.95.0/PowerToysSetup-0.95.0-x64.exe -[ptMachineArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.95.0/PowerToysSetup-0.95.0-arm64.exe +[ptUserX64]: https://github.com/microsoft/PowerToys/releases/download/v0.95.1/PowerToysUserSetup-0.95.1-x64.exe +[ptUserArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.95.1/PowerToysUserSetup-0.95.1-arm64.exe +[ptMachineX64]: https://github.com/microsoft/PowerToys/releases/download/v0.95.1/PowerToysSetup-0.95.1-x64.exe +[ptMachineArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.95.1/PowerToysSetup-0.95.1-arm64.exe | Description | Filename | |----------------|----------| -| Per user - x64 | [PowerToysUserSetup-0.95.0-x64.exe][ptUserX64] | -| Per user - ARM64 | [PowerToysUserSetup-0.95.0-arm64.exe][ptUserArm64] | -| Machine wide - x64 | [PowerToysSetup-0.95.0-x64.exe][ptMachineX64] | -| Machine wide - ARM64 | [PowerToysSetup-0.95.0-arm64.exe][ptMachineArm64] | +| Per user - x64 | [PowerToysUserSetup-0.95.1-x64.exe][ptUserX64] | +| Per user - ARM64 | [PowerToysUserSetup-0.95.1-arm64.exe][ptUserArm64] | +| Machine wide - x64 | [PowerToysSetup-0.95.1-x64.exe][ptMachineX64] | +| Machine wide - ARM64 | [PowerToysSetup-0.95.1-arm64.exe][ptMachineArm64] | From c628b4901d372e686cb90041bf5e09b74124c03a Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 23 Oct 2025 13:07:16 -0700 Subject: [PATCH 6/9] Added open tag to default expand open (#42824) By default, none of the 4 methods are expanded. this will expand the top item by default for users. image --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index efb0366409..e737281523 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Before you begin, make sure your device meets the system requirements: Choose one of the installation methods below: -
+
Download .exe from GitHub Go to the [PowerToys GitHub releases][github-release-link], click Assets to reveal the downloads, and choose the installer that matches your architecture and install scope. For most devices, that's the x64 per-user installer. @@ -281,4 +281,4 @@ The application logs basic diagnostic data (telemetry). For more privacy informa [roadmap]: https://github.com/microsoft/PowerToys/wiki/Roadmap [privacy-link]: http://go.microsoft.com/fwlink/?LinkId=521839 [loc-bug]: https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=&template=translation_issue.md&title= -[usingPowerToys-docs-link]: https://aka.ms/powertoys-docs \ No newline at end of file +[usingPowerToys-docs-link]: https://aka.ms/powertoys-docs From cd5f7531404b8a2a467da617308cc7658f84543f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pol=C3=A1=C5=A1ek?= Date: Thu, 23 Oct 2025 23:53:06 +0200 Subject: [PATCH 7/9] CmdPal: Migrate bookmarks manually (#42814) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary of the Pull Request This PR fixes the migration of bookmarks from versions prior to 0.95, resolving an issue where hotkeys and aliases wouldn’t persist on bookmarks created with Command Palette 0.94 or earlier. It removes ID auto-fixing from `BookmarkData` in favor of an explicit migration step handled by `BookmarkManager`. ## PR Checklist - [x] Closes: #42796 - [ ] **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 ## Validation Steps Performed --- .../BookmarkManagerTests.cs | 44 +++++++++++++++++++ .../MockBookmarkDataSource.cs | 24 ++++++++++ .../BookmarksManager.cs | 28 +++++++++++- .../Persistence/BookmarkData.cs | 2 +- 4 files changed, 96 insertions(+), 2 deletions(-) diff --git a/src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Bookmarks.UnitTests/BookmarkManagerTests.cs b/src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Bookmarks.UnitTests/BookmarkManagerTests.cs index 0751b5afe3..b4e533d66d 100644 --- a/src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Bookmarks.UnitTests/BookmarkManagerTests.cs +++ b/src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Bookmarks.UnitTests/BookmarkManagerTests.cs @@ -186,4 +186,48 @@ public class BookmarkManagerTests Assert.AreEqual("D:\\UpdatedPath", updatedBookmark.Bookmark); Assert.IsTrue(bookmarkUpdatedEventFired); } + + [TestMethod] + public void BookmarkManager_LegacyData_IdsArePersistedAcrossLoads() + { + // Arrange + const string json = """ + { + "Data": + [ + { "Name": "C:\\","Bookmark": "C:\\" }, + { "Name": "Bing.com","Bookmark": "https://bing.com" } + ] + } + """; + + var dataSource = new MockBookmarkDataSource(json); + + // First load: IDs should be generated for legacy entries + var manager1 = new BookmarksManager(dataSource); + var firstLoad = manager1.Bookmarks.ToList(); + Assert.AreEqual(2, firstLoad.Count); + Assert.AreNotEqual(Guid.Empty, firstLoad[0].Id); + Assert.AreNotEqual(Guid.Empty, firstLoad[1].Id); + + // Keep a name->id map to be insensitive to ordering + var firstIdsByName = firstLoad.ToDictionary(b => b.Name, b => b.Id); + + // Wait deterministically for async persistence to complete + var wasSaved = dataSource.WaitForSave(1, 5000); + Assert.IsTrue(wasSaved, "Data was not saved within the expected time."); + + // Second load: should read back the same IDs from persisted data + var manager2 = new BookmarksManager(dataSource); + var secondLoad = manager2.Bookmarks.ToList(); + Assert.AreEqual(2, secondLoad.Count); + + var secondIdsByName = secondLoad.ToDictionary(b => b.Name, b => b.Id); + + foreach (var kvp in firstIdsByName) + { + Assert.IsTrue(secondIdsByName.ContainsKey(kvp.Key), $"Missing bookmark '{kvp.Key}' after reload."); + Assert.AreEqual(kvp.Value, secondIdsByName[kvp.Key], $"Bookmark '{kvp.Key}' upgraded ID was not persisted across loads."); + } + } } diff --git a/src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Bookmarks.UnitTests/MockBookmarkDataSource.cs b/src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Bookmarks.UnitTests/MockBookmarkDataSource.cs index 3980ac13c6..02d71d6d77 100644 --- a/src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Bookmarks.UnitTests/MockBookmarkDataSource.cs +++ b/src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Bookmarks.UnitTests/MockBookmarkDataSource.cs @@ -2,6 +2,8 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; +using System.Threading; using Microsoft.CmdPal.Ext.Bookmarks.Persistence; namespace Microsoft.CmdPal.Ext.Bookmarks.UnitTests; @@ -9,6 +11,7 @@ namespace Microsoft.CmdPal.Ext.Bookmarks.UnitTests; internal sealed class MockBookmarkDataSource : IBookmarkDataSource { private string _jsonData; + private int _saveCount; public MockBookmarkDataSource(string initialJsonData = "[]") { @@ -23,5 +26,26 @@ internal sealed class MockBookmarkDataSource : IBookmarkDataSource public void SaveBookmarkData(string jsonData) { _jsonData = jsonData; + Interlocked.Increment(ref _saveCount); + } + + public int SaveCount => Volatile.Read(ref _saveCount); + + // Waits until at least expectedMinSaves have occurred or the timeout elapses. + // Returns true if the condition was met, false on timeout. + public bool WaitForSave(int expectedMinSaves = 1, int timeoutMs = 2000) + { + var start = Environment.TickCount; + while (Volatile.Read(ref _saveCount) < expectedMinSaves) + { + if (Environment.TickCount - start > timeoutMs) + { + return false; + } + + Thread.Sleep(50); + } + + return true; } } diff --git a/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Bookmark/BookmarksManager.cs b/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Bookmark/BookmarksManager.cs index 1eb57fb7eb..fde574360f 100644 --- a/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Bookmark/BookmarksManager.cs +++ b/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Bookmark/BookmarksManager.cs @@ -103,7 +103,33 @@ internal sealed partial class BookmarksManager : IDisposable, IBookmarksManager try { var jsonData = _dataSource.GetBookmarkData(); - _bookmarksData = _parser.ParseBookmarks(jsonData); + var bookmarksData = _parser.ParseBookmarks(jsonData); + + // Upgrade old bookmarks if necessary + // Pre .95 versions did not assign IDs to bookmarks + var upgraded = false; + for (var index = 0; index < bookmarksData.Data.Count; index++) + { + var bookmark = bookmarksData.Data[index]; + if (bookmark.Id == Guid.Empty) + { + bookmarksData.Data[index] = bookmark with { Id = Guid.NewGuid() }; + upgraded = true; + } + } + + lock (_lock) + { + _bookmarksData = bookmarksData; + } + + // LOAD BEARING: Save upgraded data back to file + // This ensures that old bookmarks are not repeatedly upgraded on each load, + // as the hotkeys and aliases are tied to the generated bookmark IDs. + if (upgraded) + { + _ = SaveChangesAsync(); + } } catch (Exception ex) { diff --git a/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Bookmark/Persistence/BookmarkData.cs b/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Bookmark/Persistence/BookmarkData.cs index 3129e1b578..b577f9cb35 100644 --- a/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Bookmark/Persistence/BookmarkData.cs +++ b/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Bookmark/Persistence/BookmarkData.cs @@ -19,7 +19,7 @@ public sealed record BookmarkData [SetsRequiredMembers] public BookmarkData(Guid id, string? name, string? bookmark) { - Id = id == Guid.Empty ? Guid.NewGuid() : id; + Id = id; Name = name ?? string.Empty; Bookmark = bookmark ?? string.Empty; } From a69f7fa806539e0de6e9e901b4f651c512fdd54f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pol=C3=A1=C5=A1ek?= Date: Thu, 23 Oct 2025 23:57:12 +0200 Subject: [PATCH 8/9] CmdPal: Update top-level item view model to reflect change of the associated command (#42806) ## Summary of the Pull Request This PR implements a fix that ensures the top-level command's alias, hotkey, and tags are automatically updated whenever the associated command is modified, as the command defines the actual identity of the item. ## PR Checklist - [x] Closes: #42796 - [x] Related to: #42807 - [ ] **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 ## Validation Steps Performed --- .../cmdpal/Microsoft.CmdPal.UI.ViewModels/TopLevelViewModel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/TopLevelViewModel.cs b/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/TopLevelViewModel.cs index 9d05e8019f..fc5e36d1e2 100644 --- a/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/TopLevelViewModel.cs +++ b/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/TopLevelViewModel.cs @@ -219,7 +219,7 @@ public sealed partial class TopLevelViewModel : ObservableObject, IListItem { PropChanged?.Invoke(this, new PropChangedEventArgs(e.PropertyName)); - if (e.PropertyName == "IsInitialized") + if (e.PropertyName is "IsInitialized" or nameof(CommandItemViewModel.Command)) { GenerateId(); From c71fdca277c971434a4e283fb357806ed1b102cd Mon Sep 17 00:00:00 2001 From: Kai Tao <69313318+vanzue@users.noreply.github.com> Date: Fri, 24 Oct 2025 10:24:39 +0800 Subject: [PATCH 9/9] Hybrid CRT for powertys (#42073) ## Summary of the Pull Request Hybrid CRT across powertoys for better bundle size ## PR Checklist - [ ] 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 ## Detailed Description of the Pull Request / Additional comments ## Validation Steps Performed Bundle Size comparasion: | bundle | Before Hybrid CRT | After Hybrid CRT | diff | |---------------|-------------------|------------------|------| | x64-user | 317M | 310M | 7M | | x64-machine | 317M |310M | 7M | | arm64-user | 305M | 299M | 6M | | arm64-machine | 305M | 299M | 6M | Did verification on a sandbox machine, every module launches as expected, no dependency issue --- Cpp.Build.props | 52 +++++++++++++++++- .../PowerToysSetupCustomActionsVNext.vcxproj | 3 - .../PowerToysSetupVNext/Directory.Build.props | 3 +- .../SilentFilesInUseBAFunction.vcxproj | 55 ++----------------- .../SilentFilesInUseBAFunctions.cpp | 8 +-- .../CalculatorEngineCommon.vcxproj | 50 +---------------- src/common/interop/PowerToys.Interop.vcxproj | 2 - .../BackgroundActivator.vcxproj | 10 ---- .../CropAndLock/CropAndLock.vcxproj | 4 -- .../FileLocksmithLibInterop.vcxproj | 2 - .../FindMyMouse/FindMyMouse.vcxproj | 2 - .../MouseHighlighter/MouseHighlighter.vcxproj | 2 - .../MouseUtils/MouseJump/MouseJump.vcxproj | 2 - .../MousePointerCrosshairs.vcxproj | 2 - .../NewShellExtensionContextMenu.vcxproj | 4 -- .../WorkspacesLauncher.vcxproj | 2 - .../WorkspacesSnapshotTool.vcxproj | 2 - .../WorkspacesWindowArranger.vcxproj | 2 - src/modules/ZoomIt/ZoomIt/ZoomIt.vcxproj | 6 -- .../AlwaysOnTop/AlwaysOnTop.vcxproj | 2 - .../CmdPalKeyboardService.vcxproj | 39 ------------- .../Microsoft.Terminal.UI.vcxproj | 24 -------- ...icrosoft.CommandPalette.Extensions.vcxproj | 28 ---------- .../fancyzones/FancyZones/FancyZones.vcxproj | 2 - .../KeyboardManagerEditor.vcxproj | 2 - .../PowerRename.FuzzingTest.vcxproj | 1 - .../ModuleTemplate/ModuleTemplate.vcxproj | 2 - .../ModuleTemplateCompileTest.vcxproj | 2 - 28 files changed, 59 insertions(+), 256 deletions(-) diff --git a/Cpp.Build.props b/Cpp.Build.props index 5a4538f940..99738fd0dc 100644 --- a/Cpp.Build.props +++ b/Cpp.Build.props @@ -1,6 +1,56 @@ + + + $(Configuration) + + + + + + + + + + + MultiThreadedDebug + + + + %(IgnoreSpecificDefaultLibraries);libucrtd.lib + %(AdditionalOptions) /defaultlib:ucrtd.lib + + + + + + MultiThreaded + + + + %(IgnoreSpecificDefaultLibraries);libucrt.lib + %(AdditionalOptions) /defaultlib:ucrt.lib + + + + + + + MultiThreadedDebugDLL + + + + + MultiThreadedDLL + + @@ -73,7 +123,6 @@ _DEBUG;%(PreprocessorDefinitions) Disabled - MultiThreadedDebug true @@ -83,7 +132,6 @@ NDEBUG;%(PreprocessorDefinitions) MaxSpeed - MultiThreaded true true diff --git a/installer/PowerToysSetupCustomActionsVNext/PowerToysSetupCustomActionsVNext.vcxproj b/installer/PowerToysSetupCustomActionsVNext/PowerToysSetupCustomActionsVNext.vcxproj index 7cd49be6ea..3dca775d92 100644 --- a/installer/PowerToysSetupCustomActionsVNext/PowerToysSetupCustomActionsVNext.vcxproj +++ b/installer/PowerToysSetupCustomActionsVNext/PowerToysSetupCustomActionsVNext.vcxproj @@ -38,7 +38,6 @@ $(Platform)\$(Configuration)\UserSetup\ $(SolutionDir)$(ProjectName)\$(Platform)\$(Configuration)\MachineSetup\obj\ $(SolutionDir)$(ProjectName)\$(Platform)\$(Configuration)\UserSetup\obj\ - false true @@ -115,7 +114,6 @@ Disabled _DEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions) EnableFastChecks - MultiThreadedDebug true @@ -128,7 +126,6 @@ MaxSpeed true NDEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions) - MultiThreaded true diff --git a/installer/PowerToysSetupVNext/Directory.Build.props b/installer/PowerToysSetupVNext/Directory.Build.props index 505e3cf844..69a63832d1 100644 --- a/installer/PowerToysSetupVNext/Directory.Build.props +++ b/installer/PowerToysSetupVNext/Directory.Build.props @@ -1,4 +1,5 @@ + @@ -8,4 +9,4 @@ $(BaseIntermediateOutputPath) - + \ No newline at end of file diff --git a/installer/PowerToysSetupVNext/SilentFilesInUseBA/SilentFilesInUseBAFunction.vcxproj b/installer/PowerToysSetupVNext/SilentFilesInUseBA/SilentFilesInUseBAFunction.vcxproj index 3972c1b0f7..d45e32f87c 100644 --- a/installer/PowerToysSetupVNext/SilentFilesInUseBA/SilentFilesInUseBAFunction.vcxproj +++ b/installer/PowerToysSetupVNext/SilentFilesInUseBA/SilentFilesInUseBAFunction.vcxproj @@ -1,30 +1,7 @@ - - - - - Debug - ARM64 - - - Release - ARM64 - - - Debug - x64 - - - Release - x64 - - - {F8B9F842-F5C3-4A2D-8C85-7F8B9E2B4F1D} - DynamicLibrary - Unicode SilentFilesInUseBAFunction PowerToysSetupCustomActionsVNext bafunctions.def @@ -33,7 +10,6 @@ - DynamicLibrary true @@ -65,7 +41,10 @@ - + + Use + precomp.h + Create precomp.h @@ -92,31 +71,5 @@ - - - - _DEBUG;%(PreprocessorDefinitions) - Disabled - MultiThreadedDebug - - - true - - - - - NDEBUG;%(PreprocessorDefinitions) - MaxSpeed - MultiThreaded - true - true - - - true - true - true - - - diff --git a/installer/PowerToysSetupVNext/SilentFilesInUseBA/SilentFilesInUseBAFunctions.cpp b/installer/PowerToysSetupVNext/SilentFilesInUseBA/SilentFilesInUseBAFunctions.cpp index 9b9e5d570f..ceccde5f0d 100644 --- a/installer/PowerToysSetupVNext/SilentFilesInUseBA/SilentFilesInUseBAFunctions.cpp +++ b/installer/PowerToysSetupVNext/SilentFilesInUseBA/SilentFilesInUseBAFunctions.cpp @@ -18,7 +18,6 @@ public: // IBootstrapperApplication BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** CUSTOM BA FUNCTION SYSTEM ACTIVE *** Running detect begin BA function. fCached=%d, registrationType=%d, cPackages=%u, fCancel=%d", fCached, registrationType, cPackages, *pfCancel); - LExit: return hr; } @@ -32,12 +31,6 @@ public: // IBAFunctions BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** CUSTOM BA FUNCTION SYSTEM ACTIVE *** Running plan begin BA function. cPackages=%u, fCancel=%d", cPackages, *pfCancel); - //------------------------------------------------------------------------------------------------- - // YOUR CODE GOES HERE - // BalExitOnFailure(hr, "Change this message to represent real error handling."); - //------------------------------------------------------------------------------------------------- - - LExit: return hr; } @@ -63,6 +56,7 @@ public: // IBAFunctions ) { HRESULT hr = S_OK; + UNREFERENCED_PARAMETER(source); BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** CUSTOM BA FUNCTION CALLED *** Running OnExecuteFilesInUse BA function. packageId=%ls, cFiles=%u, recommendation=%d", wzPackageId, cFiles, nRecommendation); diff --git a/src/common/CalculatorEngineCommon/CalculatorEngineCommon.vcxproj b/src/common/CalculatorEngineCommon/CalculatorEngineCommon.vcxproj index 43f4749892..ff9332cfc0 100644 --- a/src/common/CalculatorEngineCommon/CalculatorEngineCommon.vcxproj +++ b/src/common/CalculatorEngineCommon/CalculatorEngineCommon.vcxproj @@ -9,12 +9,6 @@ CalculatorEngineCommon false - - - true - false - - true @@ -25,11 +19,9 @@ true - true + false true Windows Store - false - @@ -148,43 +140,5 @@ - - - - - - - MultiThreadedDebug - stdcpp17 - - - - %(IgnoreSpecificDefaultLibraries);libucrtd.lib - %(AdditionalOptions) /defaultlib:ucrtd.lib - - - - - - MultiThreaded - - - - %(IgnoreSpecificDefaultLibraries);libucrt.lib - %(AdditionalOptions) /defaultlib:ucrt.lib - - - + \ No newline at end of file diff --git a/src/common/interop/PowerToys.Interop.vcxproj b/src/common/interop/PowerToys.Interop.vcxproj index ca29e69cce..472119925e 100644 --- a/src/common/interop/PowerToys.Interop.vcxproj +++ b/src/common/interop/PowerToys.Interop.vcxproj @@ -63,14 +63,12 @@ - MultiThreadedDebug true true - MultiThreaded false true false diff --git a/src/common/notifications/BackgroundActivator/BackgroundActivator.vcxproj b/src/common/notifications/BackgroundActivator/BackgroundActivator.vcxproj index 077333a664..b2ebc7cb72 100644 --- a/src/common/notifications/BackgroundActivator/BackgroundActivator.vcxproj +++ b/src/common/notifications/BackgroundActivator/BackgroundActivator.vcxproj @@ -46,16 +46,6 @@ notifications - - - MultiThreadedDebugDLL - - - - - MultiThreadedDLL - - $(IntDir)pch.pch diff --git a/src/modules/CropAndLock/CropAndLock/CropAndLock.vcxproj b/src/modules/CropAndLock/CropAndLock/CropAndLock.vcxproj index c3e9e4f3f1..71b535c629 100644 --- a/src/modules/CropAndLock/CropAndLock/CropAndLock.vcxproj +++ b/src/modules/CropAndLock/CropAndLock/CropAndLock.vcxproj @@ -82,8 +82,6 @@ Disabled _DEBUG;%(PreprocessorDefinitions) - MultiThreadedDebug - MultiThreadedDebug false @@ -95,8 +93,6 @@ true true NDEBUG;%(PreprocessorDefinitions) - MultiThreaded - MultiThreaded true diff --git a/src/modules/FileLocksmith/FileLocksmithLibInterop/FileLocksmithLibInterop.vcxproj b/src/modules/FileLocksmith/FileLocksmithLibInterop/FileLocksmithLibInterop.vcxproj index c4489cdad8..184eec3342 100644 --- a/src/modules/FileLocksmith/FileLocksmithLibInterop/FileLocksmithLibInterop.vcxproj +++ b/src/modules/FileLocksmith/FileLocksmithLibInterop/FileLocksmithLibInterop.vcxproj @@ -39,7 +39,6 @@ _DEBUG;%(PreprocessorDefinitions) - MultiThreadedDebugDLL true true @@ -49,7 +48,6 @@ NDEBUG;%(PreprocessorDefinitions) true true - MultiThreadedDLL false true false diff --git a/src/modules/MouseUtils/FindMyMouse/FindMyMouse.vcxproj b/src/modules/MouseUtils/FindMyMouse/FindMyMouse.vcxproj index d127de245e..0f444134ec 100644 --- a/src/modules/MouseUtils/FindMyMouse/FindMyMouse.vcxproj +++ b/src/modules/MouseUtils/FindMyMouse/FindMyMouse.vcxproj @@ -64,7 +64,6 @@ true _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - MultiThreadedDebug stdcpplatest @@ -82,7 +81,6 @@ true NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - MultiThreaded stdcpplatest diff --git a/src/modules/MouseUtils/MouseHighlighter/MouseHighlighter.vcxproj b/src/modules/MouseUtils/MouseHighlighter/MouseHighlighter.vcxproj index df0df021da..ecd6ea3ec4 100644 --- a/src/modules/MouseUtils/MouseHighlighter/MouseHighlighter.vcxproj +++ b/src/modules/MouseUtils/MouseHighlighter/MouseHighlighter.vcxproj @@ -48,7 +48,6 @@ true _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - MultiThreadedDebug stdcpplatest @@ -66,7 +65,6 @@ true NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - MultiThreaded stdcpplatest diff --git a/src/modules/MouseUtils/MouseJump/MouseJump.vcxproj b/src/modules/MouseUtils/MouseJump/MouseJump.vcxproj index 29e8f444bf..89abed873a 100644 --- a/src/modules/MouseUtils/MouseJump/MouseJump.vcxproj +++ b/src/modules/MouseUtils/MouseJump/MouseJump.vcxproj @@ -48,7 +48,6 @@ true _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - MultiThreadedDebug stdcpplatest @@ -66,7 +65,6 @@ true NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - MultiThreaded stdcpplatest diff --git a/src/modules/MouseUtils/MousePointerCrosshairs/MousePointerCrosshairs.vcxproj b/src/modules/MouseUtils/MousePointerCrosshairs/MousePointerCrosshairs.vcxproj index 58668c663f..7fef06e960 100644 --- a/src/modules/MouseUtils/MousePointerCrosshairs/MousePointerCrosshairs.vcxproj +++ b/src/modules/MouseUtils/MousePointerCrosshairs/MousePointerCrosshairs.vcxproj @@ -49,7 +49,6 @@ true _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - MultiThreadedDebug stdcpplatest @@ -67,7 +66,6 @@ true NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - MultiThreaded stdcpplatest diff --git a/src/modules/NewPlus/NewShellExtensionContextMenu/NewShellExtensionContextMenu.vcxproj b/src/modules/NewPlus/NewShellExtensionContextMenu/NewShellExtensionContextMenu.vcxproj index 90058a503e..6685afafc2 100644 --- a/src/modules/NewPlus/NewShellExtensionContextMenu/NewShellExtensionContextMenu.vcxproj +++ b/src/modules/NewPlus/NewShellExtensionContextMenu/NewShellExtensionContextMenu.vcxproj @@ -67,8 +67,6 @@ false dll.def runtimeobject.lib;$(CoreLibraryDependencies) - - del $(OutDir)\NewPlusPackage.msix /q @@ -100,8 +98,6 @@ MakeAppx.exe pack /d . /p $(OutDir)NewPlusPackage.msix /nv false dll.def runtimeobject.lib;$(CoreLibraryDependencies) - - del $(OutDir)\NewPlusPackage.msix /q diff --git a/src/modules/Workspaces/WorkspacesLauncher/WorkspacesLauncher.vcxproj b/src/modules/Workspaces/WorkspacesLauncher/WorkspacesLauncher.vcxproj index 9d4fc4bcab..7be5219a9f 100644 --- a/src/modules/Workspaces/WorkspacesLauncher/WorkspacesLauncher.vcxproj +++ b/src/modules/Workspaces/WorkspacesLauncher/WorkspacesLauncher.vcxproj @@ -29,7 +29,6 @@ _DEBUG;%(PreprocessorDefinitions) Disabled true - MultiThreadedDebug true @@ -40,7 +39,6 @@ NDEBUG;%(PreprocessorDefinitions) MaxSpeed false - MultiThreaded true true diff --git a/src/modules/Workspaces/WorkspacesSnapshotTool/WorkspacesSnapshotTool.vcxproj b/src/modules/Workspaces/WorkspacesSnapshotTool/WorkspacesSnapshotTool.vcxproj index 05e4241c1c..ad7a96ec84 100644 --- a/src/modules/Workspaces/WorkspacesSnapshotTool/WorkspacesSnapshotTool.vcxproj +++ b/src/modules/Workspaces/WorkspacesSnapshotTool/WorkspacesSnapshotTool.vcxproj @@ -29,7 +29,6 @@ _DEBUG;%(PreprocessorDefinitions) Disabled true - MultiThreadedDebug true @@ -40,7 +39,6 @@ NDEBUG;%(PreprocessorDefinitions) MaxSpeed false - MultiThreaded true true diff --git a/src/modules/Workspaces/WorkspacesWindowArranger/WorkspacesWindowArranger.vcxproj b/src/modules/Workspaces/WorkspacesWindowArranger/WorkspacesWindowArranger.vcxproj index 2451be2470..4555f6257b 100644 --- a/src/modules/Workspaces/WorkspacesWindowArranger/WorkspacesWindowArranger.vcxproj +++ b/src/modules/Workspaces/WorkspacesWindowArranger/WorkspacesWindowArranger.vcxproj @@ -29,7 +29,6 @@ _DEBUG;%(PreprocessorDefinitions) Disabled true - MultiThreadedDebug true @@ -40,7 +39,6 @@ NDEBUG;%(PreprocessorDefinitions) MaxSpeed false - MultiThreaded true true diff --git a/src/modules/ZoomIt/ZoomIt/ZoomIt.vcxproj b/src/modules/ZoomIt/ZoomIt/ZoomIt.vcxproj index d054d2b4bd..f12898dbd4 100644 --- a/src/modules/ZoomIt/ZoomIt/ZoomIt.vcxproj +++ b/src/modules/ZoomIt/ZoomIt/ZoomIt.vcxproj @@ -81,7 +81,6 @@ MaxSpeed __ZOOMIT_POWERTOYS__;_UNICODE;UNICODE;WINVER=0x602;NDEBUG;_WIN32_WINNT=0x602;_WIN32_WINDOWS=0x501;WIN32;_WINDOWS;MSVC6=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true - MultiThreaded true @@ -103,7 +102,6 @@ MaxSpeed __ZOOMIT_POWERTOYS__;_UNICODE;UNICODE;WINVER=0x602;NDEBUG;_WIN32_WINNT=0x602;_WIN32_WINDOWS=0x501;WIN32;_WINDOWS;MSVC6=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true - MultiThreaded true @@ -126,7 +124,6 @@ MaxSpeed __ZOOMIT_POWERTOYS__;_UNICODE;UNICODE;WINVER=0x602;NDEBUG;_WIN32_WINNT=0x602;_WIN32_WINDOWS=0x501;WIN32;_WINDOWS;MSVC6=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true - MultiThreaded true @@ -148,7 +145,6 @@ Disabled __ZOOMIT_POWERTOYS__;_UNICODE;UNICODE;WINVER=0x0602;_DEBUG;_WIN32_WINNT=0x602.MSVC6;_WIN32_WINDOWS=0x600;WIN32;_WINDOWS;_WIN32_WINNT=0x602;MSVC6=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks - MultiThreadedDebug _DEBUG;_M_IX86;%(PreprocessorDefinitions) @@ -169,7 +165,6 @@ Disabled __ZOOMIT_POWERTOYS__;_UNICODE;UNICODE;WINVER=0x0602;_DEBUG;_WIN32_WINNT=0x602.MSVC6;_WIN32_WINDOWS=0x600;WIN32;_WINDOWS;_WIN32_WINNT=0x602;MSVC6=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks - MultiThreadedDebug _DEBUG;_M_X64;%(PreprocessorDefinitions) @@ -191,7 +186,6 @@ Disabled __ZOOMIT_POWERTOYS__;_UNICODE;UNICODE;WINVER=0x0602;_DEBUG;_WIN32_WINNT=0x602.MSVC6;_WIN32_WINDOWS=0x600;WIN32;_WINDOWS;_WIN32_WINNT=0x602;MSVC6=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks - MultiThreadedDebug _DEBUG;_M_ARM64;%(PreprocessorDefinitions) diff --git a/src/modules/alwaysontop/AlwaysOnTop/AlwaysOnTop.vcxproj b/src/modules/alwaysontop/AlwaysOnTop/AlwaysOnTop.vcxproj index bf3e5c6851..5adad25bac 100644 --- a/src/modules/alwaysontop/AlwaysOnTop/AlwaysOnTop.vcxproj +++ b/src/modules/alwaysontop/AlwaysOnTop/AlwaysOnTop.vcxproj @@ -29,7 +29,6 @@ _DEBUG;%(PreprocessorDefinitions) Disabled true - MultiThreadedDebug true @@ -40,7 +39,6 @@ NDEBUG;%(PreprocessorDefinitions) MaxSpeed false - MultiThreaded true true diff --git a/src/modules/cmdpal/CmdPalKeyboardService/CmdPalKeyboardService.vcxproj b/src/modules/cmdpal/CmdPalKeyboardService/CmdPalKeyboardService.vcxproj index f891ce96e6..4e20f55383 100644 --- a/src/modules/cmdpal/CmdPalKeyboardService/CmdPalKeyboardService.vcxproj +++ b/src/modules/cmdpal/CmdPalKeyboardService/CmdPalKeyboardService.vcxproj @@ -141,43 +141,4 @@ - - - - - - - MultiThreadedDebug - - - - %(IgnoreSpecificDefaultLibraries);libucrtd.lib - %(AdditionalOptions) /defaultlib:ucrtd.lib - - - - - - MultiThreaded - - - - %(IgnoreSpecificDefaultLibraries);libucrt.lib - %(AdditionalOptions) /defaultlib:ucrt.lib - - - - \ No newline at end of file diff --git a/src/modules/cmdpal/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj b/src/modules/cmdpal/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj index 6e474cf5f3..347b5a1bc6 100644 --- a/src/modules/cmdpal/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj +++ b/src/modules/cmdpal/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj @@ -74,35 +74,11 @@ stdcpp20 - - - MultiThreadedDebug - - - - %(IgnoreSpecificDefaultLibraries);libucrtd.lib - %(AdditionalOptions) /defaultlib:ucrtd.lib /profile /opt:ref /opt:icf - stdcpp20 - - - MultiThreaded - - - - %(IgnoreSpecificDefaultLibraries);libucrt.lib - %(AdditionalOptions) /defaultlib:ucrt.lib /profile /opt:ref /opt:icf - diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CommandPalette.Extensions/Microsoft.CommandPalette.Extensions.vcxproj b/src/modules/cmdpal/extensionsdk/Microsoft.CommandPalette.Extensions/Microsoft.CommandPalette.Extensions.vcxproj index a6cad871ab..92baf3dfa6 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CommandPalette.Extensions/Microsoft.CommandPalette.Extensions.vcxproj +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CommandPalette.Extensions/Microsoft.CommandPalette.Extensions.vcxproj @@ -68,34 +68,6 @@ true false - - - - MultiThreadedDebug - - - - %(IgnoreSpecificDefaultLibraries);libucrtd.lib - %(AdditionalOptions) /defaultlib:ucrtd.lib /profile /opt:ref /opt:icf - - - - - - MultiThreaded - - - - %(IgnoreSpecificDefaultLibraries);libucrt.lib - %(AdditionalOptions) /defaultlib:ucrt.lib /profile /opt:ref /opt:icf - - diff --git a/src/modules/fancyzones/FancyZones/FancyZones.vcxproj b/src/modules/fancyzones/FancyZones/FancyZones.vcxproj index b54ee19e34..7aab504830 100644 --- a/src/modules/fancyzones/FancyZones/FancyZones.vcxproj +++ b/src/modules/fancyzones/FancyZones/FancyZones.vcxproj @@ -26,7 +26,6 @@ _DEBUG;%(PreprocessorDefinitions) Disabled true - MultiThreadedDebug true @@ -37,7 +36,6 @@ NDEBUG;%(PreprocessorDefinitions) MaxSpeed false - MultiThreaded true true diff --git a/src/modules/keyboardmanager/KeyboardManagerEditor/KeyboardManagerEditor.vcxproj b/src/modules/keyboardmanager/KeyboardManagerEditor/KeyboardManagerEditor.vcxproj index 3c124d63e4..8a4fa95889 100644 --- a/src/modules/keyboardmanager/KeyboardManagerEditor/KeyboardManagerEditor.vcxproj +++ b/src/modules/keyboardmanager/KeyboardManagerEditor/KeyboardManagerEditor.vcxproj @@ -30,7 +30,6 @@ _DEBUG;%(PreprocessorDefinitions) Disabled true - MultiThreadedDebug true @@ -41,7 +40,6 @@ NDEBUG;%(PreprocessorDefinitions) MaxSpeed false - MultiThreaded true true diff --git a/src/modules/powerrename/PowerRename.FuzzingTest/PowerRename.FuzzingTest.vcxproj b/src/modules/powerrename/PowerRename.FuzzingTest/PowerRename.FuzzingTest.vcxproj index f9e245559c..1a7ca91972 100644 --- a/src/modules/powerrename/PowerRename.FuzzingTest/PowerRename.FuzzingTest.vcxproj +++ b/src/modules/powerrename/PowerRename.FuzzingTest/PowerRename.FuzzingTest.vcxproj @@ -44,7 +44,6 @@ true NotUsing /fsanitize=address /fsanitize-coverage=inline-8bit-counters /fsanitize-coverage=edge /fsanitize-coverage=trace-cmp /fsanitize-coverage=trace-div %(AdditionalOptions) - MultiThreaded stdcpplatest ..\;..\lib\;..\..\..\;%(AdditionalIncludeDirectories) diff --git a/tools/project_template/ModuleTemplate/ModuleTemplate.vcxproj b/tools/project_template/ModuleTemplate/ModuleTemplate.vcxproj index 028007de67..39c656a6cc 100644 --- a/tools/project_template/ModuleTemplate/ModuleTemplate.vcxproj +++ b/tools/project_template/ModuleTemplate/ModuleTemplate.vcxproj @@ -46,7 +46,6 @@ true _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - MultiThreadedDebug stdcpplatest @@ -64,7 +63,6 @@ true NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - MultiThreaded stdcpplatest diff --git a/tools/project_template/ModuleTemplate/ModuleTemplateCompileTest.vcxproj b/tools/project_template/ModuleTemplate/ModuleTemplateCompileTest.vcxproj index 297516b0d5..a1ef0522aa 100644 --- a/tools/project_template/ModuleTemplate/ModuleTemplateCompileTest.vcxproj +++ b/tools/project_template/ModuleTemplate/ModuleTemplateCompileTest.vcxproj @@ -47,7 +47,6 @@ Disabled true _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - MultiThreadedDebug stdcpplatest @@ -64,7 +63,6 @@ true true NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - MultiThreaded stdcpplatest