Compare commits

...

1270 Commits

Author SHA1 Message Date
vanzue
0e2ca69947 restore change to make commit clean 2025-11-17 09:22:10 +08:00
vanzue
bdf92319da merge main 2025-11-17 09:18:49 +08:00
Niels Laute
47aed03c03 [AP] Loc fix (#43617)
<!-- 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: #xxx
<!-- - [ ] 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
2025-11-16 22:13:40 +08:00
Niels Laute
6423c7693d [CmdPal] Settings page refresh (#43487)
- Refreshed the CmdPal page.
- CmdPal can now also be activated from this page by clicking a button
- Added a Preview InfoBar for FL in AP

<img width="1384" height="1067" alt="image"
src="https://github.com/user-attachments/assets/f670e13b-5b4a-4f6a-bcb0-e1dc357afb1e"
/>

## Summary of the Pull Request

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

---------

Co-authored-by: vanzue <vanzue@outlook.com>
2025-11-16 22:02:38 +08:00
Kai Tao
3e14d50f65 Advanced paste: Add more error handle for foundry local (#43600)
<!-- 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
Foundry local sdk will not run models that is not in catalog, when
catalog removes some, the old ones will fail executing,
so add error hint for users to re-configure the models in settings.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
<!-- - [ ] 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
<img width="864" height="216" alt="image"
src="https://github.com/user-attachments/assets/654207b3-ff50-4888-a638-82136216de7b"
/>
2025-11-16 15:26:05 +08:00
Jaylyn Barbee
db7c9e180e [Light Switch] Removed logs from every tick, only logging key events. (#43572)
Title
2025-11-15 21:08:20 +08:00
Michael Jolley
bcc3ded280 CmdPal: Adding page Id to OpenPage telemetry event (#43584)
@niels9001 requested this.

As the name says
2025-11-15 21:07:52 +08:00
Mario Hewardt
24a3cdd486 Fixes regressions introduced with GIF support (#43589)
<!-- 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)?
-->
## Fixes regressions introduced with GIF support:
- Switches default recording format back to MP4
- Fixes framerate issues between the two formats
- Fixes file path names

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
<!-- - [ ] Closes: #yyy (add separate lines for additional resolved
issues) -->
- [x ] **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
- Switches default recording format back to MP4
- Fixes framerate issues between the two formats
- Fixes file path names
- 
<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
Manual testing
2025-11-15 09:36:31 +08:00
Shawn Yuan
1884e6abc1 Remove unused properties in AP (#43564)
<!-- 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
This pull request removes legacy provider configuration migration logic
and associated data structures from the Advanced Paste AI provider
settings. The changes simplify the codebase by eliminating support for
legacy provider configuration snapshots and related migration methods,
focusing configuration management on the current provider model.

## PR Checklist

- [ ] Closes: #xxx
<!-- - [ ] 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

---------

Signed-off-by: Shawn Yuan (from Dev Box) <shuaiyuan@microsoft.com>
2025-11-14 16:56:23 +08:00
leileizhang
ad4b553bb1 Remove all AdvancedPaste stored keys during uninstall (#43563)
<!-- 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
Remove all AdvancedPaste stored keys during uninstall
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
<!-- - [ ] 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
2025-11-14 16:15:15 +08:00
Dustin L. Howett
193d9aacbe BugReportTool: replace cziplib with tar.exe (#41127)
BugReportTool is the last consumer in the PowerToys repo of cziplib, a
library we use to produce ZIP files.

This pull request replaces cziplib with a simple CreateProcess call that
spawns `tar.exe`, which comes with Windows as of RS4 and can produce ZIP
files!

I've tested this by producing a bug report archive and attempting to
open it with File Explorer. It works fine.

We have taken every precaution to ensure that we do not allow any
attacker-controlled input to tar's command line. We are *not* using
`system()`, and we are not opening up a vector through which a nefarious
caller can perform shell injection.

We do not pass filenames to tar except that of the final archive. We do
not pass directory names to tar; we rely on the current directory
instead.
2025-11-13 15:59:21 -08:00
Niels Laute
483e773299 [CursorWRap] Revert the shortcut removal (#43537)
See title
2025-11-13 22:37:13 +08:00
Niels Laute
dd4c7ba57e [Advanced Paste] Localization (#43536)
More strings to loc, and re-ordering a few settings.
2025-11-13 22:36:35 +08:00
dependabot[bot]
29534601be Build(deps): Bump actions/setup-dotnet from 4 to 5 (#41693)
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet)
from 4 to 5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-dotnet/releases">actions/setup-dotnet's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Upgrade to Node.js 24 and modernize async usage by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/654">actions/setup-dotnet#654</a></li>
</ul>
<p>Make sure your runner is updated to this version or newer to use this
release. v2.327.1 <a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Release
Notes</a></p>
<h3>Dependency Updates</h3>
<ul>
<li>Upgrade <code>@​action/cache</code> from 4.0.2 to 4.0.3 by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/622">actions/setup-dotnet#622</a></li>
<li>Upgrade husky from 8.0.3 to 9.1.7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/591">actions/setup-dotnet#591</a></li>
<li>Upgrade <code>@​actions/glob</code> from 0.4.0 to 0.5.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/594">actions/setup-dotnet#594</a></li>
<li>Upgrade eslint-config-prettier from 9.1.0 to 10.1.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/639">actions/setup-dotnet#639</a></li>
<li>Upgrade undici from 5.28.5 to 5.29.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/641">actions/setup-dotnet#641</a></li>
<li>Upgrade form-data to bring in fix for critical vulnerability by <a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a> in
<a
href="https://redirect.github.com/actions/setup-dotnet/pull/652">actions/setup-dotnet#652</a></li>
<li>Upgrade actions/checkout from 4 to 5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/662">actions/setup-dotnet#662</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Remove Support for older .NET Versions and Update installers scripts
by <a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a> in
<a
href="https://redirect.github.com/actions/setup-dotnet/pull/647">actions/setup-dotnet#647</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/647">actions/setup-dotnet#647</a></li>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/654">actions/setup-dotnet#654</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-dotnet/compare/v4...v5.0.0">https://github.com/actions/setup-dotnet/compare/v4...v5.0.0</a></p>
<h2>v4.3.1</h2>
<h2>What's Changed</h2>
<ul>
<li><code>v4</code> - Remove <code>azureedge.net</code> fallback logic
and update install scripts by <a
href="https://github.com/zaataylor"><code>@​zaataylor</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/572">actions/setup-dotnet#572</a>
As outlined in<a
href="https://devblogs.microsoft.com/dotnet/critical-dotnet-install-links-are-changing/#call-to-action">
Critical .NET Install Links Are Changing</a>, remove the storage account
fallback logic added for v4 in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/566">actions/setup-dotnet#566</a>
and update the install scripts accordingly.
<strong>Related issue</strong>: <a
href="https://redirect.github.com/dotnet/install-scripts/issues/559">dotnet/install-scripts#559</a></li>
<li>upgrade <code>@​actions/cache</code> to 4.0.2 by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/615">actions/setup-dotnet#615</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-dotnet/compare/v4...v4.3.1">https://github.com/actions/setup-dotnet/compare/v4...v4.3.1</a></p>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>README update - add permissions section by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/587">actions/setup-dotnet#587</a></li>
<li>Configure Dependabot settings by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/585">actions/setup-dotnet#585</a></li>
<li>Upgrade <strong>cache</strong> from 3.2.4 to 4.0.0 by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/586">actions/setup-dotnet#586</a></li>
<li>Upgrade <strong>actions/publish-immutable-action</strong> from 0.0.3
to 0.0.4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/590">actions/setup-dotnet#590</a></li>
<li>Upgrade <strong><code>@​actions/http-client</code></strong> from
2.2.1 to 2.2.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/592">actions/setup-dotnet#592</a></li>
<li>Upgrade <strong>undici</strong> from 5.28.4 to 5.28.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/596">actions/setup-dotnet#596</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/benwells"><code>@​benwells</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/587">actions/setup-dotnet#587</a></li>
<li><a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/586">actions/setup-dotnet#586</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d4c94342e5"><code>d4c9434</code></a>
Update to Node.js 24 and modernize async usage (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/654">#654</a>)</li>
<li><a
href="5c125af7da"><code>5c125af</code></a>
Bump actions/checkout from 4 to 5 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/662">#662</a>)</li>
<li><a
href="87c6e11776"><code>87c6e11</code></a>
Bumps form-data (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/652">#652</a>)</li>
<li><a
href="06a5327ecf"><code>06a5327</code></a>
Bump undici from 5.28.5 to 5.29.0 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/641">#641</a>)</li>
<li><a
href="e8e5b8203e"><code>e8e5b82</code></a>
Bump eslint-config-prettier from 9.1.0 to 10.1.5 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/639">#639</a>)</li>
<li><a
href="bf4cd79173"><code>bf4cd79</code></a>
Bump <code>@​actions/glob</code> from 0.4.0 to 0.5.0 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/594">#594</a>)</li>
<li><a
href="4ddad1c881"><code>4ddad1c</code></a>
Bump husky from 8.0.3 to 9.1.7 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/591">#591</a>)</li>
<li><a
href="0f55b457d2"><code>0f55b45</code></a>
removes end-of-line dotnet versions (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/647">#647</a>)</li>
<li><a
href="267870a9c4"><code>267870a</code></a>
upgrade actions/cache to 4.0.3 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/622">#622</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/setup-dotnet/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-dotnet&package-manager=github_actions&previous-version=4&new-version=5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-13 06:08:12 -06:00
Guilherme
74225b01ce [CmdPal] Enhance ToggleSetting's Label and Description layout (#43472)
<!-- 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
This PR changes the positioning of Label and Description from
ToggleSetting, making it more similar to
`CheckBoxWithDescriptionControl` used in Settings.
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #39283 
- [ ] **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
I initially tried solving this by using a Regex on the card JSON to
replace all `Input.Toggle` elements with the new `ColumnSet` structure.
However, since `ToggleSetting.cs` already serves as a wrapper for
creating an Input.Toggle, I decided it was more effective to update the
declaration inside the `ToDictionary()` method directly.

### This is the result:

<img width="797" height="531" alt="Screenshot 2025-11-11 120426"
src="https://github.com/user-attachments/assets/2ae5d15d-699e-45ef-ab52-afd653d82111"
/>


<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
2025-11-13 05:47:05 -06:00
Kai Tao
2f001e8150 Advanced paste: Tweak Foundry Local Displayed Model and start server if server is turned on when using AP (#43529)
<!-- 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
1. Foundry local model name should not prefixed by fl://
2. If foundry service is shutdown, we should not just fail it, we should
start it then call FL to make availability better.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
<!-- - [ ] 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
Verified locally:
1. Manually disable foundry local service, then run AP with foundry
local, it can return result instead of direct failure.
2. 
<img width="659" height="294" alt="image"
src="https://github.com/user-attachments/assets/113da451-7131-4ce7-ae82-0ccf772ad8aa"
/>
<img width="988" height="192" alt="image"
src="https://github.com/user-attachments/assets/aa3650ba-668a-40c4-ad8a-303e09000dd4"
/>
![Uploading image.png…]()
2025-11-13 17:28:23 +08:00
Shawn Yuan
a983a773f3 Fix advanced paste migration issue (#43524)
<!-- 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
This pull request refactors how legacy AI enablement settings are
migrated and simplifies the handling of legacy properties in the
settings UI. The main improvements are in the migration logic and the
removal of legacy extension data handling.


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
2025-11-13 16:55:09 +08:00
leileizhang
02eb55e3b9 Refine AdvancedPaste Terms UI and add default system prompt for Advanced AI (#43526)
<!-- 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
1. when no terms and Privacy links don't show the infobar
<img width="349" height="127" alt="image"
src="https://github.com/user-attachments/assets/b7eeeabf-365f-45f6-adb4-56335c14e8ad"
/>
<img width="410" height="217" alt="image"
src="https://github.com/user-attachments/assets/15e053c4-738d-4bb4-9544-24bdf8a5a584"
/>


2. add add default system prompt for Advanced AI

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-13 16:51:57 +08:00
Dave Rayment
afaf904016 [General] Update PR template with multiple issues note (#43442)
Added a comment noting that multiple issues should be placed on separate
lines, as per GitHub recommendations.

(When on the same line, issue references after the first are expanded
from their shortcut form, but are _not_ auto-closed once the PR is
merged.)

<!-- 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: #xxx
- [ ] **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
2025-11-13 09:18:31 +01:00
Jiří Polášek
4425e3ad28 CmdPal: Change captitalization of "Last position" item (#43518)
## Summary of the Pull Request

This PR updates the capitalization of the drop-down item from "Last
Position" to "Last position" to align with the guidelines.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-13 09:17:41 +01:00
Dave Rayment
9f95d9b477 [ZoomIt] Fix screenshot save accuracy issue and GDI object leak (#43375)
<!-- 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
This fixes two issues with the ZoomIt screenshot save function:

- The "actual size" saved bitmap was recomputed from the zoomed-in
viewport, leading to artefacts and a non-1:1 pixel accurate output if
smooth mode was active.
- Two bitmap objects were not deleted after being selected, leading to a
leak of 1 or 2 GDI objects per screenshot save operation.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #43323
- [x] Closes: #43352
- [ ] **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
### GDI object leak
In the prior code, bitmap objects were created:

```cpp
            // Capture the screen before displaying the save dialog
            hInterimSaveDc = CreateCompatibleDC( hdcScreen );
            hInterimSaveBitmap = CreateCompatibleBitmap( hdcScreen, copyWidth, copyHeight );
            SelectObject( hInterimSaveDc, hInterimSaveBitmap );
...
                    hSaveBitmap = CreateCompatibleBitmap( hdcScreen, saveWidth, saveHeight );
                    SelectObject( hSaveDc, hSaveBitmap );
```

but were not deleted in the clean-up:

```cpp
            DeleteDC( hInterimSaveDc );
            DeleteDC( hSaveDc );
```

Deleting their associated device contexts orphans the bitmaps and the
GDI objects will not be recovered until ZoomIt is closed.

### Fix
The code now uses RAII for handles to DCs and Bitmaps, e.g.:

```cpp
                    wil::unique_hdc hdcZoomed( CreateCompatibleDC(hdcScreen) );
                    wil::unique_hbitmap hbmZoomed(
                        CreateCompatibleBitmap( hdcScreen, copyWidth, copyHeight ) );
                    SelectObject( hdcZoomed.get(), hbmZoomed.get() );
```

The handles are automatically cleaned up when the variables go out of
scope.

The existing `DeleteDC` code has been removed.

### Screenshot Actual Size save issue

ZoomIt's save screenshot routine operated on the currently-displayed
view, i.e. the zoomed-in viewport, executing a copy of the full monitor
resolution image to begin:

```cpp
            StretchBlt( hInterimSaveDc,
                        0, 0,
                        copyWidth, copyHeight,
                        hdcScreen,
                        monInfo.rcMonitor.left + copyX,
                        monInfo.rcMonitor.top + copyY,
                        copyWidth, copyHeight,
                        SRCCOPY|CAPTUREBLT );
```
(Here hdcScreen represents the zoomed-in image.)

When "Actual size" was selected by the user, this bitmap was scaled back
down to attempt to reproduce the 1:1 pixel source:

```cpp
                    StretchBlt( hSaveDc,
                                0, 0,
                                saveWidth, saveHeight,
                                hInterimSaveDc,
                                0,
                                0,
                                copyWidth, copyHeight,
                                SRCCOPY | CAPTUREBLT );
				
                    SavePng( targetFilePath, hSaveBitmap );
```

This mostly works if the smooth mode is not applied because the zoom
levels tend to produce integer zoomed pixel sizes, although it still
produces inexact results at times.

The main issue is that the new smooth mode produces a halftone-smoothed
output on the display. Attempting to scale this back down to a
pixel-accurate source removes high frequency detail and does not reflect
the underlying bitmap:

Original source:
<img width="523" height="186" alt="image"
src="https://github.com/user-attachments/assets/7a6dca02-8608-44ed-917f-c6fd1a7b112c"
/>

"Actual size" save result before fix:
<img width="524" height="211" alt="image"
src="https://github.com/user-attachments/assets/29c63018-1e8d-4e74-a572-3615686aaa61"
/>

### Fix

This fix reverses the prior logic. Instead of using the zoomed-in
viewport as the screenshot source, we start by blitting a copy of the
source bitmap itself, from `hdcScreenCompat`. If a zoomed screenshot is
required, this is used as the source of the resize, i.e. we replicate
the zoom the user sees in their viewport.

This approach:

- Is faster and saves memory. It removes the need for an initial
`StretchBlt` operation, and the working bitmap itself is significantly
smaller if the user is zoomed in.
- Saves on the second resize operation if "Actual size" is chosen. We
can simply save the copy as-is.
- Removes the need to care about monitor coords. All calculations are
relative to the top-left of the source bitmap copy.
- Simplifies the code. In addition to being able to remove some code,
locality is improved - the creation of the zoomed image (and the
application of smoothing, if required) is now immediately next to where
it is saved.

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed

(Manual validation on standalone ZoomIt build.)

- Confirmed that "Actual size" screenshots are now 1:1 copies of the
underlying bitmap, not scaled copies of the screen display.
- Confirmed that screenshots no longer leak GDI objects in either
"Zoomed" or "Actual size" modes.
- Tested cropped and non-cropped saves, i.e. using
<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>S</kbd> versus
<kbd>Ctrl</kbd>+<kbd>S</kbd>.
- Tested that user-added drawing/text was preserved in screenshots.
- Tested that both smooth and non-smooth zoom modes operate as they did
previously.
- Tested on multiple monitors, including a high-DPI external monitor
running at 175% scaling.

---------

Co-authored-by: Leilei Zhang <leilzh@microsoft.com>
2025-11-13 12:51:54 +08:00
Niels Laute
8fc43e1a22 [CursorWrap] Simplifying settings (#43496)
Removed the shortcut settings based on feedback

<img width="1028" height="249" alt="image"
src="https://github.com/user-attachments/assets/6ffdca64-9c2d-4398-aa77-7116be41f0ca"
/>

---------

Co-authored-by: Leilei Zhang <leilzh@microsoft.com>
2025-11-13 10:33:29 +08:00
Shawn Yuan
42ebf8d992 Fix AP system prompt textbox display issue (#43486)
<!-- 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
This pull request refactors how the system prompt is managed and
displayed in the Advanced Paste settings UI. The main improvements
center around normalizing the system prompt value, ensuring placeholder
prompts are handled consistently, and updating the logic for switching
between advanced and simple AI modes. These changes help prevent
placeholder text from being mistakenly saved as a custom system prompt
and improve maintainability.

**System prompt normalization and placeholder handling:**

* Added static normalization for both `AdvancedAISystemPrompt` and
`SimpleAISystemPrompt`, and introduced logic to clear the system prompt
if it matches a placeholder value. This prevents default placeholder
text from being persisted as a custom prompt.
[[1]](diffhunk://#diff-14126907329c7fcd49dd33bab32283296c7dd68ddc3902163a482a3b3ce58d36R39-R40)
[[2]](diffhunk://#diff-14126907329c7fcd49dd33bab32283296c7dd68ddc3902163a482a3b3ce58d36R942-R982)
* Refactored event handlers to use the new normalization logic and
updated the placeholder switching mechanism when toggling between
advanced and simple AI modes.
* Ensured system prompt normalization is applied when saving provider
configuration, further enforcing consistent prompt handling.

**UI improvements:**

* Removed hard-coded placeholder text from the XAML, ensuring that the
placeholder is now dynamically set based on the current mode and
normalized prompt value.
* Updated the logic for setting the system prompt textbox placeholder to
use the new normalization and mode detection methods, improving clarity
and reducing potential user confusion.
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

Signed-off-by: Shawn Yuan (from Dev Box) <shuaiyuan@microsoft.com>
2025-11-13 10:19:43 +08:00
Kai Tao
76b6a25ac4 New info badge for cursor wrap and Advanced paste Tweak (#43490)
<!-- 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
1. New info badge for cursor wrap
2. Advanced paste UI string localization
3. Add ShowPreviewPane Setting to determine whether show the advanced
paste preview

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
<img width="451" height="247" alt="image"
src="https://github.com/user-attachments/assets/920b4b8a-f1f9-4848-b140-3295ff347fdc"
/>

<img width="470" height="383" alt="image"
src="https://github.com/user-attachments/assets/3978ebec-e695-4036-99a8-abf1561d9a28"
/>

<img width="1136" height="392" alt="image"
src="https://github.com/user-attachments/assets/0d474fcf-49a4-4cc7-b849-0231a95d9ea7"
/>
2025-11-13 10:18:13 +08:00
leileizhang
1c646ecb2a Add more detailed telemetry for AdvancedPaste (#43498)
<!-- 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
Added telemetry to capture the following:

- PasteAI: endpoint, model name, and processing time
- PasteAI Errors
- Advanced AI: endpoint, model name, and token usage
- Advanced AI Errors

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-13 10:09:50 +08:00
Jaylyn Barbee
a51b2647d9 [Light Switch] Fixed issue where number boxes in select location dialog were sometimes not updating (#43514)
<!-- 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
Ensure that even if the user enters the same values the correct buttons
are enabled and the dialog shows the correct info.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #43511
- [x] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **Localization:** All end-user-facing strings can be localized
2025-11-13 09:51:34 +08:00
Niels Laute
b41ed2feb1 Minor styling tweaks in README (#43494)
Added a section for utilities and updated installation instructions.

<!-- 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: #xxx
- [ ] **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
2025-11-13 09:36:49 +08:00
Niels Laute
1b742ef817 [AP] Settings UI improvements (#43488)
## Summary of the Pull Request

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-13 09:32:25 +08:00
Leon Zandman
2a40e1ce4d Minor ZoomIt fixes (#43495)
## Summary of the Pull Request
Regarding #43265 / #43266, I noticed some minor spelling mistakes. I
also refactored some literal strings to string constants.

I didn't discuss this with core contributors or @MarioHewardt. Just a
quick shot-from-the-hip PR ;-) I hope that isn't a problem...

_Note: this is a new Pull Request for this change. I had to close the
previous one (#43443), because I had made a commit using a wrong Github
account._

## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-13 09:32:05 +08:00
Jaylyn Barbee
c32bfa8c48 more jaylyn sign off 2025-11-12 16:40:20 -05:00
Jaylyn Barbee
fcac6ee941 jaylyn half way through checklist 2025-11-12 14:28:54 -05:00
Trevor
b015d6a778 Update onenote png icons to new core10 design (#43506)
<!-- 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
Update the oneNote pngs to October Core 10 icon design 

MSNews article:
https://www.msn.com/en-us/technology/software/microsoft-s-new-office-icons-are-more-curvy-and-colorful/ar-AA1NFYYI

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #43507
- [ ] **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
- [x] **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
2025-11-12 20:28:31 +01:00
Jaylyn Barbee
536aba7bbb updating link 2025-11-12 12:32:18 -05:00
Jaylyn Barbee
640a235cd2 moved new jaylyn checklist to new folder for 96 2025-11-12 12:31:01 -05:00
Jaylyn Barbee
00d580985d Jaylyn checklist 2025-11-12 12:29:24 -05:00
Jaylyn Barbee
4a3cc92382 Jaylyn checklist 2025-11-12 12:26:33 -05:00
Mike Hall
3bfa0a0cf8 Update CursorWrap settings (#43492)
## Summary of the Pull Request
Modify CursorWrap settings so that 'Activate on Startup' is enabled when
CursorWrap is enabled. Disabling CursorWrap doesn't change the 'Activate
on Startup' toggle, this will need to be manually disabled, CursorWrap
is active when enabled, the hotkey can be used to temporarily disable
the CursorWrap functionality.

## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

## Validation Steps Performed
Manual validation performed on desktop PC and Surface Laptop.
2025-11-12 18:52:34 +08:00
Shawn Yuan
5884375e9d Fix advanced paste settings migration issue (#43459)
<!-- 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
This pull request introduces a robust migration system for legacy
Advanced Paste AI provider settings and credentials, refactoring both
the migration logic and credential handling to be more maintainable and
reliable. It also standardizes the default model names for AI providers
and updates related UI placeholders to reflect these changes. The
migration logic is now centralized in a new helper class, and legacy
credential migration is handled more cleanly in both the settings and
view model layers.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #43456
- [ ] **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

---------

Signed-off-by: Shawn Yuan (from Dev Box) <shuaiyuan@microsoft.com>
Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
2025-11-12 16:24:21 +08:00
Shawn Yuan
a0a2f493c5 remove debug launching (#43485)
<!-- 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
This pull request simplifies the application launch logic in
`App.xaml.cs` by removing debug-specific code paths and asynchronous
window initialization. The main change is to standardize the launch
process for both debug and release builds.

**Launch logic simplification:**

* Removed the `#if DEBUG` conditional compilation around the
`OnLaunched` method, so the method signature is now consistent in all
build configurations.
* Eliminated the asynchronous call to `ShowWindow()` that was previously
executed only in debug mode, streamlining the launch behavior and
removing direct window access during debugging.
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

---------

Signed-off-by: Shawn Yuan (from Dev Box) <shuaiyuan@microsoft.com>
2025-11-12 15:21:00 +08:00
Shawn Yuan
fb1886c2c3 Add files via upload 2025-11-12 11:42:25 +08:00
Kai Tao
5e3e0660e7 Revert hybrid crt to make powertoys quit safely (#43484)
<!-- 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
After enabling Hybrid CRT, the PowerToys process failed to properly
unload some module interface DLLs when quit application. The root cause
is still unclear, but this change reverts the behavior to ensure safe
unloading.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #43413
- [ ] **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
Can unload dll safely when quit powertoys
2025-11-12 10:39:21 +08:00
Jaylyn Barbee
29688cea0e [Light Switch] Enter latitude and longitude manually in Sunrise to sunset mode (#43276)
<!-- 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
This PR introduces new UI to allow the users to manually enter their
lat/long.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42429
- [x] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **Localization:** All end-user-facing strings can be localized
- [x] **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:
#[5979](https://github.com/MicrosoftDocs/windows-dev-docs-pr/pull/5979)

---------

Co-authored-by: Niels Laute <niels.laute@live.nl>
2025-11-11 16:18:18 -05:00
Alex Mihaiuc
a0f33c8af1 Make zooming animation smooth for ZoomIt on mouse move (#42339)
This change coalesces the `WM_MOUSEMOVE` events with the `WM_TIMER`
events in the cases 1, 2 (telescope animation for zoom in, respectively,
out). I factored into a new lambda the `WM_TIMER` code and I made it
save the "now" amount of ticks into the new `g_TelescopingZoomLastTick`.

During `WM_MOUSEMOVE` processing, if the current tick count (rather
imprecise, but good enough) is larger than the animation step,
`ZOOM_LEVEL_STEP_TIME`, then I call that lambda. It's convenient that
the code in there already handles the "end of telescope zooming
animation" case.

## Validation Steps Performed

The choppy zooming animation was evident while moving the mouse during a
telescope zoom. It was also [reported on the Sysinternals
blog](https://techcommunity.microsoft.com/blog/sysinternals-blog/zoomit-v9-10-procdump-3-5-for-linux-and-jcd-1-0-1/4461244/replies/4461281).
2025-11-11 09:42:59 -06:00
Jaylyn Barbee
0982821a82 Enhance tests checklist with Light Switch validations
Added validation checks for Light Switch module functionality including UI and service validations.
2025-11-11 09:06:39 -05:00
leileizhang
e1edcc13b7 Fix the issue where the InstallLocation is missing after upgrading (#43462)
<!-- 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
**Root Cause**

The issue occurs because the Installed property in MSI indicates whether
the current product code has been installed on the machine.
During a Major Upgrade (where the old and new versions have different
ProductCode values), the installation sequence is:
1. Burn schedules uninstall of the old MSI (the old version might not
have this custom action).
2. Then installs the new MSI.
> - At this point, the current product has not yet been installed, so
the Installed property is empty.
> - The condition NOT Installed evaluates to true, and
SetBundleInstallLocationData / SetBundleInstallLocation executes
normally, writing the InstallLocation registry key.

This means upgrading from an older version without this function to a
newer version with it works correctly.
However, issues appear in subsequent upgrades (from “newer” → “newer”)
because both versions include the same custom action.
The previous condition restricted the action to run only on first
install, preventing it from running during upgrades.

**Fix**

Added `OR WIX_UPGRADE_DETECTED` to the condition of
SetBundleInstallLocationData / SetBundleInstallLocation custom actions,
so they also execute during upgrade scenarios, ensuring the
InstallLocation registry value is correctly updated after version
upgrades.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #43451
- [ ] **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
2025-11-11 20:07:58 +08:00
leileizhang
756feb9f8c Clean up unused providers for AdvancedPaste (#43433)
<!-- 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
Clean up unused providers for AdvancedPaste

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #43429
- [ ] **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
2025-11-11 20:07:41 +08:00
leileizhang
2fff688c6f [CI] Fix Win10 New+ build: add local Generated Files include path (#43461)
<!-- 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
This PR (#43361) tries to fix the CI failure, and the root cause is
correct. However, using ;$(MSBuildThisFileDirectory)Generated Files
causes the include path to become \Generated Files\Generated
Files\resource.h. Removing Generated Files fixes the issue so that cl
can find the correct file.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-11 20:07:26 +08:00
Leilei Zhang (from Dev Box)
fce5a05e61 fix 2025-11-11 16:55:55 +08:00
Leilei Zhang (from Dev Box)
d2537da103 add checklist 2025-11-11 16:11:39 +08:00
Kai Tao
24d7ae54ce Find my mouse: Fix the issue find my mouse xaml island could not be run in x64 environment (#43420)
<!-- 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
This pull request introduces a configuration update to the
`src/runner/runner.vcxproj` project file. The change enables undocked,
registration-free WinRT initialization for the Windows App SDK, which
can improve compatibility and reduce dependency issues in certain
deployment scenarios.

Windows App SDK configuration:

* Enabled `WindowsAppSdkUndockedRegFreeWinRTInitialize` to allow
registration-free WinRT initialization in the project file
`runner.vcxproj`.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
Validate in x64 environment, and it can be run without problem, no
errors any more
2025-11-11 09:34:50 +08:00
Mario Hewardt
a271a2f8af Enable GIF support for ZoomIt (#43266)
Closes #43265
2025-11-10 13:57:13 -06:00
Michael Jolley
a33c484c93 CmdPal: Removing app tag from apps (#43439)
The "App" tag is pretty redundant and is adding a lot of visual noise.
Closes #38968

New:

![image](https://github.com/user-attachments/assets/5eff195c-5aaf-477a-b988-4b3b14583569)
2025-11-10 20:03:36 +01:00
Niels Laute
f20c3b832b Asset updates (#43431)
title
2025-11-10 19:04:16 +01:00
Mike Griese
9c2884ab41 CmdPal: Bump version to 0.7 (#43428)
title
2025-11-10 10:38:55 -06:00
Jiří Polášek
076828f592 CmdPal: Remove duplicate HideWindow call in MainWindow .ctor (#43360)
## Summary of the Pull Request

Refer to the title. Calling this here will just log an error. Another
HideWindow is at the end of the constructor, so the behavior remains
unchanged.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-10 10:38:22 -06:00
Niels Laute
301d504db1 • instead of . in README (#43353)
<!-- 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: #xxx
- [ ] **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
2025-11-10 06:18:27 -06:00
Leilei Zhang (from Dev Box)
f7a50de1f4 add tests checklist for dscv3 and sparse app 2025-11-10 12:51:35 +08:00
moooyo
e4a8488a2a [PowerRename] Fix FuzzTest project configuration issue (#43299)
<!-- 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
This PR add the missing configuration for FuzzTest to avoid build issue
in local env.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

Co-authored-by: Yu Leng <yuleng@microsoft.com>
2025-11-10 11:40:39 +08:00
leileizhang
93bf653f9c [CI] Fix Win10 New+ build: add local Generated Files include path (#43361)
<!-- 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
**The CI frequently fails due to this issue**
<img width="1094" height="139" alt="image"
src="https://github.com/user-attachments/assets/b69aa417-b25c-4396-a863-32e8a31415e9"
/>
<img width="1249" height="183" alt="image"
src="https://github.com/user-attachments/assets/14f57ada-4b3c-4a70-9e6b-17d7162cece4"
/>

**Fix**
make NewPlus.ShellExtension.win10.vcxproj include its own Generated
Files folder so autogenerated resource.h is always found
prevents CI failures when the Win10 module builds before the shared
NewPlus project has produced headers

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-08 01:06:48 +08:00
Jiří Polášek
b7eed480ba Spellchecking: Update spell-checking dictionary (#42294)
## Summary of the Pull Request

This PR updates the spell-checking dictionaries to fix outstanding
errors, and also clears up accumulated warnings.

- Cleans up duplicate or ignored entries in expect.txt:
    - `Authenticode` (favoring existing `authenticode`)
    - `DTo` (favoring existing `dto`)
    - `ekus` (favoring existing `eku`)
    - `nullrefs` (favoring existing `nullref`)
- Removes `CursorWrap` (invalid entry since camel case is treated as
separate words and is not allowed)
- Updates the pattern for `amazon.com` URLs to allow them within C#
strings
- Explicitly excludes the CmdPal sample page for images in Markdown with
Base64 encoded data from spell-checking (was previously auto-excluded)
- Suppresses spell-checking on lines with URLs containing encoded data

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-07 13:55:51 +01:00
Leon Zandman
dce61bcb9d Fix Awake's popup context menu positioning (#41009)
<!-- 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
Fix for issue #37457. The Awake popup context menu would show at the
wrong position, especially after adding additional displays. The reason
this happened was that the mouse cursor position was unnecessarily
converted from screen to to client-area coordinates.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #37457
- [ ] **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
Ran Awake and its context menu seemed to display properly and at the
correct position.

---------

Co-authored-by: Leon Zandman <lzandman@rdw.nl>
2025-11-07 12:50:45 +08:00
Dustin L. Howett
056328823f build: remove SHINE pool image override (to enable Server 2022) (#43287)
I am changing the default build pool image from Windows Server 2019 to
Server 2022, as the 2019 images are deprecated and their use will become
a permanent error soon.

However, I cannot do that while PowerToys contains build image
overrides. These overrides prevent it from choosing the Server 2022
images.

As a drive-by, I fixed the following issues:

- `NUGET_PACKAGES` was being read from the ambient environment. It was
used in the package cache _and_ in the WIX projects directly (!). To
make the build more predictable, we now set it during build time.
- We _still_ had build step conditions that resulted in extra work being
done during build failure.
- The release builds now produce numbered failure log artifacts just
like the CI builds do.
- I have adjusted the default disk configuration to give enough space to
`C:\`, so we no longer need the work directory override or custom data
disk.

The screenshot below is from a test run where I overrode the pool image
to be `SHINE-VS17-Latest-2022`. We do not want to do that in the final
configuration, so I had to revert that change.

<img width="1205" height="452" alt="image"
src="https://github.com/user-attachments/assets/fcf03e8c-d2a1-47af-9240-64c183c43644"
/>
2025-11-07 09:05:24 +08:00
Niels Laute
73f789b062 Settings fix (#43348)
<!-- 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: #xxx
- [ ] **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
2025-11-06 12:48:27 -05:00
Jiří Polášek
57f0b4b342 CmdPal: Improve crash error message (#43340)
## Summary of the Pull Request

This PR localizes the message displayed when an unhandled exception
causes CmdPal to crash. It also resolves a regression from commit
a991a118dc, which disabled storing to the desktop but failed to
update the corresponding message.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Related to: #41392
- [ ] **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
2025-11-06 11:32:56 -06:00
Dave Rayment
0e922a4dcb [ImageResizer] Fix issue where settings could be changed during a batch resize (#42163)
<!-- 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
This fixes an issue where the Image Resizer settings were reloaded for
every resize operation in a multi-file batch. This could result in
inconsistent resize results if the Settings application or the user
interacted with the settings and the properties were changed, even
temporarily.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42116, #35114
- [ ] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **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
Corrects an issue in `ResizeBatch.Execute()` where `Settings.Default`
was used:

```csharp
    protected virtual void Execute(string file)
        => new ResizeOperation(file, DestinationDirectory, Settings.Default).Execute();
```

Unfortunately, `Settings.Default` is poorly named, and is not a constant
property. Instead it actually calls `Reload()`, which loads the settings
JSON file and re-processes it fully:

```csharp
        [JsonIgnore]
        public static Settings Default
        {
            get
            {
                defaultInstance.Reload();
                return defaultInstance;
            }
        }
```

If the settings are changed part-way through a resize batch operation
(even scrolling through the presets will set `selectedIndex` and save it
back to disk), the batch resize operation may switch to a different
resize behaviour, giving inconsistent results. The chances of this
occurring increase with the length of the batch operation.

### Solution
The solution is to set the `Settings` outside of the main loop and use
that for every resize operation, which is what this PR does.

`Process` is altered to load the `Settings` at the start and pass that
to `Execute` on each iteration of the batch loop:

```csharp
        public IEnumerable<ResizeError> Process(Action<int, double> reportProgress, CancellationToken cancellationToken)
        {
            double total = Files.Count;
            int completed = 0;
            var errors = new ConcurrentBag<ResizeError>();
            var settings = Settings.Default;

            ...

                        Execute(file, settings);
```

`Execute` is updated to accept a `Settings` object instead of using
`Settings.Default`:

```csharp
    protected virtual void Execute(string file, Settings settings)
        => new ResizeOperation(file, DestinationDirectory, settings).Execute();
```

### Additional changes
The batch-related unit tests failed after the above change. I updated
the Mock `Execute` to reflect the use of the `Settings` parameter. Also,
the `Settings` class was unfortunately bound to the WPF UI, and could
not be instantiated during unit testing. I've refactored this so it can
be instantiated with or without an `App.Current.Dispatcher`. Ther's a
new `ReloadCore()` method which just contains the extracted property
setting code.

None of the unit tests currently use the settings themselves, but at
least the capability is now there.

I also removed the setting of the `MaxDegreeOfParallelism` option in the
`Parallel.For()`. When left at its default, the runtime will use the
appropriate number of threads, and the heuristic it uses may not
necessarily equal the number of processor cores in the system.

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
- Ensured all existing unit tests passed.
- Tested with multiple runs of resizing 200 image files while browsing
and changing the settings. This was no longer able to alter the ongoing
resize operations.
- Checked that the settings could still be amended via the Settings app.

---------

Co-authored-by: Gordon Lam (SH) <yeelam@microsoft.com>
2025-11-06 19:55:47 +08:00
Juju Anselum J
d7785977d8 feat(quick-accent): add diameter ⌀ symbol for Shift+O #41954 (#42963)
## Summary of the Pull Request
- Adds support for the diameter symbol (⌀, U+2300) in Quick Accent. 
- When holding Shift+O with the Special Characters language enabled.

## Implementation
- Updated GetDefaultLetterKeySPECIAL(LetterKey.VK_O) to include ⌀.
- No impact on other existing functionalities.

## Issue
Closes  #41954
2025-11-06 19:55:30 +08:00
Copilot
bb604d87ca Fix accessibility: Associate controls with labels for screen readers (#42439)
## Problem

Input controls (ComboBoxes, ToggleSwitches, NumberBoxes) within
SettingsCards throughout the PowerToys Settings UI were not
programmatically associated with their visible labels. This caused
screen readers to announce only the control type (e.g., "combo box",
"toggle switch") without any context about the control's purpose, making
the settings inaccessible to screen reader users.

This violates WCAG 2.2 Success Criterion 1.3.1 (Info and Relationships)
- Level A requirement.

**User Impact**: Screen reader users navigating PowerToys settings would
hear only "edit text" or "combo box" with no description, making it
difficult or impossible to configure settings independently.

## Solution

Added `AutomationProperties.Name` bindings to controls, linking them to
their parent SettingsCard's `Header` property. This establishes the
programmatic relationship between labels and controls required by
assistive technologies.

### Pattern Applied

For controls inside SettingsCards with a `Name` attribute:

```xaml
<tkcontrols:SettingsCard Name="LanguageHeader" x:Uid="LanguageHeader">
    <ComboBox
        MinWidth="{StaticResource SettingActionControlMinWidth}"
        AutomationProperties.Name="{Binding ElementName=LanguageHeader, Path=Header}"
        DisplayMemberPath="Language"
        ItemsSource="{Binding Languages, Mode=TwoWay}"
        SelectedIndex="{Binding LanguagesIndex, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
```

For data templates where headers are data-bound:

```xaml
<DataTemplate x:Key="ComboBoxTemplate" x:DataType="viewModels:PluginAdditionalOptionViewModel">
    <tkcontrols:SettingsCard Header="{x:Bind Path=DisplayLabel}">
        <ComboBox
            AutomationProperties.Name="{x:Bind Path=DisplayLabel}"
            ItemsSource="{x:Bind Path=ComboBoxItems}" />
    </tkcontrols:SettingsCard>
</DataTemplate>
```

## Changes Made

### GeneralPage.xaml (7 controls)
- Language selection ComboBox
- Color mode/theme ComboBox
- Run at startup ToggleSwitch
- Show system tray icon ToggleSwitch
- Enable experimentation ToggleSwitch
- Enable data diagnostics ToggleSwitch
- Enable view diagnostic data ToggleSwitch

### PowerLauncherPage.xaml (4 data templates)
- ComboBoxTemplate - for plugin settings
- NumberBoxTemplate - for plugin numeric settings
- CheckBoxComboBoxTemplate - for conditional ComboBox settings
- CheckBoxNumberBoxTemplate - for conditional NumberBox settings

### PowerRenamePage.xaml (6 controls)
- Enable PowerRename ToggleSwitch
- Context menu mode ComboBox
- Enable auto-complete ToggleSwitch
- Max display list number NumberBox
- Restore flags on launch ToggleSwitch
- Use Boost library ToggleSwitch

### NewPlusPage.xaml (4 controls)
- Enable New+ ToggleSwitch
- Hide file extension ToggleSwitch
- Hide starting digits ToggleSwitch
- Replace variables ToggleSwitch

## Testing

Screen readers (Windows Narrator) now properly announce controls with
context:
- **Before**: "Combo box"
- **After**: "Language, Combo box"

No functional changes to application behavior. The fix only affects how
controls are announced to assistive technologies.

## Notes

This fix follows the existing pattern already used in
ColorPickerPage.xaml. Similar issues exist in approximately 23 other
Settings pages which can be addressed in future PRs using this
established pattern. The pages fixed in this PR represent
commonly-accessed settings and demonstrate the solution approach for
comprehensive coverage.

Closes #<issue_number>

## References
- WCAG 2.2 SC 1.3.1:
https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships
- UIA Name Property:
https://learn.microsoft.com/en-us/windows/apps/design/accessibility/accessible-text-requirements#name_property_alternative_and_description

<!-- START COPILOT CODING AGENT SUFFIX -->



<details>

<summary>Original prompt</summary>

> 
> ----
> 
> *This section details on the original issue you should resolve*
> 
> <issue_title>Controls Inside Sections Are Not Associated with Their
Labels.</issue_title>
> <issue_description>### Microsoft PowerToys version
> 
> v0.94.2
> 
> ### Installation method
> 
> PowerToys auto-update
> 
> ### Area(s) with issue?
> 
> New+
> 
> ### Steps to reproduce
> 
> **Repro Steps:**
> 
> 1. Open the Power Toys.
> 2. Now navigate to the home present in the left navigation pane.
> 3. Now turn on the narrator using CTRL + Win + Enter.
> 4. Now navigate to the controls present inside the different sections.
> 5. Observe the issue.
> 
> ### ✔️ Expected Behavior
> 
> Each control should be programmatically associated with its
corresponding label so screen readers can accurately convey the purpose
of the control to users.
> 
> ###  Actual Behavior
> 
> Input controls (e.g., checkboxes, text fields, dropdowns) located
within different sections of the UI are not programmatically associated
with their visible labels.
> 
> ### Additional Information
> 
> **User Impact:**
> Screen reader users may hear only the control type (e.g., “edit text”)
with no context or description of what it is for. This makes it
difficult or impossible for them to fill out forms or interact with the
UI correctly, leading to confusion and frustration.
> 
> **WCAG Reference:**
> https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships
> 
> **Attachments:**
> 
>
https://github.com/user-attachments/assets/d25b9237-bee7-41d5-b564-df15df19b0d4
> 
> ### Other Software
> 
> _No response_</issue_description>
> 
> ## Comments on the Issue (you are @copilot in this section)
> 
> <comments>
> </comments>
> 


</details>

Fixes microsoft/PowerToys#42419

<!-- START COPILOT CODING AGENT TIPS -->
---

 Let Copilot coding agent [set things up for
you](https://github.com/microsoft/PowerToys/issues/new?title=+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: niels9001 <9866362+niels9001@users.noreply.github.com>
Co-authored-by: Gordon Lam (SH) <yeelam@microsoft.com>
2025-11-06 19:50:49 +08:00
Gleb Khmyznikov
ccaa876af2 [UI Tests] Peek - fix UI tests via setting hotkeys back to Ctrl+Space combo for tests only (#43168)
This pull request introduces a static initialization step to the
`PeekFilePreviewTests` class to ensure the correct test settings are
present before tests run. The main change is the addition of a static
constructor that creates or updates the `settings.json` file with
predefined settings, including setting the activation shortcut to
Ctrl+Space.

Test setup improvements:

* Added a static constructor to `PeekFilePreviewTests` that calls a new
`FixSettingsFileBeforeTests` method, ensuring the necessary settings
file exists and is properly configured before any tests execute.
* Implemented `FixSettingsFileBeforeTests` to create the required
directory and write a `settings.json` file with specific test
configuration, including setting the activation shortcut to Ctrl+Space
and other test-relevant properties.
2025-11-06 19:32:28 +08:00
Copilot
4a5e476a4e Fix: Add accessible name to Shortcut Conflicts button for screen readers (#42441)
## Summary
Fixes the accessibility issue where the "Shortcut Conflicts" button in
the Dashboard page has no accessible name defined, causing screen
readers to announce it as just "button" instead of providing context
about its purpose.

## Problem
The button in `ShortcutConflictControl.xaml` lacked an
`AutomationProperties.Name` attribute, violating WCAG 2.2 guidelines
(4.1.2 - Name, Role, Value). This prevented users who rely on screen
readers from determining the function of the button, making it
impossible to resolve or view shortcut conflicts.

**Before fix:**
- Screen reader announces: "button" 

**After fix:**
- Screen reader announces: "Shortcut conflicts, No conflicts found,
button" 
- Or: "Shortcut conflicts, 1 conflict found, button" 
- Or: "Shortcut conflicts, 3 conflicts found, button" 

## Solution
Added a new `AccessibleName` property to
`ShortcutConflictControl.xaml.cs` that combines:
- The static localized title: "Shortcut conflicts"
- The dynamic status text: "No conflicts found", "1 conflict found", or
"X conflicts found"

The button's `AutomationProperties.Name` is now bound to this property
using `{x:Bind AccessibleName, Mode=OneWay}`, ensuring it updates
dynamically as conflict data changes.

## Changes
- **ShortcutConflictControl.xaml**: Added `AutomationProperties.Name`
binding to the button
- **ShortcutConflictControl.xaml.cs**: Added `AccessibleName` property
and property change notification

## Impact
- Provides full context to assistive technology users about the button's
purpose and current state
- Complies with WCAG 2.2 accessibility standards
- Follows existing patterns in the codebase for accessible controls
- Minimal changes (2 files, 14 lines added)

## Related Issue
Closes #issue_number

## Testing
- [x] Code review completed with no issues
- [x] Follows existing accessibility patterns used in DashboardPage.xaml
- [x] Uses existing localized resource strings
- [x] Property updates dynamically via INotifyPropertyChanged

<!-- START COPILOT CODING AGENT SUFFIX -->



<details>

<summary>Original prompt</summary>

> 
> ----
> 
> *This section details on the original issue you should resolve*
> 
> <issue_title>No Accessible Name Defined for "Shortcut Conflicts"
Button.</issue_title>
> <issue_description>### Microsoft PowerToys version
> 
> v0.94.2
> 
> ### Installation method
> 
> PowerToys auto-update
> 
> ### Area(s) with issue?
> 
> New+
> 
> ### Steps to reproduce
> 
> **Repro Steps:**
> 
> 1. Open power toys.
> 2. Now navigate to the home section and select.
> 3. Now turn on narrator using CTRL + Win + Enter.
> 4. Now navigate to the Shortcut conflicts button.
> 5. Observe the narrator's announcement.
> 
> ### ✔️ Expected Behavior
> 
> The button should have an accessible name — either via a visible
label, aria-label, or aria-labelledby — so that assistive technology
users understand its purpose.
> 
> ###  Actual Behavior
> 
> The "Shortcut Conflicts" button has no accessible name defined. Screen
readers announce it as “button”.
> 
> ### Additional Information
> 
> **User Impact:**
> Users who rely on screen readers cannot determine the function of the
button, making it inaccessible. This prevents users from resolving or
viewing shortcut conflicts, which could impact usability and task
completion.
> 
> **WCAG Reference:**
> https://www.w3.org/WAI/WCAG22/Understanding/name-role-value
> 
> **Attachments:**
> 
>
https://github.com/user-attachments/assets/ca0f51d3-f736-4eb9-b355-e55f2cfd5bbd
> 
> ### Other Software
> 
> _No response_</issue_description>
> 
> ## Comments on the Issue (you are @copilot in this section)
> 
> <comments>
> </comments>
> 


</details>

Fixes microsoft/PowerToys#42418

<!-- START COPILOT CODING AGENT TIPS -->
---

 Let Copilot coding agent [set things up for
you](https://github.com/microsoft/PowerToys/issues/new?title=+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: niels9001 <9866362+niels9001@users.noreply.github.com>
Co-authored-by: Niels Laute <niels.laute@live.nl>
2025-11-06 18:07:48 +08:00
Dave Rayment
5c96cea31f [Peek] Fix media sources remaining locked when Peek window is closed (#42055)
<!-- 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

Fixes an issue where audio and video files would remain locked by Peek
after the user closed the preview window. This could prevent the
ejecting of removable storage.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #41883
- [ ] **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

When the Peek window is closed, it is hiden rather than destroyed,
allowing for quick reactivation. The cleanup process is triggered by
`MainWindowViewModel.Uninitialize()`, which eventually causes the active
`Previewer` instance in `FilePreviewer.xaml.cs` to be disposed of (via
`OnItemPropertyChanged()`).

The root cause of the bug is that neither `VideoPreviewer` nor
`AudioPreviewer` implemented `IDisposable` sufficiently to cover clean
up of the media file. The result was that the `MediaSource` object,
which holds the handle to the open media file, was not disposed
deterministically. This left the file locked until the GC eventually
finalised it.

### Solution
To fix this, I've implemented `IDisposable` on `AudioPreviewer` where it
was absent, and expanded `Dispose()` on `VideoPreviewer` to clean up the
media object. A new `Unload()` method on each previewer handles explicit
clean up of the media sources. The `Dispose()` method calls `Unload()`
to ensure the resources are released reliably when the previewer is
destroyed.

`Unload()` is deliberately public, as I'd like to expand upon its use in
a future refactoring of the previewer switching logic, allowing for
reusing an active previewer instead of creating a new one every time the
user navigates to a new file.

### AudioPreviewer refinements
I made a few updates to `AudioPreviewer` to make the lifecycle of the
media source more predictable and improve the error handling:
- The `Preview` observable property is now a nullable
`AudioPreviewData?`. This more accurately represents the state (data is
either present or not), and allows for the removal of the creation of an
empty object in the constructor.
- `thumbnailTask`'s success is no longer regarded as an error condition
in `LoadPreviewAsync`. It is reasonable to let the user play their audio
file even if the thumbnail cannot be shown.
- An error when loading the source data or metadata results in the new
`Unload()` method being called, correctly releasing the file, protecting
against the file lock issue even if the media file was corrupt and could
only be partially constructed.
- Null checks for `Preview`, obvs.

### Scope
I could repro the original issue on audio and video files, so this PR is
focused on improvements to `AudioPreviewer` and `VideoPreviewer`. I
wasn't able to reproduce the file locking problem with the
`WebBrowserPreviewer` for its built-in supported types (HTML, Markdown
and PDF). I found some additional issues with the previewer, however,
but they will be covered in a future PR.

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
Tests were performed with the following steps:

1. Place the audio/video file to test on a USB stick.
2. Open the file with Peek and play some of the media.
3. While previewing the media, close the Peek window.
4. Attempt to eject the USB stick via the systray.
- Before: the eject fails and Windows pops up the "File in use" dialog.
    - After: the drive is successfully removed.

I tested an MP4 video file and an MP3 audio track to confirm the fix.

I confirmed that other previewers were unaffected by previewing: JPEG
image files, a PDF, a TXT file, a Markdown file, an HTML file and a
folder. All items were successfully previewed.
2025-11-06 17:31:48 +08:00
vanzue
1dd2ec27dc release check list 2025-11-06 17:24:00 +08:00
Copilot
e7de5c7b8d Make update notification InfoBar clickable in Flyout (#42064)
## Summary

Resolves #38854 by making the "Update available" InfoBar in the tray
icon flyout clickable, providing direct navigation to the General
settings page where users can manage updates.

## Problem

When PowerToys has an available update, users experience unnecessary
navigation friction:

1. Click PowerToys tray icon → flyout opens with "Update available"
InfoBar
2. InfoBar is not clickable, only the settings wheel is interactive
3. Click settings wheel → opens Dashboard page (not where updates are
managed)
4. Navigate to General page → finally access update controls

Users requested making the "Update available" text itself a hyperlink
for direct access to update functionality.

## Solution

Made the InfoBar interactive by adding a `Tapped` event handler that:
- Hides the flyout (consistent with other flyout actions)
- Opens Settings window directly to the General page using
`App.OpenSettingsWindow(typeof(GeneralPage))`

## Changes

**Files Modified:**
- `src/settings-ui/Settings.UI/SettingsXAML/Flyout/LaunchPage.xaml`:
Added `Tapped="UpdateInfoBar_Tapped"` event
- `src/settings-ui/Settings.UI/SettingsXAML/Flyout/LaunchPage.xaml.cs`:
Added event handler and navigation logic

## User Experience

**Before:** Tray Icon → Flyout → Settings Wheel → Dashboard → Navigate
to General → Update Controls
**After:** Tray Icon → Flyout → **Click "Update available"** → General
Page → Update Controls

The InfoBar now behaves as a clickable hyperlink as requested, while
preserving all existing functionality. Users can still use the settings
wheel if preferred, but now have a more direct path to update
management.

## Testing

The implementation follows existing patterns in the codebase and uses
established APIs. The InfoBar only appears when updates are in
`ReadyToInstall` or `ReadyToDownload` states, ensuring the navigation is
contextually appropriate.

> [!WARNING]
>
> <details>
> <summary>Firewall rules blocked me from connecting to one or more
addresses (expand for details)</summary>
>
> #### I tried to connect to the following addresses, but was blocked by
firewall rules:
>
> - `i1qvsblobprodcus353.vsblob.vsassets.io`
>   - Triggering command: `dotnet build` (dns block)
>
> If you need me to access, download, or install something from one of
these locations, you can either:
>
> - Configure [Actions setup
steps](https://gh.io/copilot/actions-setup-steps) to set up my
environment, which run before the firewall is enabled
> - Add the appropriate URLs or hosts to the custom allowlist in this
repository's [Copilot coding agent
settings](https://github.com/microsoft/PowerToys/settings/copilot/coding_agent)
(admins only)
>
> </details>

<!-- START COPILOT CODING AGENT SUFFIX -->



<details>

<summary>Original prompt</summary>

> 
> ----
> 
> *This section details on the original issue you should resolve*
> 
> <issue_title>Taskbar icon should provide link directly to update
page</issue_title>
> <issue_description>### Description of the new feature / enhancement
> 
> Right now when there is an update the following message appears when
you click on the PT icon in the taskbar:
> 
>
![Image](https://github.com/user-attachments/assets/18641e1c-d80b-4f7e-b206-8c9a36f2de36)
> 
> When you click on the settings wheel you go to the dashboard page:
> 
>
![Image](https://github.com/user-attachments/assets/e951b988-79ab-48b3-8714-a26999223153)
> 
> Then you need to click on the Learn more button before you finally get
to the page where you can install the update:
> 
>
![Image](https://github.com/user-attachments/assets/914c9c00-a642-40da-bfb5-439c1fd930c0)
> 
> Can't you make the **_Update available_** a hyperlink or add another
button that would link directly to the General page (or wherever the
update button is) so we can quickly install the update instead of going
a roundabout way every time?
> 
>
![Image](https://github.com/user-attachments/assets/5c065eed-84ad-47be-9432-607155065a17)
> 
> ### Scenario when this would be used?
> 
> When there is an update. It's a usability annoyance more than
anything.
> 
> ### Supporting information
> 
> _No response_</issue_description>
> 
> ## Comments on the Issue (you are @copilot in this section)
> 
> <comments>
> </comments>
> 


</details>
Fixes microsoft/PowerToys#38854

<!-- START COPILOT CODING AGENT TIPS -->
---

 Let Copilot coding agent [set things up for
you](https://github.com/microsoft/PowerToys/issues/new?title=+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: niels9001 <9866362+niels9001@users.noreply.github.com>
Co-authored-by: Niels Laute <niels.laute@live.nl>
2025-11-06 16:53:32 +08:00
Shawn Yuan
d737e22d16 fixed terms & privacy link issue (#43327)
<!-- 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
This pull request updates the way legal links (Terms of Use and Privacy
Policy) are displayed for different AI providers in the AdvancedPaste
module, making them dynamic based on the currently selected provider. It
also updates the URLs for several providers to ensure accuracy and
relevance.

## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

---------

Signed-off-by: Shawn Yuan (from Dev Box) <shuaiyuan@microsoft.com>
2025-11-06 15:04:16 +08:00
leileizhang
fabf60d18f Add DSC v3 resource discovery support in PowerToys with subfolder structure and PATH configuration (#43253)
<!-- 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

- Use DSCModules subfolder for JSON manifest files
- Use relative path "..\PowerToys.DSC.exe" in JSON manifests
- Configure PATH environment variable to point to DSCModules subfolder

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-06 12:08:41 +08:00
Jeremy Sinclair
1604b7b555 [Deps] Update .NET packages from 9.0.8 to 9.0.10 (#43295)
<!-- 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
Updates .NET 9 Runtime / Library packages to the latest 9.0.10 servicing
release for security fixes.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-06 11:33:48 +08:00
leileizhang
7fb1cdd1ea Remove PowerToys installer path from PATH to prevent some other apps crashe (#43157)
<!-- 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
To support DSCv3, we previously added the PowerToys installer path to
the environment PATH. However, this change may cause some other
applications to crash.

This PR removes the installer path temporarily until we find a better
way to support DSCv3.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42919
- [ ] **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
2025-11-06 10:14:23 +08:00
leileizhang
05ae163eea Add back NuGet config file accidentally deleted by AdvancedPaste PR (#43312)
<!-- 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
Deleted by this https://github.com/microsoft/PowerToys/pull/42374
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-06 10:13:23 +08:00
Niels Laute
e19520e675 [CmdPal] Extension string updates (#43269)
<!-- 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

Feedback from the design team:
- Reduce any redundant or long text strings for better readability and
localization
- `Verb + noun` for most extensions
- Sentence casing according to the Windows Writing Guidelines


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

---------

Co-authored-by: Michael Jolley <mike@baldbeardedbuilder.com>
Co-authored-by: Jiří Polášek <me@jiripolasek.com>
2025-11-05 19:29:04 -06:00
Jiří Polášek
e2591250be CmdPal: Treat System command provider as special (#43321)
## Summary of the Pull Request

This change marks the System command provider as special, ensuring
fallback items are surfaced at the top of the list.

Additionally, the SystemCommandExtensionProvider ID has been updated to
comply with the new naming convention.

As a small cleanup, SystemCommandExtensionProvider is now sealed.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Related to: #42524
- [ ] **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
2025-11-05 18:34:16 -06:00
Jaylyn Barbee
e448d731f8 [Light Switch] Refactor + cleaner behavior (#43159)
<!-- 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
This PR also includes a refactor to the light switch service. The
refactor will help me make cleaner updates in the future and makes the
"state" easier to track through the service.

## Validation
Completed the following steps as testing for normal behavior and edge
cases:

1. Start up
- Check defaults (delete settings.json files)
- Ensure PowerToys properly starts/does not start the module
- Ensure turning the module on and off starts/terminates the service
- Ensure the settings in the settings file are reflected in the front
end
2. Manual Override Activation
- Ensure that pressing the shortcut key triggers an update
- Ensure that pressing the shortcut key triggers a block in the schedule
(Should see logs Skipping schedule due to manual override)
- Ensure that changing windows settings triggers a manual override (at
the next minute)
- Ensure in both scenarios that the schedule is ignored until a boundary
is met
- Ensure that the schedule resumes following the boundary clearance.
4. New Day Detection / Sun Time Recalculation
- Keep service running past midnight (or simulate date change)
- Verify the last updated day is updated
- Verify new sun times are accurate and set in settings.
5. Coordinates / Mode Change
- Ensure that updates occur when the coordinates or mode changes. These
updates should reflect the new settings.
6. Schedule Mode OFF
- Turn the schedule off, check logs for notice
- Ensure the shortcut still works
- Ensure the schedule resumes as expected once turned back on.
8. Sleep / Hibernate Resume
- Set your schedule to change themes in the next 2 minutes.
- Send your machine to hibernate shutdown /h 
- Wake your machine after your theme should have changed and ensure
Light Switch catches itself up
- Repeat steps above but with a manual override triggered prior to the
theme change.Ensure manual override is flushed and schedule resumes.
9. Stop and Restart behavior
- Stop and restart the module. Ensure it behaves as expected. No reset
settings, etc.
2025-11-05 13:34:26 -05:00
Jiří Polášek
47c779e0a0 Run: handle DWM issues more gracefully (#42588)
## Summary of the Pull Request

This PR expands the scenarios where Run handles exceptions silently,
reducing the number of exception dialogs displayed to users and creating
a smoother experience. The premise remains unchanged: most exceptions
occur when Run is in the background, and the app can recover as the DWM
recovers.

This should cover most of the reports commonly encountered in the wild.

- Extended silent handling of DWM exceptions to include
`DWM_E_COMPOSITIONDISABLED` (0x80263001).
- Added silent handling for `STATUS_MESSAGE_LOST` error (NTSTATUS
0xC0000701, HR 0xD0000701).
- Implemented exception handling and retry logic for failures during
manual app theme changes (triggered by
`PowerLauncher.Helper.ThemeManager`).

I can't reproduce the error on its own; it only occurs alongside a fatal
render thread failure (`UCEERR_RENDERTHREADFAILURE`), which is
unrecoverable. Even if caught, the UI stops rendering, leaving the
end-user unable to proceed.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Related to: #31226
- [x] Related to: #30769
- [ ] **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
2025-11-05 18:51:58 +01:00
Niels Laute
b7b6ae6485 Tweaking the focus state for AP (#43306)
Adding the AI underline to the inputbox

<img width="656" height="583" alt="image"
src="https://github.com/user-attachments/assets/998a4203-61d7-4228-a682-391c6d78b3a5"
/>
2025-11-05 21:23:17 +08:00
Dave Rayment
b5b7361855 [General] Include high-volume bugs in Issue Template header (#43134)
<!-- 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
Adds references to 3 bugs which are logged by those who are unfamiliar
with the issue search function. It is hoped that this will help ease the
amount of triaging.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
- Checked the YML preview on my own fork.
2025-11-05 13:26:55 +01:00
Mike Hall
cd988b798b Add Cursor Wrap functionality to Powertoys Mouse Utils (#41826)
## Summary of the Pull Request

Cursor Wrap makes it simple to move the mouse from one edge of a display
(or set of displays) to the opposite edge of the display stack - on a
single display Cursor Wrap will wrap top/bottom and left/right edges.


https://github.com/user-attachments/assets/3feb606c-142b-4dab-9824-7597833d3ba4


## PR Checklist

- [x] Closes: CursorWrap #41759
- [x] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **Tests:** Added/updated and all pass
- [x] **Localization:** All end-user-facing strings can be localized
- [ ] **Dev docs:** Added/updated
- [x] **New binaries:** Added on the required places
- [x] [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

## Detailed Description of the Pull Request / Additional comments
PR adds a new mouse utils module, this is 'Cursor Wrap' - Cursor Wrap
works with 1-9 monitors based on the logical monitor layout of the PC -
for a single monitor device the cursor is wrapped for the top/bottom and
left/right edges of the display - for a multi-monitor setup the cursor
is wrapped on the top/bottom left/right of the displays in the logical
display layout.

## Validation Steps Performed
Validation has been performed on a Surface Laptop 7 Pro (Intel) with a
single display and with an HDMI USB-C second display configured to be a
second monitor in top/left/right/bottom configuration - there are also
tests that run as part of the build to validate logical monitor layout
and cursor positioning.

---------

Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Kai Tao (from Dev Box) <kaitao@microsoft.com>
Co-authored-by: Gordon Lam (SH) <yeelam@microsoft.com>
2025-11-05 19:28:25 +08:00
Niels Laute
1ad468641b [UX] Dashboard utilities sorting (#42065)
## Summary of the Pull Request

This PR adds a sorting button to the module list so it can be sorted
alphabetically (default) or by status.

Fixes: #41837

<img width="760" height="933" alt="image"
src="https://github.com/user-attachments/assets/69c831a9-ae9e-4849-b630-772d03e4a4b1"
/>


@yeelam-gordon When running the runner, I do see the settings value is
being updated. But when running the runner again the setting doesn't
seem to be saved? Is that because of a bug in my implementation, or am I
testing it wrong :)?

<img width="286" height="86" alt="image"
src="https://github.com/user-attachments/assets/3a90997f-c40c-4f50-8361-b1ae3aa02052"
/>



<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #xxx
- [ ] **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

---------

Signed-off-by: Shawn Yuan (from Dev Box) <shuaiyuan@microsoft.com>
Co-authored-by: Shawn Yuan (from Dev Box) <shuaiyuan@microsoft.com>
2025-11-05 17:42:24 +08:00
Davide Giacometti
3176eb94a9 [Hosts] Backup Settings (#37778)
<!-- 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

Add backup settings for the Hosts File Editor to allow users to
customize the existing hardcoded logic.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] **Closes:** #37666
- [ ] **Communication:** I've discussed this with core contributors
already. If work hasn't been agreed, this work might be rejected
- [x] **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)
- [x] **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:
https://github.com/MicrosoftDocs/windows-dev-docs/pull/5342

<!-- 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

<img width="707" alt="image"
src="https://github.com/user-attachments/assets/e114431e-60e0-4b8c-bba7-df23f7af0182"
/>

<img width="707" alt="image"
src="https://github.com/user-attachments/assets/a02b591e-eb46-4964-bee7-548ec175b3aa"
/>

<img width="707" alt="image"
src="https://github.com/user-attachments/assets/6eb0ff21-74fa-4229-8832-df2df877b5cd"
/>

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed

- Backup on: verified that backup isn't executed
- Backups off: Verified that only one backup is executed
- Verified that backup is located in the expected path
- Auto delete is set to "never": verified that no backups are deleted
- Auto delete is set to "based on count": verified that backups are
deleted according to count value
- Auto delete is set to "based on age and count": verified that backups
are deleted according to days and count values
- Verified that files without the backup pattern aren't deleted
- There is also adequate test coverage for these scenarios 🚀

---------

Co-authored-by: Gordon Lam (SH) <yeelam@microsoft.com>
2025-11-05 16:42:31 +08:00
Antonín Procházka
31a0deee35 Peek a file using command line and named pipe. (#26422) (#38754)
This is a PoC. It adds the ability to peek a file using a named pipe and
a command line.

Usage/testing before this gets merged and released:

1. Build release configuration of Peek.UI and Peek.CLI.
2. Terminate PowerToys.Peek.UI.exe if running.
3. Back up and replace PowerToys.Peek.UI[.dll;.exe;.pdb;.pri]. Use
[Everything](https://www.voidtools.com/downloads/) to find the source
and destination folders.
4. Call `PowerToys.Peek.CLI.exe <path>` or send the path to peek to the
`PeekPipe` named pipe.

If this solution is OK, documentation and installer need to be updated
and a follow-up issue needs to be filed to support navigation.

---------

Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Leilei Zhang <leilzh@microsoft.com>
Co-authored-by: Gordon Lam (SH) <yeelam@microsoft.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-05 16:38:07 +08:00
Kai Tao
20b5ca79a3 light switch: Remove newinfobadge for light switch (#43300)
<!-- 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
Remove new tag for light switch

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

<img width="773" height="332" alt="image"
src="https://github.com/user-attachments/assets/79f89994-8b6e-431e-a5f1-30909940e996"
/>
2025-11-05 16:36:46 +08:00
Shawn Yuan
a3b8dc6cb8 Advanced Paste: AI pasting enhancement (#42374)
<!-- 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
* Add multiple endpoint support for paste with AI
* Add Local AI support for paste AI
* Advanced AI implementation

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #32960
- [x] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **Tests:** Added/updated and all pass
- [x] **Localization:** All end-user-facing strings can be localized
- [x] **Dev docs:** Added/updated
- [x] **New binaries:** Added on the required places
- [x] [JSON for
signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json)
for new binaries
- [x] [WXS for
installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs)
for new binaries and localization folder
- [x] [YML for CI
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml)
for new test projects
- [x] [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

### GPO
- [x] Paste with AI should not be available if the original GPO for
paste AI is set to false
   - [x] Paste with AI should be controlled within endpoint granularity
- [x] Advanced Paste UI should disable AI ability if GPO is set to
disable for any llm
### Paste AI
   - [x] Every AI endpoint should work as expected
   - [x] Default prompt should be able to give a reasonable result
   - [x] Local AI should work as expected
### Advanced AI
- [x] Open AI and Azure OPENAI should be able to configure as advanced
AI endpoint
- [x] Advanced AI should be able to pick up functions correctly to do
the transformation and give reasonable result

---------

Signed-off-by: Shawn Yuan <shuaiyuan@microsoft.com>
Signed-off-by: Shuai Yuan <shuai.yuan.zju@gmail.com>
Signed-off-by: Shawn Yuan (from Dev Box) <shuaiyuan@microsoft.com>
Co-authored-by: Leilei Zhang <leilzh@microsoft.com>
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Kai Tao <kaitao@microsoft.com>
Co-authored-by: Kai Tao <69313318+vanzue@users.noreply.github.com>
Co-authored-by: vanzue <vanzue@outlook.com>
Co-authored-by: Gordon Lam (SH) <yeelam@microsoft.com>
2025-11-05 16:13:55 +08:00
Kai Tao
c364aa7c70 Cmdpal: Bring vcruntime in cmdpal (#43255)
<!-- 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
Cmdpal has dependency on vcruntime appx package due to adaptive card,
bring that dependency in

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42497
- [ ] **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
<img width="1873" height="1183" alt="image"
src="https://github.com/user-attachments/assets/d416d09f-f4d6-456c-a625-ca724a69b5ee"
/>

---------

Co-authored-by: Jiří Polášek <me@jiripolasek.com>
2025-11-05 09:51:25 +08:00
leileizhang
229bedd09f [UI Tests] Add complete OCR UI test coverage (#41947)
<!-- 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
* Enable Text Extractor. Then:
   - [x] Press the activation shortcut and verify the overlay appears.
   - [x] Press Escape and verify the overlay disappears.
   - [x] Press the activation shortcut and verify the overlay appears.
   - [x] Right-click and select Cancel. Verify the overlay disappears.
- [x] Disable Text Extractor and verify that the activation shortuct no
longer activates the utility.
 * With Text Extractor enabled and activated:
   - [x] Try to select text and verify it is copied to the clipboard.
- [x] Try to select a different OCR language by right-clicking and
verify the change is applied.
 * Test the different settings and verify they are applied:
   - [x] Activation shortcut
   - [x] OCR Language
 
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-11-04 11:59:10 +08:00
moooyo
70e1177a6a [PowerRename] Support using photo metadata to replace in the PowerRename (#41728)
<!-- 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
1. Introduce WIC for power rename and add new class WICMetadataExtractor
to use WIC to extract metadata.
2. Add some patterns for metadata extract.
3. Support XMP and EXIF metadata extract.
4. Add test data for xmp and exif extractor
5. Add attribution for the test data uploader.

UI:
<img width="2052" height="1415" alt="image"
src="https://github.com/user-attachments/assets/9051b12e-4e66-4fdc-a4d4-3bada661c235"
/>
<img width="284" height="170" alt="image"
src="https://github.com/user-attachments/assets/2fd67193-77a7-48f0-a5ac-08a69fe64e55"
/>
<img width="715" height="1160" alt="image"
src="https://github.com/user-attachments/assets/5fa68a8c-d129-44dd-b747-099dfbcded12"
/>

demo:


https://github.com/user-attachments/assets/e90bc206-62e5-4101-ada2-3187ee7e2039



<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #5612
- [x] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **Tests:** Added/updated and all pass
- [x] **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

---------

Co-authored-by: Yu Leng <yuleng@microsoft.com>
2025-11-04 09:27:16 +08:00
Jiří Polášek
957b653210 CmdPal: Add a micro global error handler (#41392)
## Summary of the Pull Request

This PR introduces a scaled-down version of the global error handler
from #41061.

- Catches and logs virtually all unhandled exceptions.
- For UI thread exceptions, generates an additional error report:
    - One copy is saved in app's log folder for the Bug Report Tool.
- Another copy can be placed to the user’s desktop to increase
visibility and encourage report submission (disabled for now).
- Displays a message box that tells the user where to find the saved
report.

This PR is intentionally minimal and focused. The complete, more
polished solution is still planned in #41061, which should replace this
implementation in a follow-up.

<details><summary>Report example</summary>
<pre>

This is an error report generated by Windows Command Palette.
If you are seeing this message, it means the application has encountered
an unexpected issue.
You can help us fix it by filing a report at
https://aka.ms/powerToysReportBug.
============================================================
😢 An unexpected error occurred in the application.

Summary:
  Message:    NamedResource Not Found.

NamedResource Not Found.

  Type:       System.Runtime.InteropServices.COMException
  Source:     WinRT.Runtime
  Time:       2025-08-26 20:22:53.5752505
  HRESULT:    0x80073B17 (-2147009769)

Stack Trace:
at WinRT.ExceptionHelpers.<ThrowExceptionForHR>g__Throw|38_0(Int32 hr)
at
ABI.Microsoft.Windows.ApplicationModel.Resources.IResourceLoaderMethods.GetString(IObjectReference
_obj, String resourceId)
at
Microsoft.Windows.ApplicationModel.Resources.ResourceLoader.GetString(String
resourceId)
at Microsoft.CmdPal.UI.Helpers.ResourceLoaderInstance.GetString(String
resourceId)
at
Microsoft.CmdPal.UI.Settings.SettingsWindow.AnnounceNavigationPaneStateChanged(DependencyObject
sender, DependencyProperty dp)
at
ABI.Microsoft.UI.Xaml.DependencyPropertyChangedCallback.Do_Abi_Invoke(IntPtr
thisPtr, IntPtr sender, IntPtr dp)

------------------ Full Exception Details ------------------
System.Runtime.InteropServices.COMException (0x80073B17): NamedResource
Not Found.

NamedResource Not Found.

at WinRT.ExceptionHelpers.<ThrowExceptionForHR>g__Throw|38_0(Int32 hr)
at
ABI.Microsoft.Windows.ApplicationModel.Resources.IResourceLoaderMethods.GetString(IObjectReference
_obj, String resourceId)
at
Microsoft.Windows.ApplicationModel.Resources.ResourceLoader.GetString(String
resourceId)
at Microsoft.CmdPal.UI.Helpers.ResourceLoaderInstance.GetString(String
resourceId)
at
Microsoft.CmdPal.UI.Settings.SettingsWindow.AnnounceNavigationPaneStateChanged(DependencyObject
sender, DependencyProperty dp)
at
ABI.Microsoft.UI.Xaml.DependencyPropertyChangedCallback.Do_Abi_Invoke(IntPtr
thisPtr, IntPtr sender, IntPtr dp)

ℹ️ If you need further assistance, please include this information in
your support request.
ℹ️ Before sending, take a quick look to make sure it doesn't contain any
personal or sensitive information.
============================================================


</pre>
</details> 

Message:
<img width="2309" height="1341" alt="image"
src="https://github.com/user-attachments/assets/3ec20054-402f-421d-bebd-bf848a8eb504"
/>

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Partially handles: #41606
- [ ] **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
2025-10-31 12:35:37 -05:00
Dustin L. Howett
0b0ad68b60 build: build the Machine and User installers at the same time (#42888) 2025-10-31 00:28:12 -05:00
Dustin L. Howett
b87be7263d Tests: do not use *relative drive letter* (#43135)
Since we switched to running the build on C:\, this test started
failing. C: means "current directory on the C drive"!
2025-10-31 11:33:44 +08:00
Jaylyn Barbee
1783812f1f Light Switch is not clearing manual override if the boundary happens while offline (#43072)
Bug: If light switch is transitioning while the computer is offline,
Light Switch will not clear the manual override at the boundary.
Fix: Ensure the "Clear override" logic checks if we are at or past a
boundary point.
2025-10-29 09:23:43 -07:00
Shawn Yuan
94b5bc62de Fix title bar overlapping issue (#43022)
<!-- 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
This pull request introduces a small UI improvement to the
`ShellPage.xaml` file. The change sets a breakpoint for the compact
state of the title bar, which will help the interface adapt better to
different window sizes.

* UI responsiveness: Added `CompactStateBreakpoint="900"` to the
`AppTitleBar` control in `ShellPage.xaml` to improve layout adaptation
for smaller window widths.

**Before:**


https://github.com/user-attachments/assets/5ec424f4-b441-4eff-967f-a97cc92e180a


**After:**


https://github.com/user-attachments/assets/a1487c39-dce7-4055-90e9-aa6ed95e4beb



<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **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

---------

Signed-off-by: Shawn Yuan <shuaiyuan@microsoft.com>
2025-10-29 10:32:09 +08:00
Shawn Yuan
0d18727e81 [CmdPal] Added recenter window support. (#38943)
<!-- 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

Added a new setting option to Command Palette that allows users to
choose whether the window should be recentered on every launch or
remember its last position. This enhancement improves user experience by
maintaining window positioning preferences across sessions.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] **Closes:** #38310
- [x] **Communication:** I've discussed this with core contributors
already. If 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

This PR adds a "Recenter window on launch" setting to Command Palette
with the following changes:

1. Added a new `RecenterWindow` property to `SettingsModel` (default is
true for backward compatibility)
2. Added corresponding property to `SettingsViewModel` for binding
3. Created a new `WindowPosition` class to track window position and
size
4. Modified `MainWindow.xaml.cs` to:
    - Track window position and size changes
    - Update position memory when window is modified or dismissed
    - Respect the recenter setting when showing the window
5. Added UI controls in the settings page with proper localization
strings

![image](https://github.com/user-attachments/assets/1c1db9f6-b23e-47c0-9a03-93906d4c9a42)



This feature allows users who prefer to have the Command Palette appear
in a specific screen location to maintain that preference, while others
can continue using the centered window behavior.

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
1. Manually verified that with the setting enabled (default), the window
centers on launch
2. Verified that with the setting disabled, the window appears at its
last position

---------

Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com>
Signed-off-by: Shawn Yuan <shuaiyuan@microsoft.com>
2025-10-28 14:37:45 -05:00
Jiří Polášek
1e40d6b15b CmdPal: Extension list search (#41453)
## Summary of the Pull Request

Adds a rough implementation that appears to work, but it hasn’t been
tested. Don’t rely on it yet—I’m too tired to test properly or write a
polished commit message.

Pictures? Pictures!

<img width="2720" height="1624" alt="image"
src="https://github.com/user-attachments/assets/4f9c3360-8d08-4a34-888f-c6890afd0159"
/>

<img width="2647" height="1558" alt="image"
src="https://github.com/user-attachments/assets/3d6c23bc-f26d-4e31-ae09-d91efd304048"
/>

<img width="2683" height="1536" alt="image"
src="https://github.com/user-attachments/assets/6017b2d4-ccd9-4555-b81f-e2b1f78c48e5"
/>

<img width="577" height="334" alt="image"
src="https://github.com/user-attachments/assets/987fea99-05b2-4d31-b90c-327122daa241"
/>


https://github.com/user-attachments/assets/65a8f8ce-ae09-4272-881d-0b6f56cecfae

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #41451
- [x] Closes: #42031
- [x] Closes: #41800
- [ ] **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

---------

Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Michael Jolley <mike@baldbeardedbuilder.com>
2025-10-28 14:36:42 -05:00
Guilherme
de00cbf20a [CmdPal] Fix filters visibility on non-ListPage (#42828)
<!-- 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
This PR aims to fix the issue where filters from a ListPage remain
visible when navigating to other pages.
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42827 
- [ ] **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
### Before:

![FiltersIssue](https://github.com/user-attachments/assets/b0ad6059-9a11-4e12-821d-7202358e25bb)

### After:

![FiltersFix](https://github.com/user-attachments/assets/b9ee71ee-cb5d-4ef9-b9fc-bc2e2a710b5c)

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed

---------

Co-authored-by: Jiří Polášek <me@jiripolasek.com>
2025-10-28 14:32:09 -05:00
Jiří Polášek
c4e96c7ee9 CmdPal: Add hints about bookmark placeholders to the Add/Edit Bookmark form (#42793)
## Summary of the Pull Request

This PR adds a short explanation to the Add/Edit Bookmark form,
describing how to use placeholders in bookmark URLs or paths

<img width="823" height="525" alt="image"
src="https://github.com/user-attachments/assets/b66adfc4-2dbc-4934-8796-9d4ad46d9f5f"
/>

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42265 
- [ ] **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
2025-10-28 14:28:46 -05:00
Jiří Polášek
103429b4d7 CmdPal: Add hidden window as owner for tool windows (#42902)
## Summary of the Pull Request

This PR changes the method used to hide tool windows from the taskbar
and Alt+Tab to a more reliable approach.
Previously, this was achieved by adding `WS_EX_TOOLWINDOW` to an unowned
top-level window, which proved unreliable in several scenarios.

The new implementation assigns a hidden window as the owner of each tool
window.
This ensures that the window does not appear on the taskbar even when
the Windows setting
**Settings → System → Multitasking → On the taskbar, show all opened
windows** is set to **On all desktops**.

## Change log one-liner

Fixes Command Palette windows occasionally appearing on the taskbar
under certain system settings.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42395
- [x] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **Tests:** Added/updated and all pass
- [x] **Localization:** All end-user-facing strings can be localized
- [x] **Dev docs:** Added/updated
- [x] **New binaries:** none
- [x] **Documentation updated:** no need

<!-- 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

Tested alongside the stable CmdPal on a system with
2025-10-28 14:26:01 -05:00
Jaylyn Barbee
01fb831e4e [Light Switch] Light Switch should detect changes in Windows Settings and treat as manual override (same as using shortcut) (#42882)
<!-- 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
This PR ensures that Light Switch detects changes to app/system theme
from Windows Settings. This PR also introduces new behavior where
switching the schedule will cause an instant update to the theme if
necessary.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42878
- [x] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [ ] **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
2025-10-28 12:00:38 -07:00
Sam Rueby
d197af3da9 CmdPal's search bar now accepts page up/down keyboard strokes. (#41886)
<!-- 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
The page up/down keys now function while the search box is focused.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ X ] Closes: #41877
- [ ] **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
Previously, the page up/down keys only performed any action while an
item in the list was focused. The page up/down keys did not have any
effect while the search box was focused, however the up/down arrows do
have effect. This PR enables the page up/down keys while the search box
is focused.

There is a caveat here. The page up/down behavior is not consistent. I
do not see a way to tell the ListView to perform its native page up/down
function. Instead, I manually calculate roughly which item to scroll-to.
Because of this, the amount of scroll between when the search box is
focused and when an item in the ListView is focused is not consistent.

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed


![pageupdown](https://github.com/user-attachments/assets/b30f6e4e-03de-45bd-8570-0b06850bef24)
In this GIF:
1. CmdPal appears
2. SearchBar focused, down/up arrow keys.
3. SearchBar focused, page down/up keys.
4. Tab to item in ListView
5. ListView item focused down/up arrow keys.
6. ListView item focused page down/up keys.
7. SearchBar focused
8. Filter "abc"
9. SearchBar focused page down/up keys.
2025-10-28 12:56:17 -05:00
Jiří Polášek
a4791cc493 CmdPal: Ensure CommandItemViewModel reacts to changes of replaced Command (#42982)
## Summary of the Pull Request

This PR resolves the issue with CommandItemViewModel's subscription to
changes in the associated Command when it gets replaced by another
Command. The current implementation removes the handler from the old
command but fails to attach a new one.

## Change log one-liner


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42981 
- [ ] **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
2025-10-28 11:22:09 -05:00
leileizhang
1a1894472a Fix package identity build issue (#43019)
<!-- 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
<img width="1988" height="360" alt="image"
src="https://github.com/user-attachments/assets/85d994a9-3799-4f16-a836-85ca264b873c"
/>

Add an EntryPoint to the AppxManifest to fix the issue.
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-10-28 17:16:03 +08:00
Jiří Polášek
5d6f96559c Multiple toys: Exclude TitleBars from tab navigation (#42030)
## Summary of the Pull Request

This PR removes title bar controls from tab navigation, solving one of
hidden tab stops (the other being #40637).

Affected apps:
- Command Palette - Settings
- Environment Variables
- File Locksmith
- Hosts File Editor
- Registry Preview
- Settings (the search box in the title bar is still tab navigable)

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #41944 
- [ ] **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

All apps were manually tests, by pressing tab and shift + tab.

---------

Co-authored-by: Niels Laute <niels.laute@live.nl>
2025-10-28 09:40:20 +08:00
Kai Tao
b774e13176 Fix the foreground style for find my mouse (#42865)
<!-- 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

Find my mouse should use full transparent window

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [X] Closes: #42758
- [ ] **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


https://github.com/user-attachments/assets/75c73eb3-04bb-438c-8823-3c9f18923cc6
2025-10-27 09:33:26 +08:00
Jiří Polášek
e256e79685 CmdPal: Fix search box text selection in ShellPage.GoHome (#42937)
## Summary of the Pull Request

This PR fixes an issue where `ShellPage.GoHome` wouldn’t select the
search box text when the current page was already the home page.

In that case, the navigation stack was empty, and no code was executed
because focusing the text had been delegated to the `GoBack` operation.

## Change log one-liner

Ensured search text is selected when Go home when activated and
Highlight search on activate are both enabled.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42443
- [x] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **Tests:** Added/updated and all pass
- [x] **Localization:** All end-user-facing strings can be localized
- [x] **Dev docs:** Added/updated
- [x] **New binaries:** Added on the required places
- [x] **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
2025-10-25 19:51:53 -05:00
Jiří Polášek
623c804093 ManagedCommon: Log correct HRESULT for the inner exception (#42178)
## Summary of the Pull Request

This PR fixes incorrect HRESULT for inner exception when an error is
logged.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-10-25 19:50:07 -05:00
Michael Jolley
20188bda9b File search now has filters (#42141)
Closes #39260

Search for all files & folders, folders only, or files only.

Enjoy.


https://github.com/user-attachments/assets/43ba93f5-dfc5-4e73-8414-547cf99dcfcf
2025-10-24 19:16:21 -05:00
Jiří Polášek
6e5ad11bc3 CmdpPal: SearchBox visibility and async loading race (#42783)
## Summary of the Pull Request

This PR introduces two related fixes to improve the stability and
reliability of navigation and search UI behavior in the shell:

- **Ensure search box visibility is correctly updated**  
- `ShellViewModel` previously set `IsSearchBoxVisible` after navigation
to the page, but didn’t update it when the value changed. While the
value isn’t expected to change dynamically, the property initialization
is asynchronous, which could cause a race condition.
- As a defensive measure, this also changes the default value of
uninitialized property to make it visible by default.

- **Cancel asynchronous focus placement if navigation changes**  
- Ensures that any pending asynchronous focus operation is cancelled
when another navigation occurs before it completes.


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42782
- [ ] **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
2025-10-24 19:15:34 -05:00
Jiří Polášek
0e36e7e7a7 CmdPal: Add keyboard shortcut (Ctrl+,) to open Settings (#42787)
## Summary of the Pull Request

This PR introduces a new keyboard shortcut `Ctrl + ,` that opens the
Settings window directly.


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42785 
- [ ] **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
2025-10-24 19:12:59 -05:00
moooyo
82dc4cdc18 [CmdPal] Replace complex cancellation token mechanism with a simple task queue. (#42356)
<!-- 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
Just consider user are trying to search a long name such as "Visual
Studio Code"
The old mechanism:
User input: V
Task: V
Then input: i
Task cancel for V and start task i
etc...

The problem is:
1. I don't think we can really cancel the most time-cost part (Find
packages from WinGet).
2. User cannot see anything before they really end the input and the
last task complete. UX exp is so bad.
3. It's so complex to maintain. Hard to understand for the new
contributor.

New mechanism:
User input: V
Task: V
Then input: i 
Prev Task is still running but mark the next task is i
Input: s
Prev Task is still running but override the next task to s
etc...

We can get:
1. User can see some results if prev task complete.
2. It's simple to understand
3. The extra time cost I think will not too much. Because we ignored the
middle input.

Compare:


https://github.com/user-attachments/assets/f45f4073-efab-4f43-87f0-f47b727f36dc



<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

Co-authored-by: Yu Leng <yuleng@microsoft.com>
2025-10-24 14:28:30 -05:00
Kai Tao
c71fdca277 Hybrid CRT for powertys (#42073)
<!-- 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-->
Hybrid CRT across powertoys for better bundle size

## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
Bundle Size comparasion:

| bundle        | Before Hybrid CRT | After Hybrid CRT | diff |
|---------------|-------------------|------------------|------|
| x64-user      | 317M              | 310M             | 7M   |
| x64-machine   | 317M              |310M             | 7M   |
| arm64-user    | 305M              | 299M             | 6M   |
| arm64-machine | 305M              | 299M             | 6M   |


Did verification on a sandbox machine, every module launches as
expected, no dependency issue
2025-10-24 10:24:39 +08:00
Jiří Polášek
a69f7fa806 CmdPal: Update top-level item view model to reflect change of the associated command (#42806)
## Summary of the Pull Request

This PR implements a fix that ensures the top-level command's alias,
hotkey, and tags are automatically updated whenever the associated
command is modified, as the command defines the actual identity of the
item.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42796
- [x] Related to: #42807
- [ ] **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
2025-10-23 16:57:12 -05:00
Jiří Polášek
cd5f753140 CmdPal: Migrate bookmarks manually (#42814)
<!-- 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

This PR fixes the migration of bookmarks from versions prior to 0.95,
resolving an issue where hotkeys and aliases wouldn’t persist on
bookmarks created with Command Palette 0.94 or earlier.

It removes ID auto-fixing from `BookmarkData` in favor of an explicit
migration step handled by `BookmarkManager`.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42796
- [ ] **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
2025-10-23 16:53:06 -05:00
Clint Rutkas
c628b4901d Added open tag to default expand open (#42824)
By default, none of the 4 methods are expanded. this will expand the top
item by default for users.

<img width="974" height="414" alt="image"
src="https://github.com/user-attachments/assets/f328dee6-9206-47a1-b45f-1f951142eef4"
/>
2025-10-23 22:07:16 +02:00
Jaylyn Barbee
c6c7bfb861 Updated installer hashes for 0.95.1 (#42820)
Title, updating installer links for next release.
2025-10-23 12:18:45 -04:00
Mike Hall
d64f06906c Enable switching to and from MousePointerCrosshairs and Gliding Cursor (#42105)
## Summary of the Pull Request
This PR enables a user to switch between Mouse Pointer Crosshairs and
Gliding Cursor (or the other way round!). The primary change is to the
underlying state machine that's shared between Mouse Pointer Crosshairs
and Gliding Cursor, both are implemented in the same Mouse Module.

## PR Checklist

- [ ] Closes: #xxx
- [x] **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

## Detailed Description of the Pull Request / Additional comments
See above - this is primarily a change to the shared state machine
between Mouse Pointer Crosshairs and Gliding Cursor - this change
enables transition between Mouse Pointer Crosshairs and Gliding Cursor,
the underlying state is reset when a user transitions from Gliding to
Mouse Pointer and back again.

## Validation Steps Performed
Validation on a Windows Surface Laptop 7 Pro for the following states.
- Mouse Pointer Crosshairs and Gliding Cursor NOT active -
enable/disable Mouse Pointer Crosshairs
- Mouse Pointer Crosshairs and Gliding Cursor NOT active - enable/step
states for Gliding Cursor
- Activate and disable Mouse Pointer Crosshairs
- Activate and step through Gliding Cursor
- Mouse Pointer Crosshairs Active - Switch to Gliding Cursor
- Gliding Cursor Active - Switch to Mouse Pointer Crosshairs
2025-10-23 18:21:01 +08:00
Kai Tao
c26dfef81b Find My Mouse: Cursor should not go busy & window should not be active (#42795)
<!-- 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
Fix two issue in find my mouse:
 #42758  #42765 
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42758 and #42765
- [ ] **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
| Problem | Before | After this fix |
|----------|---------|----------------|
| Mouse Loading status | html<br><video
src="https://github.com/user-attachments/assets/a07b3fe7-a9e1-4176-a33f-4836bf7f7e0a"
controls width="300"></video> | html<br><video
src="https://github.com/user-attachments/assets/a78848b0-6f34-4d68-b470-a4a3adbd8a5e"
controls width="300"></video> |
| Current window lose focus | html<br><video
src="https://github.com/user-attachments/assets/5122262c-6c98-4fe5-a107-5db2d96a6341"
controls width="300"></video> | html<br><video
src="https://github.com/user-attachments/assets/b12391c8-d148-4498-b37f-c8c1bc9e381a"
controls width="300"></video> |


The window lose focus test: Currently after activate the find my mouse,
the window lose focus, after the fix, foreground window is still the
focused window, And my keystroke will directly apply in the foreground
window.
Maybe hard to see in the video.
2025-10-23 16:20:40 +08:00
Mason Bergstrom
dd420509ab [Mouse Without Borders] Adding Horizontal Scrolling Support (#42179)
## Summary of the Pull Request
Added support for horizontal scrolling to Mouse Without Borders, instead
of being a no-op.

## PR Checklist

- [x] Closes: #37037
- [x] **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

## Detailed Description of the Pull Request / Additional comments
Works in a backward compatible fashion, continuing to be a no-op when
forwarded to an older version, but works once both devices are updated.

## Validation Steps Performed
Built on two separate devices that are paired with each other. First
tested with one device updated and one on the old code, confirming
backwards compatibility support. Second tested both devices updated,
confirming horizontal scroll is now working on remote device.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-23 12:06:33 +08:00
Jaylyn Barbee
2c4aab9d87 Light Switch Hotfixes v2 (#42774)
Should fix: #42627
Issue: Suntimes not updating within the day if the mode changes to
SunsetToSunrise
Fix: Update suntimes in the service if the mode is changed to Sun mode.

Other: small bug fixes (brackets, etc)
2025-10-22 11:59:36 -07:00
Dustin L. Howett
52ce33d438 build: run all builds out of a new (huge) P:\ drive (#42739)
The new agents have much smaller temporary disks (which I verified with
another test run to clock in at about 87GB). For right now, let's move
our release builds to a larger drive while we troubleshoot.
2025-10-21 18:32:34 -05:00
Gordon Lam
fc1307418e Update Copilot guidance and PR prompt workflow (This PR summary and commit are generated accordingly) (#42634)
## Summary of the Pull Request
- Added new Copilot agent prompts in
`.github/prompts/create-commit-title.prompt.md`,
`.github/prompts/create-pr.prompt.md`, and
`.github/prompts/fix-spelling.prompt.md` to streamline contributor
workflows.
- Refreshed `.github/copilot-instructions.md` with front matter and
clarified build/test guidance.
And added a new section titled `Language Style Rules` to help reduce
style issues in auto-generated code.

## Screenshot
a. For the new prompts, in VSCode, just type "/" and its name
<img width="477" height="124" alt="image"
src="https://github.com/user-attachments/assets/37c7330d-6fdc-45b4-9030-95920920c964"
/>
<img width="446" height="105" alt="image"
src="https://github.com/user-attachments/assets/55d3bb49-46cc-4441-9fb5-fed3a22983d9"
/>
b. All the spelling check problem, PR description, Commit title, are
generated and fixed by above prompts as demonstration (Except this
section)

## PR Checklist
- [x] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **Tests:** N/A on doc updates.
- [x] **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 (N/A)

## Detailed Description of the Pull Request / Additional comments
- Introduced prompt definitions so local tooling can generate commit
titles, PR descriptions, and resolve spell-check alerts using consistent
instructions.
- Added GitHub CLI prerequisites inside
`.github/prompts/fix-spelling.prompt.md` to ensure `gh` commands succeed
for new contributors.
- Converted `.github/copilot-instructions.md` to YAML-front-matter
format while aligning headings and terminology with current contributor
guidance.

## Validation Steps Performed
- No automated tests were run; changes are documentation and
configuration only.
2025-10-21 16:05:16 +08:00
Jaylyn Barbee
f45d54abdf [Light Switch] Hotfixes (#42434)
<!-- 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
Adds new "Off" mode for the schedule mode options which disable the
schedule.
Adds explicit function to disable light switch by default.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

Closes: 
- #42402 
New behavior: "Off" mode added. when off, the regular service loop stops
and all actions are event driven to either resume the loop or listen for
hotkey.
- #42386
New behavior: Disabled explicitly by default
- #42389
New behavior: When switching from dark to light mode the system theme
will remove the accent color.
- #42513
New behavior: Manual mode no longer gets reset. It was being overridden
by the sun calculations that were invertedly running when in manual
mode.

Todo:
- [ ] **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 @alvinashcraft we will need to add this new mode
to the documentation.

## Validation Steps Performed
- Removed all default settings and tested new logic. Light Switch is set
to off by default.
- Updated UI and tested new "Off" mode, logs indicate mode switched and
ticker stopped. Polling resumes on mode change. (need to check that the
shortcut still works)

---------

Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Gordon Lam <73506701+yeelam-gordon@users.noreply.github.com>
2025-10-20 15:57:03 -07:00
Lee Won Jun
f28d009131 [CmdPal] WindowWalker Show the actual window icon instead of the process icon (#42316)
<!-- 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)?
-->

<img width="629" height="767" alt="image"
src="https://github.com/user-attachments/assets/bc093640-db9d-4bc8-bc33-53729e692850"
/>


## Summary of the Pull Request

This is a PR for issue **#42260**.
It targets **CmdPal’s WindowWalker** and changes the icon retrieval to
use **SendMessage** to obtain the window’s actual icon, instead of using
the **process icon**.

To support this, I added a new configuration option.

<img width="400" height="401" alt="image"
src="https://github.com/user-attachments/assets/1a2d97a8-ff95-40b0-be42-746c2b1409d4"
/>


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #42260
- [ ] **Communication:** @jiripolasek 
- [ ] **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


Actully, The `ThumbnailHelper` already contains code that converts an
`IntPtr` `hIcon` into an `IRandomAccessStream`, as shown below:

```
 private static MemoryStream GetMemoryStreamFromIcon(IntPtr hIcon)
 {
     var memoryStream = new MemoryStream();

     // Ensure disposing the icon before freeing the handle
     using (var icon = Icon.FromHandle(hIcon))
     {
         icon.ToBitmap().Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);
     }

     // Clean up the unmanaged handle without risking a use-after-free.
     NativeMethods.DestroyIcon(hIcon);

     memoryStream.Position = 0;
     return memoryStream;
 }

 private static async Task<IRandomAccessStream?> FromHIconToStream(IntPtr hIcon)
 {
     var stream = new InMemoryRandomAccessStream();

     using var memoryStream = GetMemoryStreamFromIcon(hIcon); // this will DestroyIcon hIcon
     using var outputStream = stream.GetOutputStreamAt(0);
     using var dataWriter = new DataWriter(outputStream);

     dataWriter.WriteBytes(memoryStream.ToArray());
     await dataWriter.StoreAsync();
     await dataWriter.FlushAsync();

     return stream;
 }
```

Without modifying (or using) this code, I implemented the almost same
logic directly in `SwitchToWindowCommand` (calling the async code with
`Wait` to block synchronously). The reasons are:

1. I wanted to limit changes to the **WindowWalker** project area. I
don’t expect other extensions to need this behavior.
2. Because this is resource-related work, exposing a public helper that
pulls memory from an `hIcon` pointer seems risky—especially in a class
like `ThumbnailHelper`.

Therefore, I implemented behavior that is nearly identical to the
snippet above.

I did use `using`/`Dispose` where appropriate, but the
`InMemoryRandomAccessStream` created for `IconInfo.FromStream` appears
to use internal referencing; disposing it would be incorrect. For that
reason I didn’t wrap it in a `using`. I’m not entirely sure whether GC
will handle this cleanly.

However, based on the implementation of `FromStream` itself and its
usage elsewhere (e.g., in `ThumbnailHelper`), this seems to be the
correct usage pattern, though I’m not entirely sure.

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed

---------

Co-authored-by: Jiří Polášek <me@jiripolasek.com>
2025-10-20 12:09:23 -05:00
Jiří Polášek
bc8adb3189 BugReport: Fix incorrect XML closing tag syntax generated by XmlDocumentEx (#42399)
## Summary of the Pull Request

The `XmlDocumentEx::Print` method previously used `<\\` to close XML
tags, which is invalid. This commit replaces `<\\` with `</` to ensure
proper XML closing tag syntax.

Changes include:
- Replacing `<\\` with `</` in three instances where closing tags are
generated.
- Ensuring the XML output conforms to standard XML syntax.

These changes improve the correctness of the XML output generated by the
method.

<img width="1014" height="499" alt="image"
src="https://github.com/user-attachments/assets/a9ff6e47-6976-4290-a4f0-c23b0c773d61"
/>


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42390
- [x] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **Tests:** Added/updated and all pass
- [x] **Localization:** All end-user-facing strings can be localized
- [x] **Dev docs:** Added/updated
- [x] **New binaries:** Added on the required places
- [x] **Documentation updated:** 

<!-- 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
2025-10-20 12:00:04 -05:00
Sam Rueby
b67d3b4418 Replaced "🔴" with actual red circle emoji within cmdpal ne… (#42666)
…twork connection properies.

<!-- 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
Resolves hardcoded "🔴" with red circle emoji, seen when
exploring Windows System Commands with Command Palette.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ X ] Closes: #42647
- [ ] **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
Ran locally, looks good.
2025-10-20 11:58:36 -05:00
Jiří Polášek
ae6da3235b CmdPal: Cleanup warnings, part 1 (#42584)
## Summary of the Pull Request

This PR fixes several warnings in the Command Palette projects.


- _MSB4011_: `"Sdk.props" cannot be imported again. It was already
imported ...`
  - Removed the `Sdk` attribute from `CoreCommonProps.props`.

- _CsWinRT1028_ – “Class should be marked partial” on
*CsWin32*-generated classes.
- Since these classes cannot be made partial, a suppression attribute
has been added.
  - The `LocalKeyboardListener` type has been marked as partial.

- _Resource.resx_ – some strings had empty values.  
  - Updated the missing content.

- _WMC1506_ – *OneWay* bindings require at least one step to support
change notifications.
- In `SettingsWindow.xaml`, the breadcrumb binding was changed from
*OneWay* to *OneTime*, as `Crumb` does not support change notifications.

- _WMC0001_ – Unknown type in XML namespace
- In `SettingsWindow.xaml`, `FontWeight` was qualified with the CLR
namespace `Windows.UI.Text`.


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Related to: #42574
- [ ] **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
2025-10-20 11:56:55 -05:00
leileizhang
b1985bc8d1 Introduce shared sparse package identity for PowerToys (#42352)
<!-- 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
This pull request adds support for building, installing, and managing a
shared sparse MSIX package to grant package identity to select Win32
components in PowerToys. It introduces a new `PackageIdentity` project,
updates the installer to handle the new MSIX package during
install/uninstall, and provides developer documentation for working with
the sparse package. Additionally, new dependencies and signing rules are
included to support these changes.

**Sparse Package Identity Support**

* Added new `PackageIdentity` project to the solution for building the
sparse MSIX package, and included it in solution/project build
configurations (`PowerToys.sln`).
[[1]](diffhunk://#diff-ca837ce490070b91656ffffe31cbad8865ba9174e0f020231f77baf35ff3f811R29)
[[2]](diffhunk://#diff-ca837ce490070b91656ffffe31cbad8865ba9174e0f020231f77baf35ff3f811R54-R55)
[[3]](diffhunk://#diff-ca837ce490070b91656ffffe31cbad8865ba9174e0f020231f77baf35ff3f811R873-R880)
* Added developer documentation (`sparse-package.md`) and updated
documentation indexes to describe how to build, register, and consume
the sparse MSIX package.
[[1]](diffhunk://#diff-b4e39fb55a49c6de336d5847d75a55dd1d14840578da0ed9130f0130b61b34aaR1-R87)
[[2]](diffhunk://#diff-d0f204e503506a26ef2aa3605a8d64ac353393526fb5dcf48d4287c821f3edbcR31)
[[3]](diffhunk://#diff-430296c8d28f70d8a0164b44d7dfc30ffb1fb32466dad181947f35885b7f28d1R13)

**Installer Enhancements**

* Implemented new custom actions in the installer to install and
uninstall the `PowerToysSparse.msix` package, supporting both per-user
and machine-level scenarios (`CustomAction.cpp`, `CustomAction.def`,
`Product.wxs`).
[[1]](diffhunk://#diff-a7680a20bf0315cff463a95588a100c99d2afc53030f6e947f1f1dcaca5eefd7R597-R806)
[[2]](diffhunk://#diff-79daec0ccfcea63a2f3acb7d811b8b508529921123c754111bbccbea98b2bd74R36-R37)
[[3]](diffhunk://#diff-c12203517db7cde9ad34df9e6611457d1d3c7bc8eb7d58e06739887d3c1034afR115)
[[4]](diffhunk://#diff-c12203517db7cde9ad34df9e6611457d1d3c7bc8eb7d58e06739887d3c1034afR127)
[[5]](diffhunk://#diff-c12203517db7cde9ad34df9e6611457d1d3c7bc8eb7d58e06739887d3c1034afR149)
[[6]](diffhunk://#diff-c12203517db7cde9ad34df9e6611457d1d3c7bc8eb7d58e06739887d3c1034afR205-R210)

**Build and Dependency Updates**

* Added new NuGet package dependencies for Windows App SDK AI and
Runtime to support MSIX and sparse package features
(`Directory.Packages.props`).
* Updated signing pipeline to include the new `PowerToysSparse.msix`
artifact (`.pipelines/ESRPSigning_core.json`).
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

---------

Co-authored-by: Gordon Lam (SH) <yeelam@microsoft.com>
2025-10-20 08:52:49 +08:00
Jiří Polášek
b3628aa068 CmdPal: Fix exception logging in ContentFormViewModel (#42460)
<!-- 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

This PR fixes logging entry. The invocation resembled a semantic logger
call, but its signature doesn’t match ManagedCommon.Logger. As a result,
it logged the placeholder text instead of the intended exception value:
```log
[01:43:41.8235422] [Error] ContentFormViewModel.cs::Unexpected HRESULT has been returned from a call to a COM component.::55
    Error building card from template: {Message}
```

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

Co-authored-by: Michael Jolley <mike@baldbeardedbuilder.com>
2025-10-17 14:31:47 -05:00
Jiří Polášek
55e974dea4 CmdPal: Fix FiltersViewModel binding (#42467)
## Summary of the Pull Request

This PR resolves crashes on pages with filters, such as Windows Terminal
profiles or Windows Services, when compiled with trimming/AOT.

It removes runtime binding from the FiltersDropDown control, effectively
preventing crashes caused by trimming/AOT dropping binding metadata for
FilterItemViewModel.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42428
- [x] Closes: #42482
- [x] Related to: #42458
- [ ] **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

Co-authored-by: Niels Laute <niels.laute@live.nl>
2025-10-17 09:48:48 -05:00
Dustin L. Howett
92d9f1061c ci: reduce needless file copying; zip GPOs; reliability (#42446)
This pull request makes four main changes to the build.

1. GPOs are now emitted as a ZIP file, rather than a folder to be zipped
later.
2. PDB files are linked into the output folder by hard link, rather than
copy, to save disk space.
3. We no longer copy the entire build output folder into artifacts;
instead, we *move* it, to save disk space.
4. **Failed builds** will no longer produce `build-arch-release`
artifacts; instead, they will produce numbered failure artifacts. This
means that we can finally re-run a single leg of the build, and it will
not fail due to the artifact already existing!

I included a smaller change to the DSC build step to make sure it
doesn't accidentally run when everything else failed. Heh.

Altogether, this takes a couple minutes off the build and reduces the
demand on the agent's disk by 10-15GB.
2025-10-17 17:52:14 +08:00
Copilot
63da56fae0 Remove WiX v3 infrastructure and migrate exclusively to WiX v5 (#41975)
## Summary:

This pull request refactors the installer build pipeline to simplify and
modernize the process, focusing exclusively on the WiX 5 (VNext)
installer and removing legacy WiX 3 support. It eliminates the use of
the `installerSuffix` parameter and related logic, removes the legacy
installer build steps and scripts, and updates documentation to reflect
the new architecture. The changes streamline the pipeline, reduce
complexity, and ensure only the latest installer is built and signed.

Pipeline and build system simplification:

* Removed the `installerSuffix` parameter and all related logic from
pipeline templates and YAML files, including file naming, build steps,
and hash calculation scripts.
* Removed legacy WiX 3 installer build steps and the associated script
`installWiX.ps1`, focusing exclusively on WiX 5 (VNext) installer
builds.

Installer signing and build process updates:

* Updated `.pipelines/ESRPSigning_installer.json` to remove signing
configuration for the legacy `PowerToysSetupCustomActions.dll`, ensuring
only the VNext DLL is signed.

Documentation updates:

* Updated `doc/devdocs/core/installer.md` to remove references to WiX 3,
clarify the installer architecture as WiX 5 only, and describe the new
build process.

## CheckList:
- [ ] Should Build successfully and produce installer for both per user
and per machine
- [ ] Should install without problem

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: vanzue <69313318+vanzue@users.noreply.github.com>
Co-authored-by: Kai Tao (from Dev Box) <kaitao@microsoft.com>
2025-10-16 16:39:50 -07:00
Jiří Polášek
86fed8aa70 CmdPal: Ensure cached window data is refreshed when the window style changes (#42405)
## Summary of the Pull Request

This PR resolves the issue where the window style WS_EX_TOOLWINDOW was
being set but not properly applied to the window.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42395
- [ ] **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
2025-10-16 16:34:34 -05:00
Niels Laute
446d1baa6f [CmdPal] Settings UX tweaks (#42303)
## Summary of the Pull Request

Clean up of the Settings app with some minor styling changes.

- Moved activation key related settings into the Activation expander.
- On the Extensions page, seperated the alias settings for improved a11y
- Added a card to the extensions settings frame

<img width="1051" height="935" alt="image"
src="https://github.com/user-attachments/assets/05ae5794-8e30-4af0-aa38-a3f600aa6749"
/>

## PR Checklist

- [ ] Closes: #xxx
- [ ] **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

---------

Co-authored-by: Jiří Polášek <me@jiripolasek.com>
2025-10-16 08:38:28 +02:00
Niels Laute
f86d988fb1 Shortcut control visual tweaks (#42302)
## Summary of the Pull Request

Small design tweaks, resolving a visual glitch where the bottom border
of wasn't displayed correctly, and looked jagged on higher res displays

Before vs after

<img width="654" height="450" alt="image"
src="https://github.com/user-attachments/assets/68ab3d24-d18b-4fae-9ffa-3548ce440798"
/>


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-10-16 08:37:52 +02:00
Kai Tao
cea78c31f8 fix spell complain (#42379)
<!-- 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: #xxx
- [ ] **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

- Spell check should not complain
2025-10-16 13:51:40 +08:00
Copilot
f4e9af9acb CmdPal: Windows Terminal extension failing when LOCALAPPDATA environment variable is missing (#42326)
## Summary
Fixes an issue where the Command Palette Windows Terminal Profiles
extension throws an `ArgumentNullException` when the `LOCALAPPDATA`
environment variable is missing or corrupted.

## Problem
The extension uses `Environment.GetEnvironmentVariable("LOCALAPPDATA")`
to locate Windows Terminal settings files. When this environment
variable is missing or corrupted (though rare), the method returns
`null`, which then causes `Path.Combine()` to throw an exception:

```
System.ArgumentNullException: Value cannot be null. (Parameter 'paths')
   at System.IO.Path.Combine(ReadOnlySpan`1 paths)
   at Microsoft.CmdPal.Ext.WindowsTerminal.Helpers.TerminalQuery.GetTerminals()
```

## Solution
Replace `Environment.GetEnvironmentVariable("LOCALAPPDATA")` with the
more robust
`Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)`.
This API:
- Returns the correct path even when environment variables are corrupted
- Never returns `null` for standard special folders
- Is already used elsewhere in PowerToys (e.g.,
`Wox.Plugin.Constant.cs`)

## Changes
- Updated
`Microsoft.CmdPal.Ext.WindowsTerminal/Helpers/TerminalQuery.cs`

## Testing
The fix follows the existing pattern used in the codebase and directly
addresses the exception in the reported stack trace. While unlikely to
affect most users (environment variable corruption is rare), this makes
the extension more resilient to edge cases.

Fixes microsoft/PowerToys#42322

<!-- START COPILOT CODING AGENT SUFFIX -->



<details>

<summary>Original prompt</summary>

> 
> ----
> 
> *This section details on the original issue you should resolve*
> 
> <issue_title>CmdPal: Windows Terminal - extension fails to list
profiles when env var is missing</issue_title>
> <issue_description>### Microsoft PowerToys version
> 
> main
> 
> ### Installation method
> 
> Dev build in Visual Studio
> 
> ### Area(s) with issue?
> 
> Command Palette
> 
> ### Steps to reproduce
> 
> The Windows Terminal Profiles built-in extension throws an exception
when environment variables are corrupted. While this is unlikely to be a
widespread issue, we can strengthen the code by replacing the
environment variable with
`Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);`.
> 
> ```
> ============================================================
> 😢 An unexpected error occurred in the 'Windows Terminal Profiles'
extension.
> 
> Summary:
>   Message:    Value cannot be null. (Parameter 'paths')
>   Type:       System.ArgumentNullException
>   Source:     System.Private.CoreLib
>   Time:       2025-10-12 22:19:43.6321869
>   HRESULT:    0x80004003 (-2147467261)
> 
> Stack Trace:
>    at System.ArgumentNullException.Throw(String paramName)
>    at System.IO.Path.Combine(ReadOnlySpan`1 paths)
> at
Microsoft.CmdPal.Ext.WindowsTerminal.Helpers.TerminalQuery.GetTerminals()+MoveNext()
>    at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source)
> at
Microsoft.CmdPal.Ext.WindowsTerminal.Helpers.TerminalQuery.GetProfiles()
> at Microsoft.CmdPal.Ext.WindowsTerminal.Pages.ProfilesListPage.Query()
> at
Microsoft.CmdPal.Ext.WindowsTerminal.Pages.ProfilesListPage.GetItems()
>    at Microsoft.CmdPal.Core.ViewModels.ListViewModel.FetchItems()
> at
Microsoft.CmdPal.Core.ViewModels.ListViewModel.InitializeProperties()
>    at Microsoft.CmdPal.Core.ViewModels.PageViewModel.InitializeAsync()
> 
> ------------------ Full Exception Details ------------------
> System.ArgumentNullException: Value cannot be null. (Parameter
'paths')
>    at System.ArgumentNullException.Throw(String paramName)
>    at System.IO.Path.Combine(ReadOnlySpan`1 paths)
> at
Microsoft.CmdPal.Ext.WindowsTerminal.Helpers.TerminalQuery.GetTerminals()+MoveNext()
>    at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source)
> at
Microsoft.CmdPal.Ext.WindowsTerminal.Helpers.TerminalQuery.GetProfiles()
> at Microsoft.CmdPal.Ext.WindowsTerminal.Pages.ProfilesListPage.Query()
> at
Microsoft.CmdPal.Ext.WindowsTerminal.Pages.ProfilesListPage.GetItems()
>    at Microsoft.CmdPal.Core.ViewModels.ListViewModel.FetchItems()
> at
Microsoft.CmdPal.Core.ViewModels.ListViewModel.InitializeProperties()
>    at Microsoft.CmdPal.Core.ViewModels.PageViewModel.InitializeAsync()
> ℹ️ If you need further assistance, please include this information in
your support request.
> ℹ️ Before sending, take a quick look to make sure it doesn't contain
any personal or sensitive information.
> ============================================================
> ```
> 
>
4d47659ff9/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.WindowsTerminal/Helpers/TerminalQuery.cs (L64-L78)
> 
> ### ✔️ Expected Behavior
> 
> _No response_
> 
> ###  Actual Behavior
> 
> _No response_
> 
> ### Additional Information
> 
> _No response_
> 
> ### Other Software
> 
> _No response_</issue_description>
> 
> ## Comments on the Issue (you are @copilot in this section)
> 
> <comments>
> </comments>
> 


</details>

Fixes microsoft/PowerToys#42322

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jiripolasek <4773077+jiripolasek@users.noreply.github.com>
2025-10-15 21:07:09 -05:00
Jaylyn Barbee
50113aa50d 0.95 release note (#42110)
This pull request updates the `README.md` to document the PowerToys 0.95
release. It includes comprehensive updates to release notes, download
links, and roadmap details, reflecting new features, improvements, and
fixes across multiple modules. The changes also improve documentation
for developers and update future planning information.

Release documentation and download updates:
- Updates all download links, release references, and installer
filenames from version 0.94 to 0.95 throughout the README.md to ensure
users get the latest release.
- Revises the release notes to highlight major new features (like
installer upgrade to WiX 5, settings search, hotkey conflict detection,
and module-specific enhancements), and reorganizes the changelog for
clarity.
- Updates the Roadmap section to reflect plans for version 0.96 and
beyond, including new features and ongoing work.

Module and feature highlights:
- Adds or expands sections for each updated module, summarizing key
improvements and new options in each.
- Details significant Command Palette improvements, including
accessibility, stability, UI tweaks, and extension updates.

Developer and documentation improvements:
- Adds new documentation for the Light Switch module.
- Improved developer workflow with updated dependencies, build scripts,
and enhanced test coverage.
- Enhanced CI pipeline and test stability with new configuration,
automated log collection, and accessibility improvements.

---------

Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Dave Rayment <dave.rayment@gmail.com>
Co-authored-by: Kai Tao <kaitao@microsoft.com>
Co-authored-by: Jiří Polášek <me@jiripolasek.com>
2025-10-15 23:18:52 +00:00
Kai Tao
7830466b81 Cmdpal: Use static link instead of dynamic to solve cmdpal crash in sandbox (#42355)
<!-- 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

As title

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-10-15 18:43:37 +08:00
Kai Tao
cca66eacd0 Light switch: Add new tag to light switch (#42351)
<!-- 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: #xxx
- [ ] **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
<img width="444" height="387" alt="image"
src="https://github.com/user-attachments/assets/03e179c6-63cc-4824-b601-a7846200607f"
/>
2025-10-15 14:47:32 +08:00
Shawn Yuan
7b9d5af8c1 fixed light switch shortcut not working issue (#42340)
<!-- 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
This pull request refactors how the `ToggleThemeHotkey` property is
handled in the LightSwitch settings and view model. The changes simplify
property management by directly referencing the property within
`LightSwitchProperties` and ensure that the hotkey setting is
consistently updated and serialized.

**Settings property management:**

* In `LightSwitchSettings.Clone()`, the `LightSwitchProperties` object
now directly references the existing property instances instead of
creating new ones, and also includes the `ToggleThemeHotkey` property.

**View model property handling:**

* In `LightSwitchViewModel.ToggleThemeActivationShortcut`, the getter
and setter now directly access and update
`ModuleSettings.Properties.ToggleThemeHotkey.Value`, removing the need
for a backing field and ensuring changes are properly serialized and
notified.
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42330
- [ ] **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

---------

Signed-off-by: Shawn Yuan (from Dev Box) <shuaiyuan@microsoft.com>
2025-10-14 10:45:10 -04:00
Dave Rayment
471022e842 [Awake] Fix for countdown timer drift (#41684)
<!-- 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

- Fixes the countdown timer drift issue #41671 
- Includes minor refactoring to consolidate identical timer completion
code in `SetExpirableKeepAwake` and `SetTimedKeepAwake`.
- Removes the ~50 day restriction on timed keep-awake. The timer may now
be `uint.MaxValue` seconds, or ~136 years.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #41671
- [ ] **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

This replaces the combined `Observable.Timer` and `Observable.Interval`
timers with a single 1-second Interval timer which checks against a
fixed expiry time.

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed

Checked that:
1. The timed keep-awake works via the `--time-limit` parameter, and
expiry occurs on time.
2. The countdown timer in the systray menu correctly counts down for
small values:

<img width="386" height="109" alt="image"
src="https://github.com/user-attachments/assets/b282dfd8-38e7-48ab-b17c-99756ef73b99"
/>

3. The countdown timer in the systray menu counts down for larger values
than were previously possible:

<img width="380" height="104" alt="image"
src="https://github.com/user-attachments/assets/7a807a37-8945-4048-a86c-05e6ac9310a9"
/>

4. On a heavily CPU-loaded system, the previous countdown drift does not
happen.
5. The expirable keep-awake mode still functions as expected.
2025-10-14 16:52:27 +08:00
Jiří Polášek
bb6f9a8b08 CmdPal: Add metadata to items in the clipboard history (#42188)
## Summary of the Pull Request

This PR introduces the `IClipboardMetadataProvider` interface, which
inspects clipboard items and returns metadata plus optional actions.

Also this implementation updates changes how `DetailsLink` link is
handled through shell, to enable `file:` scheme to be handled
(`Hyperlink.NavigateUri` and `HyperlinkButton.NavigateUri` explicitly
blocks `file:` scheme, see
[here](https://learn.microsoft.com/en-us/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.hyperlinkbutton?view=windows-app-sdk-1.8)).

**Implemented providers:**
- `ImageMetadataProvider` — reports image dimensions, DPI, and byte
size.
- `TextFileSystemMetadataProvider` — recognizes text as a file-system
path and, if it exists, provides details about the target.
- `WebLinkMetadataProvider` — recognizes text as a URL and provides
link-related metadata.
- `TextMetadataProvider` — reports text statistics (e.g., character and
word counts).

### Pictures? Pictures!

Image metadata:

<img width="1666" height="1478" alt="image"
src="https://github.com/user-attachments/assets/472a8516-624f-457a-850c-009c66ccadcf"
/>

Text metadata:

<img width="1714" height="1534" alt="image"
src="https://github.com/user-attachments/assets/69503fb1-2dfd-46c4-894a-e6b0fc26e7da"
/>

Text as a web link metadata:

<img width="1712" height="1518" alt="image"
src="https://github.com/user-attachments/assets/bd9c26bd-eab3-4431-bab0-abf8e6fad610"
/>


Text as a file system path:

<img width="1673" height="1452" alt="image"
src="https://github.com/user-attachments/assets/0bff415c-01e2-4abf-a3c5-9abdc9475031"
/>

<img width="1646" height="1005" alt="image"
src="https://github.com/user-attachments/assets/41afc3e7-8baa-4a81-9ce5-c81b1a6df2f6"
/>


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42201
- [ ] **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
2025-10-13 12:54:50 -05:00
Jiří Polášek
05b605ef27 CmdPal: Cleanup content page view model when no longer needed (#42293)
## Summary of the Pull Request

This PR:

- Cleans up ContentPageViewModel when its page unloads to ensure it
unsubscribes from ItemsChanged.

- Clears the command bar before initializing a new page view model,
allowing the new VM to set its own state without being overridden by the
shell afterward.


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #42291 
- [ ] **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
2025-10-13 12:03:38 -05:00
Jiří Polášek
7c8b30246e CmdPal: Window Walker - reevaluate process type when window process is updated (#42317)
## Summary of the Pull Request

This PR moves `ProcessPackagingInspector.Inspect` from the
`WindowProcess` constructor to `UpdateProcessInfo`, ensuring the process
type is correctly re-evaluated when the window’s backing process changes
(as with UWP apps hosted in `ApplicationFrameHost.exe`).

See
4d47659ff9/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.WindowWalker/Components/Window.cs (L295-L350)

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #38353 
- [ ] **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
2025-10-13 11:52:24 -05:00
leileizhang
4d47659ff9 Fix PowerRename crash caused by missing PRI file (#42300)
<!-- 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
Not sure why In WinAppSDK 1.8, the default WinUI targets no longer
automatically generate PRI files for unpackaged apps.
By importing the MSIX SDK build tools, the project gains standalone PRI
generation capability.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
- [ ] **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
2025-10-11 12:45:42 -07:00
Jiří Polášek
97e62b3253 CmdPal: Update special fallbacks separately from the other fallbacks (#42289)
## Summary of the Pull Request

This PR introduces a hotfix that updates special fallback items
separately from the rest. This allows the loop handling special fallback
items to finish faster, ensuring they are not delayed by other fallback
items. As a result, calculator and run fallback items will be more
readily available to users.

This partially solves #42286 for special fallback items.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Related to: #42286
- [ ] **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
2025-10-10 17:58:42 +02:00
Mike Griese
cd5b76c988 CmdPal: make the context menu search look more like a cmdpal (#42081)
Replaces our styling with the same styleing we use for the search bar

But we can't _just_ do that, because the stupid "text cursors don't show
up on top of transparent backgrounds" thing.

So I just added the smoke backdrop to the search box. Seemed reasonable.

Screenshots below.

---------

Co-authored-by: Niels Laute <niels.laute@live.nl>
2025-10-10 06:26:04 -05:00
Zach Teutsch
c8a23a231e Update file locksmith checklist
Updated checklist items for File Locksmith and Hosts File Editor with completion status.
2025-10-08 10:56:45 -07:00
Zach Teutsch
bb1d9776bc Update checklist for file explorer add ons
Updated checklist items to indicate completion for various file preview tests.
2025-10-08 09:43:11 -07:00
Zach Teutsch
7605e8f560 Complete env variables checklist
Updated checklist items to reflect completion status for environment variable tests and profile management.
2025-10-08 09:25:49 -07:00
Zach Teutsch
4be145d345 Checklist for command not found
Updated checklist items to indicate completion for PowerShell and Command Not Found module installation steps.
2025-10-08 09:11:37 -07:00
Zach Teutsch
6154098e32 Update checklist for Command Palette testing 2025-10-07 17:22:39 -07:00
Jaylyn Barbee
9e8327fa60 Completed Mouse Jump testing 2025-10-06 15:14:22 -04:00
Jaylyn Barbee
784591a0a8 Workspaces testing 2025-10-06 15:10:04 -04:00
Jaylyn Barbee
8d14775e12 MWB testing done 2025-10-06 14:49:55 -04:00
Jaylyn Barbee
f22ac8ee4b First pass of manual sign off 2025-10-06 09:53:18 -04:00
Jaylyn Barbee
58d5c92863 fix for github style md 2025-09-29 11:02:38 -04:00
Jaylyn Barbee
2e6fb8f4db added new folder for .95 as well as cleared out release checklist 2025-09-29 11:01:26 -04:00
Jaylyn Barbee
628d584e33 Updates to my testing items
Always on top and Mouse pointer crosshairs
2025-08-29 14:01:20 -04:00
Jaylyn Barbee
0c3763365a Mark checklist items as completed in release notes
Tested what I can for now in Always on top
2025-08-29 13:27:47 -04:00
Gordon Lam
b11880342e Add testing checklist for PowerToys features - Gleb
Added a detailed checklist for testing various features of PowerToys, including Advanced Paste, Color Picker, Image Resizer, Keyboard Manager, New+, PowerRename, Screen Ruler, Text Extractor, and Quick Accent.
2025-08-28 11:48:44 +08:00
Gordon Lam
dc7ea58921 Create testing checklist for PowerToys features - Them3
Added a comprehensive checklist for testing various PowerToys features, including Telemetry, Advanced Paste, Color Picker, Image Resizer, Keyboard Manager, New+, PowerRename, Screen Ruler, Text Extractor, and Quick Accent.
2025-08-28 11:47:09 +08:00
Gordon Lam
00507a0af3 Create testing checklist for PowerToys features - Jaylyn
Added a comprehensive checklist for testing various features of PowerToys, including Telemetry, Always on Top, FancyZones, Workspaces, Mouse Without Borders, Mouse Utils, and ZoomIt.
2025-08-28 11:40:37 +08:00
Gordon Lam
3d1567cd07 Add testing checklist for PowerToys features - them2
Added a comprehensive checklist for testing various features and functionalities of PowerToys, including telemetry, FancyZones, and Mouse utilities.
2025-08-28 11:39:11 +08:00
Gordon Lam
a85e8e8fa2 Create testing checklist for PowerToys features for them1
Added a comprehensive checklist for testing various PowerToys features, including telemetry, command palette, environment variables, file explorer add-ons, file locksmith, hosts file editor, peek, PowerToys run, registry preview, and more.
2025-08-28 11:32:27 +08:00
Gordon Lam
b031b0195f Add testing checklist for PowerToys featuresor Zach
Added a comprehensive checklist for testing various features and functionalities in PowerToys, including telemetry, command palette, environment variables, file explorer add-ons, and more.
2025-08-28 11:30:51 +08:00
Shawn Yuan
5a8d35e76f Add files via upload 2025-08-28 08:40:45 +08:00
Yu Leng (from Dev Box)
5f9e4ef12c add test result 2025-08-27 14:20:23 +08:00
Leilei Zhang
d66f712c5d complete leilzh.checklist 2025-08-26 22:18:36 +08:00
Leilei Zhang
dd5dbf219e change folder 2025-08-26 16:39:01 +08:00
Leilei Zhang
689f055f67 Merge branch 'releaseChecklist' of https://github.com/microsoft/PowerToys into releaseChecklist 2025-08-26 16:37:46 +08:00
Leilei Zhang
94676fd31c add leilzh-checklist 2025-08-26 16:37:09 +08:00
Kai Tao
99256c73bb Create kai-checklist.md 2025-08-26 10:00:36 +08:00
Leilei Zhang
d16f605f0d update peek automation 2025-08-06 10:23:19 +08:00
Yu Leng (from Dev Box)
caf7b104dc add powertoys run 2025-08-05 15:53:02 +08:00
Yu Leng (from Dev Box)
6bf19485c1 add yu's test result 2025-08-05 15:49:20 +08:00
Kai Tao
a0ec2f471a Update ui-automation-cover-list.md 2025-08-05 15:40:29 +08:00
Yu Leng (from Dev Box)
47e90cc27f Update the UI test cover list 2025-08-05 15:35:15 +08:00
Shawn Yuan
14229092e1 Update ui-automation-cover-list.md 2025-08-05 15:30:17 +08:00
Shawn Yuan
9dbc355da8 Add files via upload 2025-08-05 15:18:43 +08:00
Kai Tao
9d6b5fae77 Update kai.md 2025-08-05 10:52:32 +08:00
Kai Tao
e7f6172e0b fancyzone testing 2025-08-04 13:46:16 +08:00
Kai Tao
560a36ccba Update tests-checklist-template.md 2025-08-04 08:47:31 +08:00
Kai Tao
95fde086cc Update tests-checklist-template-mouse-utils-section.md 2025-08-04 08:46:16 +08:00
Kai Tao
6760964e4e Delete doc/releases/0.93 directory 2025-08-04 08:31:24 +08:00
Kai Tao
8fd21a4862 Create kai.md 2025-08-04 08:30:32 +08:00
Kai Tao
11d872efa2 Create kai.md 2025-08-04 08:29:36 +08:00
Hao Liu
007e83baf9 Create tests-checklist-haoliuu.md 2025-06-30 13:39:44 +08:00
Mengyuan
22470d14fa Update mengyuan-checklist.md 2025-06-27 15:26:14 +08:00
Mengyuan
f39be85109 Update mengyuan-checklist.md 2025-06-27 15:25:41 +08:00
Peiyao Zhao (from Dev Box)
f75a926fd7 Merge branch 'releaseChecklist' of https://github.com/microsoft/PowerToys into releaseChecklist 2025-06-27 14:59:05 +08:00
Peiyao Zhao (from Dev Box)
812656d4d4 update peiyao-checklist 2025-06-27 14:53:45 +08:00
Mengyuan
42ed1a7aee Update mengyuan-checklist.md 2025-06-27 14:32:59 +08:00
Shawn Yuan
04a1ef4258 Update tests-checklist-Shawn.md 2025-06-27 13:54:27 +08:00
Mengyuan
f81ebe516b Add mengyuan-checklist 2025-06-27 12:33:27 +08:00
Leilei Zhang
b9719c19a8 update leilzh checklist 2025-06-27 10:05:17 +08:00
Yu Leng (from Dev Box)
7889e1a621 update 0.92 testing result 2025-06-26 13:28:44 +08:00
Leilei Zhang
b0f656433a Merge branch 'releaseChecklist' of https://github.com/microsoft/PowerToys into releaseChecklist 2025-06-26 12:52:22 +08:00
Leilei Zhang
f2dd2f092e update leilzh checklist 2025-06-26 12:51:30 +08:00
Kai Tao
2985b4bed4 Update kai-checklist.md 2025-06-26 09:58:44 +08:00
yaqingmi
9ee58209b7 Update yaqing-checklist.md
Update yaqing-checklist.md
2025-06-25 19:38:18 +08:00
yaqingmi
9e275134c7 Create yaqing-checklist.md
Create yaqing-checklist.md
2025-06-25 13:33:55 +08:00
Leilei Zhang
ce4585c9c1 add leilzh-checklist 2025-06-25 09:43:57 +08:00
Kai Tao
ad6d2686c1 Update kai-checklist.md 2025-06-24 19:21:57 +08:00
Kai Tao
13d3cb3539 Update kai-checklist.md 2025-06-24 18:44:48 +08:00
Kai Tao
de3f3f6af8 Update kai-checklist.md 2025-06-24 16:26:26 +08:00
Kai Tao
a1c6d0c22e Update kai-checklist.md 2025-06-24 16:24:47 +08:00
Kai Tao
23360e9652 Update kai-checklist.md 2025-06-24 16:13:46 +08:00
Kai Tao
1a2d8869cd update crop & lock & always on top 2025-06-24 15:06:36 +08:00
Kai Tao
a3a646e3eb Finish testing for workspace 2025-06-24 14:28:21 +08:00
Kai Tao
f77d450c6d Update tests-checklist-template.md 2025-06-24 13:57:51 +08:00
Kai Tao
71f4c42790 Update kai-checklist.md 2025-06-24 13:56:00 +08:00
Kai Tao
1100975dbc Update tests-checklist-template.md 2025-06-24 13:51:08 +08:00
Kai Tao
543f97eb24 Update kai-checklist.md 2025-06-24 13:47:54 +08:00
Shawn Yuan
2a916787d0 Add files via upload 2025-06-24 10:19:08 +08:00
Kai Tao
c7fe0b9839 Update tests-checklist-template.md 2025-06-23 15:34:59 +08:00
Kai Tao
39838ce00f Create kai-checklist.md 2025-06-23 15:29:44 +08:00
XiaofengWang
0c99d4a17e Add ui automation cover list (#40096)
Add ui automation cover list

Co-authored-by: Xiaofeng Wang (from Dev Box) <xiaofengwang@microsoft.com>
2025-06-18 14:48:30 +08:00
Zhaopeng Wang
148ee3ff96 add 0.91.0 release check 2025-05-14 17:55:19 +08:00
Xiaofeng Wang (from Dev Box)
7e46960d38 Update tests-checklist-xiaofengwang.md 2025-05-14 16:18:36 +08:00
Hao Liu
eccc10bd71 Update tests-checklist-haoliuu.md 2025-05-14 16:08:05 +08:00
Yu Leng (from Dev Box)
7f7825a245 add yuleng's testing result for cmdpal 2025-05-08 18:58:42 +08:00
Kai Tao
ca555a0fc2 Update tests-checklist-kai.md 2025-05-08 15:04:13 +08:00
Kai Tao
6bb0f0b84b Update tests-checklist-kai.md 2025-05-08 13:47:53 +08:00
Hao Liu
775e0d7b54 Update tests-checklist-haoliuu.md 2025-05-06 15:33:39 +08:00
XiaofengWang
c2b9c9284f Create tests-checklist-xiaofeng.md 2025-04-30 20:32:57 +08:00
yaqingmi
ce4ac2ad46 Update tests-checklists-yaqing.md
Update tests-checklists-yaqing.md
2025-04-30 17:26:41 +08:00
Mengyuan
4d0df63574 Update tests-checklist-mengyuan.md 2025-04-30 13:25:03 +08:00
Leilei Zhang
55303028a7 Merge branch 'releaseChecklist' of https://github.com/microsoft/PowerToys into releaseChecklist 2025-04-30 11:20:24 +08:00
Leilei Zhang
fc0291a115 add tests-checklist-leilzh 2025-04-30 11:19:44 +08:00
Mengyuan Chen (from Dev Box)
95d6af8be4 Update tests-checklist-mengyuan.md 2025-04-30 10:32:36 +08:00
Hao Liu
37361baac6 Update tests-checklist-haoliuu.md 2025-04-29 17:54:21 +08:00
Kai Tao
56626b240f Update tests-checklist-kai.md 2025-04-29 16:30:23 +08:00
Yu Leng (from Dev Box)
161ea58236 add yuleng test result 2025-04-29 14:25:13 +08:00
Shawn Yuan
0cd8269e25 Add files via upload 2025-04-29 13:54:36 +08:00
Hao Liu
7e494db6b6 Update tests-checklist-haoliuu.md 2025-04-29 10:56:14 +08:00
Kai Tao
e02f479fe6 Create tests-checklist-kai.md 2025-04-29 10:06:34 +08:00
Hao Liu
f9ec916810 Update tests-checklist-haoliuu.md 2025-04-28 16:55:48 +08:00
Peiyao Zhao (from Dev Box)
9a8520a9cc update test list 2025-04-28 14:02:11 +08:00
Peiyao Zhao (from Dev Box)
019b64dc5c Create tests-checklist-peiyao.md 2025-04-28 13:30:01 +08:00
Hao Liu
1a0c359b97 Update tests-checklist-haoliuu.md 2025-04-28 10:29:50 +08:00
yaqingmi
fcfaa0ecca Create tests-checklists-yaqing.md
Create tests-checklists-yaqing.md
2025-04-27 12:41:10 +08:00
Hao Liu
e7c586a56f Create tests-checklist-haoliuu.md 2025-04-27 11:23:25 +08:00
yaqingmi
57316043db Copy new tests-checklist-template.md
Copy new tests-checklist-template.md
2025-04-25 19:00:50 +08:00
Peiyao Zhao (from Dev Box)
da772358e8 update installer test step for pstool 2025-04-22 10:55:22 +08:00
Jerry Xu
1f3898e67e Breakdown check-list per section for UI-Automation converting tasks 2025-03-28 15:20:12 -07:00
Jerry Xu
caece16873 Create tests-checklist-template-fancyzones-section.md 2025-03-28 13:06:56 -07:00
Jerry Xu
8589b7536f Update tests-checklist-template.md to include PowerToys Run section hyper link 2025-03-28 13:00:55 -07:00
Jerry Xu
85963715f1 Create tests-checklist-template-runner-section.md 2025-03-28 12:58:05 -07:00
Jerry Xu
67ce8a415a Create tests-checklist-template-installer-section.md 2025-03-28 12:50:13 -07:00
Peiyao Zhao (from Dev Box)
e3a6fb809c update results 2025-03-28 11:23:19 +08:00
Xiaofeng Wang
fdbb52222c Update tests-checklist-xiaofeng.md 2025-03-27 09:29:10 +08:00
Hao Liu
f26c1d40d4 update tests-checklist-haoliuu.md 2025-03-26 17:09:20 +08:00
Xiaofeng Wang (from Dev Box)
cb552699d1 Update tests-checklist-xiaofeng.md 2025-03-26 16:19:54 +08:00
Xiaofeng Wang (from Dev Box)
e995e0b453 Update tests-checklist-xiaofeng.md 2025-03-26 15:54:58 +08:00
Xiaofeng Wang (from Dev Box)
c0cc53880b Merge branch 'releaseChecklist' of https://github.com/microsoft/PowerToys into releaseChecklist 2025-03-26 15:53:18 +08:00
Xiaofeng Wang (from Dev Box)
b5ad8bae9c Update test-checklist-xiaofeng.md 2025-03-26 15:52:50 +08:00
Peiyao Zhao (from Dev Box)
0b71d6fad6 update test results 2025-03-26 14:25:17 +08:00
Peiyao Zhao (from Dev Box)
c32e12e90a update test results 2025-03-26 14:22:19 +08:00
Peiyao Zhao (from Dev Box)
dcb99989e1 update test results 2025-03-25 20:46:20 +08:00
yaqingmi
42f899afaa Delete doc/releases/0.90.0/tests-checklist-yaqing.md 2025-03-25 19:44:49 +08:00
yaqingmi
a0dd09d758 Update tests-checklist-yaqing.md 2025-03-25 19:44:12 +08:00
yaqingmi
d80a20673d Add checklist for yaqing
Add checklist for yaqing
2025-03-25 19:43:22 +08:00
Kai Tao
468462db67 Update tests-check-list-kai.md 2025-03-25 18:15:17 +08:00
Kai Tao
8e0e891bc3 Update tests-check-list-kai.md 2025-03-25 18:11:43 +08:00
Zhaopeng Wang (from Dev Box)
4d6300442a finish test check list 2025-03-25 17:04:31 +08:00
Leilei Zhang
cb0359c7fd Merge branch 'releaseChecklist' of https://github.com/microsoft/PowerToys into releaseChecklist 2025-03-25 16:57:11 +08:00
Leilei Zhang
6e1b5c3a34 update tests-checklist-leilzh.md 2025-03-25 16:56:35 +08:00
Yu Leng (from Dev Box)
41664af97b update test result 2025-03-25 14:28:01 +08:00
Shuai Yuan
0105815166 Update tests-checklist-shawn.md 2025-03-25 14:09:42 +08:00
Peiyao Zhao (from Dev Box)
f092553005 update test results 2025-03-25 13:58:35 +08:00
chenmy77
3810c52956 Update test-checklist-mengyuan.md 2025-03-25 11:17:36 +08:00
Xiaofeng Wang
bdbed989ea Update tests-checklist-xiaofeng.md 2025-03-25 10:44:47 +08:00
Xiaofeng Wang
7d03e24ed6 Update tests-checklist-xiaofeng.md 2025-03-25 10:13:04 +08:00
Peiyao Zhao (from Dev Box)
77198891fe update checklist 2025-03-24 22:29:49 +08:00
Seraphima Zykova
c44f2f036f Updated FZ tests 2025-03-24 15:04:35 +01:00
Leilei Zhang
e18d2cc094 update tests-checklist-leilzh.md 2025-03-24 21:34:35 +08:00
Leilei Zhang
36a11295b6 update tests-checklist-leilzh.md 2025-03-24 21:33:34 +08:00
Hao Liu
b0912779a7 update tests-checklist-haoliuu.md 2025-03-24 16:34:56 +08:00
Peiyao Zhao (from Dev Box)
cadbcde351 update test results 2025-03-24 16:28:47 +08:00
Seraphima Zykova
b90b860d7f Update FZ tests: removed "Allow popup windows snapping" tests 2025-03-24 09:05:48 +01:00
Kai Tao
a1d001a748 Update tests-check-list-kai.md 2025-03-24 15:07:54 +08:00
Peiyao Zhao (from Dev Box)
4b0c8d2bb6 update test results 2025-03-24 15:04:56 +08:00
Yu Leng (from Dev Box)
a6daf226de update test result 2025-03-24 14:00:14 +08:00
Yu Leng (from Dev Box)
a5d7aca2a2 update test result 2025-03-24 14:00:14 +08:00
Kai Tao
50eb98142a Update tests-check-list-kai.md 2025-03-24 12:50:52 +08:00
Kai Tao
3047416be5 Update tests-check-list-kai.md 2025-03-24 11:21:24 +08:00
Leilei Zhang
d7ed0db164 update tests-checklist-leilzh.md 2025-03-24 11:15:31 +08:00
Shuai Yuan
fcf0382075 Update tests-checklist-shawn.md 2025-03-24 09:11:35 +08:00
Shuai Yuan
cf005d5cd9 Update tests-checklist-shawn.md 2025-03-24 09:00:01 +08:00
Xiaofeng Wang
46aba3f9ac Update tests-checklist-xiaofeng.md 2025-03-22 08:58:14 +08:00
Leilei Zhang
1a987ea95a update tests-checklist-leilzh.md 2025-03-21 22:33:09 +08:00
Zhaopeng Wang
410401d272 rge branch 'releaseChecklist' of https://github.com/microsoft/PowerToys into releaseChecklis 2025-03-21 20:19:42 +08:00
Zhaopeng Wang
98b4bcc8c1 update checklist markdown 2025-03-21 20:19:27 +08:00
Kai Tao
c7cfac6ff0 Update tests-check-list-kai.md 2025-03-21 18:39:49 +08:00
Kai Tao
de082ab9f7 Update test cases 2025-03-21 18:37:04 +08:00
Hao Liu
d66184afdb update tests checklist 2025-03-21 17:24:47 +08:00
Kai Tao
654b5c44b0 Update tests-check-list-kai.md 2025-03-21 17:04:11 +08:00
Kai Tao
b3347f1af4 Rename check-list-kai.md to tests-check-list-kai.md 2025-03-21 15:20:38 +08:00
Yu Leng (from Dev Box)
8db5d5c2c4 update test result 2025-03-21 15:04:17 +08:00
chenmy77
621d174e73 Add test-checklist-mengyuan.md 2025-03-21 15:01:01 +08:00
Yu Leng (from Dev Box)
fbdc5fca51 update template 2025-03-21 14:23:34 +08:00
Yu Leng (from Dev Box)
8d3ba403ac update test 2025-03-21 14:22:37 +08:00
dreamstart
e256d2fae7 add tests-checklist-zhaopengwang.md
add tests-checklist-zhaopengwang.md
2025-03-21 14:06:37 +08:00
Hao Liu
7a302812e0 Add tests-checklist-haoliuu.md 2025-03-21 13:41:02 +08:00
Shuai Yuan
a0c8482f84 Add files via upload 2025-03-21 11:50:24 +08:00
Yu Leng (from Dev Box)
a5917a7298 Update test result 2025-03-21 11:37:20 +08:00
Yu Leng (from Dev Box)
dd1d774c41 Update test result 2025-03-21 11:32:39 +08:00
Jaime Bernardo
c8c7c351e2 Update tests-checklist-jaime.md 2025-03-20 21:49:57 +00:00
Seraphima Zykova
2b02b0526c Update tests-checklist-seraphima.md 2025-03-20 21:55:55 +01:00
Seraphima Zykova
298c75659b Update tests-checklist-seraphima.md 2025-03-20 17:56:52 +01:00
Jaime Bernardo
bbb9034265 Update tests-checklist-jaime.md 2025-03-20 16:47:46 +00:00
Jaime Bernardo
53930f1f75 Update tests-checklist-jaime.md 2025-03-20 16:37:09 +00:00
Jaime Bernardo
448637fb1a Update tests-checklist-jaime.md 2025-03-20 12:56:55 +00:00
Jaime Bernardo
e221d0becf Update tests-checklist-jaime.md 2025-03-20 12:48:53 +00:00
Jaime Bernardo
31d8b4e5c7 Update tests-checklist-jaime.md 2025-03-20 12:37:08 +00:00
Jaime Bernardo
7ad50eb175 Update tests-checklist-jaime.md 2025-03-20 12:26:23 +00:00
Jaime Bernardo
3215bbdd27 Update tests-checklist-jaime.md 2025-03-20 12:22:09 +00:00
Jaime Bernardo
a70bbeb9cf Update tests-checklist-jaime.md 2025-03-20 12:18:13 +00:00
Jaime Bernardo
cc532c9536 Update tests-checklist-jaime.md 2025-03-20 12:15:50 +00:00
Jaime Bernardo
59e34cfd95 Update tests-checklist-jaime.md 2025-03-20 12:12:46 +00:00
Leilei Zhang
71865d39e4 Merge branch 'releaseChecklist' of https://github.com/microsoft/PowerToys into releaseChecklist 2025-03-20 20:09:31 +08:00
Leilei Zhang
17f08fa7b1 create tests-checklist-leilzh.md 2025-03-20 20:05:43 +08:00
Jaime Bernardo
9e48a1e6be Update tests-checklist-jaime.md 2025-03-20 12:02:16 +00:00
Jaime Bernardo
fea55bed39 Update tests-checklist-jaime.md 2025-03-20 12:00:06 +00:00
Jaime Bernardo
65f8c52dc4 Update tests-checklist-jaime.md 2025-03-20 11:53:42 +00:00
Jaime Bernardo
212cdcc3f2 Update tests-checklist-jaime.md 2025-03-20 11:46:48 +00:00
Jaime Bernardo
b7815e1d1b Update tests-checklist-jaime.md 2025-03-20 11:30:12 +00:00
yaqingmi
ffc48fa38c Add checklist for modules by yaqing 2025-03-20 19:15:55 +08:00
Jaime Bernardo
e85cd8b12b Update tests-checklist-jaime.md 2025-03-20 11:14:06 +00:00
Jaime Bernardo
25c4ebaee4 Update tests-checklist-jaime.md 2025-03-20 10:59:11 +00:00
Jaime Bernardo
6571c977de Update tests-checklist-jaime.md 2025-03-20 10:42:32 +00:00
Peiyao Zhao (from Dev Box)
416286b6b1 Update test-checklist 2025-03-20 17:48:12 +08:00
Kai Tao
0703f6c5e9 Create check-list-kai.md 2025-03-20 17:37:59 +08:00
Yu Leng (from Dev Box)
0b3b9e8e94 Update cmdpal checklist template 2025-03-20 15:48:34 +08:00
Yu Leng (from Dev Box)
5428f18900 Add cmdpal test case 2025-03-20 15:46:51 +08:00
Peiyao Zhao (from Dev Box)
725730636b Update test-checklist 2025-03-20 15:42:29 +08:00
Peiyao Zhao (from Dev Box)
6d603da6cf Add test checklist for 0.90.0 2025-03-20 15:34:11 +08:00
Peiyao Zhao (from Dev Box)
50761e80fa Add test checklists for 0.90.0 2025-03-20 15:31:30 +08:00
Jaime Bernardo
82bb5947fd Add test checklists for 0.90.0 2025-03-19 22:59:15 +00:00
Jaime Bernardo
4d754f4816 Update test groups for 4 2025-03-19 22:41:33 +00:00
Zhaopeng Wang (from Dev Box)
fa17e8a83b create tests-checklist-zhaopengwang.md 2025-03-03 23:11:27 +08:00
yaqingmi
0241f9235a Create tests-checklist-yaqing.md 2025-02-28 22:05:41 +08:00
Mengyuan Chen (from Dev Box)
77def69df9 Update tests-checklist-mengyuan 2025-02-28 20:17:51 +08:00
Mengyuan Chen (from Dev Box)
e2b07e3058 Revert "Merge branch 'dev/mengyuanchen/addreleasechecklist' into releaseChecklist"
This reverts commit dea5763869, reversing
changes made to eb6fb14f0a.
2025-02-28 20:04:33 +08:00
Mengyuan Chen (from Dev Box)
dea5763869 Merge branch 'dev/mengyuanchen/addreleasechecklist' into releaseChecklist
add mengyuan release chaklist
2025-02-28 19:59:23 +08:00
Mengyuan Chen (from Dev Box)
ac10cb7a16 add mengyuan release cheklist 2025-02-28 19:50:46 +08:00
Hao Liu
eb6fb14f0a Update tests-checklist-haoliuu 2025-02-28 16:58:54 +08:00
Hao Liu
940060c307 Update tests-checklist-template 2025-02-28 16:52:00 +08:00
Mengyuan Chen (from Dev Box)
f833dee2f8 add 0.89 checklist of mengyuan 2025-02-28 16:28:30 +08:00
Leilei Zhang
28ecf3734e update checklist 2025-02-28 16:28:30 +08:00
Kai Tao
7f3e344ddc Update tests-checklist-kai.md 2025-02-28 16:19:44 +08:00
Shuai Yuan
c8caeb7e35 Update tests-checklist-shawn.md 2025-02-28 16:19:22 +08:00
Kai Tao
dbf804f76f Update tests-checklist-kai for 0.89.0.md 2025-02-28 16:09:47 +08:00
Hao Liu
d3ae8deab7 Add tests-checklist-haoliuu.md 2025-02-28 15:35:22 +08:00
urnotdfs
720228cd3b Add 0.89 test reuslts for screen ruler and shortcut guide (#37680)
Co-authored-by: Xiaofeng Wang (from Dev Box) <xiaofengwang@microsoft.com>
2025-02-28 15:20:12 +08:00
moooyo
a4c085daa2 Add 0.89.0 test results (#37678)
* Add 0.89 test results

* Update results

---------

Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
2025-02-28 13:03:20 +08:00
Kai Tao
789bb1dcb9 Update tests-checklist-kai.md 2025-02-28 12:31:35 +08:00
Kai Tao
51a922e78d Update workspaces result 2025-02-28 12:02:23 +08:00
Kai Tao
a188527aa6 Rename tests-checklist-kai to tests-checklist-kai.md 2025-02-28 10:36:51 +08:00
Shuai Yuan
a45ad73665 Add test result 2025-02-28 10:07:21 +08:00
Kai Tao
6ca2f21e7e Update tests-checklist-kai 2025-02-28 00:42:19 +08:00
Leilei Zhang
33ffd1f1e1 udpate tests-checklist-leilzh.md 2025-02-27 22:54:54 +08:00
Leilei Zhang
7025117d4e udpate tests-checklist-leilzh.md 2025-02-27 22:52:51 +08:00
Leilei Zhang
39bda8dc8d create and udpate tests-checklist-leilzh.md 2025-02-27 22:51:52 +08:00
Kai Tao
03e16dcad1 Create tests-checklist-kai 2025-02-27 19:45:56 +08:00
Jaime Bernardo
ca55f400c8 Update tests-checklist-jaime.md 2025-02-26 22:25:45 +00:00
Jaime Bernardo
baa6b43bde Update tests-checklist-jaime.md 2025-02-26 22:17:41 +00:00
Jaime Bernardo
292272fe74 Update tests-checklist-jaime.md 2025-02-26 21:48:52 +00:00
Jaime Bernardo
fa6a6595c5 Update tests-checklist-jaime.md 2025-02-26 21:32:57 +00:00
Jaime Bernardo
037dee7d25 Update tests-checklist-jaime.md 2025-02-26 21:31:32 +00:00
Jaime Bernardo
ec525fff37 Update tests-checklist-jaime.md 2025-02-26 21:18:53 +00:00
Jaime Bernardo
097cbd031f Update tests-checklist-jaime.md 2025-02-26 21:12:59 +00:00
Jaime Bernardo
977fe8f829 Update tests-checklist-jaime.md 2025-02-26 16:28:28 +00:00
Jaime Bernardo
8be33f544b Update tests-checklist-jaime.md 2025-02-26 16:21:36 +00:00
Jaime Bernardo
86931b3c33 Update tests-checklist-jaime.md 2025-02-26 15:57:31 +00:00
Jaime Bernardo
117a535893 Update tests-checklist-jaime.md 2025-02-26 15:51:16 +00:00
Jaime Bernardo
ca3b47de9b Update tests-checklist-jaime.md 2025-02-26 15:45:28 +00:00
Jaime Bernardo
cf26e9b715 Add test checklists for 0.89 2025-02-25 22:54:55 +00:00
Jaime Bernardo
a5844473ac Update test checklist for 6 2025-02-25 22:26:22 +00:00
Jaime Bernardo
07788990ee Update tests-checklist-jaime.md 2025-01-23 13:17:07 +00:00
Jaime Bernardo
9eabcd6b46 Update tests-checklist-jaime.md 2025-01-23 13:01:35 +00:00
Jaime Bernardo
c076e8432f Update tests-checklist-jaime.md 2025-01-23 12:30:18 +00:00
Jaime Bernardo
17ed3766da Update tests-checklist-jaime.md 2025-01-23 12:25:51 +00:00
Jaime Bernardo
283a939616 Update tests-checklist-jaime.md 2025-01-23 12:15:46 +00:00
Jaime Bernardo
70efb6d496 Update tests-checklist-jaime.md 2025-01-23 12:12:04 +00:00
Jaime Bernardo
8538cc9b5f Update tests-checklist-template.md 2025-01-23 11:56:55 +00:00
Jaime Bernardo
1e3d7618a2 Update tests-checklist-jaime.md 2025-01-23 11:53:45 +00:00
Jaime Bernardo
1927682966 Update tests-checklist-jaime.md 2025-01-23 11:52:27 +00:00
Jaime Bernardo
88791ecd90 Update tests-checklist-jaime.md 2025-01-23 11:39:38 +00:00
Jaime Bernardo
a2f066380f Update tests-checklist-jaime.md 2025-01-23 11:33:55 +00:00
Jaime Bernardo
8817a9ac30 Update tests-checklist-jaime.md 2025-01-23 11:28:30 +00:00
Jaime Bernardo
968f516c5a Update tests-checklist-jaime.md 2025-01-23 11:26:02 +00:00
Jaime Bernardo
0546cb8829 Update tests-checklist-jaime.md 2025-01-23 11:12:53 +00:00
Stefan Markovic
b9a41e328e All but FZ 2025-01-23 12:12:36 +01:00
Jaime Bernardo
88d7bce75a Update tests-checklist-jaime.md 2025-01-23 11:00:31 +00:00
Jaime Bernardo
2af85fc44d Update tests-checklist-jaime.md 2025-01-23 10:54:11 +00:00
Jaime Bernardo
1c4d33c45c Add test lists for 0.88 2025-01-22 15:33:46 +00:00
Jaime Bernardo
e5af0f31d6 Update test groups for 5 2025-01-22 15:15:45 +00:00
Jaime Bernardo
424167911e Add tests for ZoomIt 2025-01-22 15:11:47 +00:00
Stefan Markovic
7760e3a90a Update tests-checklist-stefan.md 2024-12-12 15:13:38 +01:00
Stefan Markovic
307eb0faa4 color picker 2024-12-12 15:02:59 +01:00
Jaime Bernardo
cb4f008466 Update tests-checklist-jaime.md 2024-12-12 14:02:31 +00:00
Stefan Markovic
c1ca9155d3 Update tests-checklist-stefan.md 2024-12-12 14:55:51 +01:00
Jaime Bernardo
2fa9c32ce6 Update tests-checklist-jaime.md 2024-12-12 13:43:16 +00:00
Jaime Bernardo
5142bc5168 Update tests-checklist-jaime.md 2024-12-12 11:59:25 +00:00
Jaime Bernardo
3b70461cfb Update tests-checklist-jaime.md 2024-12-12 11:37:49 +00:00
Jaime Bernardo
3266fff756 Update tests-checklist-jaime.md 2024-12-12 11:33:09 +00:00
Jaime Bernardo
a9da27ab9c Update tests-checklist-jaime.md 2024-12-12 11:19:10 +00:00
Jaime Bernardo
b2cf3c948b Update tests-checklist-jaime.md 2024-12-12 11:14:15 +00:00
Jaime Bernardo
c67958e717 Update tests-checklist-jaime.md 2024-12-12 11:03:18 +00:00
Jaime Bernardo
bd36460896 Update tests-checklist-jaime.md 2024-12-12 11:01:19 +00:00
Jaime Bernardo
249fb23994 Update tests-checklist-jaime.md 2024-12-12 10:57:03 +00:00
Jaime Bernardo
dfb2f5dfef Update tests-checklist-jaime.md 2024-12-12 10:54:15 +00:00
Jaime Bernardo
f350ba9879 Update tests-checklist-jaime.md 2024-12-12 10:50:26 +00:00
Jaime Bernardo
0cc4d92711 Update tests-checklist-jaime.md 2024-12-12 10:39:56 +00:00
Jaime Bernardo
46c485558e Update tests-checklist-jaime.md 2024-12-12 10:21:45 +00:00
Jaime Bernardo
4ee5fc6d93 Update tests-checklist-jaime.md 2024-12-12 10:14:16 +00:00
Jaime Bernardo
c4b4746c48 Test checklists for 0.87 2024-12-11 14:37:49 +00:00
Jaime Bernardo
7a07689ff6 Update test groups for 5 2024-12-11 13:38:54 +00:00
Jaime Bernardo
447ffb967a Update tests-checklist-jaime.md 2024-10-29 14:12:31 +00:00
Jaime Bernardo
cd5eb4d7a8 Update tests-checklist-jaime.md 2024-10-29 14:04:17 +00:00
Jaime Bernardo
8b7951cfdc Update tests-checklist-jaime.md 2024-10-29 13:46:05 +00:00
Jaime Bernardo
b1583252ae Update tests-checklist-jaime.md 2024-10-29 13:41:19 +00:00
Jaime Bernardo
4c2ad7db42 Update tests-checklist-jaime.md 2024-10-29 13:06:56 +00:00
Jaime Bernardo
11341e6286 Update tests-checklist-jaime.md 2024-10-29 13:01:05 +00:00
Jaime Bernardo
bde4d6c512 Update tests-checklist-jaime.md 2024-10-29 10:50:56 +00:00
Jaime Bernardo
bb908fd5d4 Update tests-checklist-jaime.md 2024-10-29 10:49:28 +00:00
Jaime Bernardo
d7dff73813 Update tests-checklist-jaime.md 2024-10-29 10:32:15 +00:00
Jaime Bernardo
2522928fae Update tests-checklist-jaime.md 2024-10-29 10:20:45 +00:00
Jaime Bernardo
f0124c606d Update tests-checklist-jaime.md 2024-10-29 10:17:04 +00:00
Jaime Bernardo
f367471f6a Update tests-checklist-jaime.md 2024-10-29 10:11:55 +00:00
Jaime Bernardo
8982eeaf52 Update tests-checklist-jaime.md 2024-10-29 09:58:59 +00:00
Jaime Bernardo
3ed97e1c48 Update tests-checklist-jaime.md 2024-10-29 09:43:53 +00:00
Jaime Bernardo
456ea5a130 Update tests-checklist-jaime.md 2024-10-29 09:36:23 +00:00
Stefan Markovic
b35b8b6f09 Update tests-checklist-stefan.md 2024-10-28 21:58:30 +01:00
Jaime Bernardo
b45b4088b7 Test checklists for 0.86.0 2024-10-28 15:51:30 +00:00
Jaime Bernardo
e6b058c26f Update test checklist for 5 2024-10-28 15:27:34 +00:00
Jaime Bernardo
6547d8ca91 Update tests-checklist-template.md 2024-10-28 15:17:47 +00:00
Jaime Bernardo
a6ddfaff61 Update tests-checklist-jaime.md 2024-09-30 11:24:34 +01:00
Jaime Bernardo
ff8065a61b Update tests-checklist-jaime.md 2024-09-30 11:18:32 +01:00
Jaime Bernardo
b5b09f322b Update tests-checklist-jaime.md 2024-09-30 11:14:36 +01:00
Jaime Bernardo
8aba69e628 Update tests-checklist-jaime.md 2024-09-30 10:51:11 +01:00
Jaime Bernardo
d5b8c791fa Update tests-checklist-jaime.md 2024-09-30 10:38:29 +01:00
Jaime Bernardo
f4eaee1c5a Update tests-checklist-jaime.md 2024-09-30 10:36:47 +01:00
Jaime Bernardo
96a51cd45f Update tests-checklist-jaime.md 2024-09-30 10:23:45 +01:00
Jaime Bernardo
a45688d744 Update tests-checklist-jaime.md 2024-09-30 10:05:27 +01:00
Jaime Bernardo
694598132f Update tests-checklist-jaime.md 2024-09-30 10:01:08 +01:00
Jaime Bernardo
1ec6a5ee91 Update tests-checklist-jaime.md 2024-09-30 09:49:50 +01:00
Jaime Bernardo
8a3c30a315 Update tests-checklist-jaime.md 2024-09-30 09:34:12 +01:00
Jaime Bernardo
bf96e2de12 Update tests-checklist-jaime.md 2024-09-30 09:25:58 +01:00
Jaime Bernardo
ad5733c7f9 Update tests-checklist-jaime.md 2024-09-30 09:23:35 +01:00
Jaime Bernardo
5ade9d6012 Add test checklists for 0.85 2024-09-27 16:24:16 +01:00
Jaime Bernardo
5db21606bc Add New+ to test groups for 6 2024-09-27 16:01:45 +01:00
Jaime Bernardo
395d2a5315 Add New+ tests 2024-09-27 15:59:52 +01:00
Jaime Bernardo
f5061be3e4 Update tests-checklist-jaime.md 2024-08-26 21:03:10 +01:00
Jaime Bernardo
dc4a4bdf92 Update tests-checklist-jaime.md 2024-08-26 20:43:46 +01:00
Jaime Bernardo
04868e1a46 Update tests-checklist-jaime.md 2024-08-26 20:39:20 +01:00
Jaime Bernardo
f1387ba06d Update tests-checklist-jaime.md 2024-08-26 20:25:35 +01:00
Jaime Bernardo
f17d5da56e Update tests-checklist-jaime.md 2024-08-26 20:23:22 +01:00
Jaime Bernardo
7239a60311 Update tests-checklist-jaime.md 2024-08-26 20:13:47 +01:00
Jaime Bernardo
a9b5015fc2 Update tests-checklist-jaime.md 2024-08-26 20:06:21 +01:00
Jaime Bernardo
694303eee8 Update tests-checklist-jaime.md 2024-08-26 20:01:54 +01:00
Jaime Bernardo
e09b694d86 Update tests-checklist-jaime.md 2024-08-26 19:53:34 +01:00
Jaime Bernardo
27c1ffd7da Update tests-checklist-jaime.md 2024-08-26 15:45:17 +01:00
Jaime Bernardo
1d4d563f93 Update tests-checklist-jaime.md 2024-08-26 14:22:33 +01:00
Jaime Bernardo
bf91684f38 Update tests-checklist-jaime.md 2024-08-26 13:58:51 +01:00
Jaime Bernardo
9c5b23e29d Update tests-checklist-jaime.md 2024-08-26 12:30:10 +01:00
Jaime Bernardo
19e1eb17a3 Update tests-checklist-jaime.md 2024-08-26 12:23:32 +01:00
Stefan Markovic
4d3f6032ba Update advanced paste checklist 2024-08-26 10:51:53 +02:00
Stefan Markovic
b75a0b4461 .84 test plan 2024-08-26 09:07:35 +02:00
Stefan Markovic
72ff20df24 minor styling 2024-08-21 23:09:25 +02:00
Seraphima Zykova
90e5eb5ac5 Added tests for Workspaces 2024-08-20 14:36:00 +02:00
Jaime Bernardo
b12fa3f007 Update tests-checklist-jaime.md 2024-07-29 16:06:12 +01:00
Jaime Bernardo
a9195c06db Update tests-checklist-jaime.md 2024-07-29 12:48:41 +01:00
Jaime Bernardo
4c34ac2993 Update tests-checklist-jaime.md 2024-07-29 12:40:17 +01:00
Jaime Bernardo
6c85e72edf Update tests-checklist-jaime.md 2024-07-29 12:26:43 +01:00
Jaime Bernardo
a6e1d9d6e1 Update tests-checklist-jaime.md 2024-07-29 12:14:46 +01:00
Jaime Bernardo
9377c4d53c Update tests-checklist-jaime.md 2024-07-29 12:00:55 +01:00
Jaime Bernardo
b2b018ef0a Update tests-checklist-jaime.md 2024-07-29 11:59:31 +01:00
Jaime Bernardo
1d7ecd3777 Update tests-checklist-jaime.md 2024-07-29 11:51:08 +01:00
Jaime Bernardo
f699d33038 Update tests-checklist-jaime.md 2024-07-29 11:47:40 +01:00
Jaime Bernardo
a1ef553aed Update tests-checklist-jaime.md 2024-07-29 11:43:38 +01:00
Jaime Bernardo
a096f10b10 Update tests-checklist-jaime.md 2024-07-29 11:40:43 +01:00
Jaime Bernardo
4f33b2fc29 Update tests-checklist-jaime.md 2024-07-29 11:29:42 +01:00
Jaime Bernardo
e42bfbb834 Update tests-checklist-jaime.md 2024-07-29 11:17:41 +01:00
Jaime Bernardo
dd440c1699 Update tests-checklist-jaime.md 2024-07-29 10:58:22 +01:00
Jaime Bernardo
c0b3517056 Test checklists for 0.83.0 2024-07-28 15:07:51 +01:00
Jaime Bernardo
9e58e328d1 Update test groups for 5 2024-07-28 14:50:38 +01:00
Jaime Bernardo
6e8665c016 Update tests-checklist-jaime.md 2024-06-26 13:22:29 +01:00
Jaime Bernardo
ef20eb14d3 Update tests-checklist-jaime.md 2024-06-26 13:18:50 +01:00
Jaime Bernardo
ad082c722f Update tests-checklist-jaime.md 2024-06-26 13:14:32 +01:00
Jaime Bernardo
e5f0f88f7f Update tests-checklist-jaime.md 2024-06-26 13:05:28 +01:00
Jaime Bernardo
0af5f449f7 Update tests-checklist-jaime.md 2024-06-26 12:46:20 +01:00
Jaime Bernardo
ad0ada8726 Update tests-checklist-jaime.md 2024-06-26 12:24:04 +01:00
Seraphima Zykova
061884b71b Update tests-checklist-seraphima.md 2024-06-26 13:09:23 +02:00
Jaime Bernardo
cdb3336c97 Update tests-checklist-jaime.md 2024-06-26 00:12:07 +01:00
Jaime Bernardo
729f98e24f Update tests-checklist-jaime.md 2024-06-26 00:07:44 +01:00
Jaime Bernardo
99ef48a830 Update tests-checklist-jaime.md 2024-06-26 00:04:45 +01:00
Jaime Bernardo
34d3e19481 Update tests-checklist-jaime.md 2024-06-25 23:51:58 +01:00
Jaime Bernardo
8773f1dd70 Update tests-checklist-jaime.md 2024-06-25 23:47:03 +01:00
Jaime Bernardo
2393711eb8 Update tests-checklist-jaime.md 2024-06-25 23:45:59 +01:00
Jaime Bernardo
60c3df2d95 Update tests-checklist-jaime.md 2024-06-25 23:42:07 +01:00
Jaime Bernardo
be3e033326 Update tests-checklist-jaime.md 2024-06-25 23:36:59 +01:00
Jaime Bernardo
162b361e4b Update tests-checklist-jaime.md 2024-06-25 23:27:49 +01:00
Jaime Bernardo
9682066cbf Update tests-checklist-jaime.md 2024-06-25 23:24:14 +01:00
Jaime Bernardo
2d5652acfe Update tests-checklist-jaime.md 2024-06-25 23:10:43 +01:00
Jaime Bernardo
7c670474eb Update tests-checklist-jaime.md 2024-06-25 23:02:15 +01:00
Jaime Bernardo
76acc3505e Update tests-checklist-jaime.md 2024-06-25 22:56:51 +01:00
Jaime Bernardo
d3217c1316 Redistribute Stefan's tests so he can focus on MRT 2024-06-25 22:17:41 +01:00
Seraphima Zykova
28e9a82018 Update tests-checklist-seraphima.md 2024-06-25 17:56:42 +02:00
Seraphima Zykova
a1c99ac579 Update tests-checklist-seraphima.md 2024-06-25 17:56:12 +02:00
Jaime Bernardo
88ccb711b7 Add checklists for 0.82.0 2024-06-25 10:40:20 +01:00
Jaime Bernardo
a51223c6f5 Update test groups for 6 2024-06-25 10:18:50 +01:00
Jaime Bernardo
42a90a0454 Add Advanced Paste to release checklist 2024-06-25 10:17:04 +01:00
Jaime Bernardo
a9f792fc6c Update tests-checklist-jaime.md 2024-05-15 11:52:17 +01:00
Jaime Bernardo
5547461219 Update tests-checklist-jaime.md 2024-05-15 11:37:32 +01:00
Stefan Markovic
e53f087bde General Settings 2024-05-15 12:36:10 +02:00
Jaime Bernardo
6229777a94 Update tests-checklist-jaime.md 2024-05-15 11:32:28 +01:00
Jaime Bernardo
1283872e09 Update tests-checklist-jaime.md 2024-05-15 11:18:16 +01:00
Jaime Bernardo
a2e21acc70 Update tests-checklist-jaime.md 2024-05-15 11:04:18 +01:00
Jaime Bernardo
7c9bef2fa1 Update tests-checklist-jaime.md 2024-05-15 10:48:43 +01:00
Stefan Markovic
d63d858a87 Quick accent, Paste plain 2024-05-15 11:44:08 +02:00
Jaime Bernardo
87439acd82 Update tests-checklist-jaime.md 2024-05-15 10:33:54 +01:00
Stefan Markovic
84d441bd3c Install, Functional, Localization 2024-05-15 11:28:50 +02:00
Jaime Bernardo
46fa44889c Update tests-checklist-jaime.md 2024-05-15 10:22:44 +01:00
Jaime Bernardo
6b34f4bfd7 Update tests-checklist-jaime.md 2024-05-15 10:11:40 +01:00
Jaime Bernardo
b76c511743 Update tests-checklist-jaime.md 2024-05-15 10:08:09 +01:00
Jaime Bernardo
b0eaf662d9 Release checklists for 0.81.0 2024-05-14 14:21:01 +01:00
Jaime Bernardo
b0e443bee1 Update tests-checklist-jaime.md 2024-04-03 00:25:19 +01:00
Jaime Bernardo
9c4b0131bc Update tests-checklist-jaime.md 2024-04-03 00:09:39 +01:00
Jaime Bernardo
55a32a6d0d Update tests-checklist-jaime.md 2024-04-02 17:11:22 +01:00
Jaime Bernardo
e055e51c37 Update tests-checklist-jaime.md 2024-04-02 15:50:51 +01:00
Jaime Bernardo
2744f5e3e9 Update tests-checklist-jaime.md 2024-04-02 15:49:52 +01:00
Jaime Bernardo
c4873ccf93 Update tests-checklist-jaime.md 2024-04-02 15:24:40 +01:00
Jaime Bernardo
b8e9c51850 Update tests-checklist-jaime.md 2024-04-02 15:21:32 +01:00
Jaime Bernardo
cc2c1933c4 Update tests-checklist-jaime.md 2024-04-02 15:19:08 +01:00
Jaime Bernardo
cabea993cb Update tests-checklist-jaime.md 2024-04-02 15:16:59 +01:00
Jaime Bernardo
ef51c6e72e Update tests-checklist-jaime.md 2024-04-02 15:11:00 +01:00
Jaime Bernardo
6bb02e25d1 Update tests-checklist-jaime.md 2024-04-02 15:06:23 +01:00
Jaime Bernardo
1502f7e605 Update tests-checklist-jaime.md 2024-04-02 14:57:12 +01:00
Jaime Bernardo
da2d4fb3c4 Update tests-checklist-jaime.md 2024-04-02 14:43:28 +01:00
Jaime Bernardo
f0e9011339 Update tests-checklist-jaime.md 2024-04-02 12:05:01 +01:00
Jaime Bernardo
d868a4e1ba Update tests-checklist-jaime.md 2024-04-02 11:52:05 +01:00
Stefan Markovic
de2a4a53af FE-add ons, Quick Accent, Text Extractor and Reg Preview 2024-04-02 12:41:15 +02:00
Stefan Markovic
e56bd4fe71 Install, loc, ColorPicker and FZ Editor 2024-04-02 12:03:50 +02:00
Jaime Bernardo
40b818ccc7 Test checklists for 0.80.0 2024-04-01 23:05:11 +01:00
Jaime Bernardo
711c7a77be Add DSC tests 2024-04-01 22:40:23 +01:00
Jaime Bernardo
dabbbbccb6 Update tests-checklist-jaime.md 2024-02-29 14:08:37 +00:00
Jaime Bernardo
5860ad38e8 Update tests-checklist-jaime.md 2024-02-29 14:05:22 +00:00
Jaime Bernardo
4e28e17ffc Update tests-checklist-jaime.md 2024-02-29 13:50:44 +00:00
Jaime Bernardo
f9ec7229ea Update tests-checklist-jaime.md 2024-02-29 13:34:53 +00:00
Jaime Bernardo
64c90ffbc5 Update tests-checklist-jaime.md 2024-02-29 13:18:49 +00:00
Jaime Bernardo
389b47b7d9 Update tests-checklist-jaime.md 2024-02-29 12:57:59 +00:00
Seraphima Zykova
24fa059250 Update tests-checklist-seraphima.md 2024-02-29 13:50:38 +01:00
Stefan Markovic
615999be7c Text Extractr 2024-02-29 13:01:00 +01:00
Jaime Bernardo
7db069fd46 Update tests-checklist-jaime.md 2024-02-29 11:54:33 +00:00
Jaime Bernardo
6e5729ce87 Update tests-checklist-jaime.md 2024-02-29 11:36:45 +00:00
Jaime Bernardo
91c49a1023 Update tests-checklist-jaime.md 2024-02-29 11:20:34 +00:00
Jaime Bernardo
edd30b7098 Update tests-checklist-jaime.md 2024-02-29 11:12:59 +00:00
Stefan Markovic
a88b100c12 RegistryPreview 2024-02-29 11:01:47 +01:00
Stefan Markovic
2f8d5734ae Peek 2024-02-29 10:51:10 +01:00
Stefan Markovic
1859603a18 Quick Accent 2024-02-29 10:42:49 +01:00
Stefan Markovic
bb174066d6 FE-Addons 2024-02-29 10:36:37 +01:00
Stefan Markovic
6c4515382f FZ Editor 2024-02-29 10:28:59 +01:00
Stefan Markovic
50c7aec2b8 ColorPicker 2024-02-29 10:18:48 +01:00
Jaime Bernardo
1e410c21b0 Add tests for 0.79 2024-02-27 22:20:42 +00:00
Seraphima Zykova
b3c4200a1c Update tests-checklist-seraphima.md 2024-01-29 18:02:47 +01:00
Jaime Bernardo
a9a9f39293 Update tests-checklist-jaime.md 2024-01-29 16:52:12 +00:00
Jaime Bernardo
094ac9a77e Update tests-checklist-jaime.md 2024-01-29 16:38:21 +00:00
Jaime Bernardo
0c8b4cdc62 Update tests-checklist-jaime.md 2024-01-29 16:27:34 +00:00
Jaime Bernardo
f328c99c82 Update tests-checklist-jaime.md 2024-01-29 16:26:00 +00:00
Jaime Bernardo
5df602e3f0 Update tests-checklist-jaime.md 2024-01-29 16:24:11 +00:00
Jaime Bernardo
036c9baf4d Update tests-checklist-jaime.md 2024-01-29 16:22:00 +00:00
Jaime Bernardo
c7a35c3b89 Update tests-checklist-jaime.md 2024-01-29 16:07:31 +00:00
Jaime Bernardo
809ff3621d Update tests-checklist-jaime.md 2024-01-29 16:04:56 +00:00
Jaime Bernardo
b2dcbc5beb Update tests-checklist-jaime.md 2024-01-29 15:56:52 +00:00
Jaime Bernardo
bcf5ed2db3 Update tests-checklist-jaime.md 2024-01-29 15:42:08 +00:00
Jaime Bernardo
860bd1b452 Update tests-checklist-jaime.md 2024-01-29 15:36:09 +00:00
Jaime Bernardo
760c7be191 Test checklists for .78 2024-01-29 10:25:47 +00:00
Jaime Bernardo
dcb40e5fbd Update test groups for 6 for .78 2024-01-29 10:08:34 +00:00
Stefan Markovic
681cc781c8 update CNF checklist 2024-01-05 12:17:40 +01:00
Jaime Bernardo
14e08aacbf Update tests-checklist-jaime.md 2024-01-04 14:29:53 +00:00
Stefan Markovic
8f5c465cd7 env var 2024-01-04 14:46:33 +01:00
Stefan Markovic
fd7de044a9 ruler 2024-01-04 14:37:38 +01:00
Stefan Markovic
3e94217681 peek 2024-01-04 14:29:45 +01:00
Jaime Bernardo
112fdb6530 Update tests-checklist-jaime.md 2024-01-04 13:29:26 +00:00
Stefan Markovic
21844aa770 Update tests-checklist-stefan.md 2024-01-04 14:26:48 +01:00
Stefan Markovic
7ad22ae95c KBM 2024-01-04 14:15:09 +01:00
Jaime Bernardo
75770abd47 Update tests-checklist-jaime.md 2024-01-04 13:01:51 +00:00
Stefan Markovic
fd8f298c94 Update tests-checklist-stefan.md 2024-01-04 13:30:40 +01:00
Stefan Markovic
adfe14d352 Image Resizer 2024-01-04 13:09:38 +01:00
Stefan Markovic
9dbf5cf009 Merge branch 'releaseChecklist' of https://github.com/microsoft/PowerToys into releaseChecklist 2024-01-04 12:54:59 +01:00
Stefan Markovic
0b9a76d114 Fix checklists and tested items 2024-01-04 12:53:58 +01:00
Jaime Bernardo
a6525c11ed Update tests-checklist-jaime.md 2024-01-04 11:25:52 +00:00
Stefan Markovic
8d243d4575 Install tests 2024-01-04 12:22:37 +01:00
Jaime Bernardo
8fe38e441b Update tests-checklist-jaime.md 2024-01-04 11:21:41 +00:00
Jaime Bernardo
eae86d794f Update tests-checklist-jaime.md 2024-01-04 11:15:06 +00:00
Jaime Bernardo
604b6c0b3c Update tests-checklist-jaime.md 2024-01-04 11:08:49 +00:00
Jaime Bernardo
27e8c01544 Update tests-checklist-jaime.md 2024-01-04 10:57:03 +00:00
Jaime Bernardo
0a2b102b8c Update tests-checklist-jaime.md 2024-01-04 10:38:18 +00:00
Jaime Bernardo
55643f36cb Update tests-checklist-jaime.md 2024-01-04 10:26:45 +00:00
Jaime Bernardo
d481cd3dd1 Update tests-checklist-jaime.md 2024-01-04 10:15:36 +00:00
Stefan Markovic
8188a01ae1 Update test plan for .77 2024-01-04 08:57:45 +01:00
Jaime Bernardo
0eded24122 Update tests-checklist-jaime.md 2023-11-30 15:55:47 +00:00
Jaime Bernardo
e73c60b5fa Update tests-checklist-jaime.md 2023-11-30 14:28:04 +00:00
Jaime Bernardo
08c0b0cd48 Update tests-checklist-jaime.md 2023-11-30 14:23:43 +00:00
Jaime Bernardo
93216bcc3e Update tests-checklist-jaime.md 2023-11-30 14:21:58 +00:00
Jaime Bernardo
22f5f62f93 Update tests-checklist-jaime.md 2023-11-30 14:17:38 +00:00
Jaime Bernardo
045e2e9756 Update tests-checklist-jaime.md 2023-11-30 14:00:19 +00:00
Seraphima Zykova
f6659dfadc Update tests-checklist-seraphima.md 2023-11-30 14:57:09 +01:00
Jaime Bernardo
860c0a1012 Update tests-checklist-jaime.md 2023-11-30 12:13:44 +00:00
Jaime Bernardo
da9912a09d Update tests-checklist-jaime.md 2023-11-30 12:10:19 +00:00
Jaime Bernardo
65488ed3e8 Update tests-checklist-jaime.md 2023-11-30 12:08:12 +00:00
Jaime Bernardo
5de4599c95 Update tests-checklist-jaime.md 2023-11-30 12:01:48 +00:00
Jaime Bernardo
1c1c421154 Update tests-checklist-jaime.md 2023-11-30 11:48:30 +00:00
Jaime Bernardo
3afaddeb96 Update tests-checklist-jaime.md 2023-11-30 11:39:02 +00:00
Stefan Markovic
8c10325ce7 Text extractor and Registry preview 2023-11-30 10:17:55 +01:00
Stefan Markovic
872b30f41a Quick accent and FE Add-ons 2023-11-30 01:18:32 +01:00
Stefan Markovic
a5569a62cd Update tests-checklist-stefan.md 2023-11-30 00:53:43 +01:00
Jaime Bernardo
c38ab5adc0 Test checklists for 0.76.0 2023-11-28 15:49:17 +00:00
Jaime Bernardo
2954b3b6ea Update tests-checklist-jaime.md 2023-10-30 08:54:59 +00:00
Jaime Bernardo
1b26e758a7 Update tests-checklist-jaime.md 2023-10-25 15:37:28 +01:00
Stefan Markovic
7f817ce5f7 FZ 2023-10-25 16:37:15 +02:00
Jaime Bernardo
3d3599b88d Update tests-checklist-jaime.md 2023-10-25 15:33:59 +01:00
Jaime Bernardo
507b8501a2 Update tests-checklist-jaime.md 2023-10-25 15:21:42 +01:00
Jaime Bernardo
c80aa6bade Update tests-checklist-jaime.md 2023-10-25 15:20:16 +01:00
Jaime Bernardo
2480b4aa7e Update tests-checklist-jaime.md 2023-10-25 15:16:54 +01:00
Jaime Bernardo
77ddcf7f97 Update tests-checklist-jaime.md 2023-10-25 14:59:49 +01:00
Jaime Bernardo
1beeea0f49 Update tests-checklist-jaime.md 2023-10-25 14:52:51 +01:00
Jaime Bernardo
361ba08b8a Update tests-checklist-jaime.md 2023-10-25 14:45:51 +01:00
Jaime Bernardo
65887ae26d Update tests-checklist-jaime.md 2023-10-25 14:34:15 +01:00
Jaime Bernardo
39e8a0409d Update tests-checklist-jaime.md 2023-10-25 14:06:34 +01:00
Stefan Markovic
88b305247c Peek, Text Extractor and RegPRev 2023-10-25 12:23:57 +02:00
Stefan Markovic
050c40f0fe ColorPicker, FZEditor, FE add-ons and quick accent 2023-10-25 10:16:46 +02:00
Jaime Bernardo
36ecbde932 Add checklists for 0.75 2023-10-24 16:33:52 +01:00
Jaime Bernardo
96fb5865df Update groups for 6 for 0.75 2023-10-24 15:50:58 +01:00
Jaime Bernardo
0e42849007 Add new screens to localization check 2023-10-24 15:48:36 +01:00
Stefan Markovic
f60d64e1f2 Merge branch 'releaseChecklist' of https://github.com/microsoft/PowerToys into releaseChecklist 2023-10-22 23:20:19 +02:00
Stefan Markovic
4908572b8d Add Environment variables tests 2023-10-22 23:20:01 +02:00
Jaime Bernardo
5bc7201ae2 Update tests-checklist-jaime.md 2023-09-24 16:21:50 +01:00
Jaime Bernardo
a20dd0d8fb Update tests-checklist-jaime.md 2023-09-24 15:58:05 +01:00
Jaime Bernardo
ebcc3af61b Update tests-checklist-jaime.md 2023-09-24 15:44:53 +01:00
Jaime Bernardo
f483a44db2 Update tests-checklist-jaime.md 2023-09-24 15:40:02 +01:00
Jaime Bernardo
ff357c49e2 Update tests-checklist-jaime.md 2023-09-24 15:27:28 +01:00
Jaime Bernardo
22b8ec9fd8 Update tests-checklist-jaime.md 2023-09-24 15:06:15 +01:00
Jaime Bernardo
4b3990feaa Update tests-checklist-jaime.md 2023-09-24 14:58:33 +01:00
Jaime Bernardo
7fee4a20c7 Update tests-checklist-jaime.md 2023-09-24 14:53:27 +01:00
Jaime Bernardo
8adc4032a0 Update tests-checklist-jaime.md 2023-09-23 17:00:40 +01:00
Jaime Bernardo
9160c672df Update tests-checklist-jaime.md 2023-09-23 16:51:50 +01:00
Jaime Bernardo
3e257fafcb Update tests-checklist-jaime.md 2023-09-23 16:48:54 +01:00
Jaime Bernardo
1e3c0a698d Update tests-checklist-jaime.md 2023-09-23 16:36:42 +01:00
Jaime Bernardo
f7283d9f1f Update tests-checklist-jaime.md 2023-09-23 16:34:18 +01:00
Jaime Bernardo
614b64b476 Update tests-checklist-jaime.md 2023-09-23 16:31:15 +01:00
Jaime Bernardo
8b3bf49880 Update tests-checklist-jaime.md 2023-09-23 16:21:23 +01:00
Jaime Bernardo
9214fac22b Update tests-checklist-jaime.md 2023-09-23 16:19:24 +01:00
Jaime Bernardo
d35e5146fe Release checklists for 0.74.0 2023-09-22 16:07:06 +01:00
Jaime Bernardo
9c88c73f60 Update test groups for 5 2023-09-22 16:02:13 +01:00
Stefan Markovic
ce2672eebb Update tests-checklist-stefan.md 2023-08-28 17:58:10 +02:00
Stefan Markovic
8d70ef2c95 Update tests-checklist-stefan.md 2023-08-28 17:37:22 +02:00
Stefan Markovic
1d3acee2a0 Update tests-checklist-stefan.md 2023-08-28 17:25:57 +02:00
Jaime Bernardo
e666d703fc Update tests-checklist-jaime.md 2023-08-28 15:41:39 +01:00
Jaime Bernardo
57e507af28 Update tests-checklist-jaime.md 2023-08-28 14:25:54 +01:00
Seraphima Zykova
b8c744053b Update tests-checklist-seraphima.md 2023-08-28 15:18:54 +02:00
Jaime Bernardo
15f930b35f Update tests-checklist-jaime.md 2023-08-28 14:17:46 +01:00
Jaime Bernardo
89692fea80 Update tests-checklist-jaime.md 2023-08-28 14:14:07 +01:00
Jaime Bernardo
9820d22f0e Update tests-checklist-jaime.md 2023-08-28 14:12:27 +01:00
Jaime Bernardo
0e21214939 Update tests-checklist-jaime.md 2023-08-28 14:08:44 +01:00
Jaime Bernardo
a6b0152822 Update tests-checklist-jaime.md 2023-08-28 14:06:21 +01:00
Stefan Markovic
a39555c9ea Update tests-checklist-stefan.md 2023-08-28 13:59:47 +02:00
Stefan Markovic
dd8848cf2f Update tests-checklist-stefan.md 2023-08-28 13:42:04 +02:00
Jaime Bernardo
4d0925f181 Update tests-checklist-jaime.md 2023-08-28 12:21:49 +01:00
Stefan Markovic
02bc8aed18 Update tests-checklist-gokce.md 2023-08-28 12:36:50 +02:00
Stefan Markovic
3522553d7c Additional tests 2023-08-28 12:33:53 +02:00
Stefan Markovic
bb678282d5 Additional tests 2023-08-28 12:33:17 +02:00
Stefan Markovic
13d1c73fd3 Additional tests 2023-08-28 12:32:23 +02:00
Stefan Markovic
da4e2c042f Additional tests 2023-08-28 12:30:33 +02:00
Stefan Markovic
1282a131ff Additional tests 2023-08-28 12:29:16 +02:00
Stefan Markovic
61934d8f6a Update tests-checklist-jaime.md 2023-08-28 08:07:49 +02:00
Stefan Markovic
0a31e4a4cb Update test-groups-for-6.md 2023-08-28 08:07:14 +02:00
Stefan Markovic
4384d6f8ee Update tests-checklist-jaime.md 2023-08-28 08:04:29 +02:00
Stefan Markovic
b2c3b4381d Update checklists for .73 2023-08-27 20:58:32 +02:00
Jaime Bernardo
b976423ffb Update tests-checklist-jaime.md 2023-07-31 15:24:13 +01:00
Jaime Bernardo
58fd821ce4 Update tests-checklist-jaime.md 2023-07-29 15:46:32 +01:00
Jaime Bernardo
8aceca56dc Update tests-checklist-jaime.md 2023-07-29 14:22:53 +01:00
Jaime Bernardo
9c82c62f1b Update tests-checklist-jaime.md 2023-07-28 15:35:33 +01:00
Jaime Bernardo
21edebb0db Update tests-checklist-jaime.md 2023-07-28 15:31:29 +01:00
Jaime Bernardo
9f2ef0918f Update tests-checklist-jaime.md 2023-07-28 15:22:35 +01:00
Jaime Bernardo
05b42c7813 Update tests-checklist-jaime.md 2023-07-28 15:19:31 +01:00
Jaime Bernardo
2662072af7 Update tests-checklist-jaime.md 2023-07-28 14:41:33 +01:00
Jaime Bernardo
2fb806a82f Update tests-checklist-jaime.md 2023-07-28 14:24:43 +01:00
Jaime Bernardo
7214e9c185 Update tests-checklist-jaime.md 2023-07-28 14:16:28 +01:00
Jaime Bernardo
5325bad7ee Update tests-checklist-jaime.md 2023-07-28 11:51:53 +01:00
Jaime Bernardo
0123c8e53e Update tests-checklist-jaime.md 2023-07-28 11:39:09 +01:00
Jaime Bernardo
fb04ddca01 Update tests-checklist-jaime.md 2023-07-28 10:51:21 +01:00
Stefan Markovic
5efdf1ec3d KBM 2023-07-28 10:49:27 +02:00
Stefan Markovic
d7ca2e028f VCM, QuickAccent and Hosts 2023-07-27 23:10:17 +02:00
Stefan Markovic
b3cc2c68fe GPO and PasteAsPlain 2023-07-27 22:41:23 +02:00
Stefan Markovic
bcb9f59f41 File Explorer Add-ons and Shortcut Guide 2023-07-27 22:07:23 +02:00
Stefan Markovic
405e3c1412 [Done] Install tests and ColorPicker 2023-07-27 17:30:48 +02:00
Jaime Bernardo
9e4168e4fd Test lists for 0.72 2023-07-27 11:41:14 +01:00
Jaime Bernardo
9f2d089825 Update test groups for 4 2023-07-27 11:40:54 +01:00
Jaime Bernardo
7ff5de12ec Update tests-checklist-jaime.md 2023-07-03 16:47:34 +01:00
Jaime Bernardo
6e8a349b2d Update tests-checklist-jaime.md 2023-07-03 16:44:58 +01:00
Jaime Bernardo
cb2024d110 Update tests-checklist-jaime.md 2023-07-03 16:28:44 +01:00
Jaime Bernardo
ef2c7b0203 Update tests-checklist-jaime.md 2023-07-03 16:22:26 +01:00
Jaime Bernardo
392bb727b0 Update tests-checklist-jaime.md 2023-07-03 16:15:22 +01:00
Jaime Bernardo
d03f4d051e Update tests-checklist-jaime.md 2023-07-03 16:11:25 +01:00
Jaime Bernardo
7937d27b36 Update tests-checklist-jaime.md 2023-07-03 16:06:55 +01:00
Jaime Bernardo
d27d0b5461 Update tests-checklist-jaime.md 2023-07-03 16:04:25 +01:00
Jaime Bernardo
1c4eebf3a7 Update tests-checklist-jaime.md 2023-07-03 15:55:24 +01:00
Jaime Bernardo
e47445bc55 Update tests-checklist-jaime.md 2023-07-03 15:50:51 +01:00
Jaime Bernardo
bb4c649954 Update tests-checklist-jaime.md 2023-07-03 15:16:13 +01:00
Stefan Markovic
483b276edd Update tests-checklist-stefan.md 2023-07-03 14:01:23 +02:00
Stefan Markovic
5f5e2174e5 Merge branch 'releaseChecklist' of github.com:microsoft/PowerToys into releaseChecklist 2023-07-03 13:54:38 +02:00
Stefan Markovic
3a90bc71b5 Update tests-checklist-stefan.md 2023-07-03 13:47:46 +02:00
Stefan Markovic
ba4ecb3b51 Update Peek checklist 2023-07-03 13:42:18 +02:00
Stefan Markovic
62702acb31 Update tests-checklist-stefan.md 2023-07-03 13:15:21 +02:00
Jaime Bernardo
a091aeff54 Update tests-checklist-template.md 2023-07-03 11:40:59 +01:00
Jaime Bernardo
79f74dae79 Update tests-checklist-jaime.md 2023-07-03 11:02:08 +01:00
Seraphima Zykova
b3f536564c Update tests-checklist-seraphima.md 2023-06-28 19:32:15 +02:00
Jaime Bernardo
da8d3bdde2 Update tests-checklist-jaime.md 2023-06-28 18:13:23 +01:00
Jaime Bernardo
2f9ef10aaf Update tests-checklist-jaime.md 2023-06-28 18:10:05 +01:00
Jaime Bernardo
540b4e05b9 Update tests-checklist-jaime.md 2023-06-28 18:04:31 +01:00
Stefan Markovic
f052693e2c Merge branch 'releaseChecklist' of github.com:microsoft/PowerToys into releaseChecklist 2023-06-28 19:00:05 +02:00
Stefan Markovic
f914525542 Update Registry Preview checklist 2023-06-28 18:54:29 +02:00
Jaime Bernardo
14b7836d84 Update tests-checklist-jaime.md 2023-06-28 16:59:29 +01:00
Jaime Bernardo
78eff3b009 Update tests-checklist-jaime.md 2023-06-28 16:38:07 +01:00
Jaime Bernardo
e759af66bb Update tests-checklist-jaime.md 2023-06-28 16:29:44 +01:00
Jaime Bernardo
09f97e3c2b Update tests-checklist-jaime.md 2023-06-28 16:24:36 +01:00
Jaime Bernardo
a83ba1e8e3 Update tests-checklist-jaime.md 2023-06-28 16:21:16 +01:00
Jaime Bernardo
375f49bb89 Update tests-checklist-jaime.md 2023-06-28 16:18:22 +01:00
Jaime Bernardo
a95c6cb8b9 Update tests-checklist-jaime.md 2023-06-28 16:15:27 +01:00
Jaime Bernardo
7a0bf5eb0b Update tests-checklist-jaime.md 2023-06-28 16:01:21 +01:00
Jaime Bernardo
ddf770f181 Update tests-checklist-jaime.md 2023-06-28 15:44:49 +01:00
Stefan Markovic
94c407f0b2 v0.71 tests groups checklists 2023-06-28 11:15:41 +02:00
Stefan Markovic
306ca6a5ef Update test checklists 2023-06-27 13:06:00 +02:00
Andrey Nekrasov
12af4b1b86 add MWB tests to tests-checklist-template.md 2023-05-24 16:20:14 +02:00
Jaime Bernardo
302c405dad Update tests-checklist-jaime.md 2023-05-16 18:52:14 +01:00
Jaime Bernardo
e29fb5b51d Update tests-checklist-jaime.md 2023-05-16 18:16:13 +01:00
Jaime Bernardo
f4df22834a Update tests-checklist-jaime.md 2023-05-16 16:52:54 +01:00
Jaime Bernardo
08f29f72b3 Update tests-checklist-jaime.md 2023-05-16 16:44:17 +01:00
Jaime Bernardo
93b8e6c98c Update tests-checklist-jaime.md 2023-05-16 16:25:42 +01:00
Jaime Bernardo
2759628e6e Update tests-checklist-jaime.md 2023-05-16 15:36:42 +01:00
Jaime Bernardo
a4e8aebeea Update tests-checklist-jaime.md 2023-05-16 15:28:07 +01:00
Jaime Bernardo
0eaffd01e1 Update tests-checklist-jaime.md 2023-05-16 15:21:41 +01:00
Seraphima Zykova
5d70e3c990 Update tests-checklist-seraphima.md 2023-05-16 13:33:43 +02:00
Seraphima Zykova
a179cd63b9 Update tests-checklist-seraphima.md 2023-05-16 13:33:18 +02:00
Jaime Bernardo
8abd60a7bd Update tests-checklist-jaime.md 2023-05-16 11:25:08 +01:00
Stefan Markovic
d131a52b43 Update tests-checklist-stefan.md 2023-05-16 12:24:48 +02:00
Stefan Markovic
dc38bca9ff Update tests-checklist-stefan.md 2023-05-16 11:31:45 +02:00
Stefan Markovic
e0948e9ea3 Update tests-checklist-stefan.md 2023-05-16 11:20:53 +02:00
Stefan Markovic
e5412f9e55 Update tests-checklist-stefan.md 2023-05-16 11:00:31 +02:00
Stefan Markovic
6e60571ded Update tests-checklist-stefan.md 2023-05-16 10:49:11 +02:00
Jaime Bernardo
62bbbf49b2 Remove names from groups file 2023-05-15 17:18:57 +01:00
Jaime Bernardo
516e5e85a5 Release checklists for 0.70 2023-05-15 17:06:35 +01:00
Seraphima Zykova
881ab28a9e Update tests-checklist-template.md 2023-05-15 16:09:31 +02:00
Seraphima Zykova
2d2a692a6a Update tests-checklist-seraphima.md 2023-04-03 16:23:26 +02:00
Stefan Markovic
d991f07513 Test lists for v69 2023-03-31 13:53:13 +02:00
Stefan Markovic
0b49729849 Update test-groups-for-5.md 2023-03-31 11:54:50 +02:00
Stefan Markovic
0e4a0e206c Update tests-checklist-template.md 2023-03-31 11:49:36 +02:00
Seraphima Zykova
fa5c523c9c Update tests-checklist-seraphima.md 2023-02-28 16:19:47 +01:00
Stefan Markovic
9cfcc14023 Fix testing lists 2023-02-28 13:35:38 +01:00
Jaime Bernardo
77d262bcc0 Update tests-checklist-jaime.md 2023-02-28 12:10:57 +00:00
Jaime Bernardo
93383da348 Update tests-checklist-jaime.md 2023-02-28 12:07:32 +00:00
Jaime Bernardo
7210400d36 Update tests-checklist-jaime.md 2023-02-28 12:03:56 +00:00
Jaime Bernardo
4815f0dcf5 Update tests-checklist-jaime.md 2023-02-28 11:47:33 +00:00
Jaime Bernardo
81eb0e27fa Update tests-checklist-jaime.md 2023-02-28 11:44:35 +00:00
Jaime Bernardo
17593fd9a4 Update tests-checklist-jaime.md 2023-02-28 11:40:56 +00:00
Jaime Bernardo
8ccc5c2d11 Update tests-checklist-jaime.md 2023-02-28 11:00:23 +00:00
Jaime Bernardo
8258b1ae93 Update tests-checklist-jaime.md 2023-02-28 10:41:17 +00:00
Jaime Bernardo
6b6b38891a Update tests-checklist-jaime.md 2023-02-28 10:31:45 +00:00
Jaime Bernardo
6cf6bbcc42 Update tests-checklist-jaime.md 2023-02-28 09:49:40 +00:00
Stefan Markovic
57c5b347da Add test lists for 0.68 2023-02-27 10:48:03 +01:00
Stefan Markovic
1dcd603b51 Add Paste as Plain Text and Mouse Jump steps 2023-02-27 09:32:03 +01:00
Seraphima Zykova
b0da194a2a Update tests-checklist-template.md 2023-02-23 18:08:26 +01:00
Seraphima Zykova
767be1b698 Update tests-checklist-template.md 2023-02-07 15:52:12 +01:00
Seraphima Zykova
df8df4b4d3 Update tests-checklist-template.md 2023-02-07 15:48:20 +01:00
Jaime Bernardo
325179c508 Update tests-checklist-template.md 2023-02-07 12:41:44 +00:00
Seraphima Zykova
2423371db6 Update tests-checklist-template.md 2023-02-07 13:33:20 +01:00
Stefan Markovic
c7088c784d Update tests-checklist-template.md 2023-02-02 12:36:02 +01:00
Seraphima Zykova
40a3e41587 Update tests-checklist-seraphima.md 2023-01-31 20:31:53 +01:00
Jaime Bernardo
ada9d5cffa Update tests-checklist-jaime.md 2023-01-31 18:39:59 +00:00
Jaime Bernardo
529dfca120 Update tests-checklist-jaime.md 2023-01-31 18:36:09 +00:00
Jaime Bernardo
50bd17cef5 Update tests-checklist-jaime.md 2023-01-31 18:19:20 +00:00
Jaime Bernardo
4cc7a7c070 Update tests-checklist-jaime.md 2023-01-31 16:57:53 +00:00
Jaime Bernardo
7ab817fe27 Update tests-checklist-jaime.md 2023-01-31 16:45:04 +00:00
Seraphima Zykova
3bff297517 Update tests-checklist-seraphima.md 2023-01-31 17:39:37 +01:00
Jaime Bernardo
98465b0122 Update tests-checklist-jaime.md 2023-01-31 16:29:09 +00:00
Stefan Markovic
65102c1141 Update tests-checklist-stefan.md 2023-01-31 17:23:41 +01:00
Jaime Bernardo
948278884d Update tests-checklist-jaime.md 2023-01-31 16:21:49 +00:00
Jaime Bernardo
d94dba3506 Update tests-checklist-jaime.md 2023-01-31 16:11:32 +00:00
Stefan Markovic
0b38a69c0b Update tests-checklist-stefan.md 2023-01-31 16:31:43 +01:00
Jaime Bernardo
695824d3db Update tests-checklist-jaime.md 2023-01-31 15:13:31 +00:00
Stefan Markovic
c67fa8396b Update tests-checklist-stefan.md 2023-01-31 16:10:27 +01:00
Seraphima Zykova
ef95617c03 Update tests-checklist-seraphima.md 2023-01-31 15:57:13 +01:00
Jaime Bernardo
ab60578b4d Update tests-checklist-jaime.md 2023-01-31 14:11:39 +00:00
Stefan Markovic
4ebd614a87 Add FileLockmisth file explorer menu entry in Localization checks 2023-01-31 15:01:27 +01:00
Jaime Bernardo
81583102ba Checklists for 0.67 2023-01-31 11:23:49 +00:00
Jaime Bernardo
b061430c1a 0.67: udpate test groups for 5 2023-01-31 11:03:21 +00:00
Jaime Bernardo
2aaea3ab46 Add test checklist entries for 0.67 2023-01-31 10:35:33 +00:00
Jaime Bernardo
9cd18235da Update tests-checklist-jaime.md 2023-01-03 19:54:57 +00:00
Jaime Bernardo
816e8d6462 Update tests-checklist-jaime.md 2023-01-03 19:49:24 +00:00
Jaime Bernardo
f8c420cda5 Update tests-checklist-jaime.md 2023-01-03 19:30:33 +00:00
Jaime Bernardo
abb3d69c00 Update tests-checklist-jaime.md 2023-01-03 19:25:20 +00:00
Jaime Bernardo
e02e31ced3 Update tests-checklist-jaime.md 2023-01-03 19:04:43 +00:00
Jaime Bernardo
2993d91580 Update tests-checklist-jaime.md 2023-01-03 18:59:18 +00:00
Jaime Bernardo
edffb49c9f Update tests-checklist-jaime.md 2023-01-03 18:39:17 +00:00
Jaime Bernardo
08df962cd3 Update tests-checklist-jaime.md 2023-01-03 18:13:07 +00:00
Jaime Bernardo
c696c6480d Update tests-checklist-jaime.md 2023-01-03 18:08:45 +00:00
Jaime Bernardo
bce91f08cc Update tests-checklist-jaime.md 2023-01-03 17:52:49 +00:00
Jaime Bernardo
e8b1102c87 Update tests-checklist-jaime.md 2023-01-03 17:15:41 +00:00
Jaime Bernardo
e76558d555 Update tests-checklist-jaime.md 2023-01-03 16:58:21 +00:00
Jaime Bernardo
54024a3d0e Update tests-checklist-jaime.md 2023-01-03 16:49:56 +00:00
Jaime Bernardo
cb766ad0ed Checklist for 0.66 2023-01-03 14:48:41 +00:00
Jaime Bernardo
c7a991aa22 Add tests for new Settings 2023-01-03 14:01:59 +00:00
Jaime Bernardo
bb065937b5 Update tests-checklist-jaime.md 2022-12-05 17:20:28 +00:00
Jaime Bernardo
53b75f2d12 Update tests-checklist-jaime.md 2022-12-05 16:55:24 +00:00
Jaime Bernardo
d47a5eaa8b Update tests-checklist-jaime.md 2022-12-05 16:34:34 +00:00
Jaime Bernardo
4b73e22cf1 Update tests-checklist-jaime.md 2022-12-05 15:48:20 +00:00
Jaime Bernardo
220f7dc0b6 Update tests-checklist-jaime.md 2022-12-05 15:21:00 +00:00
Seraphima Zykova
ba74fd3e8d Update tests-checklist-seraphima.md 2022-12-05 16:20:32 +01:00
Jaime Bernardo
92969c23c5 Update tests-checklist-jaime.md 2022-12-05 13:14:13 +00:00
Jaime Bernardo
7563abace5 Update tests-checklist-jaime.md 2022-12-05 12:22:06 +00:00
Jaime Bernardo
8882c15372 Update tests-checklist-jaime.md 2022-12-05 11:38:52 +00:00
Jaime Bernardo
5981d0fa45 Checklists for 0.65 2022-12-05 10:23:46 +00:00
Taras
17940257fb [QuickAccent] Shift + Space to navigate backwards 2022-11-17 16:23:08 +02:00
Taras
9ebee55d3f Add Exclude apps for Quick Accent 2022-11-16 21:02:30 +02:00
Seraphima Zykova
6f869f0bf0 Update FancyZones tests 2022-11-03 13:54:17 +02:00
Seraphima Zykova
6cfd7d72bd Update tests-checklist-seraphima.md 2022-11-01 14:25:23 +02:00
Seraphima Zykova
837dbb5c42 Update tests-checklist-seraphima.md 2022-11-01 13:09:16 +02:00
Seraphima Zykova
d1c2623315 Update tests-checklist-seraphima.md 2022-11-01 12:39:11 +02:00
Stefan Markovic
1ac933a088 Update tests-checklist-stefan.md 2022-11-01 11:06:55 +01:00
Stefan Markovic
d5edc4b507 Update tests-checklist-stefan.md 2022-11-01 10:36:00 +01:00
Stefan Markovic
25ca8b9f4b Update tests-checklist-stefan.md 2022-11-01 10:24:23 +01:00
Stefan Markovic
4c926aa457 Update tests-checklist-stefan.md 2022-11-01 10:23:15 +01:00
Stefan Markovic
a2c358a49c Update tests-checklist-stefan.md 2022-11-01 10:12:53 +01:00
Stefan Markovic
3d5a7bf0a3 Update tests-checklist-stefan.md 2022-11-01 09:51:54 +01:00
Stefan Markovic
1d520250aa Update tests-checklist-stefan.md 2022-11-01 09:45:04 +01:00
Jaime Bernardo
c57cf0bc70 Update tests-checklist-jaime.md 2022-10-31 21:56:38 +00:00
Jaime Bernardo
8d36bbcdb4 Update tests-checklist-jaime.md 2022-10-31 21:52:35 +00:00
Jaime Bernardo
f4f4e535a0 Update tests-checklist-jaime.md 2022-10-31 21:31:31 +00:00
Jaime Bernardo
70a89c5888 Update tests-checklist-jaime.md 2022-10-31 21:19:16 +00:00
Jaime Bernardo
7a595f77cb Update tests-checklist-jaime.md 2022-10-31 21:15:51 +00:00
Jaime Bernardo
aba0545c9c Update tests-checklist-jaime.md 2022-10-31 21:09:12 +00:00
Jaime Bernardo
a3ac9cf691 Update tests-checklist-jaime.md 2022-10-31 20:58:30 +00:00
Jaime Bernardo
eef4929fc0 Update checklists for 0.64 FancyZones 2022-10-31 13:27:48 +00:00
Seraphima Zykova
cb8124b7d7 Update tests-checklist-template.md 2022-10-31 13:21:55 +02:00
Jaime Bernardo
b149d2c200 Checklists for 7 for 0.64 2022-10-30 16:12:18 +00:00
Jaime Bernardo
a74056cc6c Add new checklist entries for 0.64 2022-10-30 15:35:48 +00:00
Jaime Bernardo
149f509817 Update tests-checklist-jaime.md 2022-09-30 13:23:57 +01:00
Jaime Bernardo
d9a016a8a8 Update tests-checklist-jaime.md 2022-09-30 12:22:22 +01:00
Jaime Bernardo
29ca344cac Update tests-checklist-jaime.md 2022-09-30 12:00:59 +01:00
Jaime Bernardo
0833775bec Update tests-checklist-jaime.md 2022-09-30 11:54:37 +01:00
Jaime Bernardo
ba2a8900c5 Update tests-checklist-jaime.md 2022-09-30 11:46:20 +01:00
Seraphima Zykova
fb458dfddd Update tests-checklist-seraphima.md 2022-09-30 12:27:13 +02:00
Jaime Bernardo
d4141f98c8 Update tests-checklist-jaime.md 2022-09-30 11:20:03 +01:00
Stefan Markovic
d03f1be70f Update tests-checklist-stefan.md 2022-09-30 12:12:26 +02:00
Stefan Markovic
d76ce7cccf Update tests-checklist-stefan.md 2022-09-30 12:09:17 +02:00
Jaime Bernardo
b5875453e3 Update tests-checklist-jaime.md 2022-09-30 10:59:16 +01:00
Jaime Bernardo
3dd81254dd Update lists for 0.63.0 2022-09-29 16:11:20 +01:00
Jaime Bernardo
1927eaca97 Add Language to Quick Accent template 2022-09-29 15:47:50 +01:00
Andrey Nekrasov
cacc69f175 Update tests-checklist-template.md 2022-09-05 12:35:16 +03:00
Jaime Bernardo
07cbd4c259 Update tests-checklist-jaime.md 2022-09-02 15:17:08 +01:00
Jaime Bernardo
1587198b6f Update tests-checklist-jaime.md 2022-09-02 15:10:40 +01:00
Jaime Bernardo
de1c564b37 Update tests-checklist-jaime.md 2022-09-02 14:51:14 +01:00
Jaime Bernardo
3dab762ecd Update tests-checklist-jaime.md 2022-09-02 14:36:29 +01:00
Seraphima Zykova
1d16c16785 Update tests-checklist-seraphima.md 2022-09-02 13:19:32 +02:00
Andrey Nekrasov
decbb030cb Update tests-checklist-andrey.md 2022-09-01 23:58:16 +03:00
Andrey Nekrasov
466a382eaa Update tests-checklist-andrey.md 2022-09-01 20:51:34 +03:00
Jaime Bernardo
b5cd846cbd Add test lists for 0.62.0 2022-09-01 16:08:45 +01:00
Jaime Bernardo
72832b5ac2 Add new utilities to the checklist 2022-09-01 15:35:53 +01:00
Jaime Bernardo
692ed30413 Update tests-checklist-template.md 2022-08-26 14:55:06 +01:00
Jaime Bernardo
043ccd7063 Update tests-checklist-jaime.md 2022-07-28 13:31:21 +01:00
Jaime Bernardo
47431c27b0 Update tests-checklist-jaime.md 2022-07-28 12:25:58 +01:00
Jaime Bernardo
906c62038a Update tests-checklist-jaime.md 2022-07-28 12:12:28 +01:00
Jaime Bernardo
204f8970b2 Update tests-checklist-jaime.md 2022-07-28 11:51:29 +01:00
Stefan Markovic
1a97524e20 Update tests-checklist-stefan.md 2022-07-28 09:15:17 +02:00
Stefan Markovic
af9d610d42 Update tests-checklist-stefan.md 2022-07-28 08:54:21 +02:00
Stefan Markovic
0034db1372 Update tests-checklist-stefan.md 2022-07-28 08:45:45 +02:00
Jaime Bernardo
d8826366c0 Add test lists for 0.61 2022-07-27 17:51:57 +01:00
Jaime Bernardo
17b81df79a Update tests-checklist-jaime.md 2022-07-05 15:02:18 +01:00
Jaime Bernardo
6e2ba2a937 Update tests-checklist-jaime.md 2022-07-05 14:45:35 +01:00
Jaime Bernardo
ec806e65d6 Update tests-checklist-jaime.md 2022-07-05 14:13:16 +01:00
Jaime Bernardo
21fd11d14e Update tests-checklist-jaime.md 2022-07-05 11:39:12 +01:00
Jaime Bernardo
3b8777bc24 Update tests-checklist-jaime.md 2022-07-05 11:21:55 +01:00
Jaime Bernardo
47561b2202 Update tests-checklist-jaime.md 2022-07-05 11:21:28 +01:00
Jaime Bernardo
8df9fd7696 Add test lists for 0.60 2022-07-04 21:35:05 +01:00
Jaime Bernardo
17081b92d5 Update tests-checklist-template.md 2022-06-13 15:40:49 +01:00
Jaime Bernardo
1da1321d78 Update tests-checklist-template.md 2022-05-31 09:04:27 +01:00
Jaime Bernardo
f69cf9a0e1 Update tests-checklist-jaime.md 2022-05-30 17:11:01 +01:00
Jaime Bernardo
c6d1b0f4f1 Update tests-checklist-jaime.md 2022-05-30 16:35:24 +01:00
Jaime Bernardo
72d1ff6720 Update tests-checklist-jaime.md 2022-05-30 16:17:22 +01:00
Jaime Bernardo
5467ee7113 Update tests-checklist-jaime.md 2022-05-30 16:12:51 +01:00
Stefan Markovic
f52c813097 Update tests-checklist-stefan.md 2022-05-30 16:54:36 +02:00
Jaime Bernardo
edaeaecabd Update tests-checklist-jaime.md 2022-05-30 15:52:20 +01:00
Jaime Bernardo
f1e26b5033 Update tests-checklist-jaime.md 2022-05-30 15:21:18 +01:00
Stefan Markovic
da4f36b90f Update tests-checklist-stefan.md 2022-05-30 16:16:52 +02:00
Stefan Markovic
a0f97a57a0 Update tests-checklist-stefan.md 2022-05-30 15:45:16 +02:00
Jaime Bernardo
3782acf3df Update tests-checklist-jaime.md 2022-05-30 13:53:54 +01:00
Jaime Bernardo
b43910ea8b Add test lists for 0.59 2022-05-30 13:04:15 +01:00
Jaime Bernardo
ca00b92ca3 Update tests-checklist-jaime.md 2022-04-28 19:54:10 +01:00
Jaime Bernardo
e382f29775 Update tests-checklist-jaime.md 2022-04-28 19:18:58 +01:00
Jaime Bernardo
8d210ceaa1 Update tests-checklist-jaime.md 2022-04-28 19:09:19 +01:00
Jaime Bernardo
4e36a01721 Update tests-checklist-jaime.md 2022-04-28 17:38:24 +01:00
Jaime Bernardo
e91c3e94a5 Update tests-checklist-jaime.md 2022-04-28 16:49:58 +01:00
Jaime Bernardo
42434ad040 Update tests-checklist-jaime.md 2022-04-28 15:13:10 +01:00
Stefan Markovic
08c1e92690 Update tests-checklist-stefan.md 2022-04-28 15:32:45 +02:00
Stefan Markovic
0ca8434392 Update tests-checklist-stefan.md 2022-04-28 15:31:57 +02:00
Jaime Bernardo
1ca74813a4 Update tests-checklist-jaime.md 2022-04-28 14:11:51 +01:00
Stefan Markovic
9ca02b06b3 Update tests-checklist-stefan.md 2022-04-28 15:07:56 +02:00
Stefan Markovic
416ca196f9 Update tests-checklist-stefan.md 2022-04-28 14:56:31 +02:00
Stefan Markovic
163c2192b8 Update tests-checklist-stefan.md 2022-04-28 14:51:31 +02:00
Stefan Markovic
182a4facdc Update tests-checklist-stefan.md 2022-04-28 14:26:56 +02:00
Stefan Markovic
6851433233 Update tests-checklist-stefan.md 2022-04-28 13:36:52 +02:00
Jaime Bernardo
c8050dcad4 Add checklists for 0.58.0 2022-04-27 21:19:20 +01:00
Jaime Bernardo
b4b553fc29 Update tests-checklist-ilia.md 2022-03-29 20:16:49 +01:00
Jaime Bernardo
3a26850a2e Update tests-checklist-andrey.md 2022-03-29 17:24:08 +01:00
Jaime Bernardo
51193c0f93 Update tests-checklist-jaime.md 2022-03-29 16:59:31 +01:00
Jaime Bernardo
75a5eff759 Update tests-checklist-jaime.md 2022-03-29 16:17:56 +01:00
Jaime Bernardo
f3e8211d22 Update tests-checklist-jaime.md 2022-03-29 14:54:07 +01:00
Jaime Bernardo
2b19ce0a0d Update tests-checklist-jaime.md 2022-03-29 14:42:11 +01:00
Jaime Bernardo
9b041cc521 Update tests-checklist-jaime.md 2022-03-29 14:24:57 +01:00
Jaime Bernardo
3b26f532df Update tests-checklist-jaime.md 2022-03-29 14:11:57 +01:00
Jaime Bernardo
c5e8bfeea8 Update tests-checklist-jaime.md 2022-03-29 14:05:02 +01:00
Jaime Bernardo
79c260ab1b Update tests-checklist-seraphima.md 2022-03-29 13:58:01 +01:00
Stefan Markovic
0ce66df5eb Update tests-checklist-stefan.md 2022-03-29 13:43:47 +02:00
Stefan Markovic
ea058cfca5 Update tests-checklist-stefan.md 2022-03-29 13:35:49 +02:00
Stefan Markovic
6a4109f2f7 Update tests-checklist-stefan.md 2022-03-29 13:27:29 +02:00
Stefan Markovic
243b805891 Update tests-checklist-stefan.md 2022-03-29 13:22:42 +02:00
Jaime Bernardo
d88d554af8 checklists for 0.57 2022-03-28 18:37:32 +01:00
Seraphima Zykova
99533b4bc9 Update tests-checklist-seraphima.md 2022-02-24 20:20:12 +03:00
Jaime Bernardo
61a8f04bc7 Update tests-checklist-jaime.md 2022-02-24 16:07:26 +00:00
Jaime Bernardo
40694cb5d3 Update tests-checklist-jaime.md 2022-02-24 15:43:36 +00:00
Jaime Bernardo
8d5656a074 Update tests-checklist-jaime.md 2022-02-24 15:35:02 +00:00
Jaime Bernardo
72f1b35fe7 Update tests-checklist-jaime.md 2022-02-24 15:27:49 +00:00
Jaime Bernardo
46897d3527 Update tests-checklist-jaime.md 2022-02-24 15:13:27 +00:00
Jaime Bernardo
1b2c93e616 Update tests-checklist-jaime.md 2022-02-24 15:05:22 +00:00
Jaime Bernardo
1f7377da01 Update tests-checklist-jaime.md 2022-02-24 14:55:23 +00:00
Jaime Bernardo
76ee54a3ff Update tests-checklist-jaime.md 2022-02-24 13:46:54 +00:00
Jaime Bernardo
d3c9837581 Update tests-checklist-jaime.md 2022-02-24 13:39:06 +00:00
Jaime Bernardo
bd5c924983 Update tests-checklist-jaime.md 2022-02-24 12:44:45 +00:00
Jaime Bernardo
4dda6b1294 Update tests-checklist-jaime.md 2022-02-24 12:16:50 +00:00
Jaime Bernardo
5971d36d62 Update tests-checklist-jaime.md 2022-02-24 12:09:49 +00:00
Seraphima Zykova
a5f023145f Update tests-checklist-seraphima.md 2022-02-24 14:13:27 +03:00
Seraphima Zykova
9d7897852e Update tests-checklist-seraphima.md 2022-02-24 13:56:21 +03:00
Seraphima Zykova
717da9d362 Update tests-checklist-seraphima.md 2022-02-24 13:52:48 +03:00
Seraphima Zykova
bd1472a844 Update tests-checklist-seraphima.md 2022-02-24 13:46:04 +03:00
Seraphima Zykova
601c1f3a27 Update tests-checklist-seraphima.md 2022-02-24 13:38:59 +03:00
Seraphima Zykova
f54054eb15 Update tests-checklist-seraphima.md 2022-02-24 13:08:59 +03:00
Stefan Markovic
3ed22218af Update tests-checklist-stefan.md 2022-02-24 10:35:51 +01:00
Stefan Markovic
0195673ee5 Update tests-checklist-stefan.md 2022-02-24 10:29:09 +01:00
Stefan Markovic
f8ac59ea1a Update tests-checklist-stefan.md 2022-02-24 09:57:18 +01:00
Stefan Markovic
bd0907ec7f Update tests-checklist-stefan.md 2022-02-24 09:50:55 +01:00
Stefan Markovic
3a906f01c2 Update tests-checklist-stefan.md 2022-02-24 09:27:35 +01:00
Stefan Markovic
72e1dde777 Update tests-checklist-stefan.md 2022-02-24 00:42:28 +01:00
Stefan Markovic
72b5e61323 Update tests-checklist-stefan.md 2022-02-24 00:38:20 +01:00
Stefan Markovic
e33a4265ab Update tests-checklist-stefan.md 2022-02-24 00:33:30 +01:00
Stefan Markovic
ae6b98d3c2 Update tests-checklist-stefan.md 2022-02-24 00:30:03 +01:00
Stefan Markovic
0bb88846d2 Update tests-checklist-stefan.md 2022-02-24 00:27:38 +01:00
Jaime Bernardo
287366fe6e Tweak test groups for 3 2022-02-23 22:10:55 +00:00
Jaime Bernardo
e0c68825e3 Update checklists for 0.56 2022-02-23 22:03:41 +00:00
Jaime Bernardo
417db59404 Add tests to template 2022-02-23 21:55:42 +00:00
Jaime Bernardo
b64a41262c Update tests-checklist-jaime.md 2022-01-28 18:02:53 +00:00
Jaime Bernardo
e33b0474e6 Update tests-checklist-jaime.md 2022-01-28 17:39:33 +00:00
Jaime Bernardo
265b5d5b00 Update tests-checklist-jaime.md 2022-01-28 17:03:52 +00:00
Jaime Bernardo
8a5020cd8e Update tests-checklist-jaime.md 2022-01-28 16:57:01 +00:00
Jaime Bernardo
afc4556bdf Update tests-checklist-jaime.md 2022-01-28 16:36:08 +00:00
Jaime Bernardo
b0cc84ba41 Update tests-checklist-jaime.md 2022-01-28 16:22:29 +00:00
Jaime Bernardo
fa904a20f5 Update tests-checklist-jaime.md 2022-01-28 16:06:34 +00:00
Stefan Markovic
1ef6c10445 Update tests-checklist-stefan.md 2022-01-28 17:02:45 +01:00
Jaime Bernardo
62fd4778c3 Update tests-checklist-jaime.md 2022-01-28 15:44:14 +00:00
Jaime Bernardo
d838192819 Update tests-checklist-template.md 2022-01-28 15:41:43 +00:00
Seraphima Zykova
fdb60a88bc Update tests-checklist-seraphima.md 2022-01-28 14:36:50 +00:00
Seraphima Zykova
9eb310808c Update tests-checklist-seraphima.md 2022-01-28 14:36:27 +00:00
Seraphima Zykova
de72e9a410 Update tests-checklist-seraphima.md 2022-01-28 13:47:53 +00:00
Seraphima Zykova
75d8cc9323 Update tests-checklist-seraphima.md 2022-01-28 12:44:12 +00:00
Seraphima Zykova
68d2abb7e4 Update tests-checklist-seraphima.md 2022-01-28 12:36:03 +00:00
Andrey Nekrasov
a34e51a2f7 Update tests-checklist-andrey.md 2022-01-28 15:23:34 +03:00
Seraphima Zykova
93746efea7 Update tests-checklist-seraphima.md 2022-01-28 11:34:27 +00:00
Stefan Markovic
9813564213 Update tests-checklist-stefan.md 2022-01-28 11:32:04 +01:00
Stefan Markovic
ee74c9d920 Update tests-checklist-stefan.md 2022-01-28 11:27:41 +01:00
Stefan Markovic
239d78d504 Update tests-checklist-stefan.md 2022-01-28 11:16:18 +01:00
Stefan Markovic
22a9d8d75d Update tests-checklist-stefan.md 2022-01-28 10:41:53 +01:00
Stefan Markovic
6e35755f6b Update tests-checklist-stefan.md 2022-01-28 10:38:55 +01:00
Stefan Markovic
5db9ce7007 Update tests-checklist-stefan.md 2022-01-28 10:25:42 +01:00
Stefan Markovic
838e667462 Update tests-checklist-stefan.md 2022-01-28 10:18:02 +01:00
Stefan Markovic
939a982311 Update tests-checklist-stefan.md 2022-01-28 10:10:37 +01:00
Stefan Markovic
4434f05466 Update tests-checklist-stefan.md 2022-01-28 10:06:19 +01:00
Jaime Bernardo
1d47dc1a6b Create tests-checklist-stefan.md 2022-01-28 00:09:24 +00:00
Jaime Bernardo
7f63468f15 Create tests-checklist-seraphima.md 2022-01-28 00:09:07 +00:00
Jaime Bernardo
3c7ace8300 Create tests-checklist-jaime.md 2022-01-28 00:08:47 +00:00
Jaime Bernardo
7a139a4085 Create tests-checklist-andrey.md 2022-01-28 00:08:19 +00:00
Jaime Bernardo
a7ec20ad22 Update test-groups-for-4.md 2022-01-28 00:07:18 +00:00
Jaime Bernardo
8ce1d0188b Update test-groups-for-4.md 2022-01-27 23:40:47 +00:00
Jaime Bernardo
d2b491f07d Update tests-checklist-template.md 2022-01-27 23:38:45 +00:00
Jaime Bernardo
bfaa462be5 Update tests-checklist-template.md 2022-01-27 23:32:17 +00:00
Seraphima Zykova
56d35966bd Update tests-checklist-template.md 2022-01-27 19:07:59 +00:00
Jaime Bernardo
3bb2750478 Update tests-checklist-jaime.md 2022-01-06 13:50:15 +00:00
Jaime Bernardo
1d04ab971d Update tests-checklist-jaime.md 2022-01-06 13:35:55 +00:00
Jaime Bernardo
604a72c2f0 Update tests-checklist-jaime.md 2022-01-06 13:30:47 +00:00
Jaime Bernardo
0de7e48ccb Update tests-checklist-jaime.md 2022-01-06 13:20:01 +00:00
Jaime Bernardo
d7059abcf2 Update tests-checklist-jaime.md 2022-01-06 13:04:18 +00:00
Jaime Bernardo
9fe6e5c66d Update tests-checklist-jaime.md 2022-01-06 12:58:10 +00:00
Jaime Bernardo
f3b2f702bc Update tests-checklist-jaime.md 2022-01-06 12:55:42 +00:00
Jaime Bernardo
54553fe680 Update tests-checklist-jaime.md 2022-01-06 12:35:09 +00:00
Jaime Bernardo
0a581841dc Update tests-checklist-jaime.md 2022-01-06 12:22:49 +00:00
Stefan Markovic
3eecb434ba Update tests-checklist-stefan.md 2022-01-06 13:17:29 +01:00
Jaime Bernardo
a4cfda8175 Update tests-checklist-jaime.md 2022-01-06 12:07:19 +00:00
Jaime Bernardo
1fb68df0ab Update tests-checklist-jaime.md 2022-01-06 11:54:34 +00:00
Jaime Bernardo
6bfe0ced51 Update tests-checklist-template.md 2022-01-06 11:48:13 +00:00
Stefan Markovic
6562ab132f Update tests-checklist-stefan.md 2022-01-06 12:47:53 +01:00
Jaime Bernardo
861f5e50d7 Update tests-checklist-tameem.md 2022-01-06 11:47:46 +00:00
Jaime Bernardo
ff20f119c2 Update tests-checklist-jaime.md 2022-01-06 11:46:44 +00:00
Stefan Markovic
dc7f683cd6 Update tests-checklist-stefan.md 2022-01-06 12:36:16 +01:00
Jaime Bernardo
2621c4e40e Update tests-checklist-jaime.md 2022-01-06 11:34:00 +00:00
Stefan Markovic
e1c4d4d004 Update tests-checklist-stefan.md 2022-01-06 12:13:47 +01:00
Jaime Bernardo
f3ccc53586 Update tests-checklist-jaime.md 2022-01-06 11:12:03 +00:00
Jaime Bernardo
3ac073a2c0 Update tests-checklist-jaime.md 2022-01-06 11:04:20 +00:00
Stefan Markovic
dd0a5e391a Update tests-checklist-stefan.md 2022-01-06 11:55:44 +01:00
Jaime Bernardo
f7945457c0 Update tests-checklist-template.md 2022-01-06 10:49:37 +00:00
Jaime Bernardo
9a767b3014 Update tests-checklist-jaime.md 2022-01-06 10:49:03 +00:00
Stefan Markovic
175dd8a4d1 Update tests-checklist-stefan.md 2022-01-06 11:37:01 +01:00
Stefan Markovic
0baeb1c230 Update tests-checklist-stefan.md 2022-01-06 11:04:12 +01:00
Stefan Markovic
393d617393 Update tests-checklist-stefan.md 2022-01-06 10:53:47 +01:00
Stefan Markovic
d287d7ff76 Update tests-checklist-stefan.md 2022-01-06 10:44:01 +01:00
Stefan Markovic
dbf8e31de9 Update tests-checklist-stefan.md 2022-01-06 10:34:49 +01:00
Stefan Markovic
b44b70d8a6 Update tests-checklist-stefan.md 2022-01-06 10:27:11 +01:00
Stefan Markovic
ae1c3b6d71 Update tests-checklist-stefan.md 2022-01-06 10:04:27 +01:00
Stefan Markovic
877699fee4 Update tests-checklist-stefan.md 2022-01-06 09:20:56 +01:00
Stefan Markovic
07250c6211 Update tests-checklist-stefan.md 2022-01-06 09:16:16 +01:00
Stefan Markovic
8e81033fa4 Update tests-checklist-stefan.md 2022-01-06 09:04:46 +01:00
Jaime Bernardo
310595c8bb Add checklists for 0.53 2022-01-05 22:31:52 +00:00
Jaime Bernardo
55a74129e8 Add Always on top and awake to template 2022-01-05 22:10:53 +00:00
Jaime Bernardo
91cd82c756 Update tests-checklist-jaime.md 2021-11-25 17:46:08 +00:00
Jaime Bernardo
74c8d15a43 Update tests-checklist-jaime.md 2021-11-25 17:26:24 +00:00
Jaime Bernardo
f3d2881c71 Update tests-checklist-jaime.md 2021-11-25 17:02:10 +00:00
Jaime Bernardo
b20deac845 Update tests-checklist-jaime.md 2021-11-25 15:34:53 +00:00
Andrey Nekrasov
9c547513a6 Update tests-checklist-andrey.md 2021-11-25 18:32:51 +03:00
Stefan Markovic
81f3606a95 Update tests-checklist-stefan.md 2021-11-25 16:19:47 +01:00
Stefan Markovic
aa235be1bc Update tests-checklist-stefan.md 2021-11-25 15:59:51 +01:00
Stefan Markovic
1200fd54d0 Update tests-checklist-stefan.md 2021-11-25 15:59:15 +01:00
Seraphima Zykova
433dd3f5a6 Update tests-checklist-seraphima.md 2021-11-25 14:48:29 +00:00
Stefan Markovic
4a75203883 Update tests-checklist-stefan.md 2021-11-25 15:45:15 +01:00
Stefan Markovic
5b309cbefb Update tests-checklist-stefan.md 2021-11-25 14:03:31 +01:00
Stefan Markovic
94ad171196 Update tests-checklist-stefan.md 2021-11-25 13:16:28 +01:00
Stefan Markovic
2c8afc1881 Update tests-checklist-stefan.md 2021-11-25 12:12:38 +01:00
Stefan Markovic
7630a3eaa8 Update tests-checklist-stefan.md 2021-11-25 11:34:00 +01:00
Stefan Markovic
c924e4db88 Update tests-checklist-stefan.md 2021-11-25 11:28:00 +01:00
Jaime Bernardo
381baaa521 Rename tests-checlist-tameem-md to tests-checklist-tameem.md 2021-11-25 10:18:54 +00:00
Jaime Bernardo
a0ecbc39d8 Checklists for 0.51 2021-11-25 10:08:54 +00:00
Jaime Bernardo
210142915a Update tests-checklist-template.md 2021-11-24 23:28:36 +00:00
Andrey Nekrasov
65bf291b3c Update tests-checklist-template.md 2021-10-27 18:48:56 +03:00
Andrey Nekrasov
70712debf4 Update tests-checklist-template.md 2021-10-27 18:48:47 +03:00
Andrey Nekrasov
525027a404 Update test-groups-for-3.md 2021-10-27 18:48:08 +03:00
Andrey Nekrasov
db6b1cc84e Update tests-checklist-andrey.md 2021-10-27 17:41:10 +03:00
Jaime Bernardo
a11c60838c Update tests-checklist-jaime.md 2021-10-26 23:26:40 +01:00
Jaime Bernardo
587cfe2701 Update tests-checklist-jaime.md 2021-10-26 23:23:29 +01:00
Jaime Bernardo
d826717793 Update tests-checklist-jaime.md 2021-10-26 23:19:59 +01:00
Jaime Bernardo
24698a7ab9 Update tests-checklist-jaime.md 2021-10-26 23:06:18 +01:00
Jaime Bernardo
2ba18f746a Update tests-checklist-jaime.md 2021-10-26 22:44:22 +01:00
Jaime Bernardo
ff0905d474 Update tests-checklist-jaime.md 2021-10-26 22:22:52 +01:00
Jaime Bernardo
b6b42c68e9 Update tests-checklist-template.md 2021-10-26 22:16:53 +01:00
Seraphima Zykova
2b6b16e389 Update tests-checklist-seraphima.md 2021-10-26 19:07:59 +01:00
Seraphima Zykova
e52a9624ea Update tests-checklist-seraphima.md 2021-10-26 18:10:19 +01:00
Jaime Bernardo
7d03095c7d Update tests-checklist-jaime.md 2021-10-26 18:08:40 +01:00
Jaime Bernardo
4773cb983b Update tests-checklist-jaime.md 2021-10-26 18:05:09 +01:00
Seraphima Zykova
aec91a25d2 Update tests-checklist-seraphima.md 2021-10-26 17:57:31 +01:00
Jaime Bernardo
e7466e162b Update tests-checklist-template.md 2021-10-26 17:56:27 +01:00
Jaime Bernardo
a077cd3ca5 Update tests-checklist-jaime.md 2021-10-26 17:21:42 +01:00
Stefan Markovic
6d59a9ec05 Update tests-checklist-stefan.md 2021-10-26 18:14:00 +02:00
Seraphima Zykova
58b1f75d93 Update tests-checklist-seraphima.md 2021-10-26 17:12:04 +01:00
Seraphima Zykova
22b8e99da4 Update tests-checklist-seraphima.md 2021-10-26 16:37:41 +01:00
Seraphima Zykova
d0634e01a8 Update tests-checklist-seraphima.md 2021-10-26 16:33:14 +01:00
Stefan Markovic
e4c4e15348 Update tests-checklist-stefan.md 2021-10-26 16:23:51 +02:00
Stefan Markovic
44db739e6d Update tests-checklist-stefan.md 2021-10-26 14:54:42 +02:00
Stefan Markovic
ae4b291c67 Update tests-checklist-stefan.md 2021-10-26 14:50:10 +02:00
Stefan Markovic
f567f6a9b5 Update tests-checklist-stefan.md 2021-10-26 14:45:18 +02:00
Stefan Markovic
2bc0d39e70 Update tests-checklist-stefan.md 2021-10-26 12:23:53 +02:00
Jaime Bernardo
0798030e0b Checklists for 0.49 2021-10-26 10:40:59 +01:00
Jaime Bernardo
e5ae3f93aa Update checklist template with Find My Mouse 2021-10-26 10:40:36 +01:00
Seraphima Zykova
1c3fed6b27 Update tests-checklist-template.md 2021-10-11 16:52:36 +01:00
Jaime Bernardo
28cf763648 Update tests-checklist-jaime.md 2021-09-27 17:58:42 +01:00
Jaime Bernardo
7be73bc005 Update tests-checklist-jaime.md 2021-09-27 17:15:14 +01:00
Andrey Nekrasov
176c7790cc Update tests-checklist-andrey.md 2021-09-27 16:50:55 +03:00
Seraphima Zykova
a04096646f Update tests-checklist-seraphima.md 2021-09-27 14:06:36 +01:00
Stefan Markovic
9b33c9adcf Update tests-checklist-stefan.md 2021-09-27 13:03:53 +02:00
Stefan Markovic
c1cf59f5a7 Update tests-checklist-stefan.md 2021-09-27 12:53:30 +02:00
Stefan Markovic
84db32ba42 Update tests-checklist-stefan.md 2021-09-27 12:17:51 +02:00
Stefan Markovic
dcfba5736c Update tests-checklist-stefan.md 2021-09-27 11:51:11 +02:00
Stefan Markovic
b850fa0f78 Update tests-checklist-stefan.md 2021-09-27 11:34:47 +02:00
Stefan Markovic
c856e7f1be Update tests-checklist-stefan.md 2021-09-27 10:44:35 +02:00
Jaime Bernardo
47b585a596 Checklists for 0.47.0 2021-09-26 20:53:38 +01:00
Jaime Bernardo
90b54dcd51 Add Windows key press to the items to test 2021-09-26 20:41:55 +01:00
Jaime Bernardo
b8fd29947e Update tests-checklist-jaime.md 2021-08-27 16:49:45 +01:00
Andrey Nekrasov
f339bceae6 Update tests-checklist-andrey.md 2021-08-27 16:27:48 +03:00
Andrey Nekrasov
365b4dc0ed Update tests-checklist-andrey.md 2021-08-27 16:15:08 +03:00
Jaime Bernardo
dd898aa05c Update tests-checklist-jaime.md 2021-08-27 13:58:41 +01:00
Jaime Bernardo
3ba97b9312 Update tests-checklist-jaime.md 2021-08-27 13:05:55 +01:00
Jaime Bernardo
7dfb0eb3fc Update tests-checklist-jaime.md 2021-08-27 12:40:37 +01:00
Seraphima Zykova
8d4ecfa09e Update tests-checklist-seraphima.md 2021-08-27 12:27:28 +01:00
Jaime Bernardo
3d3e6e8a3e Update tests-checklist-jaime.md 2021-08-27 12:20:11 +01:00
Jaime Bernardo
95fad56036 Update tests-checklist-jaime.md 2021-08-27 11:48:04 +01:00
Stefan Markovic
6b78d09d3b Update tests-checklist-stefan.md 2021-08-27 12:42:06 +02:00
Seraphima Zykova
3dbdb5d5e5 Update tests-checklist-seraphima.md 2021-08-27 11:36:11 +01:00
Jaime Bernardo
6397b0ce82 Update tests-checklist-jaime.md 2021-08-27 11:29:59 +01:00
Seraphima Zykova
83a58868be Update tests-checklist-seraphima.md 2021-08-27 11:20:13 +01:00
Stefan Markovic
3001779e10 Update tests-checklist-stefan.md 2021-08-27 11:36:15 +02:00
Andrey Nekrasov
bd7b01a937 Update tests-checklist-andrey.md 2021-08-27 12:02:02 +03:00
Stefan Markovic
942eed2ac8 Update tests-checklist-stefan.md 2021-08-27 10:20:53 +02:00
Stefan Markovic
eb9fa0837f Update tests-checklist-stefan.md 2021-08-27 10:12:35 +02:00
Stefan Markovic
b6698b9c8f Update tests-checklist-stefan.md 2021-08-27 09:44:03 +02:00
Stefan Markovic
2cbac3384a Update tests-checklist-stefan.md 2021-08-27 09:43:44 +02:00
Stefan Markovic
b944cffc4c Update tests-checklist-stefan.md 2021-08-27 09:35:40 +02:00
Jaime Bernardo
78a28aa8a1 Checklist for 0.45.0 2021-08-26 22:19:10 +01:00
Jaime Bernardo
a745a53f29 Remove workflows from the releaseChecklist branch 2021-08-26 21:54:07 +01:00
Jaime Bernardo
1c827c7a7c [spellchecker] Add cleanmgr to expect.txt 2021-07-29 18:20:03 +01:00
Jaime Bernardo
b77cbf2f4c Update tests-checklist-jaime.md 2021-07-29 16:27:20 +01:00
Jaime Bernardo
53ef9fc19d Update tests-checklist-jaime.md 2021-07-29 15:00:52 +01:00
Jaime Bernardo
b559bd0a3a Update tests-checklist-jaime.md 2021-07-29 14:38:36 +01:00
Jaime Bernardo
ad7b950ddf Update tests-checklist-jaime.md 2021-07-29 14:28:59 +01:00
Jaime Bernardo
2b1a8972ef Update tests-checklist-template.md 2021-07-29 14:20:30 +01:00
Andrey Nekrasov
91ffdf056d Update tests-checklist-andrey.md 2021-07-29 15:59:11 +03:00
Jaime Bernardo
d41dff44fc Update tests-checklist-template.md 2021-07-29 13:57:29 +01:00
Jaime Bernardo
7ed4bcf196 Update tests-checklist-template.md 2021-07-29 13:36:59 +01:00
Mykhailo Pylyp
c48a41c07a Update tests-checklist-mykhailo.md 2021-07-29 15:28:32 +03:00
Jaime Bernardo
e6126a4e84 Update tests-checklist-jaime.md 2021-07-29 13:26:48 +01:00
Stefan Markovic
625573e5dc Update tests-checklist-stefan.md 2021-07-29 14:15:58 +02:00
Mykhailo Pylyp
4a13fb00d1 Update tests-checklist-mykhailo.md 2021-07-29 14:36:33 +03:00
Mykhailo Pylyp
df31ac8497 Update tests-checklist-mykhailo.md 2021-07-29 14:12:43 +03:00
Stefan Markovic
5a9c13a55c Update tests-checklist-stefan.md 2021-07-29 13:05:57 +02:00
Stefan Markovic
bf1ddf0279 Update tests-checklist-stefan.md 2021-07-29 12:34:05 +02:00
Stefan Markovic
794f9c0bf7 Update tests-checklist-stefan.md 2021-07-29 12:20:11 +02:00
Mykhailo Pylyp
459ff1fc05 Update tests-checklist-mykhailo.md 2021-07-29 13:19:28 +03:00
Mykhailo Pylyp
382557fcbf Update tests-checklist-mykhailo.md 2021-07-29 13:12:59 +03:00
Seraphima Zykova
ea42b346ef Update tests-checklist-seraphima.md 2021-07-29 10:58:54 +01:00
Stefan Markovic
f85c805640 Update tests-checklist-stefan.md 2021-07-29 11:55:25 +02:00
Seraphima Zykova
90e36b802b Update tests-checklist-seraphima.md 2021-07-29 10:44:47 +01:00
Seraphima Zykova
6fdfebf0c6 Update tests-checklist-seraphima.md 2021-07-29 10:36:33 +01:00
Seraphima Zykova
749405d7f1 Update tests-checklist-seraphima.md 2021-07-29 10:15:31 +01:00
Stefan Markovic
0a629c464c Update tests-checklist-stefan.md 2021-07-29 11:08:45 +02:00
Seraphima Zykova
43a834060c Update tests-checklist-seraphima.md 2021-07-29 09:01:54 +01:00
Jaime Bernardo
a0ccaa0701 Checklist for 0.43.0 2021-07-28 18:44:37 +01:00
Mykhailo Pylyp
f3855c633d Update tests-checklist-mykhailo.md 2021-06-24 17:29:52 +03:00
Mykhailo Pylyp
b41931d3eb Update tests-checklist-mykhailo.md 2021-06-24 17:25:26 +03:00
Mykhailo Pylyp
699d753dfb Update tests-checklist-mykhailo.md 2021-06-24 17:23:40 +03:00
Seraphima Zykova
2e7e4aad45 Update tests-checklist-seraphima.md 2021-06-24 14:38:31 +01:00
Andrey Nekrasov
5bffced4b4 Update tests-checklist-andrey.md 2021-06-24 16:11:15 +03:00
Seraphima Zykova
9ef73afc2b Update tests-checklist-seraphima.md 2021-06-24 14:10:45 +01:00
Andrey Nekrasov
1c3839e0d3 Update tests-checklist-andrey.md 2021-06-24 15:39:59 +03:00
Seraphima Zykova
92b640581b Update tests-checklist-seraphima.md 2021-06-24 12:23:01 +01:00
Mykhailo Pylyp
0c586c07bb Update tests-checklist-mykhailo.md 2021-06-24 14:22:17 +03:00
Seraphima Zykova
395be489f9 Update tests-checklist-seraphima.md 2021-06-24 12:00:58 +01:00
Seraphima Zykova
522c375d91 Update tests-checklist-seraphima.md 2021-06-24 11:49:51 +01:00
Mykhailo Pylyp
d9b082c499 Update tests-checklist-mykhailo.md 2021-06-24 13:41:44 +03:00
Seraphima Zykova
0fa87ae06b Update tests-checklist-seraphima.md 2021-06-24 11:31:17 +01:00
Seraphima Zykova
7a0b791bf9 Update tests-checklist-seraphima.md 2021-06-24 11:30:38 +01:00
Seraphima Zykova
462ddee63e Update tests-checklist-seraphima.md 2021-06-24 10:55:41 +01:00
Mykhailo Pylyp
b0572fa28b Update tests-checklist-mykhailo.md 2021-06-24 12:50:25 +03:00
Seraphima Zykova
6e1a53fb2a Update tests-checklist-seraphima.md 2021-06-24 10:49:18 +01:00
Mykhailo Pylyp
e4e9759564 Update tests-checklist-template.md 2021-06-24 12:41:56 +03:00
Seraphima Zykova
2893420120 Update tests-checklist-seraphima.md 2021-06-24 10:40:33 +01:00
Mykhailo Pylyp
ab28b43d83 Update tests-checklist-mykhailo.md 2021-06-24 12:08:18 +03:00
Mykhailo Pylyp
9917c86781 Update tests-checklist-mykhailo.md 2021-06-24 12:03:10 +03:00
Mykhailo Pylyp
4973f715e5 Update tests-checklist-mykhailo.md 2021-06-24 11:51:22 +03:00
mykhailopylyp
0702c8e602 Checklist for 0.41.0 2021-06-24 11:34:03 +03:00
Seraphima Zykova
3ee89a2520 Update tests-checklist-seraphima.md 2021-05-26 14:18:41 +01:00
Seraphima Zykova
85304529e1 Update tests-checklist-seraphima.md 2021-05-26 12:57:40 +01:00
Andrey Nekrasov
516a520532 Update tests-checklist-andrey.md 2021-05-26 14:43:24 +03:00
Seraphima Zykova
c59b9d427f Update tests-checklist-seraphima.md 2021-05-26 12:25:51 +01:00
Enrico Giordani
43079c9c63 Update tests-checklist-enrico.md 2021-05-26 13:23:54 +02:00
Enrico Giordani
b492c4fa63 Update tests-checklist-template.md 2021-05-26 13:23:40 +02:00
Enrico Giordani
849154aa04 Update tests-checklist-template.md 2021-05-26 13:20:50 +02:00
Mykhailo Pylyp
7c296654c1 Update tests-checklist-mykhailo.md 2021-05-26 14:20:30 +03:00
Mykhailo Pylyp
5f46603fe8 Update tests-checklist-mykhailo.md 2021-05-26 14:17:58 +03:00
Enrico Giordani
871de8af4d Update tests-checklist-enrico.md 2021-05-26 13:15:39 +02:00
Enrico Giordani
204f6ff31f Update tests-checklist-enrico.md 2021-05-26 13:11:37 +02:00
Enrico Giordani
6b5b7104f6 Update tests-checklist-enrico.md 2021-05-26 13:10:30 +02:00
Enrico Giordani
8c685b435c Update tests-checklist-enrico.md 2021-05-26 13:04:03 +02:00
Andrey Nekrasov
219c2b27bf Update tests-checklist-andrey.md 2021-05-26 14:01:05 +03:00
Enrico Giordani
dccb08fc98 Update tests-checklist-enrico.md 2021-05-26 12:54:35 +02:00
Seraphima Zykova
6fd1b2e5ae Update tests-checklist-seraphima.md 2021-05-26 11:54:20 +01:00
Enrico Giordani
92193eb32b Update tests-checklist-enrico.md 2021-05-26 12:51:02 +02:00
Mykhailo Pylyp
f53f4852f3 Update tests-checklist-mykhailo.md 2021-05-26 13:21:08 +03:00
Seraphima Zykova
a2f0e2ebfa Update tests-checklist-seraphima.md 2021-05-26 11:18:52 +01:00
Mykhailo Pylyp
51859fa769 Update tests-checklist-template.md 2021-05-26 13:13:02 +03:00
Mykhailo Pylyp
f6890be2ea Update tests-checklist-template.md 2021-05-26 13:11:47 +03:00
Enrico Giordani
76ecf6f026 Create test-groups.md 2021-05-26 12:07:40 +02:00
Mykhailo Pylyp
b742c4021d Update tests-checklist-mykhailo.md 2021-05-26 13:07:12 +03:00
Enrico Giordani
15e07894fb Update tests-checklist-enrico.md 2021-05-26 12:06:02 +02:00
Enrico Giordani
ad11fa1651 Update tests-checklist-template.md 2021-05-26 12:05:30 +02:00
Enrico Giordani
aba6b08ef6 Update tests-checklist-template.md 2021-05-26 12:04:37 +02:00
Enrico Giordani
a2b00091d0 Update tests-checklist-template.md 2021-05-26 12:03:47 +02:00
Enrico Giordani
ddb23a34bc Update General Settings tests 2021-05-26 12:02:43 +02:00
Enrico Giordani
e0f9d3b453 Update SG tests 2021-05-26 11:59:10 +02:00
Enrico Giordani
69cbbbc2a6 Update tests-checklist-enrico.md 2021-05-26 11:58:00 +02:00
Enrico Giordani
2e6f5152cd Update SG tests 2021-05-26 11:52:03 +02:00
Mykhailo Pylyp
17ca20d256 Update tests-checklist-mykhailo.md 2021-05-26 12:51:01 +03:00
Enrico Giordani
a2ae4f0a5d Update tests-checklist-enrico.md 2021-05-26 11:50:51 +02:00
Enrico Giordani
530b0f8cc6 Update SG tests 2021-05-26 11:50:28 +02:00
Mykhailo Pylyp
d2c97d6740 Update tests-checklist-mykhailo.md 2021-05-26 12:40:38 +03:00
Mykhailo Pylyp
003307bc3f Update tests-checklist-mykhailo.md 2021-05-26 12:30:41 +03:00
Seraphima Zykova
5cc6a85e0d Update tests-checklist-seraphima.md 2021-05-26 10:28:16 +01:00
Mykhailo Pylyp
56d249786f Update tests-checklist-mykhailo.md 2021-05-26 12:16:02 +03:00
Mykhailo Pylyp
22208830ce Update tests-checklist-mykhailo.md 2021-05-26 12:03:04 +03:00
Enrico Giordani
77a8a0c6e4 Update tests-checklist-enrico.md 2021-05-26 10:52:07 +02:00
Enrico Giordani
7fc1b7dcb2 ckecklists for 0.39.0 2021-05-26 10:38:27 +02:00
Mykhailo Pylyp
1cda7ae999 Update tests-checklist-mykhailo.md 2021-04-28 17:46:00 +03:00
Seraphima Zykova
e644ffc93f Update tests-checklist-seraphima.md 2021-04-28 15:31:49 +01:00
Mykhailo Pylyp
568aee2efb Update tests-checklist-mykhailo.md 2021-04-28 17:27:36 +03:00
Enrico Giordani
d0196cd2c0 Update tests-checklist-enricogior.md 2021-04-28 15:59:42 +02:00
Enrico Giordani
5296ed0857 Update tests-checklist-template.md 2021-04-28 15:59:31 +02:00
Enrico Giordani
efcb3eba45 Update tests-checklist-template.md 2021-04-28 15:59:02 +02:00
Enrico Giordani
3a359aba41 Simplified PT Run tests 2021-04-28 15:47:46 +02:00
Enrico Giordani
75828d1651 Update tests-checklist-enricogior.md 2021-04-28 15:43:14 +02:00
Enrico Giordani
d116b074ec PT Run, split test in multiple tests 2021-04-28 15:40:57 +02:00
Enrico Giordani
05cb42fdfa Spelling 2021-04-28 15:35:13 +02:00
Enrico Giordani
8a321cf1ae Update tests-checklist-enricogior.md 2021-04-28 15:33:11 +02:00
Enrico Giordani
6e1c58e7f3 Add example to PT Run test 2021-04-28 15:28:04 +02:00
Enrico Giordani
1b2ca69970 Update tests-checklist-template.md 2021-04-28 15:27:05 +02:00
Enrico Giordani
3cb0878fbb Split a PT Run test in two tests 2021-04-28 15:25:25 +02:00
Enrico Giordani
2d745d06a1 Update tests-checklist-enricogior.md 2021-04-28 15:21:04 +02:00
Seraphima Zykova
d274f02732 Update tests-checklist-seraphima.md 2021-04-28 14:19:57 +01:00
Enrico Giordani
2159c10c81 Ad example for PowerRename test 2021-04-28 15:19:06 +02:00
Enrico Giordani
fcdf5aa2fc Update tests-checklist-enricogior.md 2021-04-28 15:05:59 +02:00
Enrico Giordani
eea174d0a2 Update tests-checklist-enricogior.md 2021-04-28 14:44:05 +02:00
Enrico Giordani
a71b96377a Remove "wmf image" test since it's not a supported format. 2021-04-28 14:38:30 +02:00
Seraphima Zykova
7c88f9c16a Update tests-checklist-seraphima.md 2021-04-28 13:27:14 +01:00
Andrey Nekrasov
1fbb7b90bb Update tests-checklist-andrey.md 2021-04-28 14:47:50 +03:00
Andrey Nekrasov
3352624a38 Update tests-checklist-andrey.md 2021-04-28 14:33:35 +03:00
Seraphima Zykova
b2902c4eb6 Update tests-checklist-seraphima.md 2021-04-28 12:23:49 +01:00
Seraphima Zykova
d2c9f57240 Update tests-checklist-seraphima.md 2021-04-28 12:14:05 +01:00
Seraphima Zykova
218cb4840e Update tests-checklist-seraphima.md 2021-04-28 12:05:31 +01:00
Andrey Nekrasov
09c738f85c Update tests-checklist-andrey.md 2021-04-28 13:45:19 +03:00
Enrico Giordani
f3975129c0 Update tests-checklist-enricogior.md 2021-04-28 12:41:06 +02:00
Mykhailo Pylyp
b40ad4d89f Update tests-checklist-mykhailo.md 2021-04-28 13:30:30 +03:00
Enrico Giordani
522754b93f Update tests-checklist-enricogior.md 2021-04-28 12:28:46 +02:00
Andrey Nekrasov
a183712447 Update tests-checklist-andrey.md 2021-04-28 13:26:02 +03:00
Enrico Giordani
a20b1a8156 Update tests-checklist-enricogior.md 2021-04-28 12:06:01 +02:00
Enrico Giordani
4e9dbd57d2 Update tests-checklist-enricogior.md 2021-04-28 12:03:45 +02:00
Enrico Giordani
b761e513b7 Update tests-checklist-enricogior.md 2021-04-28 11:57:55 +02:00
Enrico Giordani
c341ea2f09 Update tests-checklist-enricogior.md 2021-04-28 11:55:33 +02:00
Mykhailo Pylyp
19363053e6 Update tests-checklist-mykhailo.md 2021-04-28 12:53:39 +03:00
Enrico Giordani
ef4f479ed7 Update tests-checklist-enricogior.md 2021-04-28 11:50:46 +02:00
Enrico Giordani
314800d193 Update tests-checklist-enricogior.md 2021-04-28 11:49:02 +02:00
Enrico Giordani
91ab70ef16 Update tests-checklist-enricogior.md 2021-04-28 11:45:04 +02:00
Andrey Nekrasov
bfa32fe91d Update tests-checklist-andrey.md 2021-04-28 12:41:26 +03:00
Enrico Giordani
1e67634321 Update tests-checklist-seraphima.md 2021-04-28 10:18:38 +02:00
Enrico Giordani
7033d64c3c Update tests-checklist-mykhailo.md 2021-04-28 10:18:23 +02:00
Enrico Giordani
d5981c0014 Update tests-checklist-enricogior.md 2021-04-28 10:18:07 +02:00
Enrico Giordani
f34e192995 Update tests-checklist-andrey.md 2021-04-28 10:17:50 +02:00
Enrico Giordani
29651f21ea Update tests-checklist-template.md 2021-04-28 10:17:22 +02:00
Enrico Giordani
e745235803 Add term for spelling 2021-04-28 09:46:33 +02:00
Enrico Giordani
bc35feffa3 Moved checklist for testing to its own file 2021-04-28 09:41:02 +02:00
Enrico Giordani
b755078572 Add test list template 2021-04-28 09:33:34 +02:00
Enrico Giordani
188800d15e Update .gitignore 2021-04-28 09:29:52 +02:00
Deondre Davis
da5589f3b0 Update expect.txt 2021-03-27 18:53:30 -07:00
Deondre Davis
2cc4e1222f Update expect.txt 2021-03-27 18:52:52 -07:00
Deondre Davis
6a2adb2990 Update template.md 2021-03-27 18:44:48 -07:00
Deondre Davis
9428f1c195 Update template.md 2021-03-27 18:12:36 -07:00
Clint Rutkas
af59b524c1 Update template.md 2020-12-29 17:06:42 -08:00
Clint Rutkas
ac8559c35d Update template.md 2020-12-29 17:00:37 -08:00
Clint Rutkas
b8ac50467d Update template.md 2020-12-29 16:59:57 -08:00
Clint Rutkas
80e3695dc4 Update template.md 2020-12-29 16:11:52 -08:00
Clint Rutkas
ef541130a9 Update template.md 2020-12-29 14:48:23 -08:00
Clint Rutkas
7f2a28994b Create template.md 2020-12-29 14:30:43 -08:00
876 changed files with 109435 additions and 10144 deletions

View File

@@ -7,6 +7,13 @@ body:
- type: markdown
attributes:
value: Please make sure to [search for existing issues](https://github.com/microsoft/PowerToys/issues) before filing a new one!
- type: markdown
attributes:
value: |
We are aware of the following high-volume issues and are actively working on them. Please check if your issue is one of these before filing a new bug report:
* **PowerToys Run crash related to "Desktop composition is disabled"**: This may appear as `COMException: 0x80263001`. For more details, see issue [#31226](https://github.com/microsoft/PowerToys/issues/31226).
* **PowerToys Run crash with `COMException (0xD0000701)`**: For more details, see issue [#30769](https://github.com/microsoft/PowerToys/issues/30769).
* **PowerToys Run crash with a "Cyclic reference" error**: This `System.InvalidOperationException` is detailed in issue [#36451](https://github.com/microsoft/PowerToys/issues/36451).
- id: version
type: input
attributes:
@@ -58,6 +65,7 @@ body:
- Image Resizer
- Installer
- Keyboard Manager
- Light Switch
- Mouse Utilities
- Mouse Without Borders
- New+

View File

@@ -38,6 +38,7 @@ body:
- Image Resizer
- Installer
- Keyboard Manager
- Light Switch
- Mouse Utilities
- Mouse Without Borders
- New+

View File

@@ -321,3 +321,10 @@ REGSTR
# Misc Win32 APIs and PInvokes
INVOKEIDLIST
# PowerRename metadata pattern abbreviations (used in tests and regex patterns)
DDDD
FFF
HHH
riday
YYY

View File

@@ -105,6 +105,7 @@
^src/common/notifications/BackgroundActivatorDLL/cpp\.hint$
^src/common/sysinternals/Eula/
^src/modules/cmdpal/doc/initial-sdk-spec/list-elements-mock-002\.pdn$
^src/modules/cmdpal/ext/SamplePagesExtension/Pages/SampleMarkdownImagesPage\.cs$
^src/modules/colorPicker/ColorPickerUI/Shaders/GridShader\.cso$
^src/modules/launcher/Plugins/Microsoft\.PowerToys\.Run\.Plugin\.TimeDate/Properties/
^src/modules/MouseUtils/MouseJumpUI/MainForm\.resx$

View File

@@ -22,6 +22,7 @@ ADate
ADDSTRING
ADDUNDORECORD
ADifferent
adjacents
ADMINS
adml
admx
@@ -34,6 +35,7 @@ AFX
AGGREGATABLE
AHK
AHybrid
AIUI
akv
ALarger
ALIGNRIGHT
@@ -63,6 +65,7 @@ APIIs
Apm
APPBARDATA
APPEXECLINK
appext
APPLICATIONFRAMEHOST
appmanifest
APPMODEL
@@ -94,9 +97,10 @@ ASSOCSTR
ASYNCWINDOWPLACEMENT
ASYNCWINDOWPOS
atl
ATX
ATRIOX
aumid
Authenticode
authenticode
AUTOBUDDY
AUTOCHECKBOX
AUTOHIDE
@@ -110,9 +114,13 @@ AValid
AWAYMODE
azcliversion
azman
azureaiinference
azureinference
azureopenai
bbwe
BCIE
bck
backticks
BESTEFFORT
bezelled
bhid
@@ -133,13 +141,14 @@ bla
BLACKFRAME
BLENDFUNCTION
Blockquotes
Blt
blt
BLURBEHIND
BLURREGION
bmi
BNumber
BODGY
BOklab
Bootstrappers
BOOTSTRAPPERINSTALLFOLDER
BOTTOMALIGN
boxmodel
@@ -167,14 +176,18 @@ BYPOSITION
CALCRECT
CALG
callbackptr
cabstr
calpwstr
caub
Cangjie
CANRENAME
Carlseibert
Canvascustomlayout
CAPTUREBLT
CAPTURECHANGED
CARETBLINKING
CAtl
CBN
cch
CCHDEVICENAME
CCHFORMNAME
@@ -193,13 +206,16 @@ changecursor
CHILDACTIVATE
CHILDWINDOW
CHOOSEFONT
CIBUILD
cidl
CIELCh
cim
claude
CImage
cla
CLASSDC
CLASSNOTAVAILABLE
cleanmgr
clickable
clickonce
CLIENTEDGE
@@ -228,6 +244,7 @@ CODENAME
codereview
Codespaces
Coen
cognitiveservices
COINIT
colid
colorconv
@@ -242,6 +259,7 @@ cominterop
commandnotfound
commandpalette
compmgmt
COMPOSITIONDISABLED
COMPOSITIONFULL
CONFIGW
CONFLICTINGMODIFIERKEY
@@ -267,12 +285,14 @@ countof
covrun
cpcontrols
cph
cppcoreguidelines
cplusplus
CPower
cpptools
cppvsdbg
cppwinrt
createdump
creativecommons
CREATEPROCESS
CREATESCHEDULEDTASK
CREATESTRUCT
@@ -296,6 +316,7 @@ CURRENTDIR
CURSORINFO
cursorpos
CURSORSHOWING
CURSORWRAP
customaction
CUSTOMACTIONTEST
CUSTOMFORMATPLACEHOLDER
@@ -335,6 +356,7 @@ Deact
debugbreak
decryptor
Dedup
dfx
Deduplicator
Deeplink
DEFAULTBOOTSTRAPPERINSTALLFOLDER
@@ -369,7 +391,7 @@ devmgmt
DEVMODE
DEVMODEW
devpal
DFX
dfx
DIALOGEX
digicert
DINORMAL
@@ -383,6 +405,7 @@ DISPLAYFREQUENCY
displayname
DISPLAYORIENTATION
divyan
djwsxzxb
Dlg
DLGFRAME
DLGMODALFRAME
@@ -393,6 +416,9 @@ DNLEN
DONOTROUND
DONTVALIDATEPATH
dotnet
downsampled
downsampling
Downsampled
downscale
DPICHANGED
DPIs
@@ -408,7 +434,7 @@ DROPFILES
DSTINVERT
DString
DSVG
DTo
dto
DUMMYUNIONNAME
dutil
DVASPECT
@@ -442,7 +468,7 @@ EDITKEYBOARD
EDITSHORTCUTS
EDITTEXT
EFile
ekus
eku
emojis
ENABLEDELAYEDEXPANSION
ENABLEDPOPUP
@@ -506,9 +532,12 @@ EXTRINSICPROPERTIES
eyetracker
FANCYZONESDRAWLAYOUTTEST
FANCYZONESEDITOR
FNumber
FARPROC
fdx
fesf
FFFF
Figma
FILEEXPLORER
fileexploreraddons
fileexplorerpreview
@@ -535,6 +564,7 @@ FIXEDSYS
flac
flyouts
FMask
foundrylocal
fmtid
FOF
FOFX
@@ -573,6 +603,7 @@ getfilesiginforedist
geolocator
GETHOTKEY
GETICON
GETLBTEXT
GETMINMAXINFO
GETNONCLIENTMETRICS
GETPROPERTYSTOREFLAGS
@@ -580,6 +611,7 @@ GETSCREENSAVERRUNNING
GETSECKEY
GETSTICKYKEYS
GETTEXTLENGTH
GIFs
gitmodules
GHND
GMEM
@@ -590,6 +622,7 @@ GPOCA
gpp
gpu
gradians
grctlext
Gridcustomlayout
GSM
gtm
@@ -599,6 +632,8 @@ GValue
gwl
GWLP
GWLSTYLE
googleai
googlegemini
hangeul
Hanzi
Hardlines
@@ -635,6 +670,7 @@ Hiber
Hiberboot
HIBYTE
hicon
HICONSM
HIDEREADONLY
HIDEWINDOW
Hif
@@ -686,6 +722,7 @@ HTCLIENT
hthumbnail
HTOUCHINPUT
HTTRANSPARENT
hutchinsoniana
HVal
HValue
Hvci
@@ -707,7 +744,9 @@ IDCANCEL
IDD
idk
idl
IIM
idlist
ifd
IDOK
IDOn
IDR
@@ -724,6 +763,7 @@ Ijwhost
ILD
IMAGEHLP
IMAGERESIZERCONTEXTMENU
IPTC
IMAGERESIZEREXT
imageresizerinput
imageresizersettings
@@ -742,7 +782,7 @@ INITDIALOG
INITGUID
INITTOLOGFONTSTRUCT
INLINEPREFIX
Inlines
inlines
INPC
inproc
INPUTHARDWARE
@@ -815,6 +855,7 @@ keyvault
KILLFOCUS
killrunner
kmph
ksa
kvp
Kybd
LARGEICON
@@ -862,6 +903,7 @@ LOCKTYPE
LOGFONT
LOGFONTW
logon
lon
LOGMSG
LOGPIXELSX
LOGPIXELSY
@@ -921,6 +963,7 @@ LWA
lwin
LZero
MAGTRANSFORM
makeappx
MAKEINTRESOURCE
MAKEINTRESOURCEA
MAKEINTRESOURCEW
@@ -952,6 +995,7 @@ MENUITEMINFOW
MERGECOPY
MERGEPAINT
Metadatas
metadatamatters
metafile
mfc
Mgmt
@@ -1019,6 +1063,7 @@ msiexec
MSIFASTINSTALL
MSIHANDLE
MSIRESTARTMANAGERCONTROL
MSIs
msixbundle
MSIXCA
MSLLHOOKSTRUCT
@@ -1113,6 +1158,7 @@ nonstd
NOOWNERZORDER
NOPARENTNOTIFY
NOPREFIX
NPU
NOREDIRECTIONBITMAP
NOREDRAW
NOREMOVE
@@ -1149,6 +1195,7 @@ NTSTATUS
NTSYSAPI
NULLCURSOR
nullonfailure
nullref
numberbox
nwc
ocr
@@ -1171,6 +1218,9 @@ opencode
OPENFILENAME
opensource
openxmlformats
ollama
Olllama
onnx
OPTIMIZEFORINVOKE
ORPHANEDDIALOGTITLE
ORSCANS
@@ -1252,6 +1302,7 @@ pinvoke
pipename
PKBDLLHOOKSTRUCT
pkgfamily
PKI
plib
ploc
ploca
@@ -1264,6 +1315,7 @@ pnid
PNMLINK
Poc
Podcasts
Photoshop
POINTERID
POINTERUPDATE
Pokedex
@@ -1358,6 +1410,8 @@ pwsz
pwtd
QDC
qit
QNN
Qualcomm
QITAB
QITABENT
qoi
@@ -1466,6 +1520,7 @@ sacl
safeprojectname
SAMEKEYPREVIOUSLYMAPPED
SAMESHORTCUTPREVIOUSLYMAPPED
samsung
sancov
SAVEFAILED
scanled
@@ -1693,6 +1748,7 @@ syskeydown
SYSKEYUP
SYSLIB
SYSMENU
systemai
SYSTEMAPPS
SYSTEMMODAL
SYSTEMTIME
@@ -1818,6 +1874,7 @@ UPDATENOW
UPDATEREGISTRY
updown
UPGRADINGPRODUCTCODE
upscaling
Uptool
urld
Usb
@@ -1827,6 +1884,7 @@ USEINSTALLERFORTEST
USESHOWWINDOW
USESTDHANDLES
USRDLL
utm
UType
uuidv
uwp
@@ -1903,6 +1961,7 @@ wcsicmp
wcsncpy
wcsnicmp
WCT
WCRAPI
WDA
wdm
wdp
@@ -1916,6 +1975,7 @@ wgpocpl
WHEREID
wic
wifi
wikimedia
wikipedia
WIL
winapi
@@ -1945,6 +2005,8 @@ WINL
winlogon
winmd
WINNT
windowsml
winml
winres
winrt
winsdk
@@ -1979,7 +2041,7 @@ WORKSPACESEDITOR
WORKSPACESLAUNCHER
WORKSPACESSNAPSHOTTOOL
WORKSPACESWINDOWARRANGER
Worktree
worktree
wox
wparam
wpf
@@ -2010,7 +2072,9 @@ XAxis
XButton
xclip
xcopy
xap
XDeployment
XDimension
xdf
XDocument
XElement
@@ -2028,6 +2092,7 @@ xsi
XSpeed
XStr
xstyler
xmp
XTimer
XUP
XVIRTUALSCREEN
@@ -2035,6 +2100,7 @@ xxxxxx
YAxis
ycombinator
YIncrement
YDimension
yinle
yinyue
YPels

View File

@@ -253,7 +253,7 @@ _SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING
# hit-count: 1 file-count: 1
# Amazon
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)[^"'\s]+
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
# hit-count: 3 file-count: 3
# imgur

View File

@@ -1,43 +1,59 @@
# PowerToys Copilot guide (concise)
---
description: PowerToys AI contributor guidance.
applyTo: pullRequests
---
# PowerToys - Copilot guide (concise)
This is the top-level guide for AI changes. Keep edits small, follow existing patterns, and cite exact paths in PRs.
Repo map (1line per area)
# Repo map (1-line per area)
- Core apps: `src/runner/**` (tray/loader), `src/settings-ui/**` (Settings app)
- Shared libs: `src/common/**`
- Modules: `src/modules/*` (one per utility; Command Palette in `src/modules/cmdpal/**`)
- Build tools/docs: `tools/**`, `doc/devdocs/**`
Build and test (defaults)
# Build and test (defaults)
- Prerequisites: Visual Studio 2022 17.4+, minimal Windows 10 1803+.
- Build discipline:
- One terminal per operation (build test). Dont switch/open new ones mid-flow.
- One terminal per operation (build -> test). Do not switch or open new ones mid-flow.
- After making changes, `cd` to the project folder that changed (`.csproj`/`.vcxproj`).
- Use script(s) to build, synchronously block and wait in foreground for it to finish: `tools/build/build.ps1|.cmd` (current folder), `build-essentials.*` (once per brand new build for missing nuget packages)
- Treat build **exit code 0** as success; any non-zero exit code is a failure, have Copilot read the errors log in the build folder (e.g., `build.*.*.errors.log`) and surface problems.
- Dont start tests or launch Runner until the previous step succeeded.
- Tests (fast + targeted):
- Find the test project by product code prefix (e.g., FancyZones, AdvancedPaste). Look for a sibling folder or 12 levels up named like `<Product>*UnitTests` or `<Product>*UITests`.
- Build the test project, wait for **exit**, then run only those tests via VS Test Explorer or `vstest.console.exe` with filters. Avoid `dotnet test` in this repo.
- Add/adjust tests when changing behavior; if skipped, state why (e.g., comment-only, string rename).
- Use scripts to build, synchronously block and wait in foreground for completion: `tools/build/build.ps1|.cmd` (current folder), `build-essentials.*` (once per brand new build for missing nuget packages).
- Treat build exit code 0 as success; any non-zero exit code is a failure. Read the errors log in the build folder (such as `build.*.*.errors.log`) and surface problems.
- Do not start tests or launch Runner until the previous step succeeded.
- Tests (fast and targeted):
- Find the test project by product code prefix (for example FancyZones, AdvancedPaste). Look for a sibling folder or one to two levels up named like `<Product>*UnitTests` or `<Product>*UITests`.
- Build the test project, wait for exit, then run only those tests via VS Test Explorer or `vstest.console.exe` with filters. Avoid `dotnet test` in this repo.
- Add or adjust tests when changing behavior; if skipped, state why (for example comment-only or string rename).
Pull requests (expectations)
- Atomic: one logical change; no driveby refactors.
- Describe: problem / approach / risk / test evidence.
# Pull requests (expectations)
- Atomic: one logical change; no drive-by refactors.
- Describe: problem, approach, risk, test evidence.
- List: touched paths if not obvious.
When to ask for clarification
# When to ask for clarification
- Ambiguous spec after scanning relevant docs (see below).
- Cross-module impact (shared enum/struct) not clear.
- Security / elevation / installer changes.
- Cross-module impact (shared enum or struct) not clear.
- Security, elevation, or installer changes.
Logging (use existing stacks)
- C++: `src/common/logger/**` (`Logger::info|warn|error|debug`). Keep hot paths quiet (hooks, tight loops).
- C#: `ManagedCommon.Logger` (`LogInfo|LogWarning|LogError|LogDebug|LogTrace`). Some UIs use injected `ILogger` via `LoggerInstance.Logger`.
# Logging (use existing stacks)
- C++ logging lives in `src/common/logger/**` (`Logger::info`, `Logger::warn`, `Logger::error`, `Logger::debug`). Keep hot paths quiet (hooks, tight loops).
- C# logging goes through `ManagedCommon.Logger` (`LogInfo`, `LogWarning`, `LogError`, `LogDebug`, `LogTrace`). Some UIs use injected `ILogger` via `LoggerInstance.Logger`.
Docs to consult
# Docs to consult
- `tools/build/BUILD-GUIDELINES.md`
- `doc/devdocs/core/architecture.md`, `doc/devdocs/core/runner.md`, `doc/devdocs/core/settings/readme.md`, `doc/devdocs/modules/readme.md`
- `doc/devdocs/core/architecture.md`
- `doc/devdocs/core/runner.md`
- `doc/devdocs/core/settings/readme.md`
- `doc/devdocs/modules/readme.md`
Done checklist (self review before finishing)
- Build clean? Tests updated/passed? No unintended formatting? Any new dependency? Documented skips?
# Language style rules
- Always enforce repo analyzers: root `.editorconfig` plus any `stylecop.json`.
- C# code follows StyleCop.Analyzers and Microsoft.CodeAnalysis.NetAnalyzers.
- C++ code honors `.clang-format` plus `.clang-tidy` (modernize/cppcoreguidelines/readability).
- Markdown files wrap at 80 characters and use ATX headers with fenced code blocks that include language tags.
- YAML files indent two spaces and add comments for complex settings while keeping keys clear.
- PowerShell scripts use Verb-Noun names and prefer single-quoted literals while documenting parameters and satisfying PSScriptAnalyzer.
# Done checklist (self review before finishing)
- Build clean? Tests updated or passed? No unintended formatting? Any new dependency? Documented skips?

View File

@@ -0,0 +1,16 @@
---
mode: 'agent'
model: GPT-5-Codex (Preview)
description: 'Generate an 80-character git commit title for the local diff.'
---
**Goal:** Provide a ready-to-paste git commit title (<= 80 characters) that captures the most important local changes since `HEAD`.
**Workflow:**
1. Run a single command to view the local diff since the last commit:
```@terminal
git diff HEAD
```
2. From that diff, identify the dominant area (reference key paths like `src/modules/*`, `doc/devdocs/**`, etc.), the type of change (bug fix, docs update, config tweak), and any notable impact.
3. Draft a concise, imperative commit title summarizing the dominant change. Keep it plain ASCII, <= 80 characters, and avoid trailing punctuation. Mention the primary component when obvious (for example `FancyZones:` or `Docs:`).
4. Respond with only the final commit title on a single line so it can be pasted directly into `git commit`.

View File

@@ -0,0 +1,22 @@
---
mode: 'agent'
model: GPT-5-Codex (Preview)
description: 'Generate a PowerToys-ready pull request description from the local diff.'
---
**Goal:** Produce a ready-to-paste PR title and description that follows PowerToys conventions by comparing the current branch against a user-selected target branch.
**Repo guardrails:**
- Treat `.github/pull_request_template.md` as the single source of truth; load it at runtime instead of embedding hardcoded content in this prompt.
- Preserve section order from the template but only surface checklist lines that are relevant for the detected changes, filling them with `[x]`/`[ ]` as appropriate.
- Cite touched paths with inline backticks, matching the guidance in `.github/copilot-instructions.md`.
- Call out test coverage explicitly: list automated tests run (unit/UI) or state why they are not applicable.
**Workflow:**
1. Determine the target branch from user context; default to `main` when no branch is supplied.
2. Run `git status --short` once to surface uncommitted files that may influence the summary.
3. Run `git diff <target-branch>...HEAD` a single time to review the detailed changes. Only when confidence stays low dig deeper with focused calls such as `git diff <target-branch>...HEAD -- <path>`.
4. From the diff, capture impacted areas, key file changes, behavioral risks, migrations, and noteworthy edge cases.
5. Confirm validation: list tests executed with results or state why tests were skipped in line with repo guidance.
6. Load `.github/pull_request_template.md`, mirror its section order, and populate it with the gathered facts. Include only relevant checklist entries, marking them `[x]/[ ]` and noting any intentional omissions as "N/A".
7. Present the filled template inside a fenced ```markdown code block with no extra commentary so it is ready to paste into a PR, clearly flagging any placeholders that still need user input.

22
.github/prompts/fix-spelling.prompt.md vendored Normal file
View File

@@ -0,0 +1,22 @@
---
mode: 'agent'
model: GPT-5-Codex (Preview)
description: 'Resolve Code scanning / check-spelling comments on the active PR.'
---
**Goal:** Clear every outstanding GitHub pull request comment created by the `Code scanning / check-spelling` workflow by explicitly allowing intentional terms.
**Guardrails:**
- Update only discussion threads authored by `github-actions` or `github-actions[bot]` that mention `Code scanning results / check-spelling`.
- Resolve findings solely by editing `.github/actions/spell-check/expect.txt`; reuse existing entries.
- Leave all other files and topics untouched.
**Prerequisites:**
- Install GitHub CLI if it is not present: `winget install GitHub.cli`.
- Run `gh auth login` once before the first CLI use.
**Workflow:**
1. Determine the active pull request with a single `gh pr view --json number` call (default to the current branch).
2. Fetch all PR discussion data once via `gh pr view --json comments,reviews` and filter to check-spelling comments authored by `github-actions` or `github-actions[bot]` that are not minimized; when several remain, process only the most recent comment body.
3. For each flagged token, review `.github/actions/spell-check/expect.txt` for an equivalent term (for example an existing lowercase variant); when found, reuse that normalized term rather than adding a new entry, even if the flagged token differs only by casing. Only add a new entry after confirming no equivalent already exists.
4. Add any remaining missing token to `.github/actions/spell-check/expect.txt`, keeping surrounding formatting intact.

View File

@@ -5,6 +5,7 @@
## PR Checklist
- [ ] Closes: #xxx
<!-- - [ ] 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

View File

@@ -40,7 +40,7 @@ jobs:
echo powerToysInstallerArm64Url=$(jq -n "$powerToysSetup" | jq -r '[.[]|select(.name | contains("arm64"))][0].browser_download_url') >> $GITHUB_OUTPUT
- name: Setup .NET 9.0
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@v5
with:
dotnet-version: '9.0.x'

5
.gitignore vendored
View File

@@ -349,10 +349,7 @@ src/common/Telemetry/*.etl
/src/modules/powerrename/ui/RCb24464
# Generated installer file for Monaco source files.
/installer/PowerToysSetup/MonacoSRC.wxs
/installer/PowerToysSetup/DscResources.wxs
/installer/PowerToysSetupVNext/MonacoSRC.wxs
/installer/PowerToysSetupVNext/DscResources.wxs
# MSBuildCache
/MSBuildCacheLogs/
@@ -361,4 +358,4 @@ src/common/Telemetry/*.etl
/src/settings-ui/Settings.UI/Assets/Settings/search.index.json
# PowerToysInstaller Build Temp Files
installer/*/*.wxs.bk
installer/*/*.wxs.bk

3
.gitmodules vendored
View File

@@ -4,6 +4,3 @@
[submodule "deps/expected-lite"]
path = deps/expected-lite
url = https://github.com/martinmoene/expected-lite.git
[submodule "deps/cziplib"]
path = deps/cziplib
url = https://github.com/kuba--/zip.git

View File

@@ -5,7 +5,6 @@
{
"MatchedPath": [
"*.resources.dll",
"WinUI3Apps\\Assets\\Settings\\Scripts\\*.ps1",
"PowerToys.ActionRunner.exe",
@@ -27,6 +26,7 @@
"PowerToys.GPOWrapper.dll",
"PowerToys.GPOWrapperProjection.dll",
"PowerToys.AllExperiments.dll",
"LanguageModelProvider.dll",
"Common.Search.dll",
@@ -181,6 +181,7 @@
"PowerToys.MousePointerCrosshairs.dll",
"PowerToys.MouseJumpUI.dll",
"PowerToys.MouseJumpUI.exe",
"PowerToys.CursorWrap.dll",
"PowerToys.MouseWithoutBorders.dll",
"PowerToys.MouseWithoutBorders.exe",
@@ -235,7 +236,9 @@
"*Microsoft.CmdPal.UI_*.msix",
"PowerToys.DSC.dll",
"PowerToys.DSC.exe"
"PowerToys.DSC.exe",
"PowerToysSparse.msix"
],
"SigningInfo": {
"Operations": [
@@ -344,6 +347,8 @@
"Testably.Abstractions.FileSystem.Interface.dll",
"WinUI3Apps\\Testably.Abstractions.FileSystem.Interface.dll",
"ColorCode.Core.dll",
"Microsoft.SemanticKernel.Connectors.Ollama.dll",
"OllamaSharp.dll",
"UnitsNet.dll",
"UtfUnknown.dll",

View File

@@ -1,54 +0,0 @@
{
"Version": "1.0.0",
"UseMinimatch": false,
"SignBatches": [
{
"MatchedPath": [
"PowerToysSetupCustomActions.dll",
"PowerToysSetupCustomActionsVNext.dll",
"SilentFilesInUseBAFunction.dll",
"PowerToys*Setup-*.exe",
"PowerToys*Setup-*.msi"
],
"SigningInfo": {
"Operations": [
{
"KeyCode": "CP-230012",
"OperationSetCode": "SigntoolSign",
"Parameters": [
{
"parameterName": "OpusName",
"parameterValue": "Microsoft"
},
{
"parameterName": "OpusInfo",
"parameterValue": "http://www.microsoft.com"
},
{
"parameterName": "FileDigest",
"parameterValue": "/fd \"SHA256\""
},
{
"parameterName": "PageHash",
"parameterValue": "/NPH"
},
{
"parameterName": "TimeStamp",
"parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
}
],
"ToolName": "sign",
"ToolVersion": "1.0"
},
{
"KeyCode": "CP-230012",
"OperationSetCode": "SigntoolVerify",
"Parameters": [],
"ToolName": "sign",
"ToolVersion": "1.0"
}
]
}
}
]
}

View File

@@ -65,21 +65,28 @@ if (-not (Test-Path $outputDir)) {
New-Item -Path $outputDir -ItemType Directory -Force | Out-Null
}
Write-Host "DSC manifests will be generated to: '$outputDir'"
# DSC v3 manifests go to DSCModules subfolder
$dscOutputDir = Join-Path $outputDir 'DSCModules'
if (-not (Test-Path $dscOutputDir)) {
Write-Host "Creating DSCModules subfolder at '$dscOutputDir'."
New-Item -Path $dscOutputDir -ItemType Directory -Force | Out-Null
}
Write-Host "Cleaning previously generated DSC manifest files from '$outputDir'."
Get-ChildItem -Path $outputDir -Filter 'microsoft.powertoys.*.settings.dsc.resource.json' -ErrorAction SilentlyContinue | Remove-Item -Force
Write-Host "DSC manifests will be generated to: '$dscOutputDir'"
$arguments = @('manifest', '--resource', 'settings', '--outputDir', $outputDir)
Write-Host "Cleaning previously generated DSC manifest files from '$dscOutputDir'."
Get-ChildItem -Path $dscOutputDir -Filter 'microsoft.powertoys.*.settings.dsc.resource.json' -ErrorAction SilentlyContinue | Remove-Item -Force
$arguments = @('manifest', '--resource', 'settings', '--outputDir', $dscOutputDir)
Write-Host "Invoking DSC manifest generator: '$exePath' $($arguments -join ' ')"
& $exePath @arguments
if ($LASTEXITCODE -ne 0) {
throw "PowerToys.DSC.exe exited with code $LASTEXITCODE"
}
$generatedFiles = Get-ChildItem -Path $outputDir -Filter 'microsoft.powertoys.*.settings.dsc.resource.json' -ErrorAction Stop
$generatedFiles = Get-ChildItem -Path $dscOutputDir -Filter 'microsoft.powertoys.*.settings.dsc.resource.json' -ErrorAction Stop
if ($generatedFiles.Count -eq 0) {
throw "No DSC manifest files were generated in '$outputDir'."
throw "No DSC manifest files were generated in '$dscOutputDir'."
}
Write-Host "Generated $($generatedFiles.Count) DSC manifest file(s):"

View File

@@ -1,26 +0,0 @@
$ProgressPreference = 'SilentlyContinue'
$WixDownloadUrl = "https://github.com/wixtoolset/wix3/releases/download/wix3141rtm/wix314.exe"
$WixBinariesDownloadUrl = "https://github.com/wixtoolset/wix3/releases/download/wix3141rtm/wix314-binaries.zip"
# Download WiX binaries and verify their hash sums
Invoke-WebRequest -Uri $WixDownloadUrl -OutFile "$($ENV:Temp)\wix314.exe"
$Hash = (Get-FileHash -Algorithm SHA256 "$($ENV:Temp)\wix314.exe").Hash
if ($Hash -ne '6BF6D03D6923D9EF827AE1D943B90B42B8EBB1B0F68EF6D55F868FA34C738A29')
{
Write-Error "$WixHash"
throw "wix314.exe has unexpected SHA256 hash: $Hash"
}
Invoke-WebRequest -Uri $WixBinariesDownloadUrl -OutFile "$($ENV:Temp)\wix314-binaries.zip"
$Hash = (Get-FileHash -Algorithm SHA256 "$($ENV:Temp)\wix314-binaries.zip").Hash
if($Hash -ne '6AC824E1642D6F7277D0ED7EA09411A508F6116BA6FAE0AA5F2C7DAA2FF43D31')
{
throw "wix314-binaries.zip has unexpected SHA256 hash: $Hash"
}
# Install WiX
Start-Process -Wait -FilePath "$($ENV:Temp)\wix314.exe" -ArgumentList "/install /quiet"
# Extract WiX binaries and copy wix.targets to the installed dir
Expand-Archive -Path "$($ENV:Temp)\wix314-binaries.zip" -Force -DestinationPath "$($ENV:Temp)"
Copy-Item -Path "$($ENV:Temp)\wix.targets" -Destination "C:\Program Files (x86)\WiX Toolset v3.14\"

View File

@@ -32,7 +32,7 @@ parameters:
- name: enableMsBuildCaching
type: boolean
displayName: "Enable MSBuild Caching"
default: true
default: false
- name: runTests
type: boolean
displayName: "Run Tests"

View File

@@ -20,11 +20,6 @@ parameters:
type: string
default: '0.0.1'
- name: installerSuffix
type: string
displayName: "WiX5 installer suffix (e.g., 'wix5', 'vnext', etc.)"
default: "wix5"
- name: buildConfigurations
displayName: "Build Configurations"
type: object
@@ -57,8 +52,6 @@ extends:
name: SHINE-INT-S
${{ if eq(parameters.useVSPreview, true) }}:
demands: ImageOverride -equals SHINE-VS17-Preview
${{ else }}:
image: SHINE-VS17-Latest
os: windows
sdl:
tsa:
@@ -78,10 +71,10 @@ extends:
parameters:
pool:
name: SHINE-INT-L
${{ if eq(parameters.useVSPreview, true) }}:
demands: ImageOverride -equals SHINE-VS17-Preview
${{ else }}:
image: SHINE-VS17-Latest
demands:
# Our INT agents have a large disk mounted at P:\
- ${{ if eq(parameters.useVSPreview, true) }}:
- ImageOverride -equals SHINE-VS17-Preview
os: windows
variables:
IsPipeline: 1 # The installer uses this to detect whether it should pick up localizations
@@ -104,8 +97,7 @@ extends:
useManagedIdentity: $(SigningUseManagedIdentity)
clientId: $(SigningOriginalClientId)
# Have msbuild use the release nuget config profile
installerSuffix: ${{ parameters.installerSuffix }}
additionalBuildOptions: /p:RestoreConfigFile="$(Build.SourcesDirectory)\.pipelines\release-nuget.config" /p:InstallerSuffix=${{ parameters.installerSuffix }} /p:EnableCmdPalAOT=true
additionalBuildOptions: /p:RestoreConfigFile="$(Build.SourcesDirectory)\.pipelines\release-nuget.config" /p:EnableCmdPalAOT=true
beforeBuildSteps:
# Sets versions for all PowerToy created DLLs
- pwsh: |-
@@ -131,7 +123,6 @@ extends:
parameters:
pool:
name: SHINE-INT-L
image: SHINE-VS17-Latest
os: windows
official: true
codeSign: true

View File

@@ -65,9 +65,6 @@ parameters:
- name: versionNumber
type: string
default: '0.0.1'
- name: installerSuffix
type: string
default: "wix5"
- name: useLatestWinAppSDK
type: boolean
default: false
@@ -114,6 +111,7 @@ jobs:
${{ else }}:
OutputBuildPlatform: ${{ platform }}
variables:
NUGET_PACKAGES: 'C:\NuGetPackages' # Some of our build steps cache these here... and it was apparently part of the global environment
MakeAppxPath: 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\MakeAppx.exe'
# Azure DevOps abhors a vacuum
# If these are blank, expansion will fail later on... which will result in direct substitution of the variable *names*
@@ -142,6 +140,10 @@ jobs:
- output: pipelineArtifact
artifactName: $(JobOutputArtifactName)
targetPath: $(Build.ArtifactStagingDirectory)
- output: pipelineArtifact
artifactName: $(JobOutputArtifactName)-failure-$(System.JobAttempt)
targetPath: $(LogOutputDirectory)
condition: or(failed(), canceled())
steps:
- checkout: self
clean: true
@@ -240,9 +242,7 @@ jobs:
parameters:
directory: $(build.sourcesdirectory)\src\modules\cmdpal
- pwsh: |-
& "$(build.sourcesdirectory)\.pipelines\installWiX.ps1"
displayName: Download and install WiX 3.14 development build
- ${{ parameters.beforeBuildSteps }}
@@ -271,10 +271,30 @@ jobs:
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
- task: VSBuild@1
displayName: Generate DSC artifacts for ARM64
condition: and(succeeded(), eq(variables['BuildPlatform'], 'arm64'))
inputs:
solution: PowerToys.sln
vsVersion: 17.0
msbuildArgs: >-
-restore
/p:Configuration=$(BuildConfiguration)
/p:Platform=x64
/t:DSC\PowerToys_Settings_DSC_Schema_Generator
/bl:$(LogOutputDirectory)\build-dsc-generator.binlog
${{ parameters.additionalBuildOptions }}
$(MSBuildCacheParameters)
$(RestoreAdditionalProjectSourcesArg)
platform: x64
configuration: $(BuildConfiguration)
msbuildArchitecture: x64
maximumCpuCount: true
# Build PowerToys.DSC.exe for ARM64 (x64 uses existing binary from previous build)
- task: VSBuild@1
displayName: Build PowerToys.DSC.exe (x64 for generating manifests)
condition: ne(variables['BuildPlatform'], 'x64')
condition: and(succeeded(), ne(variables['BuildPlatform'], 'x64'))
inputs:
solution: src/dsc/v3/PowerToys.DSC/PowerToys.DSC.csproj
msbuildArgs: /t:Build /m /restore
@@ -380,7 +400,7 @@ jobs:
### HACK: On ARM64 builds, building an app with Windows App SDK copies the x64 WebView2 dll instead of the ARM64 one. This task makes sure the right dll is used.
- task: CopyFiles@2
displayName: HACK Copy core WebView2 ARM64 dll to output directory
condition: eq(variables['BuildPlatform'],'arm64')
condition: and(succeeded(), eq(variables['BuildPlatform'], 'arm64'))
inputs:
contents: packages/Microsoft.Web.WebView2.1.0.2903.40/runtimes/win-ARM64/native_uap/Microsoft.Web.WebView2.Core.dll
targetFolder: $(Build.SourcesDirectory)/ARM64/Release/WinUI3Apps/
@@ -419,11 +439,11 @@ jobs:
inputs:
testResultsFormat: VSTest
testResultsFiles: '**/*.trx'
condition: ne(variables['BuildPlatform'],'arm64')
condition: and(succeeded(), ne(variables['BuildPlatform'], 'arm64'))
# Native dlls
- task: VSTest@2
condition: ne(variables['BuildPlatform'],'arm64') # No arm64 agents to run the tests.
condition: and(succeeded(), ne(variables['BuildPlatform'], 'arm64')) # No arm64 agents to run the tests.
displayName: 'Native Tests'
inputs:
platform: '$(BuildPlatform)'
@@ -508,20 +528,7 @@ jobs:
Copy-Item -Verbose -Force "$(CmdPalPackagePath)" "$(JobOutputDirectory)"
displayName: Stage the final CmdPal package
- template: steps-build-installer.yml
parameters:
codeSign: ${{ parameters.codeSign }}
signingIdentity: ${{ parameters.signingIdentity }}
versionNumber: ${{ parameters.versionNumber }}
additionalBuildOptions: ${{ parameters.additionalBuildOptions }}
- template: steps-build-installer.yml
parameters:
codeSign: ${{ parameters.codeSign }}
signingIdentity: ${{ parameters.signingIdentity }}
versionNumber: ${{ parameters.versionNumber }}
additionalBuildOptions: ${{ parameters.additionalBuildOptions }}
buildUserInstaller: true # NOTE: This is the distinction between the above and below rules
- template: steps-build-installer-vnext.yml
parameters:
@@ -529,16 +536,6 @@ jobs:
signingIdentity: ${{ parameters.signingIdentity }}
versionNumber: ${{ parameters.versionNumber }}
additionalBuildOptions: ${{ parameters.additionalBuildOptions }}
installerSuffix: ${{ parameters.installerSuffix }}
- template: steps-build-installer-vnext.yml
parameters:
codeSign: ${{ parameters.codeSign }}
signingIdentity: ${{ parameters.signingIdentity }}
versionNumber: ${{ parameters.versionNumber }}
additionalBuildOptions: ${{ parameters.additionalBuildOptions }}
installerSuffix: ${{ parameters.installerSuffix }}
buildUserInstaller: true # NOTE: This is the distinction between the above and below rules
# This saves ~1GiB per architecture. We won't need these later.
# Removes:
@@ -564,29 +561,29 @@ jobs:
flattenFolders: True
targetFolder: $(JobOutputDirectory)
- task: CopyFiles@2
displayName: Stage Symbols
inputs:
contents: |-
**\*.pdb
!**\vc143.pdb
!**\*test*.pdb
flattenFolders: True
targetFolder: $(JobOutputDirectory)/symbols-$(BuildPlatform)/
- pwsh: |-
$Symbols = Get-ChildItem "$(BuildPlatform)" -Recurse -Filter *.pdb -Exclude "vc143.pdb","*test*.pdb" |
Group-Object Name | ForEach-Object { $_.Group[0] }
$OutDir = "$(JobOutputDirectory)/symbols-$(BuildPlatform)"
New-Item -Type Directory $OutDir -EA:Ignore
Write-Host "Linking $($Symbols.Length) symbols into place at $OutDir"
ForEach($s in $Symbols) {
New-Item -Type HardLink -Target $s.FullName (Join-Path $OutDir $s.Name)
}
displayName: Stage Unique Symbols (as hard links)
- pwsh: |-
$p = "$(JobOutputDirectory)\"
$installerSuffix = "${{ parameters.installerSuffix }}"
# Calculate hashes for regular installers (without custom suffix)
$userSetupFiles = Get-ChildItem -Path $p -Filter "PowerToysUserSetup*.exe" | Where-Object { $_.Name -notmatch "-$installerSuffix-" }
$machineSetupFiles = Get-ChildItem -Path $p -Filter "PowerToysSetup*.exe" | Where-Object { $_.Name -notmatch "-$installerSuffix-" -and $_.Name -notmatch "PowerToysUserSetup" }
# Calculate hashes for installers
$userSetupFiles = Get-ChildItem -Path $p -Filter "PowerToysUserSetup*.exe"
$machineSetupFiles = Get-ChildItem -Path $p -Filter "PowerToysSetup*.exe" | Where-Object { $_.Name -notmatch "PowerToysUserSetup" }
if ($userSetupFiles.Count -gt 0) {
$userHash = ($userSetupFiles[0] | Get-FileHash).Hash;
$userPlat = "hash_user_$(BuildPlatform).txt";
$combinedUserPath = $p + $userPlat;
echo "Regular User: $userHash"
echo "User: $userHash"
$userHash | out-file -filepath $combinedUserPath
}
@@ -594,48 +591,37 @@ jobs:
$machineHash = ($machineSetupFiles[0] | Get-FileHash).Hash;
$machinePlat = "hash_machine_$(BuildPlatform).txt";
$combinedMachinePath = $p + $machinePlat;
echo "Regular Machine: $machineHash"
echo "Machine: $machineHash"
$machineHash | out-file -filepath $combinedMachinePath
}
# Calculate hashes for VNext installers (with custom suffix)
$userVNextFiles = Get-ChildItem -Path $p -Filter "PowerToysUserSetup*-$installerSuffix-*.exe"
$machineVNextFiles = Get-ChildItem -Path $p -Filter "PowerToysSetup*-$installerSuffix-*.exe" | Where-Object { $_.Name -notmatch "PowerToysUserSetup" }
if ($userVNextFiles.Count -gt 0) {
$userVNextHash = ($userVNextFiles[0] | Get-FileHash).Hash;
$userVNextPlat = "hash_user_vnext_$(BuildPlatform).txt";
$combinedUserVNextPath = $p + $userVNextPlat;
echo "VNext User: $userVNextHash"
$userVNextHash | out-file -filepath $combinedUserVNextPath
}
if ($machineVNextFiles.Count -gt 0) {
$machineVNextHash = ($machineVNextFiles[0] | Get-FileHash).Hash;
$machineVNextPlat = "hash_machine_vnext_$(BuildPlatform).txt";
$combinedMachineVNextPath = $p + $machineVNextPlat;
echo "VNext Machine: $machineVNextHash"
$machineVNextHash | out-file -filepath $combinedMachineVNextPath
}
displayName: Calculate file hashes for all installers
# Publishing the GPO files
- pwsh: |-
New-Item "$(JobOutputDirectory)/gpo" -Type Directory
Copy-Item src\gpo\assets\* "$(JobOutputDirectory)/gpo" -Recurse
$GpoArchive = "$(JobOutputDirectory)\GroupPolicyObjectFiles-${{ parameters.versionNumber }}.zip"
tar -c -v --format=zip -C .\src\gpo\assets -f $GpoArchive *
displayName: Stage GPO files
# Running the tests may result in future jobs consuming artifacts out of this build
- ${{ if or(eq(parameters.runTests, true), eq(parameters.buildTests, true)) }}:
- task: CopyFiles@2
displayName: Stage entire build output
inputs:
sourceFolder: '$(Build.SourcesDirectory)'
contents: '$(BuildPlatform)/$(BuildConfiguration)/**/*'
targetFolder: '$(JobOutputDirectory)\$(BuildPlatform)\$(BuildConfiguration)'
# Running the tests may result in future jobs consuming artifacts out of this build
# Instead of running an expensive file copy step, move everything over since the build is totally done.
- pwsh: |-
# It seems weird, but this is for compatibility. Our artifacts historically contained the folder x64/Release/x64/Release (for example).
$FinalOutputRoot = "$(JobOutputDirectory)\$(BuildPlatform)\$(BuildConfiguration)\$(BuildPlatform)"
$ProjectBuildRoot = "$(Build.SourcesDirectory)\$(BuildPlatform)"
$ProjectBuildDirectory = "$ProjectBuildRoot\$(BuildConfiguration)"
New-Item -Type Directory $FinalOutputRoot -EA:Ignore
Move-Item $ProjectBuildDirectory $FinalOutputRoot
displayName: Move entire output directory into artifacts
- ${{ if eq(parameters.publishArtifacts, true) }}:
- publish: $(JobOutputDirectory)
artifact: $(JobOutputArtifactName)
displayName: Publish all outputs
condition: always()
condition: succeeded()
- publish: $(JobOutputDirectory)
artifact: $(JobOutputArtifactName)-failure-$(System.JobAttempt)
displayName: Publish failure logs
condition: or(failed(), canceled())

View File

@@ -2,9 +2,6 @@ parameters:
- name: versionNumber
type: string
default: "0.0.1"
- name: buildUserInstaller
type: boolean
default: false
- name: codeSign
type: boolean
default: false
@@ -14,9 +11,6 @@ parameters:
- name: additionalBuildOptions
type: string
default: ''
- name: installerSuffix
type: string
default: "wix5"
steps:
# Install WiX 5.0.2 tools needed for VNext installer (matching project SDK)
@@ -28,44 +22,26 @@ steps:
arguments: 'install --global wix --version 5.0.2'
- pwsh: |-
& git clean -xfd -e *exe -- .\installer\
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Clean installer to reduce cross-contamination
- pwsh: |-
# Determine whether this is a per-user build
$IsPerUser = $${{ parameters.buildUserInstaller }}
# Build slug used to locate the artifacts
$InstallerBuildSlug = if ($IsPerUser) { 'UserSetup' } else { 'MachineSetup' }
# VNext bundle folder; base name intentionally omits the VNext suffix
$InstallerFolder = 'PowerToysSetupVNext'
if ($IsPerUser) {
$InstallerBasename = "PowerToysUserSetup-${{ parameters.versionNumber }}-${{ parameters.installerSuffix }}-$(BuildPlatform)"
}
else {
$InstallerBasename = "PowerToysSetup-${{ parameters.versionNumber }}-${{ parameters.installerSuffix }}-$(BuildPlatform)"
}
# Export variables for downstream steps
Write-Host "##vso[task.setvariable variable=InstallerBuildSlug]$InstallerBuildSlug"
Write-Host "##vso[task.setvariable variable=InstallerRelativePath]$(BuildPlatform)\$(BuildConfiguration)\$InstallerBuildSlug"
Write-Host "##vso[task.setvariable variable=InstallerBasename]$InstallerBasename"
Write-Host "##vso[task.setvariable variable=InstallerFolder]$InstallerFolder"
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Prepare Installer variables
Write-Host "##vso[task.setvariable variable=InstallerMachineRoot]installer\PowerToysSetupVNext\$(BuildPlatform)\$(BuildConfiguration)\MachineSetup"
Write-Host "##vso[task.setvariable variable=InstallerUserRoot]installer\PowerToysSetupVNext\$(BuildPlatform)\$(BuildConfiguration)\UserSetup"
Write-Host "##vso[task.setvariable variable=InstallerMachineBasename]PowerToysSetup-${{ parameters.versionNumber }}-$(BuildPlatform)"
Write-Host "##vso[task.setvariable variable=InstallerUserBasename]PowerToysUserSetup-${{ parameters.versionNumber }}-$(BuildPlatform)"
displayName: Prepare Installer variables
# This dll needs to be built and signed before building the MSI.
# The Custom Actions project contains a pre-build event that prepares the .wxs files
# by filling them out with all our components. We pass RunBuildEvents=true to force
# that logic to run.
- task: VSBuild@1
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Build PowerToysSetupCustomActionsVNext
displayName: Build Shared Support DLLs
inputs:
solution: "**/installer/PowerToysSetup.sln"
vsVersion: 17.0
msbuildArgs: >-
/t:PowerToysSetupCustomActionsVNext
/p:RunBuildEvents=true;PerUser=${{parameters.buildUserInstaller}};RestorePackagesConfig=true;CIBuild=true
/p:InstallerSuffix=${{ parameters.installerSuffix }}
/t:PowerToysSetupCustomActionsVNext;SilentFilesInUseBAFunction
/p:RunBuildEvents=true;RestorePackagesConfig=true;CIBuild=true
-restore -graph
/bl:$(LogOutputDirectory)\installer-$(InstallerBuildSlug)-actions.binlog
/bl:$(LogOutputDirectory)\installer-actions.binlog
${{ parameters.additionalBuildOptions }}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
@@ -74,29 +50,53 @@ steps:
maximumCpuCount: true
- ${{ if eq(parameters.codeSign, true) }}:
- template: steps-esrp-signing.yml
- template: steps-esrp-sign-files-authenticode.yml
parameters:
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Sign PowerToysSetupCustomActionsVNext
displayName: Sign Shared Support DLLs
signingIdentity: ${{ parameters.signingIdentity }}
inputs:
FolderPath: 'installer/PowerToysSetupCustomActionsVNext/$(InstallerRelativePath)'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
folder: 'installer'
pattern: |-
**/PowerToysSetupCustomActionsVNext.dll
**/SilentFilesInUseBAFunction.dll
## INSTALLER START
#### MSI BUILDING AND SIGNING
#
# The MSI build contains code that reverts the .wxs files to their in-tree versions.
# This is only supposed to happen during local builds. Since this build system is
# supposed to run side by side--machine and then user--we do NOT want to destroy
# the .wxs files. Therefore, we pass RunBuildEvents=false to suppress all of that
# logic.
#
# We pass BuildProjectReferences=false so that it does not recompile the DLLs we just built.
# We only pass -restore on the first one because the second run should already have all
# of the dependencies.
- task: VSBuild@1
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Build VNext MSI
displayName: 💻 Build VNext MSI
inputs:
solution: "**/installer/PowerToysSetup.sln"
vsVersion: 17.0
msbuildArgs: >-
-restore
/t:PowerToysInstallerVNext
/p:RunBuildEvents=false;PerUser=${{parameters.buildUserInstaller}};BuildProjectReferences=false;CIBuild=true
/p:InstallerSuffix=${{ parameters.installerSuffix }}
/bl:$(LogOutputDirectory)\installer-$(InstallerBuildSlug)-msi.binlog
/p:RunBuildEvents=false;PerUser=false;BuildProjectReferences=false;CIBuild=true
/bl:$(LogOutputDirectory)\installer-machine-msi.binlog
${{ parameters.additionalBuildOptions }}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: false # don't undo our hard work above by deleting the CustomActions dll
msbuildArchitecture: x64
maximumCpuCount: true
- task: VSBuild@1
displayName: 👤 Build VNext MSI
inputs:
solution: "**/installer/PowerToysSetup.sln"
vsVersion: 17.0
msbuildArgs: >-
/t:PowerToysInstallerVNext
/p:RunBuildEvents=false;PerUser=true;BuildProjectReferences=false;CIBuild=true
/bl:$(LogOutputDirectory)\installer-user-msi.binlog
${{ parameters.additionalBuildOptions }}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
@@ -105,79 +105,66 @@ steps:
maximumCpuCount: true
- script: |-
wix msi decompile installer\$(InstallerFolder)\$(InstallerRelativePath)\$(InstallerBasename).msi -x $(build.sourcesdirectory)\extractedMsi
dir $(build.sourcesdirectory)\extractedMsi
displayName: "${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} WiX5: Extract and verify MSI"
wix msi decompile $(InstallerMachineRoot)\$(InstallerMachineBasename).msi -x $(build.sourcesdirectory)\extractedMachineMsi
wix msi decompile $(InstallerUserRoot)\$(InstallerUserBasename).msi -x $(build.sourcesdirectory)\extractedUserMsi
dir $(build.sourcesdirectory)\extractedMachineMsi
dir $(build.sourcesdirectory)\extractedUserMsi
displayName: "WiX5: Extract and verify MSIs"
# Check if deps.json files don't reference different dll versions.
- pwsh: |-
& '.pipelines/verifyDepsJsonLibraryVersions.ps1' -targetDir '$(build.sourcesdirectory)\extractedMsi\File'
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Audit deps.json in MSI extracted files
& '.pipelines/verifyDepsJsonLibraryVersions.ps1' -targetDir '$(build.sourcesdirectory)\extractedMachineMsi\File'
& '.pipelines/verifyDepsJsonLibraryVersions.ps1' -targetDir '$(build.sourcesdirectory)\extractedUserMsi\File'
displayName: Audit deps.json in MSI extracted files
- ${{ if eq(parameters.codeSign, true) }}:
- pwsh: |-
& .pipelines/versionAndSignCheck.ps1 -targetDir '$(build.sourcesdirectory)\extractedMsi\File'
& .pipelines/versionAndSignCheck.ps1 -targetDir '$(build.sourcesdirectory)\extractedMsi\Binary'
git clean -xfd ./extractedMsi
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Verify all binaries are signed and versioned
& .pipelines/versionAndSignCheck.ps1 -targetDir '$(build.sourcesdirectory)\extractedMachineMsi\File'
& .pipelines/versionAndSignCheck.ps1 -targetDir '$(build.sourcesdirectory)\extractedMachineMsi\Binary'
& .pipelines/versionAndSignCheck.ps1 -targetDir '$(build.sourcesdirectory)\extractedUserMsi\File'
& .pipelines/versionAndSignCheck.ps1 -targetDir '$(build.sourcesdirectory)\extractedUserMsi\Binary'
git clean -xfd ./extractedMachineMsi ./extractedUserMsi
displayName: Verify all binaries are signed and versioned
- template: steps-esrp-signing.yml
- template: steps-esrp-sign-files-authenticode.yml
parameters:
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Sign VNext MSI
displayName: Sign VNext MSIs
signingIdentity: ${{ parameters.signingIdentity }}
inputs:
FolderPath: 'installer/$(InstallerFolder)/$(InstallerRelativePath)'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
folder: 'installer'
pattern: '**/PowerToys*Setup-*.msi'
#### END MSI
#### BUILDING AND SIGNING SilentFilesInUseBAFunction DLL
- task: VSBuild@1
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Build SilentFilesInUseBAFunction
inputs:
solution: "**/installer/PowerToysSetup.sln"
vsVersion: 17.0
msbuildArgs: >-
/t:SilentFilesInUseBAFunction
/p:RunBuildEvents=true;PerUser=${{parameters.buildUserInstaller}};RestorePackagesConfig=true;CIBuild=true
/p:InstallerSuffix=${{ parameters.installerSuffix }}
-restore -graph
/bl:$(LogOutputDirectory)\installer-$(InstallerBuildSlug)-SilentFilesInUseBAFunction.binlog
${{ parameters.additionalBuildOptions }}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: false # don't undo our hard work above by deleting the msi
msbuildArchitecture: x64
maximumCpuCount: true
- ${{ if eq(parameters.codeSign, true) }}:
- template: steps-esrp-signing.yml
parameters:
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Sign SilentFilesInUseBAFunction
signingIdentity: ${{ parameters.signingIdentity }}
inputs:
FolderPath: 'installer/$(BuildPlatform)/$(BuildConfiguration)'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
#### END BUILDING AND SIGNING SilentFilesInUseBAFunction DLL
#### BOOTSTRAP BUILDING AND SIGNING
# We pass BuildProjectReferences=false so that it does not recompile the DLLs we just built.
# We only pass -restore on the first one because the second run should already have all
# of the dependencies.
- task: VSBuild@1
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Build VNext Bootstrapper
displayName: 💻 Build VNext Bootstrapper
inputs:
solution: "**/installer/PowerToysSetup.sln"
vsVersion: 17.0
msbuildArgs: >-
-restore
/t:PowerToysBootstrapperVNext
/p:PerUser=${{parameters.buildUserInstaller}};CIBuild=true
/p:InstallerSuffix=${{ parameters.installerSuffix }}
/bl:$(LogOutputDirectory)\installer-$(InstallerBuildSlug)-bootstrapper.binlog
-restore -graph
/p:PerUser=false;BuildProjectReferences=false;CIBuild=true
/bl:$(LogOutputDirectory)\installer-machine-bootstrapper.binlog
${{ parameters.additionalBuildOptions }}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: false # don't undo our hard work above by deleting the MSI nor SilentFilesInUseBAFunction
msbuildArchitecture: x64
maximumCpuCount: true
- task: VSBuild@1
displayName: 👤 Build VNext Bootstrapper
inputs:
solution: "**/installer/PowerToysSetup.sln"
vsVersion: 17.0
msbuildArgs: >-
/t:PowerToysBootstrapperVNext
/p:PerUser=true;BuildProjectReferences=false;CIBuild=true
/bl:$(LogOutputDirectory)\installer-user-bootstrapper.binlog
${{ parameters.additionalBuildOptions }}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
@@ -188,54 +175,41 @@ steps:
# The entirety of bundle unpacking/re-packing is unnecessary if we are not code signing it.
- ${{ if eq(parameters.codeSign, true) }}:
- script: |-
wix burn detach installer\$(InstallerFolder)\$(InstallerRelativePath)\$(InstallerBasename).exe -engine installer\engine.exe
displayName: "${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} WiX5: Extract Engine from Bundle"
wix burn detach $(InstallerMachineRoot)\$(InstallerMachineBasename).exe -engine installer\machine-engine.exe
wix burn detach $(InstallerUserRoot)\$(InstallerUserBasename).exe -engine installer\user-engine.exe
displayName: "WiX5: Extract Engines from Bundles"
- template: steps-esrp-signing.yml
- template: steps-esrp-sign-files-authenticode.yml
parameters:
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Sign WiX Engine
displayName: Sign WiX Engines
signingIdentity: ${{ parameters.signingIdentity }}
inputs:
FolderPath: "installer"
Pattern: engine.exe
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolSign",
"Parameters": {
"OpusName": "Microsoft",
"OpusInfo": "http://www.microsoft.com",
"FileDigest": "/fd \"SHA256\"",
"PageHash": "/NPH",
"TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
},
"ToolName": "sign",
"ToolVersion": "1.0"
},
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolVerify",
"Parameters": {},
"ToolName": "sign",
"ToolVersion": "1.0"
}
]
folder: "installer"
pattern: '*-engine.exe'
- script: |-
wix burn reattach installer\$(InstallerFolder)\$(InstallerRelativePath)\$(InstallerBasename).exe -engine installer\engine.exe -o installer\$(InstallerFolder)\$(InstallerRelativePath)\$(InstallerBasename).exe
displayName: "${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} WiX5: Reattach Engine to Bundle"
wix burn reattach $(InstallerMachineRoot)\$(InstallerMachineBasename).exe -engine installer\machine-engine.exe -o $(InstallerMachineRoot)\$(InstallerMachineBasename).exe
wix burn reattach $(InstallerUserRoot)\$(InstallerUserBasename).exe -engine installer\user-engine.exe -o $(InstallerUserRoot)\$(InstallerUserBasename).exe
displayName: "WiX5: Reattach Engines to Bundles"
- template: steps-esrp-signing.yml
- pwsh: |-
& wix burn extract -oba installer\ba\m "$(InstallerMachineRoot)\$(InstallerMachineBasename).exe"
& wix burn extract -oba installer\ba\u "$(InstallerUserRoot)\$(InstallerUserBasename).exe"
Get-ChildItem installer\ba -Recurse -Include *.exe,*.dll | Get-AuthenticodeSignature | ForEach-Object {
If ($_.Status -Ne "Valid") {
Write-Error $_.StatusMessage
} Else {
Write-Host $_.StatusMessage
}
}
& git clean -fdx installer\ba
displayName: "WiX5: Verify Bootstrapper content is signed"
- template: steps-esrp-sign-files-authenticode.yml
parameters:
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Sign Final Bootstrapper
displayName: Sign Final Bootstrappers
signingIdentity: ${{ parameters.signingIdentity }}
inputs:
FolderPath: 'installer/$(InstallerFolder)/$(InstallerRelativePath)'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
folder: 'installer'
pattern: '**/PowerToys*Setup-*.exe'
#### END BOOTSTRAP
## END INSTALLER

View File

@@ -1,208 +0,0 @@
parameters:
- name: versionNumber
type: string
default: "0.0.1"
- name: buildUserInstaller
type: boolean
default: false
- name: codeSign
type: boolean
default: false
- name: signingIdentity
type: object
default: {}
- name: additionalBuildOptions
type: string
default: ''
steps:
- pwsh: |-
& git clean -xfd -e *exe -- .\installer\
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Clean installer to reduce cross-contamination
- pwsh: |-
$IsPerUser = $${{ parameters.buildUserInstaller }}
$InstallerBuildSlug = "MachineSetup"
$InstallerBasename = "PowerToysSetup"
If($IsPerUser) {
$InstallerBuildSlug = "UserSetup"
$InstallerBasename = "PowerToysUserSetup"
}
$InstallerBasename += "-${{ parameters.versionNumber }}-$(BuildPlatform)"
Write-Host "##vso[task.setvariable variable=InstallerBuildSlug]$InstallerBuildSlug"
Write-Host "##vso[task.setvariable variable=InstallerRelativePath]$(BuildPlatform)\$(BuildConfiguration)\$InstallerBuildSlug"
Write-Host "##vso[task.setvariable variable=InstallerBasename]$InstallerBasename"
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Prepare Installer variables
# This dll needs to be built and signed before building the MSI.
- task: VSBuild@1
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Build PowerToysSetupCustomActions
inputs:
solution: "**/installer/PowerToysSetup.sln"
vsVersion: 17.0
msbuildArgs: >-
/t:PowerToysSetupCustomActions
/p:RunBuildEvents=true;PerUser=${{parameters.buildUserInstaller}};RestorePackagesConfig=true;CIBuild=true
-restore -graph
/bl:$(LogOutputDirectory)\installer-$(InstallerBuildSlug)-actions.binlog
${{ parameters.additionalBuildOptions }}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: true
msbuildArchitecture: x64
maximumCpuCount: true
- ${{ if eq(parameters.codeSign, true) }}:
- template: steps-esrp-signing.yml
parameters:
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Sign PowerToysSetupCustomActions
signingIdentity: ${{ parameters.signingIdentity }}
inputs:
FolderPath: 'installer/PowerToysSetupCustomActions/$(InstallerRelativePath)'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
## INSTALLER START
#### MSI BUILDING AND SIGNING
- task: VSBuild@1
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Build MSI
inputs:
solution: "**/installer/PowerToysSetup.sln"
vsVersion: 17.0
msbuildArgs: >-
-restore
/t:PowerToysInstaller
/p:RunBuildEvents=false;PerUser=${{parameters.buildUserInstaller}};BuildProjectReferences=false;CIBuild=true
/bl:$(LogOutputDirectory)\installer-$(InstallerBuildSlug)-msi.binlog
${{ parameters.additionalBuildOptions }}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: false # don't undo our hard work above by deleting the CustomActions dll
msbuildArchitecture: x64
maximumCpuCount: true
- script: |-
"C:\Program Files (x86)\WiX Toolset v3.14\bin\dark.exe" -x $(build.sourcesdirectory)\extractedMsi installer\PowerToysSetup\$(InstallerRelativePath)\$(InstallerBasename).msi
dir $(build.sourcesdirectory)\extractedMsi
displayName: "${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Extract and verify MSI"
# Extract CmdPal msix package to check if its content is signed
- pwsh: |-
Write-Host "Extracting CmdPal MSIX package"
# Define the directory to search
$searchDir = "extractedMsi\File"
# Define the regex pattern for MSIX files
$pattern = '^Microsoft.CmdPal.UI.*\.msix$'
# Get all files in the directory and subdirectories
$msixFile = Get-ChildItem -Path $searchDir -Recurse -File | Where-Object {
$_.Name -match $pattern
}
Write-Host "MSIX file found: " $msixFile
$destinationDir = "$(build.sourcesdirectory)\extractedMsi\File\extractedCmdPalMsix"
Expand-Archive -Path $msixFile -DestinationPath $destinationDir
Get-ChildItem -Path $destinationDir -Recurse -File
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Extract CmdPal MSIX package
# Check if deps.json files don't reference different dll versions.
- pwsh: |-
& '.pipelines/verifyDepsJsonLibraryVersions.ps1' -targetDir '$(build.sourcesdirectory)\extractedMsi\File'
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Audit deps.json in MSI extracted files
- ${{ if eq(parameters.codeSign, true) }}:
- pwsh: |-
& .pipelines/versionAndSignCheck.ps1 -targetDir '$(build.sourcesdirectory)\extractedMsi\File'
& .pipelines/versionAndSignCheck.ps1 -targetDir '$(build.sourcesdirectory)\extractedMsi\Binary'
git clean -xfd ./extractedMsi
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Verify all binaries are signed and versioned
- template: steps-esrp-signing.yml
parameters:
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Sign MSI
signingIdentity: ${{ parameters.signingIdentity }}
inputs:
FolderPath: 'installer/PowerToysSetup/$(InstallerRelativePath)'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
#### END MSI
#### BOOTSTRAP BUILDING AND SIGNING
- task: VSBuild@1
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Build Bootstrapper
inputs:
solution: "**/installer/PowerToysSetup.sln"
vsVersion: 17.0
msbuildArgs: >-
/t:PowerToysBootstrapper
/p:PerUser=${{parameters.buildUserInstaller}};CIBuild=true
/bl:$(LogOutputDirectory)\installer-$(InstallerBuildSlug)-bootstrapper.binlog
-restore -graph
${{ parameters.additionalBuildOptions }}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: false # don't undo our hard work above by deleting the MSI
msbuildArchitecture: x64
maximumCpuCount: true
# The entirety of bundle unpacking/re-packing is unnecessary if we are not code signing it.
- ${{ if eq(parameters.codeSign, true) }}:
- script: |-
"C:\Program Files (x86)\WiX Toolset v3.14\bin\insignia.exe" -ib installer\PowerToysSetup\$(InstallerRelativePath)\$(InstallerBasename).exe -o installer\engine.exe
displayName: "${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Insignia: Extract Engine from Bundle"
- template: steps-esrp-signing.yml
parameters:
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Sign WiX Engine
signingIdentity: ${{ parameters.signingIdentity }}
inputs:
FolderPath: "installer"
Pattern: engine.exe
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolSign",
"Parameters": {
"OpusName": "Microsoft",
"OpusInfo": "http://www.microsoft.com",
"FileDigest": "/fd \"SHA256\"",
"PageHash": "/NPH",
"TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
},
"ToolName": "sign",
"ToolVersion": "1.0"
},
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolVerify",
"Parameters": {},
"ToolName": "sign",
"ToolVersion": "1.0"
}
]
- script: |-
"C:\Program Files (x86)\WiX Toolset v3.14\bin\insignia.exe" -ab installer\engine.exe installer\PowerToysSetup\$(InstallerRelativePath)\$(InstallerBasename).exe -o installer\PowerToysSetup\$(InstallerRelativePath)\$(InstallerBasename).exe
displayName: "${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Insignia: Merge Engine into Bundle"
- template: steps-esrp-signing.yml
parameters:
displayName: ${{replace(replace(parameters.buildUserInstaller,'True','👤'),'False','💻')}} Sign Final Bootstrapper
signingIdentity: ${{ parameters.signingIdentity }}
inputs:
FolderPath: 'installer/PowerToysSetup/$(InstallerRelativePath)'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
#### END BOOTSTRAP
## END INSTALLER

View File

@@ -0,0 +1,45 @@
parameters:
- name: displayName
type: string
default: Sign Specific Files
- name: folder
type: string
- name: pattern
type: string
- name: signingIdentity
type: object
default: {}
steps:
- template: steps-esrp-signing.yml
parameters:
displayName: ${{ parameters.displayName }}
signingIdentity: ${{ parameters.signingIdentity }}
inputs:
FolderPath: ${{ parameters.folder }}
Pattern: ${{ parameters.pattern }}
UseMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |-
[
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolSign",
"Parameters": {
"OpusName": "Microsoft",
"OpusInfo": "http://www.microsoft.com",
"FileDigest": "/fd \"SHA256\"",
"PageHash": "/NPH",
"TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
},
"ToolName": "sign",
"ToolVersion": "1.0"
},
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolVerify",
"Parameters": {},
"ToolName": "sign",
"ToolVersion": "1.0"
}
]

13
.vscode/launch.json vendored
View File

@@ -38,6 +38,17 @@
"env": {},
"console": "internalConsole",
"stopAtEntry": false
}
},
{
"name": "Run AdvancedPaste (managed, no build, ARCH configurable)",
"type": "coreclr",
"request": "launch",
"program": "${workspaceFolder}\\${input:arch}\\Debug\\WinUI3Apps\\PowerToys.AdvancedPaste.exe",
"args": [],
"cwd": "${workspaceFolder}",
"env": {},
"console": "internalConsole",
"stopAtEntry": false
},
]
}

View File

@@ -26,6 +26,7 @@
<PropertyGroup Condition="'$(SkipCppCodeAnalysis)' == ''">
<RunCodeAnalysis>true</RunCodeAnalysis>
<CodeAnalysisRuleSet>$(MsbuildThisFileDirectory)\CppRuleSet.ruleset</CodeAnalysisRuleSet>
<CAExcludePath>$(MSBuildThisFileDirectory)deps;$(MSBuildThisFileDirectory)packages;$(CAExcludePath)</CAExcludePath>
</PropertyGroup>
<!-- C++ source compile-specific things for all configurations -->
@@ -34,7 +35,7 @@
<PreferredToolArchitecture Condition="'$(PROCESSOR_ARCHITECTURE)' == 'ARM64' or '$(PROCESSOR_ARCHITEW6432)' == 'ARM64'">arm64</PreferredToolArchitecture>
<VcpkgEnabled>false</VcpkgEnabled>
<ReplaceWildcardsInProjectItems>true</ReplaceWildcardsInProjectItems>
<ExternalIncludePath>$(MSBuildThisFileFullPath)\..\deps\;$(MSBuildThisFileFullPath)\..\packages\;$(ExternalIncludePath)</ExternalIncludePath>
<ExternalIncludePath>$(MSBuildThisFileDirectory)deps;$(MSBuildThisFileDirectory)packages;$(ExternalIncludePath)</ExternalIncludePath>
<!-- Enable control flow guard for C++ projects that don't consume any C++ files -->
<!-- This covers the case where a .dll exports a .lib, but doesn't have any ClCompile entries. -->
<LinkControlFlowGuard>Guard</LinkControlFlowGuard>

View File

@@ -147,6 +147,18 @@ _If you want to find diagnostic data events in the source code, these two links
<td>Microsoft.PowerToys.AdvancedPasteSemanticKernelFormatEvent</td>
<td>Triggered when Advanced Paste leverages the Semantic Kernel.</td>
</tr>
<tr>
<td>Microsoft.PowerToys.AdvancedPasteSemanticKernelErrorEvent</td>
<td>Occurs when the Semantic Kernel workflow encounters an error.</td>
</tr>
<tr>
<td>Microsoft.PowerToys.AdvancedPasteEndpointUsageEvent</td>
<td>Logs the AI provider, model, and processing duration for each endpoint call.</td>
</tr>
<tr>
<td>Microsoft.PowerToys.AdvancedPasteCustomActionErrorEvent</td>
<td>Records provider, model, and status details when a custom action fails.</td>
</tr>
</table>
### Always on Top

View File

@@ -1,4 +1,4 @@
<Project>
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
@@ -7,9 +7,9 @@
<PackageVersion Include="AdaptiveCards.ObjectModel.WinUI3" Version="2.0.0-beta" />
<PackageVersion Include="AdaptiveCards.Rendering.WinUI3" Version="2.1.0-beta" />
<PackageVersion Include="AdaptiveCards.Templating" Version="2.0.5" />
<PackageVersion Include="CommunityToolkit.Labs.WinUI.Controls.OpacityMaskView" Version="0.1.251101-build.2372" />
<PackageVersion Include="Microsoft.Bot.AdaptiveExpressions.Core" Version="4.23.0" />
<PackageVersion Include="Appium.WebDriver" Version="4.4.5" />
<PackageVersion Include="Azure.AI.OpenAI" Version="1.0.0-beta.17" />
<PackageVersion Include="CoenM.ImageSharp.ImageHash" Version="1.3.6" />
<PackageVersion Include="CommunityToolkit.Common" Version="8.4.0" />
<PackageVersion Include="CommunityToolkit.Mvvm" Version="8.4.0" />
@@ -35,23 +35,33 @@
<!-- Including MessagePack to force version, since it's used by StreamJsonRpc but contains vulnerabilities. After StreamJsonRpc updates the version of MessagePack, we can upgrade StreamJsonRpc instead. -->
<PackageVersion Include="MessagePack" Version="3.1.3" />
<PackageVersion Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="9.0.0" />
<PackageVersion Include="Microsoft.Data.Sqlite" Version="9.0.8" />
<PackageVersion Include="Microsoft.Data.Sqlite" Version="9.0.10" />
<!-- Including Microsoft.Bcl.AsyncInterfaces to force version, since it's used by Microsoft.SemanticKernel. -->
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.8" />
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.10" />
<PackageVersion Include="Microsoft.Windows.CppWinRT" Version="2.0.240111.5" />
<PackageVersion Include="Microsoft.Diagnostics.Tracing.TraceEvent" Version="3.1.16" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Hosting.WindowsServices" Version="9.0.8" />
<PackageVersion Include="Microsoft.SemanticKernel" Version="1.15.0" />
<PackageVersion Include="Microsoft.Extensions.AI" Version="9.9.1" />
<PackageVersion Include="Microsoft.Extensions.AI.OpenAI" Version="9.9.1-preview.1.25474.6" />
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="9.0.10" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="9.0.10" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.10" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.10" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.10" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.10" />
<PackageVersion Include="Microsoft.Extensions.Hosting.WindowsServices" Version="9.0.10" />
<PackageVersion Include="Microsoft.AI.Foundry.Local" Version="0.3.0" />
<PackageVersion Include="Microsoft.SemanticKernel" Version="1.66.0" />
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.OpenAI" Version="1.66.0" />
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.AzureAIInference" Version="1.66.0-beta" />
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.Google" Version="1.66.0-alpha" />
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.MistralAI" Version="1.66.0-alpha" />
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.Ollama" Version="1.66.0-alpha" />
<PackageVersion Include="Microsoft.Toolkit.Uwp.Notifications" Version="7.1.2" />
<PackageVersion Include="Microsoft.Web.WebView2" Version="1.0.3179.45" />
<!-- Package Microsoft.Win32.SystemEvents added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.1. This is a dependency of System.Drawing.Common but the 8.0.1 version wasn't published to nuget. -->
<PackageVersion Include="Microsoft.Win32.SystemEvents" Version="9.0.8" />
<PackageVersion Include="Microsoft.Win32.SystemEvents" Version="9.0.10" />
<PackageVersion Include="Microsoft.WindowsPackageManager.ComInterop" Version="1.10.340" />
<PackageVersion Include="Microsoft.Windows.Compatibility" Version="9.0.8" />
<PackageVersion Include="Microsoft.Windows.Compatibility" Version="9.0.10" />
<PackageVersion Include="Microsoft.Windows.CsWin32" Version="0.3.183" />
<!-- CsWinRT version needs to be set to have a WinRT.Runtime.dll at the same version contained inside the NET SDK we're currently building on CI. -->
<!--
@@ -61,6 +71,8 @@
<PackageVersion Include="Microsoft.Windows.CsWinRT" Version="2.2.0" />
<PackageVersion Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.4948" />
<PackageVersion Include="Microsoft.WindowsAppSDK" Version="1.8.250907003" />
<PackageVersion Include="Microsoft.WindowsAppSDK.AI" Version="1.8.37" />
<PackageVersion Include="Microsoft.WindowsAppSDK.Runtime" Version="1.8.250907003" />
<PackageVersion Include="Microsoft.Xaml.Behaviors.WinUI.Managed" Version="2.0.9" />
<PackageVersion Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.39" />
<PackageVersion Include="ModernWpfUI" Version="0.9.4" />
@@ -72,7 +84,7 @@
<PackageVersion Include="NLog" Version="5.2.8" />
<PackageVersion Include="NLog.Extensions.Logging" Version="5.3.8" />
<PackageVersion Include="NLog.Schema" Version="5.2.8" />
<PackageVersion Include="OpenAI" Version="2.0.0" />
<PackageVersion Include="OpenAI" Version="2.5.0" />
<PackageVersion Include="ReverseMarkdown" Version="4.1.0" />
<PackageVersion Include="RtfPipe" Version="2.0.7677.4303" />
<PackageVersion Include="ScipBe.Common.Office.OneNote" Version="3.0.1" />
@@ -82,28 +94,29 @@
<PackageVersion Include="StreamJsonRpc" Version="2.21.69" />
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
<!-- Package System.CodeDom added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.1. This is a dependency of System.Management but the 8.0.1 version wasn't published to nuget. -->
<PackageVersion Include="System.CodeDom" Version="9.0.8" />
<PackageVersion Include="System.CodeDom" Version="9.0.10" />
<PackageVersion Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
<PackageVersion Include="System.ComponentModel.Composition" Version="9.0.8" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="9.0.8" />
<PackageVersion Include="System.Data.OleDb" Version="9.0.8" />
<PackageVersion Include="System.ComponentModel.Composition" Version="9.0.10" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="9.0.10" />
<PackageVersion Include="System.Data.OleDb" Version="9.0.10" />
<!-- Package System.Data.SqlClient added to force it as a dependency of Microsoft.Windows.Compatibility to the latest version available at this time. -->
<PackageVersion Include="System.Data.SqlClient" Version="4.9.0" />
<!-- Package System.Diagnostics.EventLog added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.1. This is a dependency of System.Data.OleDb but the 8.0.1 version wasn't published to nuget. -->
<PackageVersion Include="System.Diagnostics.EventLog" Version="9.0.8" />
<PackageVersion Include="System.Diagnostics.EventLog" Version="9.0.10" />
<!-- Package System.Diagnostics.PerformanceCounter added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.11. -->
<PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="9.0.8" />
<PackageVersion Include="System.Drawing.Common" Version="9.0.8" />
<PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="9.0.10" />
<PackageVersion Include="System.ClientModel" Version="1.7.0" />
<PackageVersion Include="System.Drawing.Common" Version="9.0.10" />
<PackageVersion Include="System.IO.Abstractions" Version="22.0.13" />
<PackageVersion Include="System.IO.Abstractions.TestingHelpers" Version="22.0.13" />
<PackageVersion Include="System.Management" Version="9.0.8" />
<PackageVersion Include="System.Management" Version="9.0.10" />
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
<PackageVersion Include="System.Private.Uri" Version="4.3.2" />
<PackageVersion Include="System.Reactive" Version="6.0.1" />
<PackageVersion Include="System.Runtime.Caching" Version="9.0.8" />
<PackageVersion Include="System.ServiceProcess.ServiceController" Version="9.0.8" />
<PackageVersion Include="System.Text.Encoding.CodePages" Version="9.0.8" />
<PackageVersion Include="System.Text.Json" Version="9.0.8" />
<PackageVersion Include="System.Runtime.Caching" Version="9.0.10" />
<PackageVersion Include="System.ServiceProcess.ServiceController" Version="9.0.10" />
<PackageVersion Include="System.Text.Encoding.CodePages" Version="9.0.10" />
<PackageVersion Include="System.Text.Json" Version="9.0.10" />
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" />
<PackageVersion Include="UnicodeInformation" Version="2.6.0" />
<PackageVersion Include="UnitsNet" Version="5.56.0" />
@@ -125,4 +138,4 @@
<PackageVersion Include="Microsoft.VariantAssignment.Client" Version="2.4.17140001" />
<PackageVersion Include="Microsoft.VariantAssignment.Contract" Version="3.0.16990001" />
</ItemGroup>
</Project>
</Project>

View File

@@ -1495,10 +1495,10 @@ SOFTWARE.
- AdaptiveCards.Rendering.WinUI3
- AdaptiveCards.Templating
- Appium.WebDriver
- Azure.AI.OpenAI
- CoenM.ImageSharp.ImageHash
- CommunityToolkit.Common
- CommunityToolkit.Labs.WinUI.Controls.MarkdownTextBlock
- CommunityToolkit.Labs.WinUI.Controls.OpacityMaskView
- CommunityToolkit.Mvvm
- CommunityToolkit.WinUI.Animations
- CommunityToolkit.WinUI.Collections

View File

@@ -26,6 +26,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "runner", "src\runner\runner
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D} = {D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}
{D940E07F-532C-4FF3-883F-790DA014F19A} = {D940E07F-532C-4FF3-883F-790DA014F19A}
{DA425894-6E13-404F-8DCB-78584EC0557A} = {DA425894-6E13-404F-8DCB-78584EC0557A}
{E2A5A82E-1E5B-4C8D-9A4F-2B1A8F9E5C3D} = {E2A5A82E-1E5B-4C8D-9A4F-2B1A8F9E5C3D}
{E364F67B-BB12-4E91-B639-355866EBCD8B} = {E364F67B-BB12-4E91-B639-355866EBCD8B}
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99} = {F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}
EndProjectSection
@@ -50,6 +51,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{1AFB64
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common.Lib.UnitTests", "src\common\UnitTests-CommonLib\UnitTests-CommonLib.vcxproj", "{1A066C63-64B3-45F8-92FE-664E1CCE8077}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PackageIdentity", "src\PackageIdentity\PackageIdentity.vcxproj", "{E2A5A82E-1E5B-4C8D-9A4F-2B1A8F9E5C3D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FancyZonesEditor", "src\modules\fancyzones\editor\FancyZonesEditor\FancyZonesEditor.csproj", "{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "powerrename", "powerrename", "{89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3}"
@@ -819,12 +822,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.Ext.WebSea
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.Ext.Shell.UnitTests", "src\modules\cmdpal\Tests\Microsoft.CmdPal.Ext.Shell.UnitTests\Microsoft.CmdPal.Ext.Shell.UnitTests.csproj", "{E816D7B4-4688-4ECB-97CC-3D8E798F3833}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CursorWrap", "src\modules\MouseUtils\CursorWrap\CursorWrap.vcxproj", "{48A1DB8C-5DF8-4FB3-9E14-2B67F3F2D8B5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{3DCCD936-D085-4869-A1DE-CA6A64152C94}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LightSwitch.UITests", "src\modules\LightSwitch\Tests\LightSwitch.UITests\LightSwitch.UITests.csproj", "{F5333ED7-06D8-4AB3-953A-36D63F08CB6F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.Ext.ClipboardHistory.UnitTests", "src\modules\cmdpal\Tests\Microsoft.CmdPal.Ext.ClipboardHistory.UnitTests\Microsoft.CmdPal.Ext.ClipboardHistory.UnitTests.csproj", "{4E0FCF69-B06B-D272-76BF-ED3A559B4EDA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LanguageModelProvider", "src\common\LanguageModelProvider\LanguageModelProvider.csproj", "{45354F4F-1414-45CE-B600-51CD1209FD19}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.UI.ViewModels.UnitTests", "src\modules\cmdpal\Tests\Microsoft.CmdPal.UI.ViewModels.UnitTests\Microsoft.CmdPal.UI.ViewModels.UnitTests.csproj", "{A66E9270-5D93-EC9C-F06E-CE7295BB9A6C}"
EndProject
Global
@@ -867,6 +874,14 @@ Global
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Release|ARM64.Build.0 = Release|ARM64
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Release|x64.ActiveCfg = Release|x64
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Release|x64.Build.0 = Release|x64
{E2A5A82E-1E5B-4C8D-9A4F-2B1A8F9E5C3D}.Debug|ARM64.ActiveCfg = Debug|ARM64
{E2A5A82E-1E5B-4C8D-9A4F-2B1A8F9E5C3D}.Debug|ARM64.Build.0 = Debug|ARM64
{E2A5A82E-1E5B-4C8D-9A4F-2B1A8F9E5C3D}.Debug|x64.ActiveCfg = Debug|x64
{E2A5A82E-1E5B-4C8D-9A4F-2B1A8F9E5C3D}.Debug|x64.Build.0 = Debug|x64
{E2A5A82E-1E5B-4C8D-9A4F-2B1A8F9E5C3D}.Release|ARM64.ActiveCfg = Release|ARM64
{E2A5A82E-1E5B-4C8D-9A4F-2B1A8F9E5C3D}.Release|ARM64.Build.0 = Release|ARM64
{E2A5A82E-1E5B-4C8D-9A4F-2B1A8F9E5C3D}.Release|x64.ActiveCfg = Release|x64
{E2A5A82E-1E5B-4C8D-9A4F-2B1A8F9E5C3D}.Release|x64.Build.0 = Release|x64
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Debug|ARM64.ActiveCfg = Debug|ARM64
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Debug|ARM64.Build.0 = Debug|ARM64
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Debug|x64.ActiveCfg = Debug|x64
@@ -2977,6 +2992,14 @@ Global
{E816D7B4-4688-4ECB-97CC-3D8E798F3833}.Release|ARM64.Build.0 = Release|ARM64
{E816D7B4-4688-4ECB-97CC-3D8E798F3833}.Release|x64.ActiveCfg = Release|x64
{E816D7B4-4688-4ECB-97CC-3D8E798F3833}.Release|x64.Build.0 = Release|x64
{48A1DB8C-5DF8-4FB3-9E14-2B67F3F2D8B5}.Debug|ARM64.ActiveCfg = Debug|ARM64
{48A1DB8C-5DF8-4FB3-9E14-2B67F3F2D8B5}.Debug|ARM64.Build.0 = Debug|ARM64
{48A1DB8C-5DF8-4FB3-9E14-2B67F3F2D8B5}.Debug|x64.ActiveCfg = Debug|x64
{48A1DB8C-5DF8-4FB3-9E14-2B67F3F2D8B5}.Debug|x64.Build.0 = Debug|x64
{48A1DB8C-5DF8-4FB3-9E14-2B67F3F2D8B5}.Release|ARM64.ActiveCfg = Release|ARM64
{48A1DB8C-5DF8-4FB3-9E14-2B67F3F2D8B5}.Release|ARM64.Build.0 = Release|ARM64
{48A1DB8C-5DF8-4FB3-9E14-2B67F3F2D8B5}.Release|x64.ActiveCfg = Release|x64
{48A1DB8C-5DF8-4FB3-9E14-2B67F3F2D8B5}.Release|x64.Build.0 = Release|x64
{F5333ED7-06D8-4AB3-953A-36D63F08CB6F}.Debug|ARM64.ActiveCfg = Debug|ARM64
{F5333ED7-06D8-4AB3-953A-36D63F08CB6F}.Debug|ARM64.Build.0 = Debug|ARM64
{F5333ED7-06D8-4AB3-953A-36D63F08CB6F}.Debug|ARM64.Deploy.0 = Debug|ARM64
@@ -2997,6 +3020,14 @@ Global
{4E0FCF69-B06B-D272-76BF-ED3A559B4EDA}.Release|ARM64.Build.0 = Release|ARM64
{4E0FCF69-B06B-D272-76BF-ED3A559B4EDA}.Release|x64.ActiveCfg = Release|x64
{4E0FCF69-B06B-D272-76BF-ED3A559B4EDA}.Release|x64.Build.0 = Release|x64
{45354F4F-1414-45CE-B600-51CD1209FD19}.Debug|ARM64.ActiveCfg = Debug|ARM64
{45354F4F-1414-45CE-B600-51CD1209FD19}.Debug|ARM64.Build.0 = Debug|ARM64
{45354F4F-1414-45CE-B600-51CD1209FD19}.Debug|x64.ActiveCfg = Debug|x64
{45354F4F-1414-45CE-B600-51CD1209FD19}.Debug|x64.Build.0 = Debug|x64
{45354F4F-1414-45CE-B600-51CD1209FD19}.Release|ARM64.ActiveCfg = Release|ARM64
{45354F4F-1414-45CE-B600-51CD1209FD19}.Release|ARM64.Build.0 = Release|ARM64
{45354F4F-1414-45CE-B600-51CD1209FD19}.Release|x64.ActiveCfg = Release|x64
{45354F4F-1414-45CE-B600-51CD1209FD19}.Release|x64.Build.0 = Release|x64
{A66E9270-5D93-EC9C-F06E-CE7295BB9A6C}.Debug|ARM64.ActiveCfg = Debug|ARM64
{A66E9270-5D93-EC9C-F06E-CE7295BB9A6C}.Debug|ARM64.Build.0 = Debug|ARM64
{A66E9270-5D93-EC9C-F06E-CE7295BB9A6C}.Debug|x64.ActiveCfg = Debug|x64
@@ -3330,9 +3361,11 @@ Global
{E816D7B3-4688-4ECB-97CC-3D8E798F3832} = {8EF25507-2575-4ADE-BF7E-D23376903AB8}
{E816D7B2-4688-4ECB-97CC-3D8E798F3831} = {8EF25507-2575-4ADE-BF7E-D23376903AB8}
{E816D7B4-4688-4ECB-97CC-3D8E798F3833} = {8EF25507-2575-4ADE-BF7E-D23376903AB8}
{48A1DB8C-5DF8-4FB3-9E14-2B67F3F2D8B5} = {322566EF-20DC-43A6-B9F8-616AF942579A}
{3DCCD936-D085-4869-A1DE-CA6A64152C94} = {5B201255-53C8-490B-A34F-01F05D48A477}
{F5333ED7-06D8-4AB3-953A-36D63F08CB6F} = {3DCCD936-D085-4869-A1DE-CA6A64152C94}
{4E0FCF69-B06B-D272-76BF-ED3A559B4EDA} = {8EF25507-2575-4ADE-BF7E-D23376903AB8}
{45354F4F-1414-45CE-B600-51CD1209FD19} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{A66E9270-5D93-EC9C-F06E-CE7295BB9A6C} = {8EF25507-2575-4ADE-BF7E-D23376903AB8}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution

347
README.md
View File

@@ -7,7 +7,9 @@
<h1 align="center">
<span>Microsoft PowerToys</span>
</h1>
<p align="center">
<span align="center">Microsoft PowerToys is a collection of utilities that help you customize Windows and streamline everyday tasks.</span>
</p>
<h3 align="center">
<a href="#-installation">Installation</a>
<span> · </span>
@@ -18,8 +20,10 @@
<a href="#-whats-new">Release notes</a>
</h3>
<br/><br/>
Microsoft PowerToys is a collection of utilities that help you customize Windows and streamline everyday tasks.
<br/><br/>
## 🔨 Utilities
PowerToys includes over 25 utilities to help you customize and optimize your Windows experience:
| | | |
|---|---|---|
@@ -27,50 +31,44 @@ Microsoft PowerToys is a collection of utilities that help you customize Windows
| [<img src="doc/images/icons/Color%20Picker.png" alt="Color Picker icon" height="16"> Color Picker](https://aka.ms/PowerToysOverview_ColorPicker) | [<img src="doc/images/icons/Command%20Not%20Found.png" alt="Command Not Found icon" height="16"> Command Not Found](https://aka.ms/PowerToysOverview_CmdNotFound) | [<img src="doc/images/icons/Command Palette.png" alt="Command Palette icon" height="16"> Command Palette](https://aka.ms/PowerToysOverview_CmdPal) |
| [<img src="doc/images/icons/Crop%20And%20Lock.png" alt="Crop and Lock icon" height="16"> Crop And Lock](https://aka.ms/PowerToysOverview_CropAndLock) | [<img src="doc/images/icons/Environment%20Manager.png" alt="Environment Variables icon" height="16"> Environment Variables](https://aka.ms/PowerToysOverview_EnvironmentVariables) | [<img src="doc/images/icons/FancyZones.png" alt="FancyZones icon" height="16"> FancyZones](https://aka.ms/PowerToysOverview_FancyZones) |
| [<img src="doc/images/icons/File%20Explorer%20Preview.png" alt="File Explorer Add-ons icon" height="16"> File Explorer Add-ons](https://aka.ms/PowerToysOverview_FileExplorerAddOns) | [<img src="doc/images/icons/File%20Locksmith.png" alt="File Locksmith icon" height="16"> File Locksmith](https://aka.ms/PowerToysOverview_FileLocksmith) | [<img src="doc/images/icons/Host%20File%20Editor.png" alt="Hosts File Editor icon" height="16"> Hosts File Editor](https://aka.ms/PowerToysOverview_HostsFileEditor) |
| [<img src="doc/images/icons/Image%20Resizer.png" alt="Image Resizer icon" height="16"> Image Resizer](https://aka.ms/PowerToysOverview_ImageResizer) | [<img src="doc/images/icons/Keyboard%20Manager.png" alt="Keyboard Manager icon" height="16"> Keyboard Manager](https://aka.ms/PowerToysOverview_KeyboardManager) | [<img src="doc/images/icons/Find My Mouse.png" alt="Mouse Utilities icon" height="16"> Mouse Utilities](https://aka.ms/PowerToysOverview_MouseUtilities) |
| [<img src="doc/images/icons/MouseWithoutBorders.png" alt="Mouse Without Borders icon" height="16"> Mouse Without Borders](https://aka.ms/PowerToysOverview_MouseWithoutBorders) | [<img src="doc/images/icons/NewPlus.png" alt="New+ icon" height="16"> New+](https://aka.ms/PowerToysOverview_NewPlus) | [<img src="doc/images/icons/Peek.png" alt="Peek icon" height="16"> Peek](https://aka.ms/PowerToysOverview_Peek) |
| [<img src="doc/images/icons/PowerRename.png" alt="PowerRename icon" height="16"> PowerRename](https://aka.ms/PowerToysOverview_PowerRename) | [<img src="doc/images/icons/PowerToys%20Run.png" alt="PowerToys Run icon" height="16"> PowerToys Run](https://aka.ms/PowerToysOverview_PowerToysRun) | [<img src="doc/images/icons/PowerAccent.png" alt="Quick Accent icon" height="16"> Quick Accent](https://aka.ms/PowerToysOverview_QuickAccent) |
| [<img src="doc/images/icons/Registry%20Preview.png" alt="Registry Preview icon" height="16"> Registry Preview](https://aka.ms/PowerToysOverview_RegistryPreview) | [<img src="doc/images/icons/MeasureTool.png" alt="Screen Ruler icon" height="16"> Screen Ruler](https://aka.ms/PowerToysOverview_ScreenRuler) | [<img src="doc/images/icons/Shortcut%20Guide.png" alt="Shortcut Guide icon" height="16"> Shortcut Guide](https://aka.ms/PowerToysOverview_ShortcutGuide) |
| [<img src="doc/images/icons/PowerOCR.png" alt="Text Extractor icon" height="16"> Text Extractor](https://aka.ms/PowerToysOverview_TextExtractor) | [<img src="doc/images/icons/Workspaces.png" alt="Workspaces icon" height="16"> Workspaces](https://aka.ms/PowerToysOverview_Workspaces) | [<img src="doc/images/icons/ZoomIt.png" alt="ZoomIt icon" height="16"> ZoomIt](https://aka.ms/PowerToysOverview_ZoomIt) |
| [<img src="doc/images/icons/Image%20Resizer.png" alt="Image Resizer icon" height="16"> Image Resizer](https://aka.ms/PowerToysOverview_ImageResizer) | [<img src="doc/images/icons/Keyboard%20Manager.png" alt="Keyboard Manager icon" height="16"> Keyboard Manager](https://aka.ms/PowerToysOverview_KeyboardManager) | [<img src="doc/images/icons/Light Switch.png" alt="Light Switch icon" height="16"> Light Switch](https://aka.ms/PowerToysOverview_LightSwitch) |
| [<img src="doc/images/icons/Find My Mouse.png" alt="Mouse Utilities icon" height="16"> Mouse Utilities](https://aka.ms/PowerToysOverview_MouseUtilities) | [<img src="doc/images/icons/MouseWithoutBorders.png" alt="Mouse Without Borders icon" height="16"> Mouse Without Borders](https://aka.ms/PowerToysOverview_MouseWithoutBorders) | [<img src="doc/images/icons/NewPlus.png" alt="New+ icon" height="16"> New+](https://aka.ms/PowerToysOverview_NewPlus) |
| [<img src="doc/images/icons/Peek.png" alt="Peek icon" height="16"> Peek](https://aka.ms/PowerToysOverview_Peek) | [<img src="doc/images/icons/PowerRename.png" alt="PowerRename icon" height="16"> PowerRename](https://aka.ms/PowerToysOverview_PowerRename) | [<img src="doc/images/icons/PowerToys%20Run.png" alt="PowerToys Run icon" height="16"> PowerToys Run](https://aka.ms/PowerToysOverview_PowerToysRun) |
| [<img src="doc/images/icons/PowerAccent.png" alt="Quick Accent icon" height="16"> Quick Accent](https://aka.ms/PowerToysOverview_QuickAccent) | [<img src="doc/images/icons/Registry%20Preview.png" alt="Registry Preview icon" height="16"> Registry Preview](https://aka.ms/PowerToysOverview_RegistryPreview) | [<img src="doc/images/icons/MeasureTool.png" alt="Screen Ruler icon" height="16"> Screen Ruler](https://aka.ms/PowerToysOverview_ScreenRuler) |
| [<img src="doc/images/icons/Shortcut%20Guide.png" alt="Shortcut Guide icon" height="16"> Shortcut Guide](https://aka.ms/PowerToysOverview_ShortcutGuide) | [<img src="doc/images/icons/PowerOCR.png" alt="Text Extractor icon" height="16"> Text Extractor](https://aka.ms/PowerToysOverview_TextExtractor) | [<img src="doc/images/icons/Workspaces.png" alt="Workspaces icon" height="16"> Workspaces](https://aka.ms/PowerToysOverview_Workspaces) |
| [<img src="doc/images/icons/ZoomIt.png" alt="ZoomIt icon" height="16"> ZoomIt](https://aka.ms/PowerToysOverview_ZoomIt) | | |
## 📋 Installation
For detailed installation instructions, visit the [installation docs](https://learn.microsoft.com/windows/powertoys/install).
Before you begin, make sure your device meets the system requirements:
> [!NOTE]
> - Windows 11 or Windows 10 version 2004 (20H1 / build 19041) or newer
> - 64-bit processor: x64 or ARM64
> - Latest stable version of [Microsoft Edge WebView2 Runtime](https://go.microsoft.com/fwlink/p/?LinkId=2124703) is installed via the bootstrapper during setup
Choose one of the installation methods below:
<details>
<summary>Download .exe from GitHub</summary>
For detailed installation instructions and system requirements, visit the [installation docs](https://learn.microsoft.com/windows/powertoys/install).
But to get started quickly, choose one of the installation methods below:
<br/><br/>
<details open>
<summary><strong>Download .exe from GitHub</strong></summary>
<br/>
Go to the [PowerToys GitHub releases][github-release-link], click Assets to reveal the downloads, and choose the installer that matches your architecture and install scope. For most devices, that's the x64 per-user installer.
<!-- items that need to be updated release to release -->
[github-next-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.95%22
[github-current-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.94%22
[ptUserX64]: https://github.com/microsoft/PowerToys/releases/download/v0.94.0/PowerToysUserSetup-0.94.0-x64.exe
[ptUserArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.94.0/PowerToysUserSetup-0.94.0-arm64.exe
[ptMachineX64]: https://github.com/microsoft/PowerToys/releases/download/v0.94.0/PowerToysSetup-0.94.0-x64.exe
[ptMachineArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.94.0/PowerToysSetup-0.94.0-arm64.exe
[github-next-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.96%22
[github-current-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.95%22
[ptUserX64]: https://github.com/microsoft/PowerToys/releases/download/v0.95.1/PowerToysUserSetup-0.95.1-x64.exe
[ptUserArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.95.1/PowerToysUserSetup-0.95.1-arm64.exe
[ptMachineX64]: https://github.com/microsoft/PowerToys/releases/download/v0.95.1/PowerToysSetup-0.95.1-x64.exe
[ptMachineArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.95.1/PowerToysSetup-0.95.1-arm64.exe
| Description | Filename |
|----------------|----------|
| Per user - x64 | [PowerToysUserSetup-0.94.0-x64.exe][ptUserX64] |
| Per user - ARM64 | [PowerToysUserSetup-0.94.0-arm64.exe][ptUserArm64] |
| Machine wide - x64 | [PowerToysSetup-0.94.0-x64.exe][ptMachineX64] |
| Machine wide - ARM64 | [PowerToysSetup-0.94.0-arm64.exe][ptMachineArm64] |
| Per user - x64 | [PowerToysUserSetup-0.95.1-x64.exe][ptUserX64] |
| Per user - ARM64 | [PowerToysUserSetup-0.95.1-arm64.exe][ptUserArm64] |
| Machine wide - x64 | [PowerToysSetup-0.95.1-x64.exe][ptMachineX64] |
| Machine wide - ARM64 | [PowerToysSetup-0.95.1-arm64.exe][ptMachineArm64] |
</details>
<details>
<summary>Microsoft Store</summary>
<summary><strong>Microsoft Store</strong></summary>
<br/>
You can easily install PowerToys from the Microsoft Store:
<p>
<a style="text-decoration:none" href="https://aka.ms/getPowertoys">
@@ -81,10 +79,9 @@ You can easily install PowerToys from the Microsoft Store:
</p>
</details>
<details>
<summary>WinGet</summary>
<summary><strong>WinGet</strong></summary>
<br/>
Download PowerToys from [WinGet][winget-link]. Updating PowerToys via winget will respect the current PowerToys installation scope. To install PowerToys, run the following command from the command line / PowerShell:
*User scope installer [default]*
@@ -99,181 +96,185 @@ winget install --scope machine Microsoft.PowerToys -s winget
</details>
<details>
<summary>Other methods</summary>
<summary><strong>Other methods</strong></summary>
<br/>
There are [community driven install methods](./doc/unofficialInstallMethods.md) such as Chocolatey and Scoop. If these are your preferred install solutions, you can find the install instructions there.
</details>
## ✨ What's new
**Version 0.94 (September 2025)**
**Version 0.95 (October 2025)**
For an in-depth look at the latest changes, visit the [Windows Command Line blog](https://aka.ms/powertoys-releaseblog).
**✨ Highlights**
- 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 singlebutton cursor movement and clicking. Thanks [@mikehall-ms](https://github.com/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](https://github.com/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](https://github.com/rovercoder)! [@davidegiacometti](https://github.com/davidegiacometti)!
### Always On Top
- Fixed the border hover cursor so it shows the arrow instead of the wait cursor. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- **NEW:** The **Light Switch** utility in PowerToys allows you to automatically switch between light and dark themes in Windows based on the time of day.
- Command Palette delivered major search performance gains (new fuzzy matcher and smarter fallbacks) improving relevance and speed.
- Peek can now be activated using just the Spacebar!
- Find My Mouse added transparent spotlight with independent backdrop opacity, boosting focus and accessibility.
- Settings now lets you delete shortcuts entirely and ignore conflicts.
- Mouse Pointer Crosshairs gained orientation options (vertical / horizontal / both) for customizable accessibility. Thanks [@mikehall-ms](https://github.com/mikehall-ms)!
- PowerRename fixed enumeration counter skipping ensuring reliable batch renames. Thanks [@daverayment](https://github.com/daverayment)!
- ZoomIt restored legacy draw and snipping behaviors, and fixed recording issues, improving reliability. Thanks [@chakrik73](https://github.com/chakrik73)!
### Command Palette
- Applied conditional margin for icon-only tags to tighten layout. Thanks [@samrueby](https://github.com/samrueby)
- Improved the reliability of accessing Command Palette settings through PowerToys Settings and executing other x-cmdpal:// protocol commands. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Enabled AOT by default for improved performance while simplifying publish configs.
- Replaced service state color dots with play/pause/stop icons for enhanced accessibility. Thanks [@samrueby](https://github.com/samrueby)
- Fixed filter dropdown sync and crash by binding SelectedValue and raising UI-thread notifications. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Ensured long links wrap correctly in details view.
- Removed animation and enforced minimum width on filter dropdown for clarity. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Restored focus to More button after ESC closes context menu, improving keyboard flow. Thanks [@chatasweetie](https://github.com/chatasweetie)
- Marked main and toast windows as tool windows to keep them out of Alt+Tab while preserving style. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Fixed AOT template and theming issues for filter separators. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Introduced grid layouts (small, medium, gallery) for richer page presentation.
- Materialized result lists to avoid rescoring overhead.
- Disabled problematic selection TextToSuggest behind environment flag.
- Major search performance improvements (new fuzzy matcher, smarter fallbacks, fewer exceptions).
- Added context menu "Show Details" command when details pane is hidden.
- Reduced window flicker by avoiding unnecessary cloaking. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Restored EmptyContent rendering for blank states. Thanks [@DevLGuilherme](https://github.com/DevLGuilherme)
- Saved new state even if prior app state file was corrupt (better resilience). Thanks [@jiripolasek](https://github.com/jiripolasek)
- Migrated settings window to WinUI TitleBar control. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Prevented crash on duplicate keybindings and simplified matching. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Hotkeys now always respect the “Ignore shortcut in fullscreen” setting. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Hid search box on content pages, improving focus and accessibility, and added Home title. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Blocked Ctrl+I from inserting stray tabs in search box.
- Logged HRESULT codes in error logs for deeper diagnostics. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Advanced font and emoji icon classification and alignment improvements. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Ensured that fallback command icons are visible on the extension settings page. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Fixed breadcrumb margin misalignment (visual polish). Thanks [@jiripolasek](https://github.com/jiripolasek)
- Truncated overly long command labels with ellipsis to prevent overflow.
- Added a setting to configure the page transition animation.
- Collection of small improvements and nits for Run Commands.
- Improved bookmarks performance and experience. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Added Ctrl+O shortcut in Clipboard History to open links directly.
- Resolved conflict with external software that blocked Command Palette from hiding.
- Updated context menu items to reflect name and icon changes, and ensured application icons are displayed correctly. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Added Alt+Home shortcut to return immediately to the Command Palette home page. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Fixed a crash when displaying code blocks in markdown on detail or content pages. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Fixed an issue where the search bar icon and title were not updated when rapidly switching pages. Thanks [@jiripolasek](https://github.com/jiripolasek)
- Improved the appearance of the search box in the context menu.
- Applied single-click activation only to pointer input; keyboard always activates immediately. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Let context menus open at the cursor by removing window-bound constraints. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Made error messages clearer with timestamps, HRESULTs, and full details for easier diagnosis. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Prevented crashes and improved robustness when updating providers without commands. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Ensured the Settings window reliably comes to the front when opened. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Replaced the Clipboard History icon with a colorful Fluent icon. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Hardened ContentIcon to avoid duplicate parenting and improve diagnostics. Thanks [@jiripolasek](https://github.com/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](https://github.com/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](https://github.com/davidegiacometti)!
- Fixed a race in cancellation handling to avoid InvalidOperationException. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Aligned separator styling with WinUI 3 for consistent visuals. Thanks [@jiripolasek](https://github.com/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](https://github.com/jiripolasek)!
- Removed explicit WinAppSDK/WebView2 dependencies from toolkit and API. Thanks [@rluengen](https://github.com/rluengen)!
- Added a local keyboard hook to handle the GoBack key reliably. Thanks [@jiripolasek](https://github.com/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](https://github.com/chatasweetie)!
- Preserved Adaptive Card action types during trimming via DynamicDependency.
- Added an acrylic backdrop and refined styling to the context menu. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Prevented disposed pages and Settings windows from handling stale messages. Thanks [@jiripolasek](https://github.com/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
### Command Palette Extensions
- Replaced localized WebSearch setting keys with stable literals and numeric history count. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Enabled advanced markdown tables and emphasis extensions. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Added setting to choose Clipboard History primary action (Paste vs Copy). Thanks [@jiripolasek](https://github.com/jiripolasek)
- Added actionable empty-state hints for File Search (search PC / open indexing settings). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Ensured all WinGet extension assets copy reliably to output. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Improved Run command line parsing for paths with spaces; sped up related tests.
- Updated WebSearch extension icon set for enhanced clarity and contrast. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Added Terminal profile sort order setting including MRU tracking. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Added Uninstall Application command (UWP direct, Win32 via Settings). Thanks [@mKpwnz](https://github.com/mKpwnz)!
- Deferred WinGet details loading and added timing logs.
- Removed LINQ from All Apps extension for performance.
- Added standardized key chord system + shortcuts to File Search commands. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Added Terminal channel filter & remembered selection option. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Enabled loading local/data/app images in markdown with sizing hints. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Added external extension reload via x-cmdpal://reload (configurable). Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Instant WebSearch history updates with in-memory store & events. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Added keep-after-paste option and safe delete with confirmation for Clipboard History. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Improved empty states and ranking logic for multiple extensions. Thanks [@htcfreek](https://github.com/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.
### Environment Variables
- Replaced custom window chrome with WinUI TitleBar for cleaner, maintainable Environment Variables UI.
### File Locksmith
- Adopted WinUI TitleBar to simplify window chrome while preserving appearance.
### Find My Mouse
- Added transparent spotlight support with separate backdrop opacity; migrated to Windows App SDK composition APIs.
### Hosts File Editor
- Migrated to native WinUI TitleBar for cleaner, maintainable window chrome.
- Added a "No leading spaces" option so active hosts entries can start at column 0 even when others are disabled. Thanks [@mohammed-saalim](https://github.com/mohammed-saalim)!
### Light Switch
- Introduced as a brand-new PowerToy module.
- Automatically switches between light and dark themes.
- Supports time-based scheduling or location-based sunrise/sunset switching.
- Supports using a keyboard shortcut to force a change.
- Supports filtering changes for Apps and/or System Theme.
### 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](https://github.com/mikehall-ms)!
### Mouse Pointer Crosshairs
- Added Esc key to cancel active gliding cursor sequence. Thanks [@mikehall-ms](https://github.com/mikehall-ms)!
- Added orientation option (vertical / horizontal / both) for crosshairs customization. Thanks [@mikehall-ms](https://github.com/mikehall-ms)!
### Mouse Without Borders
- Continued Common class refactor (part 5/7) by extracting clipboard and init/cleanup logic into focused classes. Thanks [@mikeclayton](https://github.com/mikeclayton)!
- Blocked Easy Mouse from switching machines during fullscreen apps, with an allow-list for exceptions. Thanks [@dot-tb](https://github.com/dot-tb)!
- Fix connection failures caused by conflicting MachineId across machines. Thanks [@noraa-junker](https://github.com/noraa-junker) for troubleshooting!
### Peek
- Added Visual Studio shared project file types to XML preview and fixed bgcode handler registration. Thanks [@rezanid](https://github.com/rezanid)!
- Fixes bgcode preview handler registration and events for reliable previews. Thanks [@pedrolamas](https://github.com/pedrolamas)!
- Added the option to activate Peek with just the Spacebar.
### PowerRename
- Changed the Explorer accelerator key to PowErRename to avoid clashing with the New menu. Thanks [@aaron-ni](https://github.com/aaron-ni)!
- Fixed enumeration counter skipping when regex replacement equals original filename (counters now advance reliably). Thanks [@daverayment](https://github.com/daverayment)!
### Quick Accent
- Expanded Welsh layout with acute, grave, and dieresis variants for vowels (consistent ordering). Thanks [@PesBandi](https://github.com/PesBandi)!
- Remembered character usage across sessions so frequently used accents appear first. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Added Maltese language support with specific characters and the Euro symbol. Thanks [@rovercoder](https://github.com/rovercoder)!
- Reduced GPU usage issues by making the window Topmost only when the picker is visible. Thanks [@daverayment](https://github.com/daverayment)!
### Registry Preview
- Migrated to native TitleBar and AppWindow APIs for cleaner window chrome.
### Screen Ruler
- Fixed ARM64 crash by aligning cursor position structure to 8-byte boundary.
### Settings
- Added ability to ignore specific hotkey conflicts to reduce noise.
- Stopped creating backup directory during dry-run status checks (cleaner first-run).
- Standardized casing and localization for ZoomIt and modules header.
- Improved search results page accessibility and conditional module grouping.
- 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](https://github.com/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](https://github.com/OldUser101)!
- Localized conflict messages in the conflict window and dialog.
### ZoomIt
- Updated resource file to reflect standalone v9.01 and current copyright year. Thanks [@foxmsft](https://github.com/foxmsft)!
- Restored legacy draw/snipping behaviors and fixed recording race conditions. Thanks [@chakrik73](https://github.com/chakrik73)!
- Added smooth image option for improved zoom quality using GDI+ for static zoom and Magnifier API for live zoom. Thanks [@markrussinovich](https://github.com/markrussinovich)!
### Installer
### Documentation
- New Microsoft Learn documentation for the Light Switch module.
- New dev docs for the Light Switch module.
- 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.
### Development (Area-Build & Area-Tests)
- Allowed debug launches to continue when modules fail to load, speeding developer iteration.
- Fixed spell checker dictionary entry (advapi) to eliminate false error.
- Added VS Code development guide and launch configs to streamline cross-editor workflows.
- Upgraded Windows App SDK and related dependencies to 1.8 for newer platform features.
- Rewrote YAML comment to resolve new spell checker forbidden pattern. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Corrected solution structure by returning misplaced Common project, reducing build confusion.
- Modernized build scripts with shared helpers and VS environment autodetection for simpler CLI builds.
- Standardized build scripts and platform detection to improve reliability and reuse.
- Added missing Command Palette version bump to align module release cadence.
- Added EXECUTEDEFAULT term to dictionary to prevent regression build failures. Thanks [@jiripolasek](https://github.com/jiripolasek)!
- Introduced nightly pre-warm pipeline and configurable MSBuild cache mode to improve CI performance.
- Resolved CI forbidden pattern spelling complaint to keep pipelines green.
- Added AI contributor instruction set to clarify code area expectations.
- Added accessibility IDs to settings and FancyZones toggles, stabilizing UI tests.
- Added automatic log collection on UI test failures to speed root cause analysis.
- Stabilized Mouse Utils tests by switching to AccessibilityId selectors.
- Added Screen Ruler UI test coverage to validate core measurement workflows.
### Documentation
- Adds docs for building the installer locally and testing winget installs.
- Fixed a broken style guide link in developer documentation. Thanks [@denizmaral](https://github.com/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](https://github.com/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](https://github.com/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.
## 🛣️ Roadmap
For [v0.95][github-next-release-work], we'll work on the items below:
- Continued Command Palette polish
- Working on Shortcut Guide v2 (Thanks [@noraa-junker](https://github.com/noraa-junker)!)
- Upgrading Keyboard Manager's editor UI
- UI tweaking utility with day/night theme switcher
- DSC v3 support for top utilities
- New UI automation tests
- Stability, bug fixes
## ❤️ PowerToys Community
## 🛣️ Roadmap
We are planning some nice new features and improvements for the next releases a revamped Keyboard Manager UI, custom endpoint and local model support for Advanced Paste, Command Palette improvements and a brand-new Shortcut Guide experience! Stay tuned for [v0.96][github-next-release-work]!
## ❤️ PowerToys Community
The PowerToys team is extremely grateful to have the [support of an amazing active community][community-link]. The work you do is incredibly important. PowerToys wouldn't be nearly what it is today without your help filing bugs, updating documentation, guiding the design, or writing features. We want to say thank you and take time to recognize your work. Your contributions and feedback improve PowerToys month after month!
## Contributing
## Contributing
This project welcomes contributions of all types. Besides coding features / bug fixes, other ways to assist include spec writing, design, documentation, and finding bugs. We are excited to work with the power user community to build a set of tools for helping you get the most out of Windows. We ask that **before you start work on a feature that you would like to contribute**, please read our [Contributor's Guide](CONTRIBUTING.md). We would be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort. Most contributions require you to agree to a [Contributor License Agreement (CLA)][oss-CLA] declaring that you grant us the rights to use your contribution and that you have permission to do so. For guidance on developing for PowerToys, please read the [developer docs](./doc/devdocs) for a detailed breakdown. This includes how to setup your computer to compile.
This project welcomes contributions of all types. Besides coding features / bug fixes, other ways to assist include spec writing, design, documentation, and finding bugs. We are excited to work with the power user community to build a set of tools for helping you get the most out of Windows.
## Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct][oss-conduct-code].
We ask that **before you start work on a feature that you would like to contribute**, please read our [Contributor's Guide](CONTRIBUTING.md). We would be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort.
## Privacy Statement
The application logs basic diagnostic data (telemetry). For more privacy information and what we collect, see our [PowerToys Data and Privacy documentation](https://aka.ms/powertoys-data-and-privacy-documentation).
Most contributions require you to agree to a [Contributor License Agreement (CLA)][oss-CLA] declaring that you grant us the rights to use your contribution and that you have permission to do so.
For guidance on developing for PowerToys, please read the [developer docs](./doc/devdocs) for a detailed breakdown. This includes how to setup your computer to compile.
## Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct][oss-conduct-code].
## Privacy Statement
The application logs basic diagnostic data (telemetry). For more privacy information and what we collect, see our [PowerToys Data and Privacy documentation](https://aka.ms/powertoys-data-and-privacy-documentation).
[oss-CLA]: https://cla.opensource.microsoft.com
[oss-conduct-code]: CODE_OF_CONDUCT.md
[community-link]: COMMUNITY.md
[github-release-link]: https://aka.ms/installPowerToys
[microsoft-store-link]: https://aka.ms/getPowertoys
[winget-link]: https://github.com/microsoft/winget-cli#installing-the-client
[oss-CLA]: https://cla.opensource.microsoft.com
[oss-conduct-code]: CODE_OF_CONDUCT.md
[community-link]: COMMUNITY.md
[github-release-link]: https://aka.ms/installPowerToys
[microsoft-store-link]: https://aka.ms/getPowertoys
[winget-link]: https://github.com/microsoft/winget-cli#installing-the-client
[roadmap]: https://github.com/microsoft/PowerToys/wiki/Roadmap
[privacy-link]: http://go.microsoft.com/fwlink/?LinkId=521839
[loc-bug]: https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=&template=translation_issue.md&title=
[privacy-link]: http://go.microsoft.com/fwlink/?LinkId=521839
[loc-bug]: https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=&template=translation_issue.md&title=
[usingPowerToys-docs-link]: https://aka.ms/powertoys-docs

1
deps/cziplib vendored

Submodule deps/cziplib deleted from 81314fff0a

View File

@@ -1,6 +1,6 @@
# PowerToys Installer
## Installer Architecture (WiX 3/ WiX 5)
## Installer Architecture (WiX 5)
- Uses a bootstrapper to check dependencies and close PowerToys
- MSI defined in product.wxs
@@ -22,7 +22,7 @@
### MSI Installer Build Process
- First builds `PowerToysSetupCustomActions` DLL and signs it, for WiX5 project, installer will build `PowerToysSetupCustomActionsVNext` DLL.
- First builds `PowerToysSetupCustomActionsVNext` DLL and signs it
- Then builds the installer without cleaning, to reuse the signed DLL
- Uses PowerShell scripts to modify .wxs files before build
- Restores original .wxs files after build completes
@@ -96,9 +96,14 @@ The following manual steps will not install the MSIX apps (such as Command Palet
#### Prerequisites for building the MSI installer
1. Install the [WiX Toolset Visual Studio 2022 Extension](https://marketplace.visualstudio.com/items?itemName=WixToolset.WixToolsetVisualStudio2022Extension).
1. Install the [WiX Toolset build tools](https://github.com/wixtoolset/wix3/releases/tag/wix3141rtm). (installer [direct link](https://github.com/wixtoolset/wix3/releases/download/wix3141rtm/wix314.exe))
1. Download [WiX binaries](https://github.com/wixtoolset/wix3/releases/download/wix3141rtm/wix314-binaries.zip) and extract `wix.targets` to `C:\Program Files (x86)\WiX Toolset v3.14`.
PowerToys uses WiX v5 for creating installers. The WiX v5 tools are automatically installed during the build process via dotnet tool.
For manual installation of WiX v5 tools:
```powershell
dotnet tool install --global wix --version 5.0.2
```
> **Note:** As of release 0.94, PowerToys has migrated from WiX v3 to WiX v5. The WiX v3 toolset is no longer required.
#### Building prerequisite projects
@@ -133,17 +138,9 @@ If you prefer, you can alternatively build prerequisite projects for the install
1. In Visual Studio, in the `Solutions Configuration` drop-down menu select `Release`
1. From the `Build` menu choose `Build Solution`.
The resulting `PowerToysSetup.msi` installer will be available in the `installer\PowerToysSetup\x64\Release\` folder.
The resulting installer will be available in the `installer\PowerToysSetupVNext\x64\Release\` folder.
For WiX3 project, run `Developer Command Prompt for VS 2022` in admin mode and execute the following command to build the installer. The generated installer package will be located at `\installer\PowerToysSetup\{platform}\Release\MachineSetup`.
```
git clean -xfd -e *exe -- .\installer\
MSBuild -t:restore .\installer\PowerToysSetup.sln -p:RestorePackagesConfig=true /p:Platform="x64" /p:Configuration=Release
MSBuild -m .\installer\PowerToysSetup.sln /t:PowerToysInstaller /p:Configuration=Release /p:Platform="x64"
MSBuild -m .\installer\PowerToysSetup.sln /t:PowerToysBootstrapper /p:Configuration=Release /p:Platform="x64"
```
For WiX5 project, run `Developer Command Prompt for VS 2022` in admin mode and execute the following command to build the installer. The generated installer package will be located at `\installer\PowerToysSetupVNext\{platform}\Release\MachineSetup`.
To build the installer from the command line, run `Developer Command Prompt for VS 2022` in admin mode and execute the following commands. The generated installer package will be located at `\installer\PowerToysSetupVNext\{platform}\Release\MachineSetup`.
```
git clean -xfd -e *exe -- .\installer\

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,110 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
## General Settings
**Admin mode:**
- [x] restart as admin and verify FZ can snap an elevated window
- [x] restart PT and verify it now runs as user
* restart as admin and set "Always run as admin"
- [x] restart PT and verify it still runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
**Elevated app notification:**
- run PT as a user
- open an elevated app (i.e. Task Manager)
- shift-drag the elevated app window
- [x] verify that a notification appears
- restart PT as admin
- shift-drag the elevated app window
- [x] verify the notification doesn't appear
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Edit grid layout, verify that split, merge and resize zones works as expected.
- [x] Disable FZ
- [x] Reenable FZ, verify that everything is in the same state as it was before disabling.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify holding the `Win` key opens the guide
- [x] Verify `Win + ?` opens the guide
* In the Settings change the duration from 900ms to 200ms
- [x] Verify the guide open after quicker when holding the `Win` key
* Restore the 900ms duration
* Run PowerToys as admin:
- [x] Open an elevated app and keep it on foreground
- [x] Verify holding the `Win` key opens the guide
- [x] Verify `Win + ?` opens the guide
* Run PowerToys as user
- [x] Verify the taskbar shortcut `Win + digit` works
- [x] Verify the first four shortcuts work

View File

@@ -0,0 +1,159 @@
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [ ] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [ ] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [ ] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [ ] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [ ] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [ ] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [ ] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [ ] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [ ] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [ ] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [ ] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. $hh-$mm-$ss-$fff $DD_$MMMM_$YYYY)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax.
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [ ] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application and a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Indexer - open a file on the disk.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space.
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree, copy key path, open registry editor. Enter the action keyword `:` to get the root keys.
- [x] System - test lock, sign out, restart, empty recycle bin.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are populated to PT Run
- [x] Change `Direct activation phrase` and verify changes are populated to PT Run
- [x] Change `Include in global result` and verify changes are populated to PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message
- [x] Disable all plugins and verify the warning message
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify holding the `Win` key opens the guide
- [x] Verify `Win + ?` opens the guide
* In the Settings change the duration from 900ms to 200ms
- [x] Verify the guide open after quicker when holding the `Win` key
* Restore the 900ms duration
* Run PowerToys as admin:
* Open an elevated app and keep it on foreground
- [x] Verify holding the `Win` key opens the guide
- [x] Verify `Win + ?` opens the guide
* Run PowerToys as user
- [x] Verify the first four shortcuts work
### OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link

View File

@@ -0,0 +1,241 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version). In case version of PowerToys is still 0.0.1 delete old version and install new.
- [X] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [X] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
## General Settings
**Admin mode:**
- [X] restart as admin and verify FZ can snap an elevated window
- [X] restart PT and verify it now runs as user
* restart as admin and set "Always run as admin"
- [X] restart PT and verify it still runs as admin
* if it's not on, turn on "Run at startup"
- [X] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [X] reboot the machine and verify it now runs as user
**Modules on/off:**
- [X] turn off all the modules and verify all module are off
- [X] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [X] turn on all the module, all module are now working
- [X] restart PT and verify that all module are still on in the settings page and they are actually working
**Elevated app notification:**
- run PT as a user
- open an elevated app (i.e. Task Manager)
- shift-drag the elevated app window
- [X] verify that a notification appears
- restart PT as admin
- shift-drag the elevated app window
- [X] verify the notification doesn't appear
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [X] when PowerToys is running unelevated on start-up
- [X] when PowerToys is running as admin on start-up
- [X] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [X] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [X] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [X] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [X] Try to copy color formats to the clipboard from the Editor
- [X] Check `Show color name` and verify if color name is shown in the Color picker
- [X] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [X] Select a color from the history in the Editor
- [X] Remove color from the history in the Editor
- [X] Open the Color Picker from the Editor
- [X] Open Adjust color from the Editor
- [X] Check Color Picker logs for errors
## FancyZones Editor
- [X] Open editor from the settings
- [X] Open editor with a shortcut
- [X] Create a new layout (grid and canvas)
- [X] Duplicate a template and a custom layout
- [X] Delete layout
- [X] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [X] Edit canvas layout: zones size and position, create or delete zones.
- [X] Edit grid layout: split, merge, resize zones.
- [X] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [X] Assign a layout to each monitor.
- [X] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [X] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [X] Change zone colors and opacity.
- [X] Exclude some apps, verify that they're not applicable to a zone.
- [X] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [X] Launch PT in administrator mode, assign a window with administrator privileges.
- [X] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [X] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [X] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [X] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [X] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [X] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [X] Edit grid layout, verify that split, merge and resize zones works as expected.
- [X] Disable FZ
- [X] Reenable FZ, verify that everything is in the same state as it was before disabling.
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [X] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [X] verify Preview Pane works for the SVG files
- [X] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [X] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [X] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached
- [X] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Image Resizer
- [X] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [X] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [X] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [X] Resize one image
- [X] Resize multiple images
- [X] Resize images with `Fill` option
- [X] Resize images with `Fit` option
- [X] Resize images with `Stretch` option
- [X] Resize images using dimension: Centimeters
- [X] Resize images using dimension: Inches
- [X] Resize images using dimension: Percents
- [X] Resize images using dimension: Pixels
- [X] Try to resize wmf image. Resized image has to be of fallback encoder type
- [X] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [X] Check `Use original date modified` and verify that modified date is not changed for resized images
- [X] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [X] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [X] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [X] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [X] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [X] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [X] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [X] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [X] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [X] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [X] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [X] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [X] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [X] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [X] Check if disable and enable of the module works.
- [X] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [X] Check if `Appear only in extended context menu` works.
- [X] Enable/disable autocomplete.
- [X] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [X] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [X] Exclude Folders/Files/Subfolder Items (could be selected several)
- [X] Item Name/Extension Only (one at the time)
- [X] Enumerate Items
- [X] Case Sensitive
- [ ] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [ ] Search with an expression (e.g. `(.*).png`)
- [ ] Replace with an expression (e.g. `foo_$1.png`)
- [ ] Replace using file creation date and time (e.g. $hh-$mm-$ss-$fff $DD_$MMMM_$YYYY)
- [ ] Turn on `Use Boost library` and test with Perl Regular Expression Syntax.
* File list filters.
- [ ] In the `preview` window uncheck some items to exclude them from renaming.
- [ ] Click on the `Renamed` column to filter results.
- [ ] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [X] when PowerToys is running unelevated on start-up
- [X] when PowerToys is running as admin on start-up
- [X] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [X] Program - launch a Win32 application
- [X] Program - launch a Win32 application as admin
- [X] Program - launch a packaged application
- [X] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [X] Windows Search - open a file on the disk.
- [X] Windows Search - find a file and copy file path.
- [X] Windows Search - find a file and open containing folder.
- [X] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [X] Folder - Search and open a sub-folder on entering the path.
- [X] Uri - launch a web page on entering the uri.
- [X] Window walker - Switch focus to a running window.
- [X] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [X] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [X] Registry - navigate through the registry tree and copy key path.
- [X] System - test `lock`.
- [X] System - test `empty recycle bin`.
- [ ] System - test `shutdown`.
- [X] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [X] Test tab navigation.
* Test Plugin Manager
- [X] Enable/disable plugins and verify changes are picked up by PT Run
- [X] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [X] Change `Include in global result` and verify changes picked up by PT Run
- [X] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [X] Disable all plugins and verify the warning message is shown.
### OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [X] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [X] open the Settings for that module
- [X] verify the Settings work as expected (toggle some controls on/off etc.)
- [X] close the Settings
- [X] if it's available, test the `Launch module name` button
* Close OOBE
- [X] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link

View File

@@ -0,0 +1,131 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## General Settings
**Admin mode:**
- [x] restart as admin and verify FZ can snap an elevated window
- [x] restart PT and verify it now runs as user
* restart as admin and set "Always run as admin"
- [x] restart PT and verify it still runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
**Elevated app notification:**
- run PT as a user
- open an elevated app (i.e. Task Manager)
- shift-drag the elevated app window
- [x] verify that a notification appears
- restart PT as admin
- shift-drag the elevated app window
- [x] verify the notification doesn't appear
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Edit grid layout, verify that split, merge and resize zones works as expected.
- [x] Disable FZ
- [x] Reenable FZ, verify that everything is in the same state as it was before disabling.
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.

View File

@@ -0,0 +1,151 @@
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
### OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link

View File

@@ -0,0 +1,96 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Reenable FZ, verify that everything is in the same state as it was before disabling.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
* Restore the `Win + Shift + /` hotkey
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed

View File

@@ -0,0 +1,125 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [X] verify the settings are preserved and FancyZones configuration is still the same
## General Settings
**Admin mode:**
- [X] restart as admin and verify FZ can snap an elevated window
- [X] restart PT and verify it now runs as user
* restart as admin and set "Always run as admin"
- [X] restart PT and verify it still runs as admin
* if it's not on, turn on "Run at startup"
- [X] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [X] reboot the machine and verify it now runs as user
**Modules on/off:**
- [X] turn off all the modules and verify all module are off
- [X] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [X] turn on all the module, all module are now working
- [X] restart PT and verify that all module are still on in the settings page and they are actually working
**Elevated app notification:**
- run PT as a user
- open an elevated app (i.e. Task Manager)
- shift-drag the elevated app window
- [X] verify that a notification appears
- restart PT as admin
- shift-drag the elevated app window
- [X] verify the notification doesn't appear
## FancyZones Editor
- [X] Open editor from the settings
- [X] Open editor with a shortcut
- [X] Create a new layout (grid and canvas)
- [X] Duplicate a template and a custom layout
- [X] Delete layout
- [X] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [X] Edit canvas layout: zones size and position, create or delete zones.
- [X] Edit grid layout: split, merge, resize zones.
- [X] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [X] Assign a layout to each monitor.
- [X] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Edit grid layout, verify that split, merge and resize zones works as expected.
- [x] Disable FZ
- [x] Reenable FZ, verify that everything is in the same state as it was before disabling.
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [X] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [X] verify Preview Pane works for the SVG files
- [X] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [X] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [X] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached
- [X] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Keyboard Manager
UI Validation:
- [X] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [X] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [X] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [X] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [X] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [X] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [X] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [X] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [X] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [X] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [X] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.

View File

@@ -0,0 +1,129 @@
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
* Restore the `Win + Shift + /` hotkey
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* Run PowerToys as admin:
- [x] Open an elevated app and keep it on foreground
- [x] Verify `Win + Shift + /` opens the guide
* Run PowerToys as user
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
### OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link

View File

@@ -0,0 +1,230 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed

View File

@@ -0,0 +1,162 @@
## Functional tests
Regressions:
- [X] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [X] https://github.com/microsoft/PowerToys/issues/1524
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [X] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [X] verify Preview Pane works for the SVG files
- [X] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [X] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [X] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached
- [X] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Image Resizer
- [X] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [X] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [X] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [X] Resize one image
- [X] Resize multiple images
- [X] Resize images with `Fill` option
- [X] Resize images with `Fit` option
- [X] Resize images with `Stretch` option
- [X] Resize images using dimension: Centimeters
- [X] Resize images using dimension: Inches
- [X] Resize images using dimension: Percents
- [X] Resize images using dimension: Pixels
- [X] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [X] Check `Use original date modified` and verify that modified date is not changed for resized images
- [X] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [X] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [X] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [X] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [X] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [X] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [X] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [X] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [X] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [X] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [X] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [X] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [X] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [X] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [X] Check if disable and enable of the module works.
- [X] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [X] Check if `Appear only in extended context menu` works.
- [X] Enable/disable autocomplete.
- [X] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [X] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [X] Exclude Folders/Files/Subfolder Items (could be selected several)
- [X] Item Name/Extension Only (one at the time)
- [X] Enumerate Items
- [X] Case Sensitive
- [X] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [X] Search with an expression (e.g. `(.*).png`)
- [X] Replace with an expression (e.g. `foo_$1.png`)
- [X] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [X] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [X] In the `preview` window uncheck some items to exclude them from renaming.
- [X] Click on the `Renamed` column to filter results.
- [X] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [X] when PowerToys is running unelevated on start-up
- [X] when PowerToys is running as admin on start-up
- [X] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [X] Program - launch a Win32 application
- [X] Program - launch a Win32 application as admin
- [X] Program - launch a packaged application
- [X] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [X] Windows Search - open a file on the disk.
- [X] Windows Search - find a file and copy file path.
- [X] Windows Search - find a file and open containing folder.
- [X] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [X] Folder - Search and open a sub-folder on entering the path.
- [X] Uri - launch a web page on entering the uri.
- [X] Window walker - Switch focus to a running window.
- [X] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [X] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [X] Registry - navigate through the registry tree and copy key path.
- [X] System - test `lock`.
- [X] System - test `empty recycle bin`.
- [X] System - test `shutdown`.
- [X] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [X] Test tab navigation.
* Test Plugin Manager
- [X] Enable/disable plugins and verify changes are picked up by PT Run
- [X] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [X] Change `Include in global result` and verify changes picked up by PT Run
- [X] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [X] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [X] Verify `Win + Shift + /` opens the guide
- [X] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
* Restore the `Win + Shift + /` hotkey.
- [X] Open the guide and close it pressing `Esc`
- [X] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [X] Verify `Win + Shift + /` opens the guide
- [X] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
### OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [X] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [X] open the Settings for that module
- [X] verify the Settings work as expected (toggle some controls on/off etc.)
- [X] close the Settings
- [X] if it's available, test the `Launch module name` button
* Close OOBE
- [X] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link

View File

@@ -0,0 +1,172 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
### OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link

View File

@@ -0,0 +1,84 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.

View File

@@ -0,0 +1,130 @@
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Expresso
- [x] Try out the features and see if they work, no list at this time.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.

View File

@@ -0,0 +1,130 @@
## Shortcut Guide
* Run PowerToys as user:
- [X] Verify `Win + Shift + /` opens the guide
- [X] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
* Restore the `Win + Shift + /` hotkey.
- [X] Open the guide and close it pressing `Esc`
- [X] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [X] Verify `Win + Shift + /` opens the guide
- [X] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [X] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [X] verify Preview Pane works for the SVG files
- [X] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [X] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [X] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached
- [X] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Expresso
- [X] Try out the features and see if they work, no list at this time.
## Keyboard Manager
UI Validation:
- [X] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [X] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [X] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [X] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [X] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [X] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [X] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [X] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [X] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [X] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [X] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [X] Check if disable and enable of the module works.
- [X] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [X] Check if `Appear only in extended context menu` works.
- [X] Enable/disable autocomplete.
- [X] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [X] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [X] Exclude Folders/Files/Subfolder Items (could be selected several)
- [X] Item Name/Extension Only (one at the time)
- [X] Enumerate Items
- [X] Case Sensitive
- [X] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [X] Search with an expression (e.g. `(.*).png`)
- [X] Replace with an expression (e.g. `foo_$1.png`)
- [X] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [X] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [X] In the `preview` window uncheck some items to exclude them from renaming.
- [X] Click on the `Renamed` column to filter results.
- [X] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [X] when PowerToys is running unelevated on start-up
- [X] when PowerToys is running as admin on start-up
- [X] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [X] Program - launch a Win32 application
- [X] Program - launch a Win32 application as admin
- [X] Program - launch a packaged application
- [X] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [X] Windows Search - open a file on the disk.
- [X] Windows Search - find a file and copy file path.
- [X] Windows Search - find a file and open containing folder.
- [X] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [X] Folder - Search and open a sub-folder on entering the path.
- [X] Uri - launch a web page on entering the uri.
- [X] Window walker - Switch focus to a running window.
- [X] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [X] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [X] Registry - navigate through the registry tree and copy key path.
- [X] System - test `lock`.
- [X] System - test `empty recycle bin`.
- [X] System - test `shutdown`.
- [X] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [X] Test tab navigation.
* Test Plugin Manager
- [X] Enable/disable plugins and verify changes are picked up by PT Run
- [X] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [X] Change `Include in global result` and verify changes picked up by PT Run
- [X] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [X] Disable all plugins and verify the warning message is shown.

View File

@@ -0,0 +1,80 @@
### OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.

View File

@@ -0,0 +1,97 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
### OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height

View File

@@ -0,0 +1,95 @@
## Install tests
- [x] install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
- [x] open the Settings and for each module change at least one option
- [x] open the FancyZones editor and create two custom layouts:
- [x] a canvas layout with 2 zones, use unicode chars in the layout's name
- [x] one from grid template using 4 zones and splitting one zone
- [x] apply the custom canvas layout to the primary desktop
- [x] create a virtual desktop and apply the custom grid layout
- [x] if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* [x] install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed

View File

@@ -0,0 +1,148 @@
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
### OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Espresso
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,117 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## Espresso
- [ ] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,126 @@
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [X] when PowerToys is running unelevated on start-up
- [X] when PowerToys is running as admin on start-up
- [X] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [X] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [X] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [X] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [X] Try to copy color formats to the clipboard from the Editor
- [X] Check `Show color name` and verify if color name is shown in the Color picker
- [X] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [X] Select a color from the history in the Editor
- [X] Remove color from the history in the Editor
- [X] Open the Color Picker from the Editor
- [X] Open Adjust color from the Editor
- [X] Check Color Picker logs for errors
## Image Resizer
- [X] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [X] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [X] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [X] Resize one image
- [X] Resize multiple images
- [X] Resize images with `Fill` option
- [X] Resize images with `Fit` option
- [X] Resize images with `Stretch` option
- [X] Resize images using dimension: Centimeters
- [X] Resize images using dimension: Inches
- [X] Resize images using dimension: Percents
- [X] Resize images using dimension: Pixels
- [X] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [X] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [X] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [X] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [X] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## PowerRename
- [X] Check if disable and enable of the module works.
- [X] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [X] Check if `Appear only in extended context menu` works.
- [X] Enable/disable autocomplete.
- [X] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [X] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [X] Exclude Folders/Files/Subfolder Items (could be selected several)
- [X] Item Name/Extension Only (one at the time)
- [X] Enumerate Items
- [X] Case Sensitive
- [X] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [X] Search with an expression (e.g. `(.*).png`)
- [X] Replace with an expression (e.g. `foo_$1.png`)
- [X] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [X] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [X] In the `preview` window uncheck some items to exclude them from renaming.
- [X] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [X] when PowerToys is running unelevated on start-up
- [X] when PowerToys is running as admin on start-up
- [X] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [X] Program - launch a Win32 application
- [X] Program - launch a Win32 application as admin
- [X] Program - launch a packaged application
- [X] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [X] Windows Search - open a file on the disk.
- [X] Windows Search - find a file and copy file path.
- [X] Windows Search - find a file and open containing folder.
- [X] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [X] Folder - Search and open a sub-folder on entering the path.
- [X] Uri - launch a web page on entering the uri.
- [X] Window walker - Switch focus to a running window.
- [X] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [X] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [X] Registry - navigate through the registry tree and copy key path.
- [X] System - test `lock`.
- [X] System - test `empty recycle bin`.
- [X] System - test `shutdown`.
- [X] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [X] Test tab navigation.
* Test Plugin Manager
- [X] Enable/disable plugins and verify changes are picked up by PT Run
- [X] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [X] Change `Include in global result` and verify changes picked up by PT Run
- [X] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [X] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [X] Verify `Win + Shift + /` opens the guide
- [X] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
* Restore the `Win + Shift + /` hotkey.
- [X] Open the guide and close it pressing `Esc`
- [X] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [X] Verify `Win + Shift + /` opens the guide
- [X] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
### OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [X] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [X] open the Settings for that module
- [X] verify the Settings work as expected (toggle some controls on/off etc.)
- [X] close the Settings
- [X] if it's available, test the `Launch module name` button
* Close OOBE
- [X] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link

View File

@@ -0,0 +1,96 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [issue reported internally] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide // holding doesn't work
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed

View File

@@ -0,0 +1,148 @@
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Espresso
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,117 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## Espresso
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,127 @@
## Functional tests
Regressions:
- [X] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [X] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [X] Verify `Win + Shift + /` opens the guide
- [X] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [X] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [X] open the Settings for that module
- [X] verify the Settings work as expected (toggle some controls on/off etc.)
- [X] close the Settings
- [X] if it's available, test the `Launch module name` button
* Close OOBE
- [X] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link

View File

@@ -0,0 +1,116 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [x] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [x] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## VCM
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,164 @@
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [ ] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
## Awake
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,149 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [x] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [x] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge, VSCode (entered as code) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
## Awake
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,130 @@
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## VCM
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,135 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [x] System tray menu items
- [x] Settings
- [x] OOBE (What's new)
- [x] Keyboard Manager Editor
- [x] Color Picker (check the tooltips)
- [x] FancyZones Editor
- [x] Power Rename (new WinUI 3 may not be localized)
- [x] Image Resizer
- [x] Shortcut Guide (Windows controls are localized)
- [x] File Explorer menu entries for Image Resizer and Power Rename
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [x] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [x] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## VCM
- [x] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [x] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [x] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [x] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [x] Verify that changing "toolbar position" setting works
- [x] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [x] Try to select an overlay image when PT process is elevated. (Currently doesn't work)

View File

@@ -0,0 +1,189 @@
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
## Awake
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,173 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [x] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [x] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
## Awake
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,150 @@
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [x] System tray menu items
- [x] Settings
- [x] OOBE (What's new)
- [x] Keyboard Manager Editor
- [x] Color Picker (check the tooltips)
- [x] FancyZones Editor
- [x] Power Rename (new WinUI 3 may not be localized)
- [x] Image Resizer
- [x] Shortcut Guide (Windows controls are localized)
- [x] File Explorer menu entries for Image Resizer and Power Rename
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## VCM
- [x] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [x] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [x] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [x] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [x] Verify that changing "toolbar position" setting works
- [x] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [x] Try to select an overlay image when PT process is elevated. (Currently doesn't work)

View File

@@ -0,0 +1,324 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [ ] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [ ] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [ ] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [ ] System tray menu items
- [ ] Settings
- [ ] OOBE (What's new)
- [ ] Keyboard Manager Editor
- [ ] Color Picker (check the tooltips)
- [ ] FancyZones Editor
- [ ] Power Rename (new WinUI 3 may not be localized)
- [ ] Image Resizer
- [ ] Shortcut Guide (Windows controls are localized)
- [ ] File Explorer menu entries for Image Resizer and Power Rename
## General Settings
**Admin mode:**
- [ ] restart PT and verify it runs as user
- [ ] restart as admin and set "Always run as admin"
- [ ] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [ ] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [ ] reboot the machine and verify it now runs as user
**Modules on/off:**
- [ ] turn off all the modules and verify all module are off
- [ ] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [ ] turn on all the module, all module are now working
- [ ] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [ ] when PowerToys is running unelevated on start-up
- [ ] when PowerToys is running as admin on start-up
- [ ] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [ ] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [ ] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [ ] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [ ] Try to copy color formats to the clipboard from the Editor
- [ ] Check `Show color name` and verify if color name is shown in the Color picker
- [ ] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [ ] Select a color from the history in the Editor
- [ ] Remove color from the history in the Editor
- [ ] Open the Color Picker from the Editor
- [ ] Open Adjust color from the Editor
- [ ] Check Color Picker logs for errors
## FancyZones Editor
- [ ] Open editor from the settings
- [ ] Open editor with a shortcut
- [ ] Create a new layout (grid and canvas)
- [ ] Duplicate a template and a custom layout
- [ ] Delete layout
- [ ] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [ ] Edit canvas layout: zones size and position, create or delete zones.
- [ ] Edit grid layout: split, merge, resize zones.
- [ ] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [ ] Assign a layout to each monitor.
- [ ] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [ ] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [ ] Change zone colors and opacity.
- [ ] Exclude some apps, verify that they're not applicable to a zone.
- [ ] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [ ] Launch PT in administrator mode, assign a window with administrator privileges.
- [ ] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [ ] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [ ] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [ ] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [ ] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [ ] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [ ] Disable FZ
- [ ] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [ ] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [ ] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [ ] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [ ] verify Preview Pane works for the SVG files
- [ ] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [ ] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [ ] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [ ] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Image Resizer
- [ ] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [ ] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [ ] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [ ] Resize one image
- [ ] Resize multiple images
- [ ] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [ ] Resize images with `Fill` option
- [ ] Resize images with `Fit` option
- [ ] Resize images with `Stretch` option
- [ ] Resize images using dimension: Centimeters
- [ ] Resize images using dimension: Inches
- [ ] Resize images using dimension: Percents
- [ ] Resize images using dimension: Pixels
- [ ] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [ ] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [ ] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [ ] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [ ] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [ ] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [ ] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [ ] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [ ] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [ ] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [ ] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [ ] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [ ] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [ ] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [ ] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [ ] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [ ] Check if disable and enable of the module works.
- [ ] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [ ] Check if `Appear only in extended context menu` works.
- [ ] Enable/disable autocomplete.
- [ ] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [ ] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [ ] Exclude Folders/Files/Subfolder Items (could be selected several)
- [ ] Item Name/Extension Only (one at the time)
- [ ] Enumerate Items
- [ ] Case Sensitive
- [ ] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [ ] Search with an expression (e.g. `(.*).png`)
- [ ] Replace with an expression (e.g. `foo_$1.png`)
- [ ] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [ ] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [ ] In the `preview` window uncheck some items to exclude them from renaming.
- [ ] Click on the `Renamed` column to filter results.
- [ ] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [ ] when PowerToys is running unelevated on start-up
- [ ] when PowerToys is running as admin on start-up
- [ ] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [ ] Program - launch a Win32 application
- [ ] Program - launch a Win32 application as admin
- [ ] Program - launch a packaged application
- [ ] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [ ] Windows Search - open a file on the disk.
- [ ] Windows Search - find a file and copy file path.
- [ ] Windows Search - find a file and open containing folder.
- [ ] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [ ] Folder - Search and open a sub-folder on entering the path.
- [ ] Uri - launch a web page on entering the uri.
- [ ] Window walker - Switch focus to a running window.
- [ ] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [ ] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [ ] Registry - navigate through the registry tree and copy key path.
- [ ] System - test `lock`.
- [ ] System - test `empty recycle bin`.
- [ ] System - test `shutdown`.
- [ ] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [ ] Test tab navigation.
* Test Plugin Manager
- [ ] Enable/disable plugins and verify changes are picked up by PT Run
- [ ] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [ ] Change `Include in global result` and verify changes picked up by PT Run
- [ ] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [ ] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [ ] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [ ] Open the guide and close it pressing `Esc`
- [ ] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [ ] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [ ] open the Settings for that module
- [ ] verify the Settings work as expected (toggle some controls on/off etc.)
- [ ] close the Settings
- [ ] if it's available, test the `Launch module name` button
* Close OOBE
- [ ] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [ ] Press Left Ctrl twice and verify the overlay appears.
- [ ] Press any other key and verify the overlay disappears.
- [ ] Press Left Ctrl twice and verify the overlay appears.
- [ ] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [ ] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [ ] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [ ] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [ ] Overlay opacity
- [ ] Background color
- [ ] Spotlight color
- [ ] Spotlight radius
- [ ] Spotlight initial zoom (1x vs 9x will show the difference)
- [ ] Animation duration
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [ ] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [ ] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [ ] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [ ] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [ ] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [ ] Change activation shortcut and test it
- [ ] Left button highlight color
- [ ] Right button highlight color
- [ ] Opacity
- [ ] Radius
- [ ] Fade delay
- [ ] Fade duration
## VCM
- [ ] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [ ] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [ ] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [ ] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [ ] Verify that changing "toolbar position" setting works
- [ ] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [ ] Try to select an overlay image when PT process is elevated. (Currently doesn't work)
## Awake
- [ ] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,335 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [x] System tray menu items
- [x] Settings
- [x] OOBE (What's new)
- [x] Keyboard Manager Editor
- [x] Color Picker (check the tooltips)
- [x] FancyZones Editor
- [x] Power Rename (new WinUI 3 may not be localized)
- [x] PowerToys Run ("Start typing" string is localized, for example)
- [x] Image Resizer
- [x] Shortcut Guide (Windows controls are localized)
- [x] File Explorer menu entries for Image Resizer and Power Rename
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [x] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [x] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane works for the PDF file
- [x] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane works for the gcode file
- [x] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the gcode file
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
## VCM
- [x] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [x] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [x] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [x] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [x] Verify that changing "toolbar position" setting works
- [x] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [x] Try to select an overlay image when PT process is elevated. (Currently doesn't work)
## Awake
- [x] Try out the features and see if they work, no list at this time.
## Always on Top
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,327 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [x] System tray menu items
- [x] Settings
- [x] OOBE (What's new)
- [x] Keyboard Manager Editor
- [x] Color Picker (check the tooltips)
- [x] FancyZones Editor
- [x] Power Rename (new WinUI 3 may not be localized)
- [x] Image Resizer
- [x] Shortcut Guide (Windows controls are localized)
- [x] File Explorer menu entries for Image Resizer and Power Rename
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [x] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [x] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [X] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
## VCM
- [x] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [x] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [x] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [x] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [x] Verify that changing "toolbar position" setting works
- [x] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [x] Try to select an overlay image when PT process is elevated. (Currently doesn't work)
## Awake
- [x] Try out the features and see if they work, no list at this time.
## Always on Top
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,337 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [ ] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [ ] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [ ] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [ ] System tray menu items
- [ ] Settings
- [ ] OOBE (What's new)
- [ ] Keyboard Manager Editor
- [ ] Color Picker (check the tooltips)
- [ ] FancyZones Editor
- [ ] Power Rename (new WinUI 3 may not be localized)
- [ ] Image Resizer
- [ ] Shortcut Guide (Windows controls are localized)
- [ ] File Explorer menu entries for Image Resizer and Power Rename
## General Settings
**Admin mode:**
- [ ] restart PT and verify it runs as user
- [ ] restart as admin and set "Always run as admin"
- [ ] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [ ] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [ ] reboot the machine and verify it now runs as user
**Modules on/off:**
- [ ] turn off all the modules and verify all module are off
- [ ] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [ ] turn on all the module, all module are now working
- [ ] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [ ] when PowerToys is running unelevated on start-up
- [ ] when PowerToys is running as admin on start-up
- [ ] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [ ] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [ ] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [ ] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [ ] Try to copy color formats to the clipboard from the Editor
- [ ] Check `Show color name` and verify if color name is shown in the Color picker
- [ ] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [ ] Select a color from the history in the Editor
- [ ] Remove color from the history in the Editor
- [ ] Open the Color Picker from the Editor
- [ ] Open Adjust color from the Editor
- [ ] Check Color Picker logs for errors
## FancyZones Editor
- [ ] Open editor from the settings
- [ ] Open editor with a shortcut
- [ ] Create a new layout (grid and canvas)
- [ ] Duplicate a template and a custom layout
- [ ] Delete layout
- [ ] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [ ] Edit canvas layout: zones size and position, create or delete zones.
- [ ] Edit grid layout: split, merge, resize zones.
- [ ] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [ ] Assign a layout to each monitor.
- [ ] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [ ] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [ ] Change zone colors and opacity.
- [ ] Exclude some apps, verify that they're not applicable to a zone.
- [ ] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [ ] Launch PT in administrator mode, assign a window with administrator privileges.
- [ ] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [ ] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [ ] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [ ] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [ ] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [ ] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [ ] Disable FZ
- [ ] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [ ] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [ ] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [ ] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [ ] verify Preview Pane works for the SVG files
- [ ] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [ ] verify Preview Pane works for the PDF file
- [ ] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [ ] verify Preview Pane works for the gcode file
- [ ] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* Running as admin:
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [ ] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [ ] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [ ] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [ ] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [ ] verify Preview Pane doesn't show the preview for the gcode file
## Image Resizer
- [ ] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [ ] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [ ] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [ ] Resize one image
- [ ] Resize multiple images
- [ ] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [ ] Resize images with `Fill` option
- [ ] Resize images with `Fit` option
- [ ] Resize images with `Stretch` option
- [ ] Resize images using dimension: Centimeters
- [ ] Resize images using dimension: Inches
- [ ] Resize images using dimension: Percents
- [ ] Resize images using dimension: Pixels
- [ ] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [ ] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [ ] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [ ] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [ ] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [ ] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [ ] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [ ] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [ ] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [ ] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [ ] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [ ] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [ ] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [ ] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [ ] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [ ] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [ ] Check if disable and enable of the module works.
- [ ] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [ ] Check if `Appear only in extended context menu` works.
- [ ] Enable/disable autocomplete.
- [ ] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [ ] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [ ] Exclude Folders/Files/Subfolder Items (could be selected several)
- [ ] Item Name/Extension Only (one at the time)
- [ ] Enumerate Items
- [ ] Case Sensitive
- [ ] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [ ] Search with an expression (e.g. `(.*).png`)
- [ ] Replace with an expression (e.g. `foo_$1.png`)
- [ ] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [ ] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [ ] In the `preview` window uncheck some items to exclude them from renaming.
- [ ] Click on the `Renamed` column to filter results.
- [ ] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [ ] when PowerToys is running unelevated on start-up
- [ ] when PowerToys is running as admin on start-up
- [ ] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [ ] Program - launch a Win32 application
- [ ] Program - launch a Win32 application as admin
- [ ] Program - launch a packaged application
- [ ] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [ ] Windows Search - open a file on the disk.
- [ ] Windows Search - find a file and copy file path.
- [ ] Windows Search - find a file and open containing folder.
- [ ] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [ ] Folder - Search and open a sub-folder on entering the path.
- [ ] Uri - launch a web page on entering the uri.
- [ ] Window walker - Switch focus to a running window.
- [ ] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [ ] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [ ] Registry - navigate through the registry tree and copy key path.
- [ ] System - test `lock`.
- [ ] System - test `empty recycle bin`.
- [ ] System - test `shutdown`.
- [ ] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [ ] Test tab navigation.
* Test Plugin Manager
- [ ] Enable/disable plugins and verify changes are picked up by PT Run
- [ ] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [ ] Change `Include in global result` and verify changes picked up by PT Run
- [ ] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [ ] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [ ] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [ ] Open the guide and close it pressing `Esc`
- [ ] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [ ] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [ ] open the Settings for that module
- [ ] verify the Settings work as expected (toggle some controls on/off etc.)
- [ ] close the Settings
- [ ] if it's available, test the `Launch module name` button
* Close OOBE
- [ ] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [ ] Press Left Ctrl twice and verify the overlay appears.
- [ ] Press any other key and verify the overlay disappears.
- [ ] Press Left Ctrl twice and verify the overlay appears.
- [ ] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [ ] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [ ] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [ ] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [ ] Overlay opacity
- [ ] Background color
- [ ] Spotlight color
- [ ] Spotlight radius
- [ ] Spotlight initial zoom (1x vs 9x will show the difference)
- [ ] Animation duration
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [ ] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [ ] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [ ] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [ ] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [ ] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [ ] Change activation shortcut and test it
- [ ] Left button highlight color
- [ ] Right button highlight color
- [ ] Opacity
- [ ] Radius
- [ ] Fade delay
- [ ] Fade duration
## VCM
- [ ] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [ ] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [ ] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [ ] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [ ] Verify that changing "toolbar position" setting works
- [ ] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [ ] Try to select an overlay image when PT process is elevated. (Currently doesn't work)
## Awake
- [ ] Try out the features and see if they work, no list at this time.
## Always on Top
- [ ] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,147 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [x] System tray menu items
- [x] Settings
- [x] OOBE (What's new)
- [x] Keyboard Manager Editor
- [x] Color Picker (check the tooltips)
- [x] FancyZones Editor
- [x] Power Rename (new WinUI 3 may not be localized)
- [x] PowerToys Run ("Start typing" string is localized, for example)
- [x] Image Resizer
- [x] Shortcut Guide (Windows controls are localized)
- [x] File Explorer menu entries for Image Resizer and Power Rename
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [x] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [x] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## VCM
- [x] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [x] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [x] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [x] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [x] Verify that changing "toolbar position" setting works
- [x] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [x] Try to select an overlay image when PT process is elevated. (Currently doesn't work)
## Always on Top
- [x] Pin/unpin a window, verify it's topmost/not topmost.
- [x] Pin/unpin a window, verify the border appeared/disappeared.
- [x] Switch virtual desktop, verify border doesn't show up on another desktop.
- [x] Minimize and maximize pinned window, verify the border looks as usual.
- [x] Change border color and thickness.
- [x] Verify if sound is played according to the sound setting.
- [x] Exclude app, try to pin it.
- [x] Exclude already pinned app, verify it was unpinned.
- [!] Try to pin the app in the Game Mode. // always works

View File

@@ -0,0 +1,220 @@
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane works for the PDF file
- [x] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane works for the gcode file
- [x] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify the Icon Preview works for the stl file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane works for source files (shows syntax highlighting)
* Running as admin (or user since recently):
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the gcode file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the stl file (a generated thumbnail would show when there's no preview)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane doesn't show the preview for source code files or that it's a default previewer instead of Monaco
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
Mouse Pointer Crosshairs:
* Enable Mouse Pointer Crosshairs. Then:
- [x] Press the activation shortcut and verify the crosshairs appear, and that they follow the mouse around.
- [x] Press the activation shortcut again and verify the crosshairs disappear.
- [x] Disable Mouse Pointer Crosshairs and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Crosshairs color
- [x] Crosshairs opacity
- [x] Crosshairs center radius
- [x] Crosshairs thickness
- [x] Crosshairs border color
- [x] Crosshairs border size
## Awake
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,205 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [x] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [x] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane works for the PDF file
- [x] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane works for the gcode file
- [x] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify the Icon Preview works for the stl file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane works for source files (shows syntax highlighting)
* Running as admin (or user since recently):
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\runner\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the gcode file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the stl file (a generated thumbnail would show when there's no preview)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane doesn't show the preview for source code files or that it's a default previewer instead of Monaco
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
Mouse Pointer Crosshairs:
* Enable Mouse Pointer Crosshairs. Then:
- [x] Press the activation shortcut and verify the crosshairs appear, and that they follow the mouse around.
- [x] Press the activation shortcut again and verify the crosshairs disappear.
- [x] Disable Mouse Pointer Crosshairs and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Crosshairs color
- [x] Crosshairs opacity
- [x] Crosshairs center radius
- [x] Crosshairs thickness
- [x] Crosshairs border color
- [x] Crosshairs border size
## Awake
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,162 @@
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [x] System tray menu items
- [x] Settings
- [x] OOBE (What's new)
- [x] Keyboard Manager Editor
- [x] Color Picker (check the tooltips)
- [x] FancyZones Editor
- [x] Power Rename (new WinUI 3 may not be localized)
- [x] PowerToys Run ("Start typing" string is localized, for example)
- [x] Image Resizer
- [x] Shortcut Guide (Windows controls are localized)
- [x] File Explorer menu entries for Image Resizer and Power Rename
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [X] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [X] Start PowerToys and verify OOBE opens
* Visit each OOBE section and for each section:
- [X] open the Settings for that module
- [X] verify the Settings work as expected (toggle some controls on/off etc.)
- [X] close the Settings
- [X] if it's available, test the `Launch module name` button
* Close OOBE
- [X] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## VCM
- [X] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [X] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [X] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [X] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [X] Verify that changing "toolbar position" setting works
- [X] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [X] Try to select an overlay image when PT process is elevated. (Currently doesn't work)
## Always on Top
- [x] Pin/unpin a window, verify it's topmost/not topmost.
- [x] Pin/unpin a window, verify the border appeared/disappeared.
- [x] Switch virtual desktop, verify border doesn't show up on another desktop.
- [x] Minimize and maximize pinned window, verify the border looks as usual.
- [x] Change border color and thickness.
- [x] Verify if sound is played according to the sound setting.
- [x] Exclude app, try to pin it.
- [x] Exclude already pinned app, verify it was unpinned.
- [x] Try to pin the app in the Game Mode.

View File

@@ -0,0 +1,278 @@
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [x] System tray menu items
- [x] Settings
- [x] OOBE (What's new)
- [x] Keyboard Manager Editor
- [x] Color Picker (check the tooltips)
- [x] FancyZones Editor
- [x] Power Rename (new WinUI 3 may not be localized)
- [x] PowerToys Run ("Start typing" string is localized, for example)
- [x] Image Resizer
- [x] Shortcut Guide (Windows controls are localized)
- [x] File Explorer menu entries for Image Resizer and Power Rename
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane works for the PDF file
- [x] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane works for the gcode file
- [x] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify the Icon Preview works for the stl file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane works for source files (shows syntax highlighting)
* Running as admin (or user since recently):
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the gcode file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the stl file (a generated thumbnail would show when there's no preview)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane doesn't show the preview for source code files or that it's a default previewer instead of Monaco
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Change version saved on `%localappdata%\Microsoft\PowerToys\last_version.txt`
- [x] Start PowerToys and verify OOBE opens in the "What's New" page
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
- [x] Change activation method to shake and activate by shaking your mouse pointer
- [x] Excluded apps
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
Mouse Pointer Crosshairs:
* Enable Mouse Pointer Crosshairs. Then:
- [x] Press the activation shortcut and verify the crosshairs appear, and that they follow the mouse around.
- [x] Press the activation shortcut again and verify the crosshairs disappear.
- [x] Disable Mouse Pointer Crosshairs and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Crosshairs color
- [x] Crosshairs opacity
- [x] Crosshairs center radius
- [x] Crosshairs thickness
- [x] Crosshairs border color
- [x] Crosshairs border size
## Awake
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,239 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [x] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [x] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane works for the PDF file
- [x] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane works for the gcode file
- [x] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify the Icon Preview works for the stl file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane works for source files (shows syntax highlighting)
* Running as admin (or user since recently):
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the gcode file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the stl file (a generated thumbnail would show when there's no preview)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane doesn't show the preview for source code files or that it's a default previewer instead of Monaco
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
- [x] Change activation method to shake and activate by shaking your mouse pointer
- [x] Excluded apps
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
Mouse Pointer Crosshairs:
* Enable Mouse Pointer Crosshairs. Then:
- [x] Press the activation shortcut and verify the crosshairs appear, and that they follow the mouse around.
- [x] Press the activation shortcut again and verify the crosshairs disappear.
- [x] Disable Mouse Pointer Crosshairs and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Crosshairs color
- [x] Crosshairs opacity
- [x] Crosshairs center radius
- [x] Crosshairs thickness
- [x] Crosshairs border color
- [x] Crosshairs border size
## VCM
- [x] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [x] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [x] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [x] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [x] Verify that changing "toolbar position" setting works
- [x] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [x] Try to select an overlay image when PT process is elevated. (Currently doesn't work)
## Awake
- [x] Try out the features and see if they work, no list at this time.
## Always on Top
- [x] Pin/unpin a window, verify it's topmost/not topmost.
- [x] Pin/unpin a window, verify the border appeared/disappeared.
- [x] Switch virtual desktop, verify border doesn't show up on another desktop.
- [x] Minimize and maximize pinned window, verify the border looks as usual.
- [x] Change border color and thickness.
- [x] Verify if sound is played according to the sound setting.
- [x] Exclude app, try to pin it.
- [x] Exclude already pinned app, verify it was unpinned.
- [x] Try to pin the app in the Game Mode.

View File

@@ -0,0 +1,226 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [x] System tray menu items
- [x] Settings
- [x] OOBE (What's new)
- [x] Keyboard Manager Editor
- [x] Color Picker (check the tooltips)
- [x] FancyZones Editor
- [x] Power Rename (new WinUI 3 may not be localized)
- [x] PowerToys Run ("Start typing" string is localized, for example)
- [x] Image Resizer
- [x] Shortcut Guide (Windows controls are localized)
- [x] File Explorer menu entries for Image Resizer and Power Rename
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [X] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [X] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [x] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [x] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [X] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Change version saved on `%localappdata%\Microsoft\PowerToys\last_version.txt`
- [x] Start PowerToys and verify OOBE opens in the "What's New" page
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## VCM
- [x] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [x] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [x] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [x] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [x] Verify that changing "toolbar position" setting works
- [x] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [x] Try to select an overlay image when PT process is elevated. (Currently doesn't work)
## Always on Top
- [x] Pin/unpin a window, verify it's topmost/not topmost.
- [x] Pin/unpin a window, verify the border appeared/disappeared.
- [x] Switch virtual desktop, verify border doesn't show up on another desktop.
- [x] Minimize and maximize pinned window, verify the border looks as usual.
- [x] Change border color and thickness.
- [x] Verify if sound is played according to the sound setting.
- [x] Exclude app, try to pin it.
- [x] Exclude already pinned app, verify it was unpinned.
- [x] Try to pin the app in the Game Mode.

View File

@@ -0,0 +1,124 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [x] System tray menu items
- [x] Settings
- [x] OOBE (What's new)
- [x] Keyboard Manager Editor
- [x] Color Picker (check the tooltips)
- [x] FancyZones Editor
- [x] Power Rename (new WinUI 3 may not be localized)
- [x] PowerToys Run ("Start typing" string is localized, for example)
- [x] Image Resizer
- [x] Shortcut Guide (Windows controls are localized)
- [x] File Explorer menu entries for Image Resizer and Power Rename
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [x] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [x] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## VCM
- [x] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [x] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [x] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [x] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [x] Verify that changing "toolbar position" setting works
- [x] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [x] Try to select an overlay image when PT process is elevated. (Currently doesn't work)

View File

@@ -0,0 +1,140 @@
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [x] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [x] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [x] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [x] Try to copy color formats to the clipboard from the Editor
- [x] Check `Show color name` and verify if color name is shown in the Color picker
- [x] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [x] Select a color from the history in the Editor
- [x] Remove color from the history in the Editor
- [x] Open the Color Picker from the Editor
- [x] Open Adjust color from the Editor
- [x] Check Color Picker logs for errors
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Change version saved on `%localappdata%\Microsoft\PowerToys\last_version.txt`
- [x] Start PowerToys and verify OOBE opens in the "What's New" page
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
- [x] Change activation method to shake and activate by shaking your mouse pointer
- [x] Excluded apps
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
Mouse Pointer Crosshairs:
* Enable Mouse Pointer Crosshairs. Then:
- [x] Press the activation shortcut and verify the crosshairs appear, and that they follow the mouse around.
- [x] Press the activation shortcut again and verify the crosshairs disappear.
- [x] Disable Mouse Pointer Crosshairs and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Crosshairs color
- [x] Crosshairs opacity
- [x] Crosshairs center radius
- [x] Crosshairs thickness
- [x] Crosshairs border color
- [x] Crosshairs border size
## VCM
- [x] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [x] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [x] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [x] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [x] Verify that changing "toolbar position" setting works
- [x] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [x] Try to select an overlay image when PT process is elevated. (Currently doesn't work)
## Always on Top
- [x] Pin/unpin a window, verify it's topmost/not topmost.
- [x] Pin/unpin a window, verify the border appeared/disappeared.
- [x] Switch virtual desktop, verify border doesn't show up on another desktop.
- [x] Minimize and maximize pinned window, verify the border looks as usual.
- [x] Change border color and thickness.
- [x] Verify if sound is played according to the sound setting.
- [x] Exclude app, try to pin it.
- [x] Exclude already pinned app, verify it was unpinned.
- [x] Try to pin the app in the Game Mode.

View File

@@ -0,0 +1,201 @@
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane works for the PDF file
- [x] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane works for the gcode file
- [x] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify the Icon Preview works for the stl file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane works for source files (shows syntax highlighting)
* Running as admin (or user since recently):
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the gcode file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the stl file (a generated thumbnail would show when there's no preview)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane doesn't show the preview for source code files or that it's a default previewer instead of Monaco
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Change version saved on `%localappdata%\Microsoft\PowerToys\last_version.txt`
- [x] Start PowerToys and verify OOBE opens in the "What's New" page
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
- [x] Change activation method to shake and activate by shaking your mouse pointer
- [x] Excluded apps
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
Mouse Pointer Crosshairs:
* Enable Mouse Pointer Crosshairs. Then:
- [x] Press the activation shortcut and verify the crosshairs appear, and that they follow the mouse around.
- [x] Press the activation shortcut again and verify the crosshairs disappear.
- [x] Disable Mouse Pointer Crosshairs and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Crosshairs color
- [x] Crosshairs opacity
- [x] Crosshairs center radius
- [x] Crosshairs thickness
- [x] Crosshairs border color
- [x] Crosshairs border size
## Awake
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,152 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [x] verify the settings are preserved and FancyZones configuration is still the same
## General Settings
**Admin mode:**
- [x] restart PT and verify it runs as user
- [x] restart as admin and set "Always run as admin"
- [x] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [x] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [x] reboot the machine and verify it now runs as user
**Modules on/off:**
- [x] turn off all the modules and verify all module are off
- [x] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [x] turn on all the module, all module are now working
- [x] restart PT and verify that all module are still on in the settings page and they are actually working
## FancyZones Editor
- [x] Open editor from the settings
- [x] Open editor with a shortcut
- [x] Create a new layout (grid and canvas)
- [x] Duplicate a template and a custom layout
- [x] Delete layout
- [x] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [x] Edit canvas layout: zones size and position, create or delete zones.
- [x] Edit grid layout: split, merge, resize zones.
- [x] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [x] Assign a layout to each monitor.
- [x] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [x] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [x] Change zone colors and opacity.
- [x] Exclude some apps, verify that they're not applicable to a zone.
- [x] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [x] Launch PT in administrator mode, assign a window with administrator privileges.
- [x] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [x] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [x] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [x] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [x] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [x] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [x] Disable FZ
- [x] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [x] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [x] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane works for the PDF file
- [x] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane works for the gcode file
- [x] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify the Icon Preview works for the stl file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane works for source files (shows syntax highlighting)
* Running as admin (or user since recently):
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the gcode file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the stl file (a generated thumbnail would show when there's no preview)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane doesn't show the preview for source code files or that it's a default previewer instead of Monaco
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## Awake
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,124 @@
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [x] System tray menu items
- [x] Settings
- [x] OOBE (What's new)
- [x] Keyboard Manager Editor
- [x] Color Picker (check the tooltips)
- [x] FancyZones Editor
- [x] Power Rename (new WinUI 3 may not be localized)
- [x] PowerToys Run ("Start typing" string is localized, for example)
- [x] Image Resizer
- [x] Shortcut Guide (Windows controls are localized)
- [x] File Explorer menu entries for Image Resizer and Power Rename
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [X] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## Always on Top
- [x] Pin/unpin a window, verify it's topmost/not topmost.
- [x] Pin/unpin a window, verify the border appeared/disappeared.
- [x] Switch virtual desktop, verify border doesn't show up on another desktop.
- [x] Minimize and maximize pinned window, verify the border looks as usual.
- [x] Change border color and thickness.
- [x] Verify if sound is played according to the sound setting.
- [x] Exclude app, try to pin it.
- [x] Exclude already pinned app, verify it was unpinned.
- [x] Try to pin the app in the Game Mode.

View File

@@ -0,0 +1,124 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [ ] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [ ] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [ ] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [ ] System tray menu items
- [ ] Settings
- [ ] OOBE (What's new)
- [ ] Keyboard Manager Editor
- [ ] Color Picker (check the tooltips)
- [ ] FancyZones Editor
- [ ] Power Rename (new WinUI 3 may not be localized)
- [ ] PowerToys Run ("Start typing" string is localized, for example)
- [ ] Image Resizer
- [ ] Shortcut Guide (Windows controls are localized)
- [ ] File Explorer menu entries for Image Resizer and Power Rename
## General Settings
**Admin mode:**
- [ ] restart PT and verify it runs as user
- [ ] restart as admin and set "Always run as admin"
- [ ] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [ ] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [ ] reboot the machine and verify it now runs as user
**Modules on/off:**
- [ ] turn off all the modules and verify all module are off
- [ ] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [ ] turn on all the module, all module are now working
- [ ] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [ ] when PowerToys is running unelevated on start-up
- [ ] when PowerToys is running as admin on start-up
- [ ] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [ ] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [ ] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [ ] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [ ] Try to copy color formats to the clipboard from the Editor
- [ ] Check `Show color name` and verify if color name is shown in the Color picker
- [ ] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [ ] Select a color from the history in the Editor
- [ ] Remove color from the history in the Editor
- [ ] Open the Color Picker from the Editor
- [ ] Open Adjust color from the Editor
- [ ] Check Color Picker logs for errors
## FancyZones Editor
- [ ] Open editor from the settings
- [ ] Open editor with a shortcut
- [ ] Create a new layout (grid and canvas)
- [ ] Duplicate a template and a custom layout
- [ ] Delete layout
- [ ] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [ ] Edit canvas layout: zones size and position, create or delete zones.
- [ ] Edit grid layout: split, merge, resize zones.
- [ ] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [ ] Assign a layout to each monitor.
- [ ] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [ ] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [ ] Change zone colors and opacity.
- [ ] Exclude some apps, verify that they're not applicable to a zone.
- [ ] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [ ] Launch PT in administrator mode, assign a window with administrator privileges.
- [ ] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [ ] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [ ] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [ ] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [ ] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [ ] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [ ] Disable FZ
- [ ] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [ ] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [ ] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## VCM
- [ ] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [ ] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [ ] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [ ] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [ ] Verify that changing "toolbar position" setting works
- [ ] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [ ] Try to select an overlay image when PT process is elevated. (Currently doesn't work)

View File

@@ -0,0 +1,140 @@
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [ ] when PowerToys is running unelevated on start-up
- [ ] when PowerToys is running as admin on start-up
- [ ] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [ ] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [ ] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [ ] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [ ] Try to copy color formats to the clipboard from the Editor
- [ ] Check `Show color name` and verify if color name is shown in the Color picker
- [ ] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [ ] Select a color from the history in the Editor
- [ ] Remove color from the history in the Editor
- [ ] Open the Color Picker from the Editor
- [ ] Open Adjust color from the Editor
- [ ] Check Color Picker logs for errors
## PowerRename
- [ ] Check if disable and enable of the module works.
- [ ] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [ ] Check if `Appear only in extended context menu` works.
- [ ] Enable/disable autocomplete.
- [ ] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [ ] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [ ] Exclude Folders/Files/Subfolder Items (could be selected several)
- [ ] Item Name/Extension Only (one at the time)
- [ ] Enumerate Items
- [ ] Case Sensitive
- [ ] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [ ] Search with an expression (e.g. `(.*).png`)
- [ ] Replace with an expression (e.g. `foo_$1.png`)
- [ ] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [ ] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [ ] In the `preview` window uncheck some items to exclude them from renaming.
- [ ] Click on the `Renamed` column to filter results.
- [ ] Click on the `Original` column to cycle between checked and unchecked items.
## Shortcut Guide
* Run PowerToys as user:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [ ] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [ ] Open the guide and close it pressing `Esc`
- [ ] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [ ] Start PowerToys and verify OOBE opens
* Change version saved on `%localappdata%\Microsoft\PowerToys\last_version.txt`
- [ ] Start PowerToys and verify OOBE opens in the "What's New" page
* Visit each OOBE section and for each section:
- [ ] open the Settings for that module
- [ ] verify the Settings work as expected (toggle some controls on/off etc.)
- [ ] close the Settings
- [ ] if it's available, test the `Launch module name` button
* Close OOBE
- [ ] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [ ] Press Left Ctrl twice and verify the overlay appears.
- [ ] Press any other key and verify the overlay disappears.
- [ ] Press Left Ctrl twice and verify the overlay appears.
- [ ] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [ ] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [ ] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [ ] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [ ] Overlay opacity
- [ ] Background color
- [ ] Spotlight color
- [ ] Spotlight radius
- [ ] Spotlight initial zoom (1x vs 9x will show the difference)
- [ ] Animation duration
- [ ] Change activation method to shake and activate by shaking your mouse pointer
- [ ] Excluded apps
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [ ] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [ ] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [ ] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [ ] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [ ] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [ ] Change activation shortcut and test it
- [ ] Left button highlight color
- [ ] Right button highlight color
- [ ] Opacity
- [ ] Radius
- [ ] Fade delay
- [ ] Fade duration
Mouse Pointer Crosshairs:
* Enable Mouse Pointer Crosshairs. Then:
- [ ] Press the activation shortcut and verify the crosshairs appear, and that they follow the mouse around.
- [ ] Press the activation shortcut again and verify the crosshairs disappear.
- [ ] Disable Mouse Pointer Crosshairs and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [ ] Change activation shortcut and test it
- [ ] Crosshairs color
- [ ] Crosshairs opacity
- [ ] Crosshairs center radius
- [ ] Crosshairs thickness
- [ ] Crosshairs border color
- [ ] Crosshairs border size
## VCM
- [ ] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [ ] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [ ] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [ ] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [ ] Verify that changing "toolbar position" setting works
- [ ] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [ ] Try to select an overlay image when PT process is elevated. (Currently doesn't work)
## Always on Top
- [ ] Pin/unpin a window, verify it's topmost/not topmost.
- [ ] Pin/unpin a window, verify the border appeared/disappeared.
- [ ] Switch virtual desktop, verify border doesn't show up on another desktop.
- [ ] Minimize and maximize pinned window, verify the border looks as usual.
- [ ] Change border color and thickness.
- [ ] Verify if sound is played according to the sound setting.
- [ ] Exclude app, try to pin it.
- [ ] Exclude already pinned app, verify it was unpinned.
- [ ] Try to pin the app in the Game Mode.

View File

@@ -0,0 +1,201 @@
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane works for the PDF file
- [x] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane works for the gcode file
- [x] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify the Icon Preview works for the stl file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane works for source files (shows syntax highlighting)
* Running as admin (or user since recently):
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the gcode file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the stl file (a generated thumbnail would show when there's no preview)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane doesn't show the preview for source code files or that it's a default previewer instead of Monaco
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Change version saved on `%localappdata%\Microsoft\PowerToys\last_version.txt`
- [x] Start PowerToys and verify OOBE opens in the "What's New" page
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
- [x] Change activation method to shake and activate by shaking your mouse pointer
- [x] Excluded apps
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
Mouse Pointer Crosshairs:
* Enable Mouse Pointer Crosshairs. Then:
- [x] Press the activation shortcut and verify the crosshairs appear, and that they follow the mouse around.
- [x] Press the activation shortcut again and verify the crosshairs disappear.
- [x] Disable Mouse Pointer Crosshairs and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Crosshairs color
- [x] Crosshairs opacity
- [x] Crosshairs center radius
- [x] Crosshairs thickness
- [x] Crosshairs border color
- [x] Crosshairs border size
## Awake
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,152 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [ ] verify the settings are preserved and FancyZones configuration is still the same
## General Settings
**Admin mode:**
- [ ] restart PT and verify it runs as user
- [ ] restart as admin and set "Always run as admin"
- [ ] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [ ] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [ ] reboot the machine and verify it now runs as user
**Modules on/off:**
- [ ] turn off all the modules and verify all module are off
- [ ] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [ ] turn on all the module, all module are now working
- [ ] restart PT and verify that all module are still on in the settings page and they are actually working
## FancyZones Editor
- [ ] Open editor from the settings
- [ ] Open editor with a shortcut
- [ ] Create a new layout (grid and canvas)
- [ ] Duplicate a template and a custom layout
- [ ] Delete layout
- [ ] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [ ] Edit canvas layout: zones size and position, create or delete zones.
- [ ] Edit grid layout: split, merge, resize zones.
- [ ] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [ ] Assign a layout to each monitor.
- [ ] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [ ] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [ ] Change zone colors and opacity.
- [ ] Exclude some apps, verify that they're not applicable to a zone.
- [ ] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [ ] Launch PT in administrator mode, assign a window with administrator privileges.
- [ ] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [ ] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [ ] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [ ] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [ ] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [ ] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [ ] Disable FZ
- [ ] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [ ] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [ ] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [ ] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [ ] verify Preview Pane works for the SVG files
- [ ] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [ ] verify Preview Pane works for the PDF file
- [ ] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [ ] verify Preview Pane works for the gcode file
- [ ] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [ ] verify the Icon Preview works for the stl file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\runner
- [ ] verify Preview Pane works for source files (shows syntax highlighting)
* Running as admin (or user since recently):
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [ ] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [ ] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [ ] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [ ] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [ ] verify Preview Pane doesn't show the preview for the gcode file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [ ] verify Preview Pane doesn't show the preview for the stl file (a generated thumbnail would show when there's no preview)
* go to PowerToys repo and visit src\runner
- [ ] verify Preview Pane doesn't show the preview for source code files or that it's a default previewer instead of Monaco
## Keyboard Manager
UI Validation:
- [ ] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [ ] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [ ] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [ ] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [ ] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [ ] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [ ] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [ ] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [ ] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [ ] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [ ] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## Awake
- [ ] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,124 @@
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [x] System tray menu items
- [x] Settings
- [x] OOBE (What's new)
- [x] Keyboard Manager Editor
- [x] Color Picker (check the tooltips)
- [x] FancyZones Editor
- [x] Power Rename (new WinUI 3 may not be localized)
- [x] PowerToys Run ("Start typing" string is localized, for example)
- [x] Image Resizer
- [x] Shortcut Guide (Windows controls are localized)
- [x] File Explorer menu entries for Image Resizer and Power Rename
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x ] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## Always on Top
- [x] Pin/unpin a window, verify it's topmost/not topmost.
- [x] Pin/unpin a window, verify the border appeared/disappeared.
- [x] Switch virtual desktop, verify border doesn't show up on another desktop.
- [x] Minimize and maximize pinned window, verify the border looks as usual.
- [x] Change border color and thickness.
- [x] Verify if sound is played according to the sound setting.
- [x] Exclude app, try to pin it.
- [x] Exclude already pinned app, verify it was unpinned.
- [x] Try to pin the app in the Game Mode.

View File

@@ -0,0 +1,124 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [ ] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [ ] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [ ] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [ ] System tray menu items
- [ ] Settings
- [ ] OOBE (What's new)
- [ ] Keyboard Manager Editor
- [ ] Color Picker (check the tooltips)
- [ ] FancyZones Editor
- [ ] Power Rename (new WinUI 3 may not be localized)
- [ ] PowerToys Run ("Start typing" string is localized, for example)
- [ ] Image Resizer
- [ ] Shortcut Guide (Windows controls are localized)
- [ ] File Explorer menu entries for Image Resizer and Power Rename
## General Settings
**Admin mode:**
- [ ] restart PT and verify it runs as user
- [ ] restart as admin and set "Always run as admin"
- [ ] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [ ] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [ ] reboot the machine and verify it now runs as user
**Modules on/off:**
- [ ] turn off all the modules and verify all module are off
- [ ] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [ ] turn on all the module, all module are now working
- [ ] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [ ] when PowerToys is running unelevated on start-up
- [ ] when PowerToys is running as admin on start-up
- [ ] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [ ] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [ ] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [ ] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [ ] Try to copy color formats to the clipboard from the Editor
- [ ] Check `Show color name` and verify if color name is shown in the Color picker
- [ ] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [ ] Select a color from the history in the Editor
- [ ] Remove color from the history in the Editor
- [ ] Open the Color Picker from the Editor
- [ ] Open Adjust color from the Editor
- [ ] Check Color Picker logs for errors
## FancyZones Editor
- [ ] Open editor from the settings
- [ ] Open editor with a shortcut
- [ ] Create a new layout (grid and canvas)
- [ ] Duplicate a template and a custom layout
- [ ] Delete layout
- [ ] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [ ] Edit canvas layout: zones size and position, create or delete zones.
- [ ] Edit grid layout: split, merge, resize zones.
- [ ] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [ ] Assign a layout to each monitor.
- [ ] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [ ] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [ ] Change zone colors and opacity.
- [ ] Exclude some apps, verify that they're not applicable to a zone.
- [ ] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [ ] Launch PT in administrator mode, assign a window with administrator privileges.
- [ ] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [ ] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [ ] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [ ] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [ ] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [ ] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [ ] Disable FZ
- [ ] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [ ] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [ ] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## VCM
- [ ] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [ ] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [ ] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [ ] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [ ] Verify that changing "toolbar position" setting works
- [ ] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [ ] Try to select an overlay image when PT process is elevated. (Currently doesn't work)

View File

@@ -0,0 +1,140 @@
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [ ] when PowerToys is running unelevated on start-up
- [ ] when PowerToys is running as admin on start-up
- [ ] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [ ] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [ ] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [ ] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [ ] Try to copy color formats to the clipboard from the Editor
- [ ] Check `Show color name` and verify if color name is shown in the Color picker
- [ ] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [ ] Select a color from the history in the Editor
- [ ] Remove color from the history in the Editor
- [ ] Open the Color Picker from the Editor
- [ ] Open Adjust color from the Editor
- [ ] Check Color Picker logs for errors
## PowerRename
- [ ] Check if disable and enable of the module works.
- [ ] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [ ] Check if `Appear only in extended context menu` works.
- [ ] Enable/disable autocomplete.
- [ ] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [ ] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [ ] Exclude Folders/Files/Subfolder Items (could be selected several)
- [ ] Item Name/Extension Only (one at the time)
- [ ] Enumerate Items
- [ ] Case Sensitive
- [ ] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [ ] Search with an expression (e.g. `(.*).png`)
- [ ] Replace with an expression (e.g. `foo_$1.png`)
- [ ] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [ ] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [ ] In the `preview` window uncheck some items to exclude them from renaming.
- [ ] Click on the `Renamed` column to filter results.
- [ ] Click on the `Original` column to cycle between checked and unchecked items.
## Shortcut Guide
* Run PowerToys as user:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [ ] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [ ] Open the guide and close it pressing `Esc`
- [ ] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [ ] Start PowerToys and verify OOBE opens
* Change version saved on `%localappdata%\Microsoft\PowerToys\last_version.txt`
- [ ] Start PowerToys and verify OOBE opens in the "What's New" page
* Visit each OOBE section and for each section:
- [ ] open the Settings for that module
- [ ] verify the Settings work as expected (toggle some controls on/off etc.)
- [ ] close the Settings
- [ ] if it's available, test the `Launch module name` button
* Close OOBE
- [ ] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [ ] Press Left Ctrl twice and verify the overlay appears.
- [ ] Press any other key and verify the overlay disappears.
- [ ] Press Left Ctrl twice and verify the overlay appears.
- [ ] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [ ] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [ ] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [ ] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [ ] Overlay opacity
- [ ] Background color
- [ ] Spotlight color
- [ ] Spotlight radius
- [ ] Spotlight initial zoom (1x vs 9x will show the difference)
- [ ] Animation duration
- [ ] Change activation method to shake and activate by shaking your mouse pointer
- [ ] Excluded apps
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [ ] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [ ] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [ ] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [ ] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [ ] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [ ] Change activation shortcut and test it
- [ ] Left button highlight color
- [ ] Right button highlight color
- [ ] Opacity
- [ ] Radius
- [ ] Fade delay
- [ ] Fade duration
Mouse Pointer Crosshairs:
* Enable Mouse Pointer Crosshairs. Then:
- [ ] Press the activation shortcut and verify the crosshairs appear, and that they follow the mouse around.
- [ ] Press the activation shortcut again and verify the crosshairs disappear.
- [ ] Disable Mouse Pointer Crosshairs and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [ ] Change activation shortcut and test it
- [ ] Crosshairs color
- [ ] Crosshairs opacity
- [ ] Crosshairs center radius
- [ ] Crosshairs thickness
- [ ] Crosshairs border color
- [ ] Crosshairs border size
## VCM
- [ ] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [ ] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [ ] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [ ] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [ ] Verify that changing "toolbar position" setting works
- [ ] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [ ] Try to select an overlay image when PT process is elevated. (Currently doesn't work)
## Always on Top
- [ ] Pin/unpin a window, verify it's topmost/not topmost.
- [ ] Pin/unpin a window, verify the border appeared/disappeared.
- [ ] Switch virtual desktop, verify border doesn't show up on another desktop.
- [ ] Minimize and maximize pinned window, verify the border looks as usual.
- [ ] Change border color and thickness.
- [ ] Verify if sound is played according to the sound setting.
- [ ] Exclude app, try to pin it.
- [ ] Exclude already pinned app, verify it was unpinned.
- [ ] Try to pin the app in the Game Mode.

View File

@@ -0,0 +1,201 @@
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane works for the PDF file
- [x] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane works for the gcode file
- [x] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify the Icon Preview works for the stl file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane works for source files (shows syntax highlighting)
* Running as admin (or user since recently):
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the gcode file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the stl file (a generated thumbnail would show when there's no preview)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane doesn't show the preview for source code files or that it's a default previewer instead of Monaco
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Change version saved on `%localappdata%\Microsoft\PowerToys\last_version.txt`
- [x] Start PowerToys and verify OOBE opens in the "What's New" page
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
- [x] Change activation method to shake and activate by shaking your mouse pointer
- [x] Excluded apps
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
Mouse Pointer Crosshairs:
* Enable Mouse Pointer Crosshairs. Then:
- [x] Press the activation shortcut and verify the crosshairs appear, and that they follow the mouse around.
- [x] Press the activation shortcut again and verify the crosshairs disappear.
- [x] Disable Mouse Pointer Crosshairs and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Crosshairs color
- [x] Crosshairs opacity
- [x] Crosshairs center radius
- [x] Crosshairs thickness
- [x] Crosshairs border color
- [x] Crosshairs border size
## Awake
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,152 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [ ] verify the settings are preserved and FancyZones configuration is still the same
## General Settings
**Admin mode:**
- [ ] restart PT and verify it runs as user
- [ ] restart as admin and set "Always run as admin"
- [ ] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [ ] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [ ] reboot the machine and verify it now runs as user
**Modules on/off:**
- [ ] turn off all the modules and verify all module are off
- [ ] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [ ] turn on all the module, all module are now working
- [ ] restart PT and verify that all module are still on in the settings page and they are actually working
## FancyZones Editor
- [ ] Open editor from the settings
- [ ] Open editor with a shortcut
- [ ] Create a new layout (grid and canvas)
- [ ] Duplicate a template and a custom layout
- [ ] Delete layout
- [ ] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [ ] Edit canvas layout: zones size and position, create or delete zones.
- [ ] Edit grid layout: split, merge, resize zones.
- [ ] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [ ] Assign a layout to each monitor.
- [ ] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [ ] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [ ] Change zone colors and opacity.
- [ ] Exclude some apps, verify that they're not applicable to a zone.
- [ ] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [ ] Launch PT in administrator mode, assign a window with administrator privileges.
- [ ] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [ ] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [ ] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Switch between layouts with quick keys.
- [ ] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [ ] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [ ] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [ ] Disable FZ
- [ ] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [ ] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [ ] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [ ] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [ ] verify Preview Pane works for the SVG files
- [ ] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [ ] verify Preview Pane works for the PDF file
- [ ] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [ ] verify Preview Pane works for the gcode file
- [ ] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [ ] verify the Icon Preview works for the stl file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\runner
- [ ] verify Preview Pane works for source files (shows syntax highlighting)
* Running as admin (or user since recently):
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [ ] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [ ] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [ ] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [ ] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [ ] verify Preview Pane doesn't show the preview for the gcode file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [ ] verify Preview Pane doesn't show the preview for the stl file (a generated thumbnail would show when there's no preview)
* go to PowerToys repo and visit src\runner
- [ ] verify Preview Pane doesn't show the preview for source code files or that it's a default previewer instead of Monaco
## Keyboard Manager
UI Validation:
- [ ] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [ ] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [ ] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [ ] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [ ] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [ ] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [ ] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [ ] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [ ] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [ ] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [ ] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## Awake
- [ ] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,124 @@
## Functional tests
Regressions:
- [x] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [x] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [x] System tray menu items
- [x] Settings
- [x] OOBE (What's new)
- [x] Keyboard Manager Editor
- [x] Color Picker (check the tooltips)
- [x] FancyZones Editor
- [x] Power Rename (new WinUI 3 may not be localized)
- [x] PowerToys Run ("Start typing" string is localized, for example)
- [x] Image Resizer
- [x] Shortcut Guide (Windows controls are localized)
- [x] File Explorer menu entries for Image Resizer and Power Rename
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [X] Program - launch a packaged application
- [X] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [X] Windows Search - open a file on the disk.
- [X] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [X] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [x] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [x] Open the guide and close it pressing `Esc`
- [x] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [x] Verify `Win + Shift + /` opens the guide
- [x] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## Always on Top
- [x] Pin/unpin a window, verify it's topmost/not topmost.
- [x] Pin/unpin a window, verify the border appeared/disappeared.
- [x] Switch virtual desktop, verify border doesn't show up on another desktop.
- [x] Minimize and maximize pinned window, verify the border looks as usual.
- [x] Change border color and thickness.
- [x] Verify if sound is played according to the sound setting.
- [x] Exclude app, try to pin it.
- [x] Exclude already pinned app, verify it was unpinned.
- [x] Try to pin the app in the Game Mode.

View File

@@ -0,0 +1,150 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [ ] verify the settings are preserved and FancyZones configuration is still the same
## Functional tests
Regressions:
- [ ] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [ ] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [ ] System tray menu items
- [ ] Settings
- [ ] OOBE (What's new)
- [ ] Keyboard Manager Editor
- [ ] Color Picker (check the tooltips)
- [ ] FancyZones Editor
- [ ] Power Rename (new WinUI 3 may not be localized)
- [ ] PowerToys Run ("Start typing" string is localized, for example)
- [ ] Image Resizer
- [ ] Shortcut Guide (Windows controls are localized)
- [ ] File Explorer menu entries for Image Resizer and Power Rename
## General Settings
**Admin mode:**
- [ ] restart PT and verify it runs as user
- [ ] restart as admin and set "Always run as admin"
- [ ] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [ ] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [ ] reboot the machine and verify it now runs as user
**Modules on/off:**
- [ ] turn off all the modules and verify all module are off
- [ ] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [ ] turn on all the module, all module are now working
- [ ] restart PT and verify that all module are still on in the settings page and they are actually working
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [ ] when PowerToys is running unelevated on start-up
- [ ] when PowerToys is running as admin on start-up
- [ ] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [ ] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [ ] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [ ] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [ ] Try to copy color formats to the clipboard from the Editor
- [ ] Check `Show color name` and verify if color name is shown in the Color picker
- [ ] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [ ] Select a color from the history in the Editor
- [ ] Remove color from the history in the Editor
- [ ] Open the Color Picker from the Editor
- [ ] Open Adjust color from the Editor
- [ ] Check Color Picker logs for errors
## FancyZones Editor
- [ ] Open editor from the settings
- [ ] Open editor with a shortcut
- [ ] Create a new layout (grid and canvas)
- [ ] Duplicate a template and a custom layout
- [ ] Delete layout
- [ ] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [ ] Edit canvas layout: zones size and position, create or delete zones.
- [ ] Edit grid layout: split, merge, resize zones.
- [ ] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [ ] Assign a layout to each monitor.
- [ ] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [ ] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [ ] Change zone colors and opacity.
- [ ] Exclude some apps, verify that they're not applicable to a zone.
- [ ] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [ ] Launch PT in administrator mode, assign a window with administrator privileges.
- [ ] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [ ] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [ ] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Open `Task view` , right-click on the window, check the `Show this window on all desktops` or the `Show windows from this app on all desktops` option to turn it on.
- [ ] Turn Show this window on all desktops on, verify you can snap this window to a zone.
- [ ] Turn Show windows from this app on all desktops on, verify you can snap this window to a zone.
* Switch between layouts with quick keys.
- [ ] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [ ] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [ ] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [ ] Disable FZ
- [ ] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [ ] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [ ] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## Shortcut Guide
* Run PowerToys as user:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [ ] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [ ] Open the guide and close it pressing `Esc`
- [ ] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## VCM
- [ ] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [ ] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [ ] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [ ] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [ ] Verify that changing "toolbar position" setting works
- [ ] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [ ] Try to select an overlay image when PT process is elevated.
## Always on Top
- [ ] Pin/unpin a window, verify it's topmost/not topmost.
- [ ] Pin/unpin a window, verify the border appeared/disappeared.
- [ ] Switch virtual desktop, verify border doesn't show up on another desktop.
- [ ] Minimize and maximize pinned window, verify the border looks as usual.
- [ ] Change border color and thickness.
- [ ] Verify if sound is played according to the sound setting.
- [ ] Exclude app, try to pin it.
- [ ] Exclude already pinned app, verify it was unpinned.
- [ ] Try to pin the app in the Game Mode.

View File

@@ -0,0 +1,164 @@
## Functional tests
Regressions:
- [ ] https://github.com/microsoft/PowerToys/issues/1414#issuecomment-593529038
- [ ] https://github.com/microsoft/PowerToys/issues/1524
## Localization
Change the Winodws language to a language different than English. Then verify if the following screens change their language:
- [ ] System tray menu items
- [ ] Settings
- [ ] OOBE (What's new)
- [ ] Keyboard Manager Editor
- [ ] Color Picker (check the tooltips)
- [ ] FancyZones Editor
- [ ] Power Rename (new WinUI 3 may not be localized)
- [ ] PowerToys Run ("Start typing" string is localized, for example)
- [ ] Image Resizer
- [ ] Shortcut Guide (Windows controls are localized)
- [ ] File Explorer menu entries for Image Resizer and Power Rename
## Color Picker
* Enable the Color Picker in settings and ensure that the hotkey brings up Color Picker
- [ ] when PowerToys is running unelevated on start-up
- [ ] when PowerToys is running as admin on start-up
- [ ] when PowerToys is restarted as admin, by clicking the restart as admin button in the settings
- [ ] Change `Activate Color Picker shortcut` and check the new shortcut is working
- [ ] Try all three `Activation behavior`s(`Color Picker with editor mode enabled`, `Editor`, `Color Picker only`)
- [ ] Change `Color format for clipboard` and check if the correct format is copied from the Color picker
- [ ] Try to copy color formats to the clipboard from the Editor
- [ ] Check `Show color name` and verify if color name is shown in the Color picker
- [ ] Enable one new format, disable one existing format, reorder enabled formats and check if settings are populated to the Editor
- [ ] Select a color from the history in the Editor
- [ ] Remove color from the history in the Editor
- [ ] Open the Color Picker from the Editor
- [ ] Open Adjust color from the Editor
- [ ] Check Color Picker logs for errors
## Image Resizer
- [ ] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [ ] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [ ] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [ ] Resize one image
- [ ] Resize multiple images
- [ ] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [ ] Resize images with `Fill` option
- [ ] Resize images with `Fit` option
- [ ] Resize images with `Stretch` option
- [ ] Resize images using dimension: Centimeters
- [ ] Resize images using dimension: Inches
- [ ] Resize images using dimension: Percents
- [ ] Resize images using dimension: Pixels
- [ ] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [ ] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [ ] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [ ] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [ ] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## PowerRename
- [ ] Check if disable and enable of the module works.
- [ ] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [ ] Check if `Appear only in extended context menu` works.
- [ ] Enable/disable autocomplete.
- [ ] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [ ] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [ ] Exclude Folders/Files/Subfolder Items (could be selected several)
- [ ] Item Name/Extension Only (one at the time)
- [ ] Enumerate Items
- [ ] Case Sensitive
- [ ] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [ ] Search with an expression (e.g. `(.*).png`)
- [ ] Replace with an expression (e.g. `foo_$1.png`)
- [ ] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [ ] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [ ] In the `preview` window uncheck some items to exclude them from renaming.
- [ ] Click on the `Renamed` column to filter results.
- [ ] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [ ] when PowerToys is running unelevated on start-up
- [ ] when PowerToys is running as admin on start-up
- [ ] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [ ] Program - launch a Win32 application
- [ ] Program - launch a Win32 application as admin
- [ ] Program - launch a packaged application
- [ ] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [ ] Windows Search - open a file on the disk.
- [ ] Windows Search - find a file and copy file path.
- [ ] Windows Search - find a file and open containing folder.
- [ ] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [ ] Folder - Search and open a sub-folder on entering the path.
- [ ] Uri - launch a web page on entering the uri.
- [ ] Window walker - Switch focus to a running window.
- [ ] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [ ] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [ ] Registry - navigate through the registry tree and copy key path.
- [ ] System - test `lock`.
- [ ] System - test `empty recycle bin`.
- [ ] System - test `shutdown`.
- [ ] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [ ] Test tab navigation.
* Test Plugin Manager
- [ ] Enable/disable plugins and verify changes are picked up by PT Run
- [ ] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [ ] Change `Include in global result` and verify changes picked up by PT Run
- [ ] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [ ] Disable all plugins and verify the warning message is shown.
## Shortcut Guide
* Run PowerToys as user:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Change the hotkey to a different shortcut (e.g. `Win + /`) and verify it works
- [ ] Set Shortcut Guide to start with a Windows key press and verify it works.
* Restore the `Win + Shift + /` hotkey.
- [ ] Open the guide and close it pressing `Esc`
- [ ] Open the guide and close it pressing and releasing the `Win` key
* With PowerToys running as a user, open an elevated app and keep it on foreground:
- [ ] Verify `Win + Shift + /` opens the guide
- [ ] Verify some of the shortcuts shown in the guide work and the guide is closed when pressed
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [ ] Start PowerToys and verify OOBE opens
* Change version saved on `%localappdata%\Microsoft\PowerToys\last_version.txt`
- [ ] Start PowerToys and verify OOBE opens in the "What's New" page
* Visit each OOBE section and for each section:
- [ ] open the Settings for that module
- [ ] verify the Settings work as expected (toggle some controls on/off etc.)
- [ ] close the Settings
- [ ] if it's available, test the `Launch module name` button
* Close OOBE
- [ ] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## VCM
- [ ] Check "Hide toolbar when both camera and micrphone are unmuted" and verify that it works
- [ ] Uncheck it, mute the microphone with the hotkey and make sure the toolbar doesn't hide after a timeout
- [ ] Go to some video conference application settings, e.g. meet.google.com, Microsoft Teams, Skype. "Select PowerToys VideoConference Mute" camera as an active device and try to mute it with a hotkey
- [ ] Go to Control Panel -> Sound -> Recording -> select default mic -> open its properties -> Levels. Now mute the microphone with a corresponding hotkey and verify that mute icon on the right side of volume slider reflects its muted status.
- [ ] Verify that changing "toolbar position" setting works
- [ ] Select an overlay image and verify that muting camera now shows the image instead of black screen. (Don't forget to restart the application which uses the camera).
- [ ] Try to select an overlay image when PT process is elevated.
## Always on Top
- [ ] Pin/unpin a window, verify it's topmost/not topmost.
- [ ] Pin/unpin a window, verify the border appeared/disappeared.
- [ ] Switch virtual desktop, verify border doesn't show up on another desktop.
- [ ] Minimize and maximize pinned window, verify the border looks as usual.
- [ ] Change border color and thickness.
- [ ] Verify if sound is played according to the sound setting.
- [ ] Exclude app, try to pin it.
- [ ] Exclude already pinned app, verify it was unpinned.
- [ ] Try to pin the app in the Game Mode.

View File

@@ -0,0 +1,224 @@
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [x] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane works for the SVG files
- [x] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane works for the PDF file
- [x] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane works for the gcode file
- [x] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify the Icon Preview works for the stl file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane works for source files (shows syntax highlighting)
* Running as admin (or user since recently):
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [x] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [x] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [x] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the gcode file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [x] verify Preview Pane doesn't show the preview for the stl file (a generated thumbnail would show when there's no preview)
* go to PowerToys repo and visit src\runner
- [x] verify Preview Pane doesn't show the preview for source code files or that it's a default previewer instead of Monaco
## Image Resizer
- [x] Disable the Image Resizer and check that `Resize images` is absent in the context menu
- [x] Enable the Image Resizer and check that `Resize images` is present in the context menu
- [x] Remove one image size and add a custom image size. Open the Image Resize window from the context menu and verify that changes are populated
- [x] Resize one image
- [x] Resize multiple images
- [x] Open the image resizer to resize a `.gif` file and verify the "Gif files with animations may not be correctly resized." warning appears.
- [x] Resize images with `Fill` option
- [x] Resize images with `Fit` option
- [x] Resize images with `Stretch` option
- [x] Resize images using dimension: Centimeters
- [x] Resize images using dimension: Inches
- [x] Resize images using dimension: Percents
- [x] Resize images using dimension: Pixels
- [x] Change `Filename format` to `%1 - %2 - %3 - %4 - %5 - %6` and check if the new format is applied to resized images
- [x] Check `Use original date modified` and verify that modified date is not changed for resized images. Take into account that `Resize the original pictures(don't create copy)` should be selected
- [x] Check `Make pictures smaller but not larger` and verify that smaller pictures are not resized
- [x] Check `Resize the original pictures (don't create copies)` and verify that the original picture is resized and a copy is not created
- [x] Uncheck `Ignore the orientation of pictures` and verify that swapped width and height will actually resize a picture if the width is not equal to the height
## Keyboard Manager
UI Validation:
- [x] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [x] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [x] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [x] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [x] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [x] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [x] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [x] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [x] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [x] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [x] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## PowerRename
- [x] Check if disable and enable of the module works.
- [x] Check that with the `Show icon on context menu` icon is shown and vice versa.
- [x] Check if `Appear only in extended context menu` works.
- [x] Enable/disable autocomplete.
- [x] Enable/disable `Show values from last use`.
* Select several files and folders and check PowerRename options:
- [x] Make Uppercase/Lowercase/Titlecase (could be selected only one at the time)
- [x] Exclude Folders/Files/Subfolder Items (could be selected several)
- [x] Item Name/Extension Only (one at the time)
- [x] Enumerate Items
- [x] Case Sensitive
- [x] Match All Occurrences. If checked, all matches of text in the `Search` field will be replaced with the Replace text. Otherwise, only the first instance of the `Search` for text in the file name will be replaced (left to right).
* Use regular expressions
- [x] Search with an expression (e.g. `(.*).png`)
- [x] Replace with an expression (e.g. `foo_$1.png`)
- [x] Replace using file creation date and time (e.g. `$hh-$mm-$ss-$fff` `$DD_$MMMM_$YYYY`)
- [x] Turn on `Use Boost library` and test with Perl Regular Expression Syntax (e.g. `(?<=t)est`)
* File list filters.
- [x] In the `preview` window uncheck some items to exclude them from renaming.
- [x] Click on the `Renamed` column to filter results.
- [x] Click on the `Original` column to cycle between checked and unchecked items.
## PowerToys Run
* Enable PT Run in settings and ensure that the hotkey brings up PT Run
- [x] when PowerToys is running unelevated on start-up
- [x] when PowerToys is running as admin on start-up
- [x] when PowerToys is restarted as admin, by clicking the restart as admin button in settings.
* Check that each of the plugins is working:
- [x] Program - launch a Win32 application
- [x] Program - launch a Win32 application as admin
- [x] Program - launch a packaged application
- [x] Calculator - ensure a mathematical input returns a correct response and is copied on enter.
- [x] Windows Search - open a file on the disk.
- [x] Windows Search - find a file and copy file path.
- [x] Windows Search - find a file and open containing folder.
- [x] Shell - execute a command. Enter the action keyword `>`, followed by the query, both with and without space (e.g. `> ping localhost`).
- [x] Folder - Search and open a sub-folder on entering the path.
- [x] Uri - launch a web page on entering the uri.
- [x] Window walker - Switch focus to a running window.
- [x] Service - start, stop, restart windows service. Enter the action keyword `!` to get the list of services.
- [x] Registry - navigate through the registry tree and open registry editor. Enter the action keyword `:` to get the root keys.
- [x] Registry - navigate through the registry tree and copy key path.
- [x] System - test `lock`.
- [x] System - test `empty recycle bin`.
- [x] System - test `shutdown`.
- [x] Disable PT Run and ensure that the hotkey doesn't bring up PT Run.
- [x] Test tab navigation.
* Test Plugin Manager
- [x] Enable/disable plugins and verify changes are picked up by PT Run
- [x] Change `Direct activation phrase` and verify changes are picked up by PT Run
- [x] Change `Include in global result` and verify changes picked up by PT Run
- [x] Clear `Direct activation phrase` and uncheck `Include in global result`. Verify a warning message is shown.
- [x] Disable all plugins and verify the warning message is shown.
## OOBE
* Quit PowerToys
* Delete %localappdata%\Microsoft\PowerToys
- [x] Start PowerToys and verify OOBE opens
* Change version saved on `%localappdata%\Microsoft\PowerToys\last_version.txt`
- [x] Start PowerToys and verify OOBE opens in the "What's New" page
* Visit each OOBE section and for each section:
- [x] open the Settings for that module
- [x] verify the Settings work as expected (toggle some controls on/off etc.)
- [x] close the Settings
- [x] if it's available, test the `Launch module name` button
* Close OOBE
- [x] Open the Settings and from the General page open OOBE using the `Welcome to PowerToys` link
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press any other key and verify the overlay disappears.
- [x] Press Left Ctrl twice and verify the overlay appears.
- [x] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [x] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [x] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [x] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [x] Overlay opacity
- [x] Background color
- [x] Spotlight color
- [x] Spotlight radius
- [x] Spotlight initial zoom (1x vs 9x will show the difference)
- [x] Animation duration
- [x] Change activation method to shake and activate by shaking your mouse pointer
- [x] Excluded apps
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [x] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [x] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [x] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [x] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Left button highlight color
- [x] Right button highlight color
- [x] Opacity
- [x] Radius
- [x] Fade delay
- [x] Fade duration
Mouse Pointer Crosshairs:
* Enable Mouse Pointer Crosshairs. Then:
- [x] Press the activation shortcut and verify the crosshairs appear, and that they follow the mouse around.
- [x] Press the activation shortcut again and verify the crosshairs disappear.
- [x] Disable Mouse Pointer Crosshairs and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [x] Change activation shortcut and test it
- [x] Crosshairs color
- [x] Crosshairs opacity
- [x] Crosshairs center radius
- [x] Crosshairs thickness
- [x] Crosshairs border color
- [x] Crosshairs border size
## Awake
- [x] Try out the features and see if they work, no list at this time.

View File

@@ -0,0 +1,210 @@
## Install tests
* install a **previous version** on a clean machine (a clean machine doesn't have the `%localappdata%\Microsoft\PowerToys` folder)
* open the Settings and for each module change at least one option
* open the FancyZones editor and create two custom layouts:
* a canvas layout with 2 zones, use unicode chars in the layout's name
* one from grid template using 4 zones and splitting one zone
* apply the custom canvas layout to the primary desktop
* create a virtual desktop and apply the custom grid layout
* if you have a second monitor apply different templates layouts for the primary desktop and for the second virtual desktop
* install the new version (it will uninstall the old version and install the new version)
- [ ] verify the settings are preserved and FancyZones configuration is still the same
## General Settings
**Admin mode:**
- [ ] restart PT and verify it runs as user
- [ ] restart as admin and set "Always run as admin"
- [ ] restart PT and verify it runs as admin
* if it's not on, turn on "Run at startup"
- [ ] reboot the machine and verify PT runs as admin (it should not prompt the UAC dialog)
* turn Always run as admin" off
- [ ] reboot the machine and verify it now runs as user
**Modules on/off:**
- [ ] turn off all the modules and verify all module are off
- [ ] restart PT and verify that all module are still off in the settings page and they are actually inactive
- [ ] turn on all the module, all module are now working
- [ ] restart PT and verify that all module are still on in the settings page and they are actually working
## FancyZones Editor
- [ ] Open editor from the settings
- [ ] Open editor with a shortcut
- [ ] Create a new layout (grid and canvas)
- [ ] Duplicate a template and a custom layout
- [ ] Delete layout
- [ ] Edit templates (number of zones, spacing, distance to highlight adjacent zones). Verify after reopening the editor that saved settings are kept the same.
- [ ] Edit canvas layout: zones size and position, create or delete zones.
- [ ] Edit grid layout: split, merge, resize zones.
- [ ] Check `Save and apply` and `Cancel` buttons behavior after editing.
- [ ] Assign a layout to each monitor.
- [ ] Assign keys to quickly switch layouts (custom layouts only), `Win + Ctrl + Alt + number`.
## FancyZones
- [ ] Switch between `Allow zones to span across monitors` on and off. Verify that layouts are applied correctly in both cases.
- [ ] Change zone colors and opacity.
- [ ] Exclude some apps, verify that they're not applicable to a zone.
- [ ] Launch PT in user mode, try to assign a window with administrator privileges to a zone. Verify the notification is shown.
- [ ] Launch PT in administrator mode, assign a window with administrator privileges.
- [ ] Create virtual desktop, verify that there are the same layouts as applied to the previous virtual desktop.
- [ ] After creating a virtual desktop apply another layout or edit the applied one. Verify that the other virtual desktop layout wasn't changed.
- [ ] Delete an applied custom layout in the Editor, verify that there is no layout applied instead of it.
* Open `Task view` , right-click on the window, check the `Show this window on all desktops` or the `Show windows from this app on all desktops` option to turn it on.
- [ ] Turn Show this window on all desktops on, verify you can snap this window to a zone.
- [ ] Turn Show windows from this app on all desktops on, verify you can snap this window to a zone.
* Switch between layouts with quick keys.
- [ ] Switch with `Win` + `Ctrl` + `Alt` + `key`
- [ ] Switch with just a key while dragging a window.
* Change screen resolution or scaling.
- [ ] Assign grid layout, verify that the assigned layout fits the screen.
NOTE: canvas layout could not fit the screen if it was created on a monitor with a different resolution.
- [ ] Disable FZ
- [ ] Re-enable FZ, verify that everything is in the same state as it was before disabling.
* Test layout resetting.
Before testing
* Remove all virtual desktops
* Remove `CurrentVirtualDesktop` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops`
* Remove `VirtualDesktopIDs` from `\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops`
- [ ] Test screen locking
* Set custom layouts on each monitor
* Lock screen / unplug monitor / plug monitor
* Verify that layouts weren't reset to defaults
- [ ] Test restart
* Set custom layouts on each monitor
* Restart the computer
* Verify that layouts weren't reset to defaults
## File Explorer Add-ons
* Running as user:
* go to PowerToys repo root
- [ ] verify the README.md Preview Pane shows the correct content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [ ] verify Preview Pane works for the SVG files
- [ ] verify the Icon Preview works for the SVG file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [ ] verify Preview Pane works for the PDF file
- [ ] verify the Icon Preview works for the PDF file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [ ] verify Preview Pane works for the gcode file
- [ ] verify the Icon Preview works for the gcode file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [ ] verify the Icon Preview works for the stl file (loop through different icon preview sizes)
* go to PowerToys repo and visit src\runner
- [ ] verify Preview Pane works for source files (shows syntax highlighting)
* Running as admin (or user since recently):
* open the Settings and turn off the Preview Pane and Icon Previous toggles
* go to PowerToys repo root
- [ ] verify the README.md Preview Pane doesn't show any content
* go to PowerToys repo and visit src\modules\ShortcutGuide\ShortcutGuide\svgs
- [ ] verify Preview Pane doesn't show the preview for the SVG files
* the Icon Preview for the existing SVG will still show since the icons are cached (you can also use `cleanmgr.exe` to clean all thumbnails cached in your system). You may need to restart the machine for this setting to apply as well.
- [ ] copy and paste one of the SVG file and verify the new file show the generic SVG icon
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-PdfPreviewHandler\HelperFiles
- [ ] verify Preview Pane doesn't show the preview for the PDF file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-GcodePreviewHandler\HelperFiles
- [ ] verify Preview Pane doesn't show the preview for the gcode file
* go to PowerToys repo and visit src\modules\previewpane\UnitTests-StlThumbnailProvider\HelperFiles
- [ ] verify Preview Pane doesn't show the preview for the stl file (a generated thumbnail would show when there's no preview)
* go to PowerToys repo and visit src\runner
- [ ] verify Preview Pane doesn't show the preview for source code files or that it's a default previewer instead of Monaco
## Keyboard Manager
UI Validation:
- [ ] In Remap keys, add and remove rows to validate those buttons. While the blank rows are present, pressing the OK button should result in a warning dialog that some mappings are invalid.
- [ ] Using only the Type buttons, for both the remap windows, try adding keys/shortcuts in all the columns. The right-side column in both windows should accept both keys and shortcuts, while the left-side column will accept only keys or only shortcuts for Remap keys and Remap shortcuts respectively. Validate that the Hold Enter and Esc accessibility features work as expected.
- [ ] Using the drop downs try to add key to key, key to shortcut, shortcut to key and shortcut to shortcut remapping and ensure that you are able to select remapping both by using mouse and by keyboard navigation.
- [ ] Validate that remapping can be saved by pressing the OK button and re-opening the windows loads existing remapping.
Remapping Validation:
For all the remapping below, try pressing and releasing the remapped key/shortcut and pressing and holding it. Try different behaviors like releasing the modifier key before the action key and vice versa.
- [ ] Test key to key remapping
- A->B
- Ctrl->A
- A->Ctrl
- Win->B (make sure Start menu doesn't appear accidentally)
- B->Win (make sure Start menu doesn't appear accidentally)
- A->Disable
- Win->Disable
- [ ] Test key to shortcut remapping
- A->Ctrl+V
- B->Win+A
- [ ] Test shortcut to shortcut remapping
- Ctrl+A->Ctrl+V
- Win+A->Ctrl+V
- Ctrl+V->Win+A
- Win+A->Win+F
- [ ] Test shortcut to key remapping
- Ctrl+A->B
- Ctrl+A->Win
- Win+A->B
* Test app-specific remaps
- [ ] Similar remaps to above with Edge (entered as `msedge`), VSCode (entered as `code`) and cmd. For cmd try admin and non-admin (requires PT to run as admin)
- [ ] Try some cases where focus is lost due to the shortcut. Example remapping to Alt+Tab or Alt+F4
- [ ] Test switching between remapping while holding down modifiers - Eg. Ctrl+D->Ctrl+A and Ctrl+E->Ctrl+V, hold Ctrl and press D followed by E. Should select all and paste over it in a text editor. Similar steps for Windows key shortcuts.
## Mouse Utils
Find My Mouse:
* Enable FindMyMouse. Then, without moving your mouse:
- [ ] Press Left Ctrl twice and verify the overlay appears.
- [ ] Press any other key and verify the overlay disappears.
- [ ] Press Left Ctrl twice and verify the overlay appears.
- [ ] Press a mouse button and verify the overlay disappears.
* Disable FindMyMouse. Verify the overlay no longer appears when you press Left Ctrl twice.
* Enable FindMyMouse. Then, without moving your mouse:
- [ ] Press Left Ctrl twice and verify the overlay appears.
* Enable the "Do not activate on game mode" option. Start playing a game that uses CG native full screen.
- [ ] Verify the overlay no longer appears when you press Left Ctrl twice.
* Disable the "Do not activate on game mode" option. Start playing the same game.
- [ ] Verify the overlay appears when you press Left Ctrl twice. (though it'll likely minimize the game)
* Test the different settings and verify they apply:
- [ ] Overlay opacity
- [ ] Background color
- [ ] Spotlight color
- [ ] Spotlight radius
- [ ] Spotlight initial zoom (1x vs 9x will show the difference)
- [ ] Animation duration
- [ ] Change activation method to shake and activate by shaking your mouse pointer
- [ ] Excluded apps
Mouse Highlighter:
* Enable Mouse Highlighter. Then:
- [ ] Press the activation shortcut and press left and right click somewhere, verifying the hightlights are applied.
- [ ] With left mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [ ] With right mouse button pressed, drag the mouse and verify the hightlight is dragged with the pointer.
- [ ] Press the activation shortcut again and verify no highlights appear when the mouse buttons are clicked.
- [ ] Disable Mouse Highlighter and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [ ] Change activation shortcut and test it
- [ ] Left button highlight color
- [ ] Right button highlight color
- [ ] Opacity
- [ ] Radius
- [ ] Fade delay
- [ ] Fade duration
Mouse Pointer Crosshairs:
* Enable Mouse Pointer Crosshairs. Then:
- [ ] Press the activation shortcut and verify the crosshairs appear, and that they follow the mouse around.
- [ ] Press the activation shortcut again and verify the crosshairs disappear.
- [ ] Disable Mouse Pointer Crosshairs and verify that the module is not activated when you press the activation shortcut.
* Test the different settings and verify they apply:
- [ ] Change activation shortcut and test it
- [ ] Crosshairs color
- [ ] Crosshairs opacity
- [ ] Crosshairs center radius
- [ ] Crosshairs thickness
- [ ] Crosshairs border color
- [ ] Crosshairs border size
## Awake
- [ ] Try out the features and see if they work, no list at this time.

Some files were not shown because too many files have changed in this diff Show More