diff --git a/.github/actions/spell-check/expect.txt b/.github/actions/spell-check/expect.txt
index 510e9ccc11..6e3f041fba 100644
--- a/.github/actions/spell-check/expect.txt
+++ b/.github/actions/spell-check/expect.txt
@@ -69,6 +69,7 @@ appwiz
APSTUDIO
AQS
ARandom
+Arash
ARCHITEW
ARemapped
ARPINSTALLLOCATION
@@ -469,6 +470,7 @@ EXPCMDFLAGS
EXPCMDSTATE
explr
exppowertoys
+exprtk
exptas
exsb
exstyle
@@ -1150,6 +1152,7 @@ PARTIALCONFIRMATIONDIALOGTITLE
PATCOPY
PATHMUSTEXIST
PATINVERT
+partow
PATPAINT
pbc
pbi
diff --git a/.pipelines/ESRPSigning_core.json b/.pipelines/ESRPSigning_core.json
index 615b5633bf..b0b2a42655 100644
--- a/.pipelines/ESRPSigning_core.json
+++ b/.pipelines/ESRPSigning_core.json
@@ -3,226 +3,227 @@
"UseMinimatch": false,
"SignBatches": [
{
- "MatchedPath": [
- "*.resources.dll",
-
- "WinUI3Apps\\Assets\\Settings\\Scripts\\*.ps1",
+ "MatchedPath": [
+ "*.resources.dll",
- "PowerToys.ActionRunner.exe",
- "PowerToys.Update.exe",
- "PowerToys.BackgroundActivatorDLL.dll",
- "Notifications.dll",
- "os-detection.dll",
- "PowerToys.exe",
- "PowerToys.FilePreviewCommon.dll",
- "PowerToys.Interop.dll",
- "Tools\\PowerToys.BugReportTool.exe",
- "StylesReportTool\\PowerToys.StylesReportTool.exe",
- "Telemetry.dll",
- "PowerToys.ManagedTelemetry.dll",
- "PowerToys.ManagedCommon.dll",
- "PowerToys.Common.UI.dll",
- "PowerToys.Settings.UI.Lib.dll",
- "PowerToys.GPOWrapper.dll",
- "PowerToys.GPOWrapperProjection.dll",
- "PowerToys.AllExperiments.dll",
+ "WinUI3Apps\\Assets\\Settings\\Scripts\\*.ps1",
- "PowerToys.AlwaysOnTop.exe",
- "PowerToys.AlwaysOnTopModuleInterface.dll",
+ "PowerToys.ActionRunner.exe",
+ "PowerToys.Update.exe",
+ "PowerToys.BackgroundActivatorDLL.dll",
+ "Notifications.dll",
+ "os-detection.dll",
+ "PowerToys.exe",
+ "PowerToys.FilePreviewCommon.dll",
+ "PowerToys.Interop.dll",
+ "Tools\\PowerToys.BugReportTool.exe",
+ "StylesReportTool\\PowerToys.StylesReportTool.exe",
+ "Telemetry.dll",
+ "CalculatorEngineCommon.dll",
+ "PowerToys.ManagedTelemetry.dll",
+ "PowerToys.ManagedCommon.dll",
+ "PowerToys.Common.UI.dll",
+ "PowerToys.Settings.UI.Lib.dll",
+ "PowerToys.GPOWrapper.dll",
+ "PowerToys.GPOWrapperProjection.dll",
+ "PowerToys.AllExperiments.dll",
- "PowerToys.CmdNotFoundModuleInterface.dll",
- "PowerToys.CmdNotFound.dll",
+ "PowerToys.AlwaysOnTop.exe",
+ "PowerToys.AlwaysOnTopModuleInterface.dll",
- "PowerToys.ColorPicker.dll",
- "PowerToys.ColorPickerUI.dll",
- "PowerToys.ColorPickerUI.exe",
+ "PowerToys.CmdNotFoundModuleInterface.dll",
+ "PowerToys.CmdNotFound.dll",
- "PowerToys.CropAndLockModuleInterface.dll",
- "PowerToys.CropAndLock.exe",
+ "PowerToys.ColorPicker.dll",
+ "PowerToys.ColorPickerUI.dll",
+ "PowerToys.ColorPickerUI.exe",
- "PowerToys.PowerOCRModuleInterface.dll",
- "PowerToys.PowerOCR.dll",
- "PowerToys.PowerOCR.exe",
+ "PowerToys.CropAndLockModuleInterface.dll",
+ "PowerToys.CropAndLock.exe",
- "PowerToys.AdvancedPasteModuleInterface.dll",
- "WinUI3Apps\\PowerToys.AdvancedPaste.exe",
- "WinUI3Apps\\PowerToys.AdvancedPaste.dll",
+ "PowerToys.PowerOCRModuleInterface.dll",
+ "PowerToys.PowerOCR.dll",
+ "PowerToys.PowerOCR.exe",
- "PowerToys.AwakeModuleInterface.dll",
- "PowerToys.Awake.exe",
- "PowerToys.Awake.dll",
+ "PowerToys.AdvancedPasteModuleInterface.dll",
+ "WinUI3Apps\\PowerToys.AdvancedPaste.exe",
+ "WinUI3Apps\\PowerToys.AdvancedPaste.dll",
- "fancyzones.dll",
- "PowerToys.FancyZonesEditor.exe",
- "PowerToys.FancyZonesEditor.dll",
- "PowerToys.FancyZonesEditorCommon.dll",
- "PowerToys.FancyZonesModuleInterface.dll",
- "PowerToys.FancyZones.exe",
+ "PowerToys.AwakeModuleInterface.dll",
+ "PowerToys.Awake.exe",
+ "PowerToys.Awake.dll",
- "PowerToys.GcodePreviewHandler.dll",
- "PowerToys.GcodePreviewHandler.exe",
- "PowerToys.GcodePreviewHandlerCpp.dll",
- "PowerToys.GcodeThumbnailProvider.dll",
- "PowerToys.GcodeThumbnailProvider.exe",
- "PowerToys.GcodeThumbnailProviderCpp.dll",
- "PowerToys.ManagedTelemetry.dll",
- "PowerToys.MarkdownPreviewHandler.dll",
- "PowerToys.MarkdownPreviewHandler.exe",
- "PowerToys.MarkdownPreviewHandlerCpp.dll",
- "PowerToys.MonacoPreviewHandler.dll",
- "PowerToys.MonacoPreviewHandler.exe",
- "PowerToys.MonacoPreviewHandlerCpp.dll",
- "PowerToys.PdfPreviewHandler.dll",
- "PowerToys.PdfPreviewHandler.exe",
- "PowerToys.PdfPreviewHandlerCpp.dll",
- "PowerToys.PdfThumbnailProvider.dll",
- "PowerToys.PdfThumbnailProvider.exe",
- "PowerToys.PdfThumbnailProviderCpp.dll",
- "PowerToys.powerpreview.dll",
- "PowerToys.PreviewHandlerCommon.dll",
- "PowerToys.QoiPreviewHandler.dll",
- "PowerToys.QoiPreviewHandler.exe",
- "PowerToys.QoiPreviewHandlerCpp.dll",
- "PowerToys.QoiThumbnailProvider.dll",
- "PowerToys.QoiThumbnailProvider.exe",
- "PowerToys.QoiThumbnailProviderCpp.dll",
- "PowerToys.StlThumbnailProvider.dll",
- "PowerToys.StlThumbnailProvider.exe",
- "PowerToys.StlThumbnailProviderCpp.dll",
- "PowerToys.SvgPreviewHandler.dll",
- "PowerToys.SvgPreviewHandler.exe",
- "PowerToys.SvgPreviewHandlerCpp.dll",
- "PowerToys.SvgThumbnailProvider.dll",
- "PowerToys.SvgThumbnailProvider.exe",
- "PowerToys.SvgThumbnailProviderCpp.dll",
+ "fancyzones.dll",
+ "PowerToys.FancyZonesEditor.exe",
+ "PowerToys.FancyZonesEditor.dll",
+ "PowerToys.FancyZonesEditorCommon.dll",
+ "PowerToys.FancyZonesModuleInterface.dll",
+ "PowerToys.FancyZones.exe",
- "WinUI3Apps\\PowerToys.HostsModuleInterface.dll",
- "WinUI3Apps\\PowerToys.HostsUILib.dll",
- "WinUI3Apps\\PowerToys.Hosts.dll",
- "WinUI3Apps\\PowerToys.Hosts.exe",
+ "PowerToys.GcodePreviewHandler.dll",
+ "PowerToys.GcodePreviewHandler.exe",
+ "PowerToys.GcodePreviewHandlerCpp.dll",
+ "PowerToys.GcodeThumbnailProvider.dll",
+ "PowerToys.GcodeThumbnailProvider.exe",
+ "PowerToys.GcodeThumbnailProviderCpp.dll",
+ "PowerToys.ManagedTelemetry.dll",
+ "PowerToys.MarkdownPreviewHandler.dll",
+ "PowerToys.MarkdownPreviewHandler.exe",
+ "PowerToys.MarkdownPreviewHandlerCpp.dll",
+ "PowerToys.MonacoPreviewHandler.dll",
+ "PowerToys.MonacoPreviewHandler.exe",
+ "PowerToys.MonacoPreviewHandlerCpp.dll",
+ "PowerToys.PdfPreviewHandler.dll",
+ "PowerToys.PdfPreviewHandler.exe",
+ "PowerToys.PdfPreviewHandlerCpp.dll",
+ "PowerToys.PdfThumbnailProvider.dll",
+ "PowerToys.PdfThumbnailProvider.exe",
+ "PowerToys.PdfThumbnailProviderCpp.dll",
+ "PowerToys.powerpreview.dll",
+ "PowerToys.PreviewHandlerCommon.dll",
+ "PowerToys.QoiPreviewHandler.dll",
+ "PowerToys.QoiPreviewHandler.exe",
+ "PowerToys.QoiPreviewHandlerCpp.dll",
+ "PowerToys.QoiThumbnailProvider.dll",
+ "PowerToys.QoiThumbnailProvider.exe",
+ "PowerToys.QoiThumbnailProviderCpp.dll",
+ "PowerToys.StlThumbnailProvider.dll",
+ "PowerToys.StlThumbnailProvider.exe",
+ "PowerToys.StlThumbnailProviderCpp.dll",
+ "PowerToys.SvgPreviewHandler.dll",
+ "PowerToys.SvgPreviewHandler.exe",
+ "PowerToys.SvgPreviewHandlerCpp.dll",
+ "PowerToys.SvgThumbnailProvider.dll",
+ "PowerToys.SvgThumbnailProvider.exe",
+ "PowerToys.SvgThumbnailProviderCpp.dll",
- "WinUI3Apps\\PowerToys.FileLocksmithLib.Interop.dll",
- "WinUI3Apps\\PowerToys.FileLocksmithExt.dll",
- "WinUI3Apps\\PowerToys.FileLocksmithUI.exe",
- "WinUI3Apps\\PowerToys.FileLocksmithUI.dll",
- "WinUI3Apps\\PowerToys.FileLocksmithContextMenu.dll",
- "FileLocksmithContextMenuPackage.msix",
+ "WinUI3Apps\\PowerToys.HostsModuleInterface.dll",
+ "WinUI3Apps\\PowerToys.HostsUILib.dll",
+ "WinUI3Apps\\PowerToys.Hosts.dll",
+ "WinUI3Apps\\PowerToys.Hosts.exe",
- "WinUI3Apps\\Peek.Common.dll",
- "WinUI3Apps\\Peek.FilePreviewer.dll",
- "WinUI3Apps\\Powertoys.Peek.UI.dll",
- "WinUI3Apps\\Powertoys.Peek.UI.exe",
- "WinUI3Apps\\Powertoys.Peek.dll",
+ "WinUI3Apps\\PowerToys.FileLocksmithLib.Interop.dll",
+ "WinUI3Apps\\PowerToys.FileLocksmithExt.dll",
+ "WinUI3Apps\\PowerToys.FileLocksmithUI.exe",
+ "WinUI3Apps\\PowerToys.FileLocksmithUI.dll",
+ "WinUI3Apps\\PowerToys.FileLocksmithContextMenu.dll",
+ "FileLocksmithContextMenuPackage.msix",
- "WinUI3Apps\\PowerToys.EnvironmentVariablesModuleInterface.dll",
- "WinUI3Apps\\PowerToys.EnvironmentVariablesUILib.dll",
- "WinUI3Apps\\PowerToys.EnvironmentVariables.dll",
- "WinUI3Apps\\PowerToys.EnvironmentVariables.exe",
+ "WinUI3Apps\\Peek.Common.dll",
+ "WinUI3Apps\\Peek.FilePreviewer.dll",
+ "WinUI3Apps\\Powertoys.Peek.UI.dll",
+ "WinUI3Apps\\Powertoys.Peek.UI.exe",
+ "WinUI3Apps\\Powertoys.Peek.dll",
- "PowerToys.ImageResizer.exe",
- "PowerToys.ImageResizer.dll",
- "PowerToys.ImageResizerExt.dll",
- "PowerToys.ImageResizerContextMenu.dll",
- "ImageResizerContextMenuPackage.msix",
+ "WinUI3Apps\\PowerToys.EnvironmentVariablesModuleInterface.dll",
+ "WinUI3Apps\\PowerToys.EnvironmentVariablesUILib.dll",
+ "WinUI3Apps\\PowerToys.EnvironmentVariables.dll",
+ "WinUI3Apps\\PowerToys.EnvironmentVariables.exe",
- "PowerToys.KeyboardManager.dll",
- "KeyboardManagerEditor\\PowerToys.KeyboardManagerEditor.exe",
- "KeyboardManagerEngine\\PowerToys.KeyboardManagerEngine.exe",
- "PowerToys.KeyboardManagerEditorLibraryWrapper.dll",
+ "PowerToys.ImageResizer.exe",
+ "PowerToys.ImageResizer.dll",
+ "PowerToys.ImageResizerExt.dll",
+ "PowerToys.ImageResizerContextMenu.dll",
+ "ImageResizerContextMenuPackage.msix",
- "PowerToys.Launcher.dll",
- "PowerToys.PowerLauncher.dll",
- "PowerToys.PowerLauncher.exe",
- "PowerToys.PowerLauncher.Telemetry.dll",
- "Wox.dll",
- "Wox.Infrastructure.dll",
- "Wox.Plugin.dll",
- "RunPlugins\\Calculator\\Microsoft.PowerToys.Run.Plugin.Calculator.dll",
- "RunPlugins\\Folder\\Microsoft.Plugin.Folder.dll",
- "RunPlugins\\Indexer\\Microsoft.Plugin.Indexer.dll",
- "RunPlugins\\OneNote\\Microsoft.PowerToys.Run.Plugin.OneNote.dll",
- "RunPlugins\\History\\Microsoft.PowerToys.Run.Plugin.History.dll",
- "RunPlugins\\PowerToys\\Microsoft.PowerToys.Run.Plugin.PowerToys.dll",
- "RunPlugins\\Program\\Microsoft.Plugin.Program.dll",
- "RunPlugins\\Registry\\Microsoft.PowerToys.Run.Plugin.Registry.dll",
- "RunPlugins\\WindowsSettings\\Microsoft.PowerToys.Run.Plugin.WindowsSettings.dll",
- "RunPlugins\\Shell\\Microsoft.Plugin.Shell.dll",
- "RunPlugins\\Uri\\Microsoft.Plugin.Uri.dll",
- "RunPlugins\\WindowWalker\\Microsoft.Plugin.WindowWalker.dll",
- "RunPlugins\\UnitConverter\\Community.PowerToys.Run.Plugin.UnitConverter.dll",
- "RunPlugins\\VSCodeWorkspaces\\Community.PowerToys.Run.Plugin.VSCodeWorkspaces.dll",
- "RunPlugins\\Service\\Microsoft.PowerToys.Run.Plugin.Service.dll",
- "RunPlugins\\System\\Microsoft.PowerToys.Run.Plugin.System.dll",
- "RunPlugins\\TimeDate\\Microsoft.PowerToys.Run.Plugin.TimeDate.dll",
- "RunPlugins\\ValueGenerator\\Community.PowerToys.Run.Plugin.ValueGenerator.dll",
- "RunPlugins\\WebSearch\\Community.PowerToys.Run.Plugin.WebSearch.dll",
- "RunPlugins\\WindowsTerminal\\Microsoft.PowerToys.Run.Plugin.WindowsTerminal.dll",
-
- "WinUI3Apps\\PowerToys.MeasureToolModuleInterface.dll",
- "WinUI3Apps\\PowerToys.MeasureToolCore.dll",
- "WinUI3Apps\\PowerToys.MeasureToolUI.dll",
- "WinUI3Apps\\PowerToys.MeasureToolUI.exe",
+ "PowerToys.KeyboardManager.dll",
+ "KeyboardManagerEditor\\PowerToys.KeyboardManagerEditor.exe",
+ "KeyboardManagerEngine\\PowerToys.KeyboardManagerEngine.exe",
+ "PowerToys.KeyboardManagerEditorLibraryWrapper.dll",
- "PowerToys.FindMyMouse.dll",
- "PowerToys.MouseHighlighter.dll",
- "PowerToys.MouseJump.dll",
- "PowerToys.MouseJump.Common.dll",
- "PowerToys.MousePointerCrosshairs.dll",
- "PowerToys.MouseJumpUI.dll",
- "PowerToys.MouseJumpUI.exe",
+ "PowerToys.Launcher.dll",
+ "PowerToys.PowerLauncher.dll",
+ "PowerToys.PowerLauncher.exe",
+ "PowerToys.PowerLauncher.Telemetry.dll",
+ "Wox.dll",
+ "Wox.Infrastructure.dll",
+ "Wox.Plugin.dll",
+ "RunPlugins\\Calculator\\Microsoft.PowerToys.Run.Plugin.Calculator.dll",
+ "RunPlugins\\Folder\\Microsoft.Plugin.Folder.dll",
+ "RunPlugins\\Indexer\\Microsoft.Plugin.Indexer.dll",
+ "RunPlugins\\OneNote\\Microsoft.PowerToys.Run.Plugin.OneNote.dll",
+ "RunPlugins\\History\\Microsoft.PowerToys.Run.Plugin.History.dll",
+ "RunPlugins\\PowerToys\\Microsoft.PowerToys.Run.Plugin.PowerToys.dll",
+ "RunPlugins\\Program\\Microsoft.Plugin.Program.dll",
+ "RunPlugins\\Registry\\Microsoft.PowerToys.Run.Plugin.Registry.dll",
+ "RunPlugins\\WindowsSettings\\Microsoft.PowerToys.Run.Plugin.WindowsSettings.dll",
+ "RunPlugins\\Shell\\Microsoft.Plugin.Shell.dll",
+ "RunPlugins\\Uri\\Microsoft.Plugin.Uri.dll",
+ "RunPlugins\\WindowWalker\\Microsoft.Plugin.WindowWalker.dll",
+ "RunPlugins\\UnitConverter\\Community.PowerToys.Run.Plugin.UnitConverter.dll",
+ "RunPlugins\\VSCodeWorkspaces\\Community.PowerToys.Run.Plugin.VSCodeWorkspaces.dll",
+ "RunPlugins\\Service\\Microsoft.PowerToys.Run.Plugin.Service.dll",
+ "RunPlugins\\System\\Microsoft.PowerToys.Run.Plugin.System.dll",
+ "RunPlugins\\TimeDate\\Microsoft.PowerToys.Run.Plugin.TimeDate.dll",
+ "RunPlugins\\ValueGenerator\\Community.PowerToys.Run.Plugin.ValueGenerator.dll",
+ "RunPlugins\\WebSearch\\Community.PowerToys.Run.Plugin.WebSearch.dll",
+ "RunPlugins\\WindowsTerminal\\Microsoft.PowerToys.Run.Plugin.WindowsTerminal.dll",
- "PowerToys.MouseWithoutBorders.dll",
- "PowerToys.MouseWithoutBorders.exe",
- "PowerToys.MouseWithoutBordersModuleInterface.dll",
- "PowerToys.MouseWithoutBordersService.dll",
- "PowerToys.MouseWithoutBordersService.exe",
- "PowerToys.MouseWithoutBordersHelper.dll",
- "PowerToys.MouseWithoutBordersHelper.exe",
+ "WinUI3Apps\\PowerToys.MeasureToolModuleInterface.dll",
+ "WinUI3Apps\\PowerToys.MeasureToolCore.dll",
+ "WinUI3Apps\\PowerToys.MeasureToolUI.dll",
+ "WinUI3Apps\\PowerToys.MeasureToolUI.exe",
- "WinUI3Apps\\PowerToys.NewPlus.ShellExtension.dll",
- "WinUI3Apps\\NewPlusPackage.msix",
- "WinUI3Apps\\PowerToys.NewPlus.ShellExtension.win10.dll",
+ "PowerToys.FindMyMouse.dll",
+ "PowerToys.MouseHighlighter.dll",
+ "PowerToys.MouseJump.dll",
+ "PowerToys.MouseJump.Common.dll",
+ "PowerToys.MousePointerCrosshairs.dll",
+ "PowerToys.MouseJumpUI.dll",
+ "PowerToys.MouseJumpUI.exe",
- "PowerAccent.Core.dll",
- "PowerToys.PowerAccent.dll",
- "PowerToys.PowerAccent.exe",
- "PowerToys.PowerAccentModuleInterface.dll",
- "PowerToys.PowerAccentKeyboardService.dll",
+ "PowerToys.MouseWithoutBorders.dll",
+ "PowerToys.MouseWithoutBorders.exe",
+ "PowerToys.MouseWithoutBordersModuleInterface.dll",
+ "PowerToys.MouseWithoutBordersService.dll",
+ "PowerToys.MouseWithoutBordersService.exe",
+ "PowerToys.MouseWithoutBordersHelper.dll",
+ "PowerToys.MouseWithoutBordersHelper.exe",
- "WinUI3Apps\\PowerToys.PowerRenameExt.dll",
- "WinUI3Apps\\PowerToys.PowerRename.exe",
- "WinUI3Apps\\PowerToys.PowerRenameContextMenu.dll",
- "WinUI3Apps\\PowerRenameContextMenuPackage.msix",
+ "WinUI3Apps\\PowerToys.NewPlus.ShellExtension.dll",
+ "WinUI3Apps\\NewPlusPackage.msix",
+ "WinUI3Apps\\PowerToys.NewPlus.ShellExtension.win10.dll",
- "PowerToys.WorkspacesSnapshotTool.exe",
- "PowerToys.WorkspacesLauncher.exe",
- "PowerToys.WorkspacesWindowArranger.exe",
- "PowerToys.WorkspacesEditor.exe",
- "PowerToys.WorkspacesEditor.dll",
- "PowerToys.WorkspacesLauncherUI.exe",
- "PowerToys.WorkspacesLauncherUI.dll",
- "PowerToys.WorkspacesModuleInterface.dll",
- "PowerToys.WorkspacesCsharpLibrary.dll",
+ "PowerAccent.Core.dll",
+ "PowerToys.PowerAccent.dll",
+ "PowerToys.PowerAccent.exe",
+ "PowerToys.PowerAccentModuleInterface.dll",
+ "PowerToys.PowerAccentKeyboardService.dll",
- "WinUI3Apps\\PowerToys.RegistryPreviewExt.dll",
- "WinUI3Apps\\PowerToys.RegistryPreviewUILib.dll",
- "WinUI3Apps\\PowerToys.RegistryPreview.dll",
- "WinUI3Apps\\PowerToys.RegistryPreview.exe",
+ "WinUI3Apps\\PowerToys.PowerRenameExt.dll",
+ "WinUI3Apps\\PowerToys.PowerRename.exe",
+ "WinUI3Apps\\PowerToys.PowerRenameContextMenu.dll",
+ "WinUI3Apps\\PowerRenameContextMenuPackage.msix",
- "PowerToys.ShortcutGuide.exe",
- "PowerToys.ShortcutGuideModuleInterface.dll",
+ "PowerToys.WorkspacesSnapshotTool.exe",
+ "PowerToys.WorkspacesLauncher.exe",
+ "PowerToys.WorkspacesWindowArranger.exe",
+ "PowerToys.WorkspacesEditor.exe",
+ "PowerToys.WorkspacesEditor.dll",
+ "PowerToys.WorkspacesLauncherUI.exe",
+ "PowerToys.WorkspacesLauncherUI.dll",
+ "PowerToys.WorkspacesModuleInterface.dll",
+ "PowerToys.WorkspacesCsharpLibrary.dll",
- "PowerToys.ZoomIt.exe",
- "PowerToys.ZoomItModuleInterface.dll",
- "PowerToys.ZoomItSettingsInterop.dll",
+ "WinUI3Apps\\PowerToys.RegistryPreviewExt.dll",
+ "WinUI3Apps\\PowerToys.RegistryPreviewUILib.dll",
+ "WinUI3Apps\\PowerToys.RegistryPreview.dll",
+ "WinUI3Apps\\PowerToys.RegistryPreview.exe",
- "WinUI3Apps\\PowerToys.Settings.dll",
- "WinUI3Apps\\PowerToys.Settings.exe",
+ "PowerToys.ShortcutGuide.exe",
+ "PowerToys.ShortcutGuideModuleInterface.dll",
- "PowerToys.CmdPalModuleInterface.dll",
- "CmdPalKeyboardService.dll",
- "*Microsoft.CmdPal.UI_*.msix"
- ],
+ "PowerToys.ZoomIt.exe",
+ "PowerToys.ZoomItModuleInterface.dll",
+ "PowerToys.ZoomItSettingsInterop.dll",
+
+ "WinUI3Apps\\PowerToys.Settings.dll",
+ "WinUI3Apps\\PowerToys.Settings.exe",
+
+ "PowerToys.CmdPalModuleInterface.dll",
+ "CmdPalKeyboardService.dll",
+ "*Microsoft.CmdPal.UI_*.msix"
+ ],
"SigningInfo": {
"Operations": [
{
diff --git a/NOTICE.md b/NOTICE.md
index fb2450b66a..2b94d67a4b 100644
--- a/NOTICE.md
+++ b/NOTICE.md
@@ -79,6 +79,43 @@ For more information, please refer to
### Calculator
+#### exprtk
+
+We use the exprtk library (exprtk.hpp) to evaluate mathematical expressions.
+
+**Source**: [https://github.com/ArashPartow/exprtk](https://github.com/ArashPartow/exprtk)
+
+```
+MIT License
+
+Copyright (c) 1999-2024 Arash Partow
+
+https://www.partow.net/programming/exprtk/index.html
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+```
+
+## Utility: PowerToys Run Built-in Extensions
+
+### Calculator
+
#### Mages
We use the Mages NuGet package for calculating the result of expression.
diff --git a/PowerToys.sln b/PowerToys.sln
index fdf0be72f8..f58aa7c077 100644
--- a/PowerToys.sln
+++ b/PowerToys.sln
@@ -717,6 +717,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CmdPalKeyboardService", "sr
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerRename.FuzzingTest", "src\modules\powerrename\PowerRename.FuzzingTest\PowerRename.FuzzingTest.vcxproj", "{2694E2FB-DCD5-4BFF-A418-B6C3C7CE3B8E}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CalculatorEngineCommon", "src\common\CalculatorEngineCommon\CalculatorEngineCommon.vcxproj", "{2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM64 = Debug|ARM64
@@ -2619,6 +2621,14 @@ Global
{2694E2FB-DCD5-4BFF-A418-B6C3C7CE3B8E}.Release|ARM64.ActiveCfg = Release|ARM64
{2694E2FB-DCD5-4BFF-A418-B6C3C7CE3B8E}.Release|x64.ActiveCfg = Release|x64
{2694E2FB-DCD5-4BFF-A418-B6C3C7CE3B8E}.Release|x64.Build.0 = Release|x64
+ {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6}.Debug|ARM64.Build.0 = Debug|ARM64
+ {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6}.Debug|x64.ActiveCfg = Debug|x64
+ {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6}.Debug|x64.Build.0 = Debug|x64
+ {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6}.Release|ARM64.ActiveCfg = Release|ARM64
+ {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6}.Release|ARM64.Build.0 = Release|ARM64
+ {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6}.Release|x64.ActiveCfg = Release|x64
+ {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -2893,6 +2903,7 @@ Global
{0217E86E-3476-9946-DE8E-9D200CEBD47A} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD}
{5F63C743-F6CE-4DBA-A200-2B3F8A14E8C2} = {3846508C-77EB-4034-A702-F8BB263C4F79}
{2694E2FB-DCD5-4BFF-A418-B6C3C7CE3B8E} = {89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3}
+ {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6} = {1AFB6476-670D-4E80-A464-657E01DFF482}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C3A2F9D1-7930-4EF4-A6FC-7EE0A99821D0}
diff --git a/src/common/CalculatorEngineCommon/Calculator.cpp b/src/common/CalculatorEngineCommon/Calculator.cpp
new file mode 100644
index 0000000000..0d96945560
--- /dev/null
+++ b/src/common/CalculatorEngineCommon/Calculator.cpp
@@ -0,0 +1,24 @@
+#include "pch.h"
+#include "Calculator.h"
+#include "Calculator.g.cpp"
+#include "ExprtkEvaluator.h"
+
+namespace winrt::CalculatorEngineCommon::implementation
+{
+ Calculator::Calculator(winrt::Windows::Foundation::Collections::IPropertySet const& constants)
+ {
+ for (auto const& pair : constants)
+ {
+ auto key = pair.Key();
+ auto value = winrt::unbox_value(pair.Value());
+ m_constants.emplace(winrt::to_string(key), value);
+ }
+ }
+
+ hstring Calculator::EvaluateExpression(hstring const& expression)
+ {
+ auto result = ExprtkCalculator::internal::EvaluateExpression(winrt::to_string(expression), m_constants);
+
+ return hstring(result);
+ }
+}
diff --git a/src/common/CalculatorEngineCommon/Calculator.h b/src/common/CalculatorEngineCommon/Calculator.h
new file mode 100644
index 0000000000..abf2a4ec0d
--- /dev/null
+++ b/src/common/CalculatorEngineCommon/Calculator.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include "Calculator.g.h"
+
+namespace winrt::CalculatorEngineCommon::implementation
+{
+ struct Calculator : CalculatorT
+ {
+ Calculator() = default;
+
+ Calculator(winrt::Windows::Foundation::Collections::IPropertySet const& constants);
+
+ winrt::hstring EvaluateExpression(winrt::hstring const& expression);
+
+ private:
+ std::unordered_map m_constants;
+ };
+}
+
+namespace winrt::CalculatorEngineCommon::factory_implementation
+{
+ struct Calculator : CalculatorT
+ {
+ };
+}
diff --git a/src/common/CalculatorEngineCommon/Calculator.idl b/src/common/CalculatorEngineCommon/Calculator.idl
new file mode 100644
index 0000000000..241a517a7d
--- /dev/null
+++ b/src/common/CalculatorEngineCommon/Calculator.idl
@@ -0,0 +1,10 @@
+namespace CalculatorEngineCommon
+{
+ [default_interface]
+ runtimeclass Calculator
+ {
+ Calculator();
+ Calculator(Windows.Foundation.Collections.IPropertySet constants);
+ String EvaluateExpression(String expression);
+ }
+}
diff --git a/src/common/CalculatorEngineCommon/CalculatorEngineCommon.def b/src/common/CalculatorEngineCommon/CalculatorEngineCommon.def
new file mode 100644
index 0000000000..24e7c1235c
--- /dev/null
+++ b/src/common/CalculatorEngineCommon/CalculatorEngineCommon.def
@@ -0,0 +1,3 @@
+EXPORTS
+DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE
+DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE
diff --git a/src/common/CalculatorEngineCommon/CalculatorEngineCommon.vcxproj b/src/common/CalculatorEngineCommon/CalculatorEngineCommon.vcxproj
new file mode 100644
index 0000000000..ddc4a970bc
--- /dev/null
+++ b/src/common/CalculatorEngineCommon/CalculatorEngineCommon.vcxproj
@@ -0,0 +1,181 @@
+
+
+
+
+ true
+ true
+ {2cf78cf7-8feb-4be1-9591-55fa25b48fc6}
+ CalculatorEngineCommon
+ CalculatorEngineCommon
+ false
+
+
+
+ true
+ false
+
+
+
+
+ true
+ true
+ en-US
+ 17.0
+ 10.0
+
+
+ true
+ true
+ true
+ Windows Store
+ false
+
+
+
+
+ <_VC_Target_Library_Platform>Desktop
+ <_NoWinAPIFamilyApp>true
+
+
+
+
+ DynamicLibrary
+ v143
+ Unicode
+ false
+
+
+ true
+ true
+
+
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CalculatorEngineCommon
+ ..\..\..\$(Platform)\$(Configuration)\
+
+
+
+ $(IntDir)pch.pch
+ Level4
+ %(AdditionalOptions) /bigobj
+ _WINRT_DLL;WINRT_LEAN_AND_MEAN;%(PreprocessorDefinitions)
+ ../../..;%(AdditionalIncludeDirectories)
+ $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)
+
+
+ Console
+ false
+ CalculatorEngineCommon.def
+ Shell32.lib;user32.lib;%(AdditionalDependencies)
+
+
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+
+
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+
+
+ true
+ true
+
+
+
+
+
+
+
+ Calculator.idl
+
+
+
+
+ NotUsing
+
+
+ Create
+
+
+ Calculator.idl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
+
+
+
+ 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/CalculatorEngineCommon/CalculatorEngineCommon.vcxproj.filters b/src/common/CalculatorEngineCommon/CalculatorEngineCommon.vcxproj.filters
new file mode 100644
index 0000000000..6b84b33112
--- /dev/null
+++ b/src/common/CalculatorEngineCommon/CalculatorEngineCommon.vcxproj.filters
@@ -0,0 +1,29 @@
+
+
+
+
+ accd3aa8-1ba0-4223-9bbe-0c431709210b
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tga;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {926ab91d-31b4-48c3-b9a4-e681349f27f0}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/common/CalculatorEngineCommon/ExprtkEvaluator.cpp b/src/common/CalculatorEngineCommon/ExprtkEvaluator.cpp
new file mode 100644
index 0000000000..dbc2120b24
--- /dev/null
+++ b/src/common/CalculatorEngineCommon/ExprtkEvaluator.cpp
@@ -0,0 +1,50 @@
+#include "ExprtkEvaluator.h"
+#include "exprtk.hpp"
+#include
+#include
+#include
+
+namespace ExprtkCalculator::internal
+{
+
+ std::wstring ToWStringFullPrecision(double value)
+ {
+ std::wostringstream oss;
+ oss << std::fixed << std::setprecision(15) << value;
+ return oss.str();
+ }
+
+ std::wstring EvaluateExpression(
+ const std::string& expressionText,
+ const std::unordered_map& constants)
+ {
+ exprtk::symbol_table symbol_table;
+
+ for (auto const& [name, value] : constants)
+ {
+ symbol_table.add_constant(name, value);
+ }
+
+ exprtk::expression expression;
+ expression.register_symbol_table(symbol_table);
+
+ exprtk::parser parser;
+
+ // Enable all base functions and arithmetic operators
+ parser.settings().enable_all_base_functions(); // Enable all base functions like sin, cos, log, etc.
+ parser.settings().enable_all_arithmetic_ops(); // Enable all arithmetic operators like +, -, *, /, etc.
+
+ // Disable all control structures and assignment operators to ensure only expressions are evaluated
+ parser.settings().disable_all_control_structures(); // Disable control structures like if, for, while, etc.
+ parser.settings().disable_all_assignment_ops(); // Disable assignment operators like =, +=, -=, etc.
+
+ // Disabled for now, but can be enabled later for enhanced functionality
+ parser.settings().disable_all_logic_ops(); // Disable logical operators like &&, ||, !, etc.
+ parser.settings().disable_all_inequality_ops(); // Disable inequality operators like <, >, <=, >=, !=, etc.
+
+ if (!parser.compile(expressionText, expression))
+ return L"NaN";
+
+ return ToWStringFullPrecision(expression.value());
+ }
+}
\ No newline at end of file
diff --git a/src/common/CalculatorEngineCommon/ExprtkEvaluator.h b/src/common/CalculatorEngineCommon/ExprtkEvaluator.h
new file mode 100644
index 0000000000..bd09774b96
--- /dev/null
+++ b/src/common/CalculatorEngineCommon/ExprtkEvaluator.h
@@ -0,0 +1,10 @@
+#pragma once
+#include
+#include
+
+namespace ExprtkCalculator::internal
+{
+ std::wstring EvaluateExpression(
+ const std::string& expression,
+ const std::unordered_map& constants);
+}
\ No newline at end of file
diff --git a/src/common/CalculatorEngineCommon/PropertySheet.props b/src/common/CalculatorEngineCommon/PropertySheet.props
new file mode 100644
index 0000000000..e34141b019
--- /dev/null
+++ b/src/common/CalculatorEngineCommon/PropertySheet.props
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/common/CalculatorEngineCommon/exprtk.hpp b/src/common/CalculatorEngineCommon/exprtk.hpp
new file mode 100644
index 0000000000..6ad76542f4
--- /dev/null
+++ b/src/common/CalculatorEngineCommon/exprtk.hpp
@@ -0,0 +1,46251 @@
+/*
+ ******************************************************************
+ * C++ Mathematical Expression Toolkit Library *
+ * *
+ * Author: Arash Partow (1999-2024) *
+ * URL: https://www.partow.net/programming/exprtk/index.html *
+ * *
+ * Copyright notice: *
+ * Free use of the C++ Mathematical Expression Toolkit Library is *
+ * permitted under the guidelines and in accordance with the most *
+ * current version of the MIT License. *
+ * https://www.opensource.org/licenses/MIT *
+ * SPDX-License-Identifier: MIT *
+ * *
+ * Example expressions: *
+ * (00) (y + x / y) * (x - y / x) *
+ * (01) (x^2 / sin(2 * pi / y)) - x / 2 *
+ * (02) sqrt(1 - (x^2)) *
+ * (03) 1 - sin(2 * x) + cos(pi / y) *
+ * (04) a * exp(2 * t) + c *
+ * (05) if(((x + 2) == 3) and ((y + 5) <= 9), 1 + w, 2 / z) *
+ * (06) (avg(x,y) <= x + y ? x - y : x * y) + 2 * pi / x *
+ * (07) z := x + sin(2 * pi / y) *
+ * (08) u := 2 * (pi * z) / (w := x + cos(y / pi)) *
+ * (09) clamp(-1, sin(2 * pi * x) + cos(y / 2 * pi), +1) *
+ * (10) inrange(-2, m, +2) == if(({-2 <= m} and [m <= +2]), 1, 0) *
+ * (11) (2sin(x)cos(2y)7 + 1) == (2 * sin(x) * cos(2*y) * 7 + 1) *
+ * (12) (x ilike 's*ri?g') and [y < (3 z^7 + w)] *
+ * *
+ ******************************************************************
+*/
+
+#pragma system_header
+
+#ifndef INCLUDE_EXPRTK_HPP
+#define INCLUDE_EXPRTK_HPP
+
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include