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.
---
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