Compare commits

...

7 Commits

Author SHA1 Message Date
Boliang Zhang (from Dev Box)
e5a091e7c6 Update v0.99 release notes: add 8 PRs from round 6
Adds 8 new PRs merged to stable:
- Command Palette: +2 (#47196 CmdPal installer folder, #47210 winmd COM marshalling fix)
- Settings: +1 (#47197 Grab And Move/ZoomIt UX polish)
- Mouse Utilities: +1 (#47198 Mouse Jump settings panel crash fix - new section)
- Grab And Move: +1 (#47194 excluded-apps placeholder)
- Setup/Install: +2 new section (#47105 installer diagnostics docs, #47177 MSIX DACL fix for File Explorer preview handlers)
- Bug Report Tool: +1 new section (#47168 area selector additions)

Also merged the Window Manager section into Grab And Move to match
the team's new Product-Grab And Move label.

Total now 124 PRs (was 116).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 00:05:52 +08:00
Boliang Zhang (from Dev Box)
9e02f204dc Update v0.99 release notes: add 16 PRs from round 5
Adds 16 new PRs merged to stable:
- Command Palette: +6 (Windows Terminal dock pinning, 3 crash fixes, fallback toggle fix, dock refresh, version bump)
- Window Manager: +2 (GrabAndMove Alt/Win modifier, settings strings)
- Settings: +2 (string updates, missing images fix)
- Build: +2 (check-spelling refresh, default module states)
- Display Management: +1 (Power Display polish)
- Light Switch: +1 (new module section - PowerDisplay integration fixes)
- Runner: +1 (tray icon color tweaks)

3 PRs excluded as internal:
- #47155 (doesn't exist)
- #47158 (release notes skill - internal tooling)
- #47122 (.gitignore - internal)

Total now 116 PRs (was 100).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 14:08:14 +08:00
Boliang Zhang (from Dev Box)
8cc2bd9992 Regenerate 24 stale PR summaries for v0.99 release notes
Replaces 24 summaries that were captured from online Copilot reviews
when the PRs were first opened. Those summaries may have missed later
commits and review iterations. Now regenerated locally from current PR
descriptions and diffs for accuracy.

Affected groups: Command Palette (15), Advanced Paste (1), Image Resizer (1),
PowerToys Run (1), Settings (3), Text Extractor (1), Build (1), Tests (1).

Total still 100 PRs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-23 16:31:35 +08:00
Boliang Zhang (from Dev Box)
444438f665 Update v0.99 release notes: add 3 PRs from round 4
Adds 3 new PRs merged to stable since round 3:
- Settings: +1 (#47132 design tweaks and ZoomIt page fix)
- Image Resizer: +1 (#47134 JPEG quality setting fix)
- Runner (new dev subsection): +1 (#47030 update-available tray badge)

Also rebuilt the full release notes (reorganized sections, cleaned attributions).

Total now 100 PRs (was 97).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-22 17:48:18 +08:00
Boliang Zhang (from Dev Box)
d2d2cfcf1f Update v0.99 release notes: add 13 more PRs from round 3
Adds 13 new PRs merged to stable since round 2:
- Command Palette: +6 (persistent calc history, Compact Dock, indexer improvements, etc.)
- Display Management: +2 (shared flyout helper, startup/volume fixes)
- Quick Accent: +2 (en-dash, All-available parsing fix)
- Image Resizer: +1 (JSON serialization regression fix)
- OOBE: +1 (GrabAndMove assets and NEW badges)
- Tests: +1 (CI test hang fix)

Total now 97 PRs (was 84).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-21 15:31:58 +08:00
Boliang Zhang (from Dev Box)
29b51b1ed0 Update v0.99 release notes: add 17 PRs from round 2
Adds 17 PRs (12 new merges to stable + 5 relabeled from 0.98.2):
- 3 new module sections: Always On Top, Keyboard Shortcut Manager, Window Manager (GrabAndMove)
- Additional PRs for Command Palette (+4), Advanced Paste (+1), Display Management (+2),
  Settings (+3), Text Extractor (+1), Build (+1), Telemetry (+1)
- Total now 84 PRs (was 67)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 01:44:50 +08:00
Boliang Zhang (from Dev Box)
40c0122d0b Add v0.99 release notes draft for review
Release notes covering 67 PRs merged since v0.98.0, excluding
v0.98.1 and v0.98.2 hotfix PRs. Includes highlights, per-module
sections, and development changes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 16:56:36 +08:00

View File

@@ -0,0 +1,217 @@
# PowerToys v0.99 release notes
## Highlights
- **Grab And Move**: New module enables Alt+Left Click window dragging and Alt+Right Click resizing for Linux-style window manipulation without targeting title bars.
- **Power Display**: Re-enabled with new icon, DPI fixes, installer integration, and a polished flyout that no longer overlaps the taskbar or renders off-screen after DPI changes.
- **Image Resizer**: Migrated from WPF to WinUI 3, modernizing the UI and unblocking AOT compilation for future performance gains.
- **Command Palette**: Major release bumping to 0.10 with persistent calculator history, a new pin-to-Dock dialog, Compact Dock mode, immutable settings/state, dark-mode polish, and several typing-crash fixes.
- **ZoomIt**: Added panoramic/scrolling screenshot capture, text extraction when snipping, and break timer screen saver mode with optional computer lock.
- **Advanced Paste**: Auto-copy now works on Electron/Chromium apps like Teams and VS Code by releasing held modifier keys before injecting Ctrl+C.
- **Quick Accent**: Added subscript/superscript characters, fixed the "All available" default fallback, and added Hungarian and Icelandic mappings.
- **Settings**: Friendly relative dates for last update check, Quick Accent language list now reflows on resize, plus glyph rendering and Dashboard layout fixes.
- **Light Switch**: Fixed Power Display profile integration and the every-other-press hotkey bug.
- **Setup/Install**: Fixed File Explorer preview handlers for .txt/.md/.pdf/.svg files breaking on Windows 23H2/24H2/25H2 due to MSIX sparse package DACL contamination.
- **PowerToys Run**: Closed a Shell plugin command breakout by escaping double quotes in command strings.
- **Defaults**: New installs now ship with 7 modules disabled by default to streamline the first-run experience.
## Advanced Paste
- Eliminated 13 XAML compiler warnings by switching x:Bind expressions on non-observable properties from OneWay to OneTime mode, since these properties never raise change notifications and are refreshed via Bindings.Update() when needed in [#46726](https://github.com/microsoft/PowerToys/pull/46726).
- Fixed auto-copy failing on Electron/Chromium apps (e.g. Teams, VS Code) by releasing held modifier keys before injecting Ctrl+C in [#46486](https://github.com/microsoft/PowerToys/pull/46486).
## Always On Top
- Fixed the pin/unpin sound playing even when the operation failed by gating sound playback on whether SetWindowPos actually succeeded in [#46910](https://github.com/microsoft/PowerToys/pull/46910).
## Command Palette
- Added plain text viewer and image viewer IContent types to the extension SDK, enabling extensions to display raw text and zoomable images directly in the content pane in [#43964](https://github.com/microsoft/PowerToys/pull/43964). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Added persistent calculator history with save, reuse, delete, and clear actions, a configurable primary action (Copy or Paste), replace-query-on-enter behavior, and consistent window-hide for calculator and clipboard-history paste flows in [#45307](https://github.com/microsoft/PowerToys/pull/45307). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Fixed the Window Walker Close window command to respect the "Keep open after closing window" setting and automatically refreshed the window list after closing or ending a task in [#45721](https://github.com/microsoft/PowerToys/pull/45721). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Removed a workaround for FontIconSource.CreateIconElement icons not being visible, as the underlying issue was fixed in Windows App SDK 1.8.4 in [#45790](https://github.com/microsoft/PowerToys/pull/45790). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Split the full-screen shortcut guard into separate full-screen (D3D/presentation mode) and busy checks with an opt-in IgnoreShortcutWhenBusy setting, added a live diagnostic InfoBar that names likely trigger apps, and introduced an opt-in triple-press breakthrough to bypass suppression in [#45891](https://github.com/microsoft/PowerToys/pull/45891). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Fixed keyboard focus restoration on the Extensions settings page so that Shift+Tab navigation returns to the previously selected extension card in [#45903](https://github.com/microsoft/PowerToys/pull/45903). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Fixed a screen reader accessibility issue where the Alias text box in the Extension settings page announced "Enter Alias" instead of just "Alias" in [#45906](https://github.com/microsoft/PowerToys/pull/45906).
- Bumped all CommunityToolkit.WinUI packages from 8.2.250402 to 8.2.251219 and removed three SearchBar workaround hacks (TextChanged immediate-fire, Escape, and Backspace pre-emptive push) that existed only to paper over upstream debouncer bugs that are now fixed in [#46027](https://github.com/microsoft/PowerToys/pull/46027). Thanks [@niels9001](https://github.com/niels9001)!
- Updated the Microsoft.CmdPal.Ext.PowerToys solution filter file to include missing project dependencies, ensuring the extension builds correctly when opened via the slnf in [#46136](https://github.com/microsoft/PowerToys/pull/46136). Thanks [@jiripolasek](https://github.com/jiripolasek) and [@vanzue](https://github.com/vanzue)!
- Made the Dock window stay on top of all other windows by default (automatically yielding when a full-screen app is detected), with a new setting to disable this behavior in [#46163](https://github.com/microsoft/PowerToys/pull/46163). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Added screen reader announcements for shortcut key information on the settings button, improving discoverability for users relying on assistive technologies in [#46164](https://github.com/microsoft/PowerToys/pull/46164). Thanks [@chatasweetie](https://github.com/chatasweetie) and [@jiripolasek](https://github.com/jiripolasek)!
- Fixed a crash when converting large calculator results to hex/oct/bin by switching the secondary-results base conversion to BigInteger with a custom base converter, and added a safety error handler so a failed secondary menu item no longer breaks the main result in [#46176](https://github.com/microsoft/PowerToys/pull/46176). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Assigned stable IDs to FancyZones layout commands in the PowerToys extension so users can pin individual layouts to the dock, which previously failed because the commands had no identity to persist in [#46198](https://github.com/microsoft/PowerToys/pull/46198). Thanks [@vanzue](https://github.com/vanzue)!
- Extracted persistence and file I/O logic from SettingsModel and AppStateModel into dedicated service classes, making the models pure data objects and improving testability in [#46312](https://github.com/microsoft/PowerToys/pull/46312). Thanks [@michaeljolley](https://github.com/michaeljolley)!
- Added a NetworkSpeedUnit choice setting to the Performance Monitor extension letting users display network transmission speed in bits per second (Kbps/Mbps/Gbps, default), decimal bytes per second (KB/s/MB/s/GB/s), or IEC binary bytes per second (KiB/s/MiB/s/GiB/s) in [#46320](https://github.com/microsoft/PowerToys/pull/46320). Thanks [@niels9001](https://github.com/niels9001)!
- Removed redundant container-level tab stops in the details panel so keyboard users tab once into the panel and then directly onto interactive controls instead of landing on non-interactive containers twice in [#46346](https://github.com/microsoft/PowerToys/pull/46346). Thanks [@chatasweetie](https://github.com/chatasweetie)!
- Enabled dock pinning of Windows Terminal profiles with per-profile icons instead of the generic Terminal logo, and hardened GUID parsing so a malformed profile entry no longer breaks the whole list in [#46372](https://github.com/microsoft/PowerToys/pull/46372).
- Simplified the Time & Date extension page to recalculate results on every query rather than caching, breaking a potential infinite update loop in [#46396](https://github.com/microsoft/PowerToys/pull/46396). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Decoupled the Dock context menu from the Command Bar's active item so it no longer updates when a different list item is selected, and made the Dock-triggered search box position follow the Dock position; also fixed confusing behavior where dock items with a single action showed the wrong menu in [#46420](https://github.com/microsoft/PowerToys/pull/46420). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Hardened ListViewModel item-fetch synchronization with copy-on-write cache publication, latest-fetch-wins semantics across overlapping RPC calls, a thread-local re-entry guard, and improved cancellation cleanup, fixing concurrency bugs that caused stale or duplicated list state in [#46429](https://github.com/microsoft/PowerToys/pull/46429). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Introduced a new pin-to-Dock dialog that gives users more control over how commands are pinned, replacing the previous one-click pin behavior with a richer configuration UX in [#46436](https://github.com/microsoft/PowerToys/pull/46436). Thanks [@niels9001](https://github.com/niels9001)!
- Fixed a bug where dock bands could contain duplicate pinned extensions because PinDockBand lacked a duplicate check; added dedup guards on both the pin path and the load path in [#46438](https://github.com/microsoft/PowerToys/pull/46438).
- Prevented PgUp/PgDown paging from landing on non-interactive entries like separators and section headers by introducing helpers that skip over non-selectable items during page navigation in [#46439](https://github.com/microsoft/PowerToys/pull/46439). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Refactored settings and app state to be immutable end-to-end, converting models to records with init-only properties and immutable collections, and routed all mutations through atomic copy-on-write update functions to eliminate concurrency race conditions in [#46451](https://github.com/microsoft/PowerToys/pull/46451). Thanks [@michaeljolley](https://github.com/michaeljolley)!
- Fixed duplicate and contradictory Pin to Dock/Unpin from dock context menu entries appearing on top-level home-page items after hide/show cycles, by preventing stale sub-page context from leaking and skipping pin-command injection for items that already populate them in [#46458](https://github.com/microsoft/PowerToys/pull/46458). Thanks [@michaeljolley](https://github.com/michaeljolley)!
- Fixed invisible/corrupted icons in newly created extensions by extracting template expansion into a dedicated service that no longer rewrites binary files during template instantiation, and added unit tests covering text-vs-binary handling in [#46490](https://github.com/microsoft/PowerToys/pull/46490). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Added a CanGoBack guard to Frame.GoBack in the shell page, preventing a crash when navigating back with an empty navigation stack in [#46493](https://github.com/microsoft/PowerToys/pull/46493). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Hardened the Performance Monitor extension with comprehensive exception handling and added crash recovery via a sentinel file mechanism so that a repeatedly failing extension is automatically disabled and can be re-enabled by the user in [#46541](https://github.com/microsoft/PowerToys/pull/46541). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Fixed a WinUI layout bug where the settings page content was visually offset when wrapped in a ScrollViewer with a MaxWidth in [#46568](https://github.com/microsoft/PowerToys/pull/46568).
- Fixed a regression in PinToDockDialogContent.xaml where a type rename was missed during a merge gap, restoring correct compilation after a prior refactor in [#46599](https://github.com/microsoft/PowerToys/pull/46599). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Fixed right-click context menus failing to open on the first attempt for slow out-of-process third-party extensions by keeping the initial context-menu request alive while MoreCommands hydrate in [#46626](https://github.com/microsoft/PowerToys/pull/46626). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Fixed a build-breaking merge inconsistency in DockWindow.xaml.cs caused by two concurrent changes landing in conflict in [#46639](https://github.com/microsoft/PowerToys/pull/46639). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Reverted focus-restoration behavior on the Extensions settings page because it unintentionally caused clicks to open the wrong extension item in [#46642](https://github.com/microsoft/PowerToys/pull/46642). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Shipped Copilot instructions and 5 skills (publish-extension, add-adaptive-card-form, add-extension-settings, add-dock-band, add-fallback-commands) inside the extension template so newly generated extensions come with AI-assisted development guidance out of the box in [#46683](https://github.com/microsoft/PowerToys/pull/46683). Thanks [@niels9001](https://github.com/niels9001)!
- Gave each built-in extension its own settings file instead of sharing a single settings.json, preventing the persistence service from silently overwriting extension settings, with transparent one-time migration from the legacy shared file in [#46685](https://github.com/microsoft/PowerToys/pull/46685). Thanks [@michaeljolley](https://github.com/michaeljolley)!
- Added a Compact Dock mode (28px tall, subtitle hidden) for Top/Bottom dock positions, and hid the Dock Size setting for Left/Right positions since sidebar styling requires the default size in [#46699](https://github.com/microsoft/PowerToys/pull/46699).
- Fixed inline code (backtick text) in the Details and Content panels being invisible on light-theme backgrounds by adding theme-aware foreground, background, and border styling in [#46739](https://github.com/microsoft/PowerToys/pull/46739). Thanks [@michaeljolley](https://github.com/michaeljolley)!
- Introduced a new CmdPalLogger, CmdPalLoggerProvider, and extension method that integrate Microsoft.Extensions.Logging, routing all log output through ManagedCommon.Logger in [#46768](https://github.com/microsoft/PowerToys/pull/46768). Thanks [@michaeljolley](https://github.com/michaeljolley)!
- Updated the solution filter files to include new transitive dependencies required by UI tests and added a leaner SLNF for faster developer builds in [#46896](https://github.com/microsoft/PowerToys/pull/46896). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Improved indexer search with implicit filename broadening for plain free-text queries, retry-with-literal matching for punctuation-heavy searches, and surfaced Windows Search availability so users know when the service is down instead of seeing empty results in [#46907](https://github.com/microsoft/PowerToys/pull/46907). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Fixed Calculator extension unit tests failing under non-English cultures by pinning the C++ evaluator output stream to the classic locale and setting deterministic thread culture in test setup in [#46911](https://github.com/microsoft/PowerToys/pull/46911). Thanks [@niels9001](https://github.com/niels9001)!
- Fixed the Window Walker "Not Responding" tag being illegible in dark mode by removing the hardcoded crimson foreground color so it uses the theme-aware default brush instead in [#46924](https://github.com/microsoft/PowerToys/pull/46924). Thanks [@niels9001](https://github.com/niels9001)!
- Moved developer documentation from src/modules/cmdpal/doc to doc/devdocs/modules/cmdpal to align with the standard location used by other PowerToys modules in [#46926](https://github.com/microsoft/PowerToys/pull/46926). Thanks [@niels9001](https://github.com/niels9001)!
- Fixed a Watson crash where a single extension in a bad state (being updated, partially installed, or corrupted) would kill the entire extension-loading loop and prevent all other extensions from loading in [#47032](https://github.com/microsoft/PowerToys/pull/47032).
- Enabled telemetry event firing correctly in AOT (Ahead-Of-Time) builds by adding EventSourceSupport to the project in [#47121](https://github.com/microsoft/PowerToys/pull/47121).
- Fixed the Settings toggle for disabling fallback commands from out-of-process extensions by switching the type check from a concrete class to the WinRT interface so interface-proxied commands are handled correctly in [#47127](https://github.com/microsoft/PowerToys/pull/47127).
- Fixed a 100% reproducible crash when typing in the search box by adding a reentrancy guard around filtered-items mutations, preventing WinUI3 from allowing a second update to corrupt an in-flight one during collection-changed handling in [#47148](https://github.com/microsoft/PowerToys/pull/47148). Thanks [@MuyuanMS](https://github.com/MuyuanMS)!
- Fixed the Dock not reflecting pin/unpin changes until restart by re-reading persisted Dock settings when the bands collection changes instead of relying on the change event in [#47169](https://github.com/microsoft/PowerToys/pull/47169).
- Bumped the Command Palette version to 0.10 in [#47181](https://github.com/microsoft/PowerToys/pull/47181).
- Fixed a second typing crash that occurred when the indexer fallback was enabled by correcting a P/Invoke function signature that regressed in an earlier indexer improvement in [#47186](https://github.com/microsoft/PowerToys/pull/47186).
- Fixed the Dock window showing a visible frame on startup by hiding the DWM border during window creation instead of only on activation in [#47187](https://github.com/microsoft/PowerToys/pull/47187).
- Added the missing CmdPal folder to the installer by registering it in Settings.wxs and the file-component generator script, ensuring Command Palette assets are properly packaged and installed in [#47196](https://github.com/microsoft/PowerToys/pull/47196).
- Installed CommandPalette.Extensions.winmd into the WinUI3Apps directory instead of the install root so the WinRT runtime can find it for COM proxy/stub creation, fixing extension load failures introduced by the MSIX sparse package fix in [#47210](https://github.com/microsoft/PowerToys/pull/47210).
## Display Management
- Re-enabled the Power Display module with a new icon/logo, DPI fixes, UI/UX improvements, and installer integration in [#46489](https://github.com/microsoft/PowerToys/pull/46489).
- Cleaned up the Power Display module by fixing resource leaks, removing dead code, converting a recursive parser to iterative, and changing the default activation shortcut to Win+Ctrl+Shift+P in [#46979](https://github.com/microsoft/PowerToys/pull/46979).
- Fixed thread safety in Power Display by marking shared fields as volatile, guarding color temperature writes behind a capability check, and correcting a misleading log message in [#47008](https://github.com/microsoft/PowerToys/pull/47008).
- Fixed Power Display startup restore, volume initialization, and Identify window lifecycle by reading actual monitor volume, gating brightness init on capability detection, and replacing fire-and-forget delays with a stoppable timer in [#47051](https://github.com/microsoft/PowerToys/pull/47051).
- Introduced a shared flyout positioning helper used by Power Display and Quick Access, fixing the Power Display flyout overlapping the taskbar at 100% scaling and the Quick Access flyout rendering off-screen after DPI changes in [#47097](https://github.com/microsoft/PowerToys/pull/47097).
- Polished Power Display by standardizing the module name as Power Display, shrinking the flyout slightly, and removing dead titlebar button color code in [#47163](https://github.com/microsoft/PowerToys/pull/47163).
## Grab And Move
- Added the Grab And Move module that enables Alt+Left Click window dragging and Alt+Right Click window resizing, providing Linux-style window manipulation without targeting title bars in [#47024](https://github.com/microsoft/PowerToys/pull/47024).
- Unstuck the Alt key after Ctrl+Alt+Del or Alt+Tab into an admin process, made Win selectable as the move/resize activation modifier, and made the window geometry readout opaque for better legibility in [#47052](https://github.com/microsoft/PowerToys/pull/47052). Thanks [@foxmsft](https://github.com/foxmsft)!
- Updated Grab And Move Settings strings to be modifier-agnostic now that Win is selectable as an alternative to Alt, so the UI no longer misrepresents the feature when Win is selected in [#47178](https://github.com/microsoft/PowerToys/pull/47178).
- Updated the Grab And Move excluded-apps placeholder text from "outlook.exe" to "outlook" so it matches both classic Outlook and new Outlook (which runs as olk.exe) via window title matching in [#47194](https://github.com/microsoft/PowerToys/pull/47194). Thanks [@MuyuanMS](https://github.com/MuyuanMS)!
## Image Resizer
- Migrated Image Resizer from WPF to WinUI 3, unblocking future AOT compilation (estimated 1.5-3x performance improvement) and aligning the UI with Windows 11 design language in [#45288](https://github.com/microsoft/PowerToys/pull/45288). Thanks [@moooyo](https://github.com/moooyo) and [@niels9001](https://github.com/niels9001)!
- Fixed missing PNG encoder settings by applying codec-specific encoder properties in the transcode path and passing the PNG interlace option to the WinRT encoder, matching WPF behavior in [#46695](https://github.com/microsoft/PowerToys/pull/46695). Thanks [@moooyo](https://github.com/moooyo)!
- Fixed a regression from the WinUI 3 migration where JsonPropertyName attributes were not forwarded by the ObservableProperty generator, restoring correct JSON serialization of resize size settings in [#47056](https://github.com/microsoft/PowerToys/pull/47056).
- Restored honoring the user-configured JPEG quality setting when resizing JPEGs, which had been silently ignored after the WinUI 3 migration and was producing output at a fixed ~Q90 default in [#47134](https://github.com/microsoft/PowerToys/pull/47134).
## Keyboard Shortcut Manager
- Addressed code review feedback on manual key selection: fixed localization, centralized VK_DISABLED constants, added validation for disable mappings, fixed dropdown revert logic, and plugged Process handle leaks in [#46377](https://github.com/microsoft/PowerToys/pull/46377).
- Reverted multiline text replacement back to character-by-character sending with Shift+Enter for newlines, fixing multiline replacements in chat apps and plain editors in [#46794](https://github.com/microsoft/PowerToys/pull/46794).
## Light Switch
- Fixed two bugs in the Light Switch and Power Display integration by re-enabling the previously commented-out Apply monitor settings expander and disabled-warning InfoBar in Settings, and ensuring every hotkey press notifies Power Display instead of only every other press in [#47190](https://github.com/microsoft/PowerToys/pull/47190).
## Mouse Utilities
- Fixed a crash in the Mouse Jump settings panel by hardening MouseJumpPanel.xaml.cs, restoring stable access to the Mouse Jump configuration UI in [#47198](https://github.com/microsoft/PowerToys/pull/47198).
## Peek
- Added auto-detection of file name encoding when previewing zip files, fixing garbled text for archives created on non-UTF-8 systems in [#44799](https://github.com/microsoft/PowerToys/pull/44799). Thanks [@oxygen-dioxide](https://github.com/oxygen-dioxide)!
## PowerToys Run
- Removed unused XAML namespace declarations from PowerLauncher (Run) XAML files, cleaning up dead references in [#46221](https://github.com/microsoft/PowerToys/pull/46221). Thanks [@niels9001](https://github.com/niels9001)!
- Fixed a command breakout in the Shell plugin by escaping double quotes in the command string so that inputs like `test" & calc.exe` are treated as literal strings, while still allowing environment variables to expand as expected in [#45554](https://github.com/microsoft/PowerToys/pull/45554). Thanks [@RinZ27](https://github.com/RinZ27)!
## Quick Accent
- Added subscript and superscript Unicode characters to the Special Characters set for keys 0-9, A, E, N, X, Y, Z, and math operators in [#45540](https://github.com/microsoft/PowerToys/pull/45540). Thanks [@Salehnaz](https://github.com/Salehnaz)!
- Added the missing Icelandic accented letter i to the VK_I key definition in [#46424](https://github.com/microsoft/PowerToys/pull/46424). Thanks [@squirrelslair](https://github.com/squirrelslair)!
- Added Shift+N capitalization support for superscript Latin small letter n, mapping to modifier letter capital N in [#46571](https://github.com/microsoft/PowerToys/pull/46571). Thanks [@PesBandi](https://github.com/PesBandi)!
- Fixed the default "All available" language setting silently falling back to a small character set due to parsing issues, added case-insensitive parsing with invalid-entry warnings, and added two new Hungarian character mappings in [#47117](https://github.com/microsoft/PowerToys/pull/47117). Thanks [@daverayment](https://github.com/daverayment)!
- Restored the en-dash character under the VK_MINUS key in the Special Characters set, fixing a regression where it was only accessible via VK_COMMA in [#47106](https://github.com/microsoft/PowerToys/pull/47106).
## Settings
- Fixed the Quick Accent character-sets grid being clipped and showing an inner horizontal scrollbar by replacing the MaxWidth binding with explicit SizeChanged and Loaded handlers, so the list reflows from 3 to 2 to 1 columns on resize in [#45986](https://github.com/microsoft/PowerToys/pull/45986). Thanks [@daverayment](https://github.com/daverayment)!
- Renamed the shortcut conflict checkbox label from "Ignore shortcut" to "Ignore conflict" to clarify that the option lets the shortcut coexist rather than disabling it in [#46318](https://github.com/microsoft/PowerToys/pull/46318).
- Fixed the Settings shortcut/key visuals so arrow glyphs (up/down/left/right) render as proper FontIcon glyphs instead of literal text in ShortcutControl and ShortcutDialogContentControl in [#46454](https://github.com/microsoft/PowerToys/pull/46454). Thanks [@vanzue](https://github.com/vanzue)!
- Fixed the backup folder path being visually clipped on the General and Image Resizer pages by adjusting the XAML layout so long paths are fully visible in [#46920](https://github.com/microsoft/PowerToys/pull/46920).
- Fixed Dashboard layout issues by removing excessive empty scroll space, restoring proper responsive behavior, and correcting a 1-pixel vertical alignment mismatch in [#46922](https://github.com/microsoft/PowerToys/pull/46922).
- Formatted the last checked for updates timestamp as friendly relative strings (Today at 1:22 PM, Yesterday at 3:45 PM) instead of raw date/time output in [#46923](https://github.com/microsoft/PowerToys/pull/46923).
- Refreshed Settings UI assets and copy by fixing a ZoomIt page regression, updating the Command Palette settings page with current links and screenshots, swapping New+ imagery to match other module assets, and adding missing overview screenshots in [#47132](https://github.com/microsoft/PowerToys/pull/47132).
- Tweaked wording on a handful of Settings strings for clarity and consistency in [#47164](https://github.com/microsoft/PowerToys/pull/47164).
- Fixed missing images in the Settings UI by adjusting the project file so image assets are packaged correctly in [#47165](https://github.com/microsoft/PowerToys/pull/47165).
- Polished the Settings UI for the Grab And Move and ZoomIt pages, tightening layout and updating associated strings and ZoomItViewModel logic for a cleaner, more compact appearance in [#47197](https://github.com/microsoft/PowerToys/pull/47197).
## Text Extractor
- Refactored PadImage in PowerOCR to return a bool with a nullability-annotated out parameter, and updated GetWindowBoundsImage to dispose the original bitmap when padding produces a new one, improving memory management and nullability clarity in [#44906](https://github.com/microsoft/PowerToys/pull/44906). Thanks [@adelobosko](https://github.com/adelobosko)!
- Removed the third-party WPF-UI library in favor of native WPF Fluent theming with custom control templates, reducing external dependencies while preserving full light/dark theme support in [#46218](https://github.com/microsoft/PowerToys/pull/46218).
## ZoomIt
- Added panoramic/scrolling screenshot capture, text extraction when snipping, and break timer improvements with screen saver mode and optional computer lock in [#46506](https://github.com/microsoft/PowerToys/pull/46506). Thanks [@foxmsft](https://github.com/foxmsft), [@MarioHewardt](https://github.com/MarioHewardt), and [@markrussinovich](https://github.com/markrussinovich)!
- Fixed ZoomIt x86 build compatibility by emulating the _mm_cvtsi128_si64 intrinsic with _mm_storel_epi64 for 32-bit targets in [#46529](https://github.com/microsoft/PowerToys/pull/46529). Thanks [@foxmsft](https://github.com/foxmsft)!
## Development
### OOBE
- Added a full OOBE page for the new Grab And Move module, high-resolution icons and overview images for both Grab And Move and Power Display, NEW badges on Settings nav items, and refreshed the README utilities table into a clean 10x3 grid in [#47033](https://github.com/microsoft/PowerToys/pull/47033).
### Runner
- Added an update-available badged tray icon, a new "Update available" tray menu entry that opens Settings to the General page, and raised the update InfoBar severity to Warning so users notice pending updates in [#47030](https://github.com/microsoft/PowerToys/pull/47030).
- Updated the dark-mode PowerToys tray icons to use the correct shade of black for the outline, improving icon rendering in the notification area in [#47166](https://github.com/microsoft/PowerToys/pull/47166).
### Build
- Updated the Windows Implementation Library (WIL) from 1.0.231216.1 to 1.0.250325.1 via Central Package Management, clearing static analysis warnings across C++ projects that consume WIL in [#43503](https://github.com/microsoft/PowerToys/pull/43503).
- Fixed the build.ps1 script so the -RestoreOnly switch works correctly and added support for the newer .slnf (solution filter) file format used by the project in [#46012](https://github.com/microsoft/PowerToys/pull/46012). Thanks [@raycheung](https://github.com/raycheung)!
- Pinned the check-spelling GitHub Action to v0.0.26 (commit a35147f) to attempt to fix the CI pipeline that was blocking PRs created from forked repositories in [#46746](https://github.com/microsoft/PowerToys/pull/46746).
- Reverted the pinning of the check-spelling action to v0.0.26 after determining that the pin was unrelated to the pipeline issue being investigated in [#46749](https://github.com/microsoft/PowerToys/pull/46749). Thanks [@moooyo](https://github.com/moooyo)!
- Added contributor names from a recent PR to the spellchecker allow-list so that newly added author names no longer trigger CI spelling errors in [#46765](https://github.com/microsoft/PowerToys/pull/46765). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Upgraded the check-spelling CI action to v0.0.26, which fixes spell-check failures on fork PRs and updates exclusion patterns, expected words, and a typo fix in Keyboard Manager in [#46851](https://github.com/microsoft/PowerToys/pull/46851). Thanks [@jsoref](https://github.com/jsoref)!
- Changed default-on state for new installations by disabling 7 modules by default to streamline the initial experience for new users in [#47027](https://github.com/microsoft/PowerToys/pull/47027).
- Refreshed the check-spelling action to 0.0.26 and synced dictionaries, patterns, and expect/reject lists across docs, source, and resource files, keeping CI spell-checking current in [#47119](https://github.com/microsoft/PowerToys/pull/47119). Thanks [@jsoref](https://github.com/jsoref)!
- Added explicit default-disabled overrides to eight module interfaces (PowerToys Run, Crop And Lock, Advanced Paste, Hosts, Registry Preview, Environment Variables, Workspaces, Power Display) so the native Runner defaults match the managed enabled-modules list, eliminating a first-launch enable/disable flicker in [#47144](https://github.com/microsoft/PowerToys/pull/47144).
### Quality
- Resolved StyleCop SA1614 warnings by adding meaningful text to previously empty XML parameter documentation tags in [#46706](https://github.com/microsoft/PowerToys/pull/46706).
- Resolved StyleCop SA1623 warnings by updating 29 property XML doc summaries to use required prefixes across multiple modules in [#46717](https://github.com/microsoft/PowerToys/pull/46717).
- Resolved StyleCop SA1616 warnings by adding meaningful descriptions to 6 previously empty return-value XML doc tags in [#46718](https://github.com/microsoft/PowerToys/pull/46718).
- Resolved StyleCop SA1622 warning by adding a meaningful description to an empty generic type parameter XML doc tag in [#46707](https://github.com/microsoft/PowerToys/pull/46707).
### Telemetry
- Documented three missing telemetry events (ModuleLaunchedFromSettings, CmdPal_DockConfiguration, KeyboardManager_LaunchEditor) in [#46371](https://github.com/microsoft/PowerToys/pull/46371).
- Added telemetry event logging to CLI entry points for FileLocksmith, Awake, and Image Resizer so command-line invocations are tracked alongside GUI usage in [#46872](https://github.com/microsoft/PowerToys/pull/46872). Thanks [@MuyuanMS](https://github.com/MuyuanMS)!
### Tests
- Fixed MSTEST0017 analyzer warnings by correcting the argument order in 22 Assert calls across 8 test files to follow the proper MSTest convention of Assert.AreEqual(expected, actual) in [#46712](https://github.com/microsoft/PowerToys/pull/46712).
- Added 75+ MSTest unit tests covering Hosts ValidationHelper (IPv4/IPv6/hostname validation with boundary and null-input cases) and ColorPicker ColorFormatHelper conversions (CMYK, HSB/HSI/HWB, CIE XYZ/LAB, Oklab/Oklch, sRGB-linear, NCol) to lock down previously untested code paths in [#46679](https://github.com/microsoft/PowerToys/pull/46679).
- Fixed a CI test hang where Common.Interop.UnitTests.TestSend could block for the full 80-minute job timeout when a prior run left a named-pipe handle alive, by ensuring pipe names are unique per run and bounding handshake waits in [#47123](https://github.com/microsoft/PowerToys/pull/47123).
### Setup/Install
- Added a developer documentation guide for diagnosing installer update issues, covering log file locations, UpdateState.json interpretation, and common root causes for accumulated update installers, helping triage report-only update problems faster in [#47105](https://github.com/microsoft/PowerToys/pull/47105).
- Fixed File Explorer preview handlers for .txt, .md, .pdf, and .svg files breaking on Windows 23H2/24H2/25H2 by moving the MSIX sparse package's ExternalLocation from the PowerToys root install folder to the WinUI3Apps subfolder, preventing AppContainer SIDs added by MSIX registration from contaminating the root DACL in [#47177](https://github.com/microsoft/PowerToys/pull/47177).
### Bug Report Tool
- Added Grab And Move and Power Display as selectable options in the GitHub bug report issue template's Area(s) with issue dropdown so reporters can correctly categorize issues for these two modules in [#47168](https://github.com/microsoft/PowerToys/pull/47168).
### Documentation
- Cleaned up root-folder Markdown files by consolidating bullet styles, fixing spelling and grammar, converting HTML to Markdown, and applying sentence-case headers in [#46582](https://github.com/microsoft/PowerToys/pull/46582). Thanks [@Jay-o-Way](https://github.com/Jay-o-Way)!
- Added comprehensive DSC (Desired State Configuration) documentation with per-module reference pages, settings examples, and an overview guide covering 25+ PowerToys modules in [#42554](https://github.com/microsoft/PowerToys/pull/42554). Thanks [@Gijsreyn](https://github.com/Gijsreyn)!
### GitHub Actions
- Bumped the azure/cli GitHub Action from v2 to v3 in the MS Store submissions workflow in [#46562](https://github.com/microsoft/PowerToys/pull/46562).
- Bumped the azure/login GitHub Action from v2 to v3 in the MS Store submissions workflow in [#46323](https://github.com/microsoft/PowerToys/pull/46323).