github microsoft/PowerToys v0.94.0
Release v0.94

2 days ago

In the v0.94 release cycle, we focused on new features, stability, optimization improvements, and automation.

Installer Hashes

Description Filename sha256 hash
Per user - x64 PowerToysUserSetup-0.94.0-x64.exe F395CC209B1F77191F96DE3CBF2512B66C8BB4C562043BD1A3A7FD4B9C7B5BC0
Per user - ARM64 PowerToysUserSetup-0.94.0-arm64.exe EA2E430476BD54E359A401623863E5130A500A169EF9FB27BBB064ADB3887AC5
Machine wide - x64 PowerToysSetup-0.94.0-x64.exe 55D5B07AEC402D504AED8101BF4F3FBA79310198F004A4D74326F951FA7BC7A0
Machine wide - ARM64 PowerToysSetup-0.94.0-arm64.exe E111A3ED83D1FB33386A5412AC5324C15E684D89512BA988ABF12D6E95691DB5

Highlights

For an in-depth look at the latest changes, visit the release blog.

  • PowerToys Settings added a Settings search with fuzzy matching, suggestions, a results page, and UX polish to make finding options faster.
  • A comprehensive hotkey conflict detection system was introduced in Settings to surface and help resolve conflicting shortcuts. Note that the default hotkey settings (Win+Ctrl+Shift+T, Win+Ctrl+V, Win+Ctrl+T, Win+Shift+T) may overlap with existing Windows system shortcuts. This is expected. You can resolve the conflict by assigning different hotkeys.
  • Mouse Utilities added a “Gliding cursor” accessibility feature to Mouse Pointer Crosshairs for single‑button cursor movement and clicking. Thanks @mikehall-ms!
  • The installer was upgraded to WiX 5 after WiX 3 reached end-of-life; this move improved installer security, reliability, and community support.
  • Tons of bug fixes and improvements for Command Palette, including visual updates and new support for filters on ListPages (handy for extension developers).
  • Hosts Editor now has a “No leading spaces” option so active host entries can start at column 0 even if others are disabled. Thanks @mohammed-saalim!
  • Context menu registration was moved from the installer to runtime to avoid loading disabled modules (runtime registrations).
  • Quick Accent now supports Maltese, and frequently used accents appear first (and are remembered across sessions). Thanks @rovercoder! @davidegiacometti!

Always On Top

  • Fixed the border hover cursor so it shows the arrow instead of the wait cursor. Thanks @davidegiacometti!

Command Palette

  • Applied single-click activation only to pointer input; keyboard always activates immediately. Thanks @jiripolasek!
  • Let context menus open at the cursor by removing window-bound constraints. Thanks @jiripolasek!
  • Made error messages clearer with timestamps, HRESULTs, and full details for easier diagnosis. Thanks @jiripolasek!
  • Prevented crashes and improved robustness when updating providers without commands. Thanks @jiripolasek!
  • Ensured the Settings window reliably comes to the front when opened. Thanks @jiripolasek!
  • Replaced the Clipboard History icon with a colorful Fluent icon. Thanks @jiripolasek!
  • Hardened ContentIcon to avoid duplicate parenting and improve diagnostics. Thanks @jiripolasek!
  • Standardized null checks using C# pattern matching for safer behavior.
  • Improved accessibility by focusing the activation shortcut dialog and making text reachable. Thanks @chatasweetie!
  • Moved the extension SDK to a stable Windows SDK and cleaned up message namespaces.
  • Added path shortcuts: ~ to home, and / or \ to system root, plus UNC support. Thanks @davidegiacometti!
  • Fixed a race in cancellation handling to avoid InvalidOperationException. Thanks @jiripolasek!
  • Aligned separator styling with WinUI 3 for consistent visuals. Thanks @jiripolasek!
  • Added ARM64 PDBs to the Extensions SDK NuGet for better debugging.
  • Added single-select filters to DynamicListPage and updated Windows Services sample.
  • Updated main page placeholder text to better describe what can be searched. Thanks @jiripolasek!
  • Removed explicit WinAppSDK/WebView2 dependencies from toolkit and API. Thanks @rluengen!
  • Added a local keyboard hook to handle the GoBack key reliably. Thanks @jiripolasek!
  • Propagated alias changes safely and resolved conflicts across view models.
  • Allowed providers to override Dispose with a virtual method.
  • Fixed memory leaks by cleaning up removed or cancelled list items.
  • Sorted DateTime extension results by relevance for better usability.
  • Reduced search text “jiggling” by avoiding redundant change notifications.
  • Centralized automation notifications in a UIHelper for better accessibility. Thanks @chatasweetie!
  • Preserved Adaptive Card action types during trimming via DynamicDependency.
  • Added an acrylic backdrop and refined styling to the context menu. Thanks @jiripolasek!
  • Prevented disposed pages and Settings windows from handling stale messages. Thanks @jiripolasek!
  • Made the extension API easier to evolve without breaking clients.
  • Added “evil” sample pages to help reproduce tricky bugs.
  • Fixed WinGet trim-safety issues by replacing LINQ with manual iteration.
  • Cancelled stale list fetches to avoid older results overwriting newer ones in CmdPal.

