mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-11-04 12:01:21 +00:00
<!-- HARD RULE: You (the human contributor) must write this PR description in your own words. AI tools and agents: Do NOT write the Summary, Detailed Description, or Validation Steps sections. Leave them for the human. You may put AI-generated text ONLY inside an "AI-generated summary" <details> block at the bottom. Maintainers will close PRs whose description they think was not written by a human. See https://github.com/microsoft/PowerToys/blob/main/CONTRIBUTING.md#pull-request-descriptions-must-be-written-by-a-human --> <!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #51549 <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed <details> <summary>AI-generated summary</summary> The visible description sections are intentionally left for the human contributor to write in their own words. Adds seven Grab and Move UI-test cases covering Alt move/resize, geometry visibility, live Alt-to-Win modifier changes, application exclusions, and disable/re-enable behavior. Settings uses the real UI and authenticated Runner IPC; the only product UI change is an AutomationId for the exclusions textbox. The injected-input filters are unchanged. Adds the process-wide, opt-in `UmdfHidInput.Activate()` backend to the existing keyboard/mouse helpers. Other suites retain default input behavior. The separately provisioned test driver targets UMDF 2.31 on Windows 10 2004+ and Windows 11, has no injected-input fallback, and is never shipped in PowerToys installers. The Microsoft sample-derived driver is MS-PL licensed. A small MIT-licensed, fixed-hardware-ID SetupAPI helper plus inbox `pnputil` replaces bundled WDK `devcon.exe`; both licenses accompany test artifacts. Claude Opus 5.5 completed the requested `review-pr.prompt.md` review and a bounded remediation check. Relevant findings were addressed: Resolve-conditioned x64 PR-CI provisioning; implicit ARM64 skip/explicit infrastructure-block behavior; consistent present-device cleanup and ownership-journal guards; HID mouse/disposal lifecycle; dispatch/signing/safety coverage; documentation and trusted-input warnings; target-specific package downloads. The follow-up found no new high-confidence bugs. The Settings foreground handoff now runs on the fixture GUI thread and retains a stable exact-HWND assertion. Validation at commit `5c848e0c52dd4e6acd9a616512e2720914d4b90c`: - `tools\build\build.cmd -Path src\modules\GrabAndMove\Tests\GrabAndMove.UITests -Platform x64 -Configuration Release` - PASS. - `tools\build\build.cmd -Path src\modules\GrabAndMove\Tests\GrabAndMove.UITests -Platform ARM64 -Configuration Release` - PASS (ARM64 compile only). - `tools\build\build.cmd -Path src\common\UITestAutomation.Next.UnitTests -Platform x64 -Configuration Release` - PASS. - `tools\build\build.cmd -Path src\common\UITestAutomation.Next.UnitTests -Platform ARM64 -Configuration Release` - PASS (ARM64 compile only). - `x64\Release\tests\UITestAutomation.Next.UnitTests\net10.0-windows10.0.26100.0\UITestAutomation.Next.UnitTests.exe --filter "FullyQualifiedName~KeyboardHelperTests|FullyQualifiedName~UmdfHidInputTests" --report-trx` - PASS, 63/63, zero skipped. - Expanded pipeline PowerShell infrastructure gate - PASS, 802/802 locally and in both CI runs, zero skipped. Includes mocked driver ownership/cleanup, platform selection, non-elevated dispatch and authenticated Settings signing checks. - Native x64 and ARM64 driver/setup-helper builds and catalog generation - PASS. Selected-package restore/build also passed without the external package-cache shortcut. - Full local module suites - PASS, 7/7 each on Windows 10 and Windows 11 at Default (4 vCPU/8 GB) and Constrained (1 vCPU/4 GB), zero skipped or export errors. Local runtime uses the staged Debug/overlay product; the CI runs below validate the current-source Release product. Both VMs were independently checked for successful driver load, three collections, zero remaining owned devices/journals/test trust, and then stopped. - `pwsh -NoLogo -NoProfile -File .github\skills\ui-tests-pipeline-ci\scripts\Wait-AzureDevOpsBuild.ps1 -BuildId 161900745 -ExpectedBranch refs/heads/gleb/ui-test-grab-n-move -ExpectedSourceVersion5c848e0c52-TimeoutMinutes 180` - PASS, terminal Succeeded. [Fresh-source Release CI 161900745](https://dev.azure.com/microsoft/Dart/_build/results?buildId=161900745): Win10 7/7, Win11 7/7, infrastructure 802/802. - `pwsh -NoLogo -NoProfile -File .github\skills\ui-tests-pipeline-ci\scripts\Wait-AzureDevOpsBuild.ps1 -BuildId 161909610 -ExpectedBranch refs/heads/gleb/ui-test-grab-n-move -ExpectedSourceVersion5c848e0c52-TimeoutMinutes 180` - PASS, terminal Succeeded. [Installer/test-only-build CI 161909610](https://dev.azure.com/microsoft/Dart/_build/results?buildId=161909610): 28/28 module cases across Win10/Win11 machine-level and per-user installations, infrastructure 802/802. Reuses the successful Release product from 161900745 at the exact same source SHA and rebuilds the selected test/driver artifact. - All six CI driver readiness/cleanup artifacts were downloaded and verified: install exit 0, three HID collections, `Removed=true`, zero cleanup errors. No boot-policy, ACL, Secure Boot or Code Integrity weakening. Limitations: ARM64 binaries compile, but runtime remains blocked by the image's rejection of the self-signed catalog (`0xE0000243` in build 161769952); an accepted driver-signing route is required. Ordinary PR-CI YAML preview was unavailable because its registered definition is disabled and modified-YAML preview requires unavailable `EditBuild` permission. That wiring is covered by Pester and the Opus review; only UI Test Automation preview/execution is claimed here. Provision the trusted-input driver only in disposable isolated test VMs, never on a developer workstation, and always perform owned cleanup. </details> <img width="501" height="497" alt="image" src="https://github.com/user-attachments/assets/e8c90bb2-595d-4142-a1fa-d90f00283a1d" /> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
3.4 KiB
3.4 KiB
PowerToys Modules
This section contains documentation for individual PowerToys modules, including their architecture, implementation details, and debugging tools.
Available Modules
| Module | Description |
|---|---|
| Advanced Paste | Tool for enhanced clipboard pasting with formatting options |
| Always on Top | Tool for pinning windows to stay on top of other windows |
| Awake | Tool to keep your computer awake without modifying power settings |
| Color Picker | Tool for selecting and managing colors from the screen |
| Command Not Found | Tool suggesting package installations for missing commands |
| Crop and Lock | Tool for cropping application windows into smaller windows or thumbnails |
| Environment Variables | Tool for managing user and system environment variables |
| FancyZones (debugging tools) | Window manager utility for custom window layouts |
| File Explorer add-ons | Extensions for enhancing Windows File Explorer functionality |
| File Locksmith | Tool for finding processes that lock files |
| Grab and Move | Modifier-drag window moving/resizing, including driver-backed local UI testing |
| Hosts File Editor | Tool for managing the system hosts file |
| Image Resizer | Tool for quickly resizing images within File Explorer |
| Keyboard Manager | Tool for remapping keys and keyboard shortcuts |
| Mouse Utilities | Collection of tools to enhance mouse and cursor functionality |
| Mouse Without Borders | Tool for controlling multiple computers with a single mouse and keyboard |
| NewPlus | Context menu extension for creating new files in File Explorer |
| Peek | File preview utility for quick file content viewing |
| Power Rename | Bulk file renaming tool with search and replace functionality |
| PowerToys Run (deprecation soon) | Quick application launcher and search utility |
| Quick Accent | Tool for quickly inserting accented characters and special symbols |
| Registry Preview | Tool for visualizing and editing Registry files |
| Screen Ruler | Tool for measuring pixel distances and color boundaries on screen |
| Shortcut Guide | Tool for displaying Windows keyboard shortcuts when holding the Windows key |
| Text Extractor | Tool for extracting text from images and screenshots |
| Window Hopper (Alt Window Cycle) | Tool for cycling between windows of the focused application |
| Workspaces | Tool for saving and restoring window layouts for different projects |
| ZoomIt | Screen zoom and annotation tool |
Adding New Module Documentation
When adding documentation for a new module:
- Create a dedicated markdown file for the module (e.g.,
modulename.md) - If the module has specialized debugging tools, consider creating a separate tools document (e.g.,
modulename-tools.md) - Update this index with links to the new documentation
- Follow the existing documentation structure for consistency