@@ -76,6 +26,7 @@
true
$(MsbuildThisFileDirectory)\CppRuleSet.ruleset
+ $(MSBuildThisFileDirectory)deps;$(MSBuildThisFileDirectory)packages;$(CAExcludePath)
@@ -84,7 +35,7 @@
arm64
false
true
- $(MSBuildThisFileFullPath)\..\deps\;$(MSBuildThisFileFullPath)\..\packages\;$(ExternalIncludePath)
+ $(MSBuildThisFileDirectory)deps;$(MSBuildThisFileDirectory)packages;$(ExternalIncludePath)
Guard
@@ -123,6 +74,7 @@
_DEBUG;%(PreprocessorDefinitions)
Disabled
+ MultiThreadedDebug
true
@@ -132,6 +84,7 @@
NDEBUG;%(PreprocessorDefinitions)
MaxSpeed
+ MultiThreaded
true
true
diff --git a/DATA_AND_PRIVACY.md b/DATA_AND_PRIVACY.md
index 56a2eb9eee..0ad4bda9c9 100644
--- a/DATA_AND_PRIVACY.md
+++ b/DATA_AND_PRIVACY.md
@@ -147,6 +147,18 @@ _If you want to find diagnostic data events in the source code, these two links
Microsoft.PowerToys.AdvancedPasteSemanticKernelFormatEvent
Triggered when Advanced Paste leverages the Semantic Kernel.
+
+ Microsoft.PowerToys.AdvancedPasteSemanticKernelErrorEvent
+ Occurs when the Semantic Kernel workflow encounters an error.
+
+
+ Microsoft.PowerToys.AdvancedPasteEndpointUsageEvent
+ Logs the AI provider, model, and processing duration for each endpoint call.
+
+
+ Microsoft.PowerToys.AdvancedPasteCustomActionErrorEvent
+ Records provider, model, and status details when a custom action fails.
+
### Always on Top
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 9f01103d8f..a88ac0ec38 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -7,6 +7,7 @@
+
@@ -51,10 +52,8 @@
-
-
diff --git a/NOTICE.md b/NOTICE.md
index a0d87d429c..6ca3cbfceb 100644
--- a/NOTICE.md
+++ b/NOTICE.md
@@ -1498,6 +1498,7 @@ SOFTWARE.
- CoenM.ImageSharp.ImageHash
- CommunityToolkit.Common
- CommunityToolkit.Labs.WinUI.Controls.MarkdownTextBlock
+- CommunityToolkit.Labs.WinUI.Controls.OpacityMaskView
- CommunityToolkit.Mvvm
- CommunityToolkit.WinUI.Animations
- CommunityToolkit.WinUI.Collections
diff --git a/README.md b/README.md
index 067d6d6f50..ab53e53a46 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,9 @@
Microsoft PowerToys
-
+
+ Microsoft PowerToys is a collection of utilities that help you customize Windows and streamline everyday tasks.
+
-Microsoft PowerToys is a collection of utilities that help you customize Windows and streamline everyday tasks.
-
+
+## 🔨 Utilities
+
+PowerToys includes over 25 utilities to help you customize and optimize your Windows experience:
| | | |
|---|---|---|
@@ -37,20 +41,13 @@ Microsoft PowerToys is a collection of utilities that help you customize Windows
## 📋 Installation
-For detailed installation instructions, visit the [installation docs](https://learn.microsoft.com/windows/powertoys/install).
-
-Before you begin, make sure your device meets the system requirements:
-
-> [!NOTE]
-> - Windows 11 or Windows 10 version 2004 (20H1 / build 19041) or newer
-> - 64-bit processor: x64 or ARM64
-> - Latest stable version of [Microsoft Edge WebView2 Runtime](https://go.microsoft.com/fwlink/p/?LinkId=2124703) is installed via the bootstrapper during setup
-
-Choose one of the installation methods below:
+For detailed installation instructions and system requirements, visit the [installation docs](https://learn.microsoft.com/windows/powertoys/install).
+But to get started quickly, choose one of the installation methods below:
+
-Download .exe from GitHub
-
+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.
@@ -67,11 +64,11 @@ Go to the [PowerToys GitHub releases][github-release-link], click Assets to reve
| 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] |
-
-Microsoft Store
+Microsoft Store
+
You can easily install PowerToys from the Microsoft Store:
@@ -82,10 +79,9 @@ You can easily install PowerToys from the Microsoft Store:
-
-WinGet
-
+WinGet
+
Download PowerToys from [WinGet][winget-link]. Updating PowerToys via winget will respect the current PowerToys installation scope. To install PowerToys, run the following command from the command line / PowerShell:
*User scope installer [default]*
@@ -100,8 +96,8 @@ winget install --scope machine Microsoft.PowerToys -s winget
-Other methods
-
+Other methods
+
There are [community driven install methods](./doc/unofficialInstallMethods.md) such as Chocolatey and Scoop. If these are your preferred install solutions, you can find the install instructions there.
diff --git a/deps/cziplib b/deps/cziplib
deleted file mode 160000
index 81314fff0a..0000000000
--- a/deps/cziplib
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 81314fff0a882b72a9ad321e7a3311660125b56e
diff --git a/installer/PowerToysSetupCustomActionsVNext/CustomAction.cpp b/installer/PowerToysSetupCustomActionsVNext/CustomAction.cpp
index 0cfc3b1765..968fcc2530 100644
--- a/installer/PowerToysSetupCustomActionsVNext/CustomAction.cpp
+++ b/installer/PowerToysSetupCustomActionsVNext/CustomAction.cpp
@@ -4,6 +4,7 @@
#include
#include
#include
+#include
#include "../../src/common/logger/logger.h"
#include "../../src/common/utils/gpo.h"
@@ -856,14 +857,69 @@ UINT __stdcall UnsetAdvancedPasteAPIKeyCA(MSIHANDLE hInstall)
try
{
- winrt::Windows::Security::Credentials::PasswordVault vault;
- winrt::Windows::Security::Credentials::PasswordCredential cred;
-
hr = WcaInitialize(hInstall, "UnsetAdvancedPasteAPIKey");
ExitOnFailure(hr, "Failed to initialize");
- cred = vault.Retrieve(L"https://platform.openai.com/api-keys", L"PowerToys_AdvancedPaste_OpenAIKey");
- vault.Remove(cred);
+ winrt::Windows::Security::Credentials::PasswordVault vault;
+
+ auto hasPrefix = [](std::wstring_view value, wchar_t const* prefix) {
+ std::wstring_view prefixView{ prefix };
+ return value.compare(0, prefixView.size(), prefixView) == 0;
+ };
+
+ const wchar_t* resourcePrefixes[] = {
+ L"https://platform.openai.com/api-keys",
+ L"https://azure.microsoft.com/products/ai-services/openai-service",
+ L"https://azure.microsoft.com/products/ai-services/ai-inference",
+ L"https://console.mistral.ai/account/api-keys",
+ L"https://ai.google.dev/",
+ };
+
+ const wchar_t* usernamePrefixes[] = {
+ L"PowerToys_AdvancedPaste_",
+ };
+
+ auto credentials = vault.RetrieveAll();
+ for (auto const& credential : credentials)
+ {
+ bool shouldRemove = false;
+
+ std::wstring resource{ credential.Resource() };
+ for (auto const prefix : resourcePrefixes)
+ {
+ if (hasPrefix(resource, prefix))
+ {
+ shouldRemove = true;
+ break;
+ }
+ }
+
+ if (!shouldRemove)
+ {
+ std::wstring username{ credential.UserName() };
+ for (auto const prefix : usernamePrefixes)
+ {
+ if (hasPrefix(username, prefix))
+ {
+ shouldRemove = true;
+ break;
+ }
+ }
+ }
+
+ if (!shouldRemove)
+ {
+ continue;
+ }
+
+ try
+ {
+ vault.Remove(credential);
+ }
+ catch (...)
+ {
+ }
+ }
}
catch (...)
{
diff --git a/installer/PowerToysSetupCustomActionsVNext/PowerToysSetupCustomActionsVNext.vcxproj b/installer/PowerToysSetupCustomActionsVNext/PowerToysSetupCustomActionsVNext.vcxproj
index 21b0e75837..ae50cdcedb 100644
--- a/installer/PowerToysSetupCustomActionsVNext/PowerToysSetupCustomActionsVNext.vcxproj
+++ b/installer/PowerToysSetupCustomActionsVNext/PowerToysSetupCustomActionsVNext.vcxproj
@@ -110,6 +110,7 @@
Disabled
_DEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions)
EnableFastChecks
+ MultiThreadedDebug
true
@@ -122,6 +123,7 @@
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 69a63832d1..505e3cf844 100644
--- a/installer/PowerToysSetupVNext/Directory.Build.props
+++ b/installer/PowerToysSetupVNext/Directory.Build.props
@@ -1,5 +1,4 @@
-
@@ -9,4 +8,4 @@
$(BaseIntermediateOutputPath)
-
\ No newline at end of file
+