Command Palette extensions

  • Improved empty states and ranking logic for multiple extensions. Thanks @htcfreek!
  • Added app icons to the All Apps "Run" context command when available.
  • Restored missing builtin icons by standardizing extension dependencies.
  • Unblocked local deployment by adding WinAppSDK to two sample extensions.

Hosts File Editor

  • Added a "No leading spaces" option so active hosts entries can start at column 0 even when others are disabled. Thanks @mohammed-saalim!

Image Resizer

  • Fixed Image Resizer localization by installing satellite resources under the WinUI 3 apps culture path.

Mouse Utilities

  • Introduced "Gliding cursor" to control the pointer and click with a single hotkey for better accessibility. Thanks @mikehall-ms!

Mouse Without Borders

  • Blocked Easy Mouse from switching machines during fullscreen apps, with an allow-list for exceptions. Thanks @dot-tb!

Peek

  • Added Visual Studio shared project file types to XML preview and fixed bgcode handler registration. Thanks @rezanid!
  • Fixes bgcode preview handler registration and events for reliable previews. Thanks @pedrolamas!

PowerRename

  • Changed the Explorer accelerator key to PowErRename to avoid clashing with the New menu. Thanks @aaron-ni!

Quick Accent

  • Remembered character usage across sessions so frequently used accents appear first. Thanks @davidegiacometti!
  • Added Maltese language support with specific characters and the Euro symbol. Thanks @rovercoder!
  • Reduced GPU usage issues by making the window Topmost only when the picker is visible. Thanks @daverayment!

Settings

  • Added telemetry to track usage of the new shortcut conflict detection workflow.
  • Moved the shutdown action from the title bar to a footer menu item with confirmation. Thanks @davidegiacometti!
  • Implemented comprehensive hotkey conflict detection with a dedicated resolution dialog.
  • Added branded visuals for Office and Copilot keys in the KeyVisual control.
  • Introduced Settings search with fuzzy matching and navigation to specific controls.
  • Corrected Spanish localization so product names like Awake remain in English across Settings and OOBE.
  • Simplified the Advanced Paste description in Settings for quicker reading and consistent capitalization. Thanks @OldUser101!
  • Localized conflict messages in the conflict window and dialog.

Installer

  • Upgraded the installer to WiX 5 with silent "Files in Use" handling for smoother winget installs.
  • Switched Win10 context menu modules to runtime registration and added cleanup on uninstall to avoid stale entries.

Documentation

  • Adds docs for building the installer locally and testing winget installs.
  • Fixed a broken style guide link in developer documentation. Thanks @denizmaral!

Development

  • Excluded test and coverage DLLs from BinSkim scans to cut false positives and speed up security analysis.
  • Simplified NOTICE maintenance by removing version numbers and filtering out Microsoft/System packages.
  • Improved NuGet dependency validation to prevent package downgrades and catch issues during restore.
  • Updated UTF.Unknown to a modern version to improve compatibility without breaking changes. Thanks @304NotModified!
  • Refreshed package catalog in CI before installing dependencies to prevent Linux workflow failures.
  • Refactored CmdPal tests with dependency injection and added coverage for queries and settings.
  • Added unit tests to verify Close on Enter swaps Copy/Save as expected. Thanks @mohammed-saalim!
  • Added accessibility IDs to CmdPal UI for stable UI tests.
  • Rewrote system command tests with a new test base and cleaner patterns.
  • Added unit tests for WebSearch and Shell extensions with mockable settings.
  • Added unit tests and abstractions for Apps and Bookmarks extensions.
  • Cleans up AI‑generated tests; adds meaningful query tests across extensions.
  • Removed the obsolete debug dialog from Settings for a smoother developer loop.

Don't miss a new PowerToys release

NewReleases is sending notifications on new releases.