PowerToys Preview v0.102.2883.0
This is a preview-channel build for the PowerToys 0.102 release train, produced from the stable branch. It follows v0.102.2862.0; these notes cover changes since that preview, not the complete 0.102 versus 0.101 changelog. This is not the final stable release.
Installer Hashes
| Description | Filename | sha256 hash |
|---|---|---|
| Per user - x64 | PowerToysUserSetup-0.102.2883.0-x64.exe | 8F76B417BD374AA75557DF8CE4EE28430D5F0B734E94B9E91FFE4DA0579AA52F |
| Per user - ARM64 | PowerToysUserSetup-0.102.2883.0-arm64.exe | F739926D12AA251D683912B88FD1EA00B3A864089745A49A53D4F3EDFD5E2FCD |
| Machine wide - x64 | PowerToysSetup-0.102.2883.0-x64.exe | 8E7D8608CE97AF984E0E0A3825EA570DD2708C4410F625C75FFC25065C33F3D2 |
| Machine wide - ARM64 | PowerToysSetup-0.102.2883.0-arm64.exe | 9F7D98587FCE90EE4075018455E758E1A33E48ED3B2FBC864D508E6B52DFC26E |
Highlights
- ZoomIt: Added opt-in offline snip dictation for pasting screenshots together with transcribed speech.
- Peek: Added plain-text fallback previews and command-line support for multiple files and folders.
- Keyboard Manager: Added searchable key selection for empty remaps in the new editor and limited recording to the foreground editor.
- Command Palette: Continued loading results in underfilled views and when keyboard navigation reaches the loaded end of a list.
- Command Palette: Fixed in-place Adaptive Card updates in release builds and enabled custom elements to refresh without rebuilding the card.
- Command Palette: Avoided repeated writes of unchanged provider and fallback settings during startup.
- Settings: Added an interactive animated welcome scene and fixed memory growth when navigating between Home and General.
- General: Prevented startup and read-only Settings refreshes from overwriting existing preferences.
- CursorHide: Refreshed the former Auto Hide Cursor branding, icon, and behavior controls in Settings.
Advanced Paste
- Fixed the CLI root --version option to print the executable version and exit without requiring a subcommand in #51298 by @MuyuanMS
Command Palette
- Fixed Adaptive Cards updating in place in release builds and enabled custom elements to refresh without rebuilding the entire card in #51204
- Loaded additional result batches when the first list or grid page does not fill the window, so more items remain accessible without a scrollbar in #51285 by @jiripolasek
- Loaded the next result batch when keyboard navigation reaches the end of the current list, preserving selection until loading completes in #51287 by @jiripolasek
- Fixed Ctrl+Enter targeting the wrong command in context-menu submenus and delayed the initial highlight until navigation or filtering in #51290 by @jiripolasek
- Avoided repeatedly saving unchanged provider and fallback settings during startup in #51353
CursorHide
- Renamed Auto Hide Cursor to CursorHide in Settings and refreshed its icon, behavior controls, and new-feature indicators in #51123 by @Copilot and @LegendaryBlair
General
- Prevented startup and read-only Settings refreshes from overwriting preferences with partially initialized or stale module states in #51115 by @LegendaryBlair and @Copilot
Keyboard Manager
- Added searchable key selection for empty remaps in the new editor, limited recording to the foreground editor, and restored Tab navigation while recording in #51150 by @Copilot
Peek
- Added command-line previews for multiple files and folders, with improved relative-path handling and argument validation in #49724 by @daverayment
- Added plain-text previews for text files with otherwise unsupported extensions instead of showing only file information in #50020 by @eglavin and @claude
Settings
- Added an interactive animated welcome scene featuring PowerToys module icons in #50873 by @Copilot
- Fixed retained pages and view models that caused memory use to grow when navigating between Home and General settings in #51060 by @dotMorten and @Copilot
ZoomIt
- Added opt-in offline snip dictation so a screenshot and its spoken description can be transcribed and pasted together in #51286 by @MarioHewardt, @markrussinovich, @Copilot, and @foxmsft
Development
- Made new Windows platform-compatibility analyzer violations fail builds so unsupported API calls are caught earlier in #51063 by @Copilot
- Updated outdated third-party launcher plugin and author links in #51126 by @karan5028ji and @LegendaryBlair
- Removed an obsolete Settings screenshot reference from the module project-template documentation in #51334 by @mmustafasenoglu
- Standardized spacing before comments in module UI tests in #51264
- Reused JSON serializer options in Advanced Paste UI tests in #51280
- Replaced broad message passing with explicit Command Palette control and view-model ownership to support independent navigation surfaces in #51038
- Extracted Command Palette page creation and initialization into a shared navigation service while preserving navigation behavior in #51091 by @Copilot
- Removed the superseded Toolkit-specific neutral-language workaround while retaining shared official-build assembly metadata generation in #51291 by @LegendaryBlair and @Copilot
- Pinned the Command Palette extension SDK build version and prepared its signing runtime for more predictable release builds in #51326 by @LegendaryBlair and @Copilot
- Made Command Palette Extension Gallery tests use deterministic synchronization to avoid intermittent ordering failures in #51340 by @foxmsft
- Kept Command Palette test page contexts alive through execution and cleanup to prevent intermittent view-model test failures in #51355 by @jiripolasek
- Aligned multiline argument formatting across module UI tests without changing test behavior in #51257
- Normalized FancyZones UI-test file endings for consistent analyzer compliance in #51258
- Split FancyZones and File Locksmith UI-test helper types into matching source files in #51259
- Ordered System using directives consistently in FancyZones UI tests in #51262
- Normalized split-argument layout in FancyZones, Advanced Paste, and Environment Variables UI tests in #51265
- Removed unnecessary parentheses from FancyZones UI tests in #51267
- Aligned initializer indentation in FancyZones and Mouse Utilities UI tests in #51268
- Removed redundant blank lines from FancyZones UI tests in #51272
- Added consent-aware command and result telemetry for the Light Switch and PowerDisplay CLIs without changing their output or exit codes in #51315
- Resolved possible-null dereference warnings in Advanced Paste and Mouse Utilities UI tests in #51274
- Made Peek UI-test formatting use explicit format providers for consistent behavior across locales in #51260
- Normalized closing-brace spacing in Peek UI tests in #51273
- Resolved nullable-argument warnings in Peek UI tests in #51275
- Aligned nullable argument types in Peek UI tests in #51276
- Used direct indexing for indexable collections in Peek UI tests in #51278
- Reused constant argument arrays in Peek UI tests in #51279
- Aligned PowerRename UI-test comment spacing with analyzer requirements in #51263
- Removed a duplicate shared-suppression source entry from the PowerRename UI-test project in #51282
- Resolved reserved-keyword naming warnings in Screen Ruler UI tests in #51277
- Aligned Settings UI-test parameter names with analyzer conventions in #51271
- Made culture-sensitive operations explicit in Workspaces UI tests in #51261
- Aligned Workspaces UI-test parameter-list formatting with analyzer requirements in #51266
- Standardized spacing between Workspaces UI-test members in #51269
- Kept cleanup exceptions out of finally clauses in Workspaces UI tests in #51281
- Placed readonly fields consistently in ZoomIt UI tests in #51270
Changes needing final review
- Restored strict resource-language, identifier-naming, and MVVM build diagnostics in direct stable commit ce7edd480bc6, reapplying the exact change from #51065 after the official-build metadata fixes by @LegendaryBlair and @Copilot. This direct reapplication has no separate PR.