PowerToys icon indicating copy to clipboard operation
PowerToys copied to clipboard

Added basic support for Windows App Actions.

Open azchohfi opened this issue 6 months ago • 7 comments

Summary of the Pull Request

Adds basic support for finding, listing, and executing Windows App Actions on files found by the Microsoft.CmdPal.Ext.Indexer extension.

PR Checklist

  • [X] Closes: #39926
  • [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
  • [X] Localization: All end user facing strings can be localized
  • [ ] Dev docs: Added/updated
  • [ ] New binaries: Added on the required places
  • [ ] Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

We also update cswin32 to stable version.

Validation Steps Performed

Validated that it doesn't show on older versions of Windows (<26100 insiders) and that it does work on newer version that have the App Actions runtime.

azchohfi avatar Jun 06 '25 00:06 azchohfi

I'm not sure if it's suitable for indexer extension. I guess we need to create a new ext for it?

At least, I think we need to add a new setting to control this behaviour.

@zadjii-msft @cinnamon-msft

any idea?

moooyo avatar Jun 06 '25 08:06 moooyo

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (1)

CLSCTXLOCALSERVER

These words are not needed and should be removed DEFT iextn localappdata OTHERUNZOOM OTHERZOOM PARENTCLOSING PARENTOPENING pswd SCROLLCHILDREN SHELLEXTENSION SHELLNEWVALUE SHGFIICON SHGFILARGEICON TGM VARENUM

Some files were automatically ignored :see_no_evil:

These sample patterns would exclude them:

^\Q.pipelines/272MSSharedLibSN2048.snk\E$

You should consider adding them to:

.github/actions/spell-check/excludes.txt

File matching is via Perl regular expressions.

To check these files, more of their words need to be in the dictionary than not. You can use patterns.txt to exclude portions, add items to the dictionary (e.g. by adding them to allow.txt), or fix typos.

To accept these unrecognized words as correct, update file exclusions, and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:azchohfi/PowerToys.git repository on the alzollin/actionsInvoke branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/67debf50669c7fc76fc8f5d7f996384535a72b77/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/15498278499/attempts/1'

Errors (3)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:x: Errors Count
:warning: binary-file 1
:x: ignored-expect-variant 2
:warning: no-newline-at-eof 1

See :x: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Jun 06 '25 19:06 github-actions[bot]

Here's a small GIF actions-in-indexer-000

(admittedly, I had to make a small change to support this - I had to change

-this.Name = actionInstance.DisplayInfo.Description
+this.Name = actionInstance.Definition.Description

in ExecuteActionCommand.cs. Presumably I'm on the wrong OS build for that API. But I also don't hate this?

We have other Big Ideas here with Actions and Command Palette (which I'll probably start working on more again in July when I'm back)

zadjii-msft avatar Jun 10 '25 10:06 zadjii-msft

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (2)

CLSCTXLOCALSERVER GC'd

These words are not needed and should be removed DEFT iextn localappdata msvsmon OTHERUNZOOM OTHERZOOM PARENTCLOSING PARENTOPENING pswd SCROLLCHILDREN SHELLEXTENSION SHELLNEWVALUE SHGFIICON SHGFILARGEICON TGM VARENUM

Some files were automatically ignored :see_no_evil:

These sample patterns would exclude them:

^\Q.pipelines/272MSSharedLibSN2048.snk\E$
^src/modules/ZoomIt/ZoomIt/ZoomIt\.idc$

You should consider adding them to:

.github/actions/spell-check/excludes.txt

File matching is via Perl regular expressions.

To check these files, more of their words need to be in the dictionary than not. You can use patterns.txt to exclude portions, add items to the dictionary (e.g. by adding them to allow.txt), or fix typos.

To accept these unrecognized words as correct, update file exclusions, and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:azchohfi/PowerToys.git repository on the alzollin/actionsInvoke branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/15565866924/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Warnings :warning: (4)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:warning: Warnings Count
:warning: binary-file 1
:warning: ignored-expect-variant 2
:warning: no-newline-at-eof 2
:warning: single-line-file 1

See :warning: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Jun 10 '25 17:06 github-actions[bot]

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (2)

CLSCTXLOCALSERVER GC'd

These words are not needed and should be removed DEFT iextn localappdata msvsmon OTHERUNZOOM OTHERZOOM PARENTCLOSING PARENTOPENING pswd SCROLLCHILDREN SHELLEXTENSION SHELLNEWVALUE SHGFIICON SHGFILARGEICON TGM VARENUM

Some files were automatically ignored :see_no_evil:

These sample patterns would exclude them:

^\Q.pipelines/272MSSharedLibSN2048.snk\E$
^src/modules/ZoomIt/ZoomIt/ZoomIt\.idc$

You should consider adding them to:

.github/actions/spell-check/excludes.txt

File matching is via Perl regular expressions.

To check these files, more of their words need to be in the dictionary than not. You can use patterns.txt to exclude portions, add items to the dictionary (e.g. by adding them to allow.txt), or fix typos.

To accept these unrecognized words as correct, update file exclusions, and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:azchohfi/PowerToys.git repository on the alzollin/actionsInvoke branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/15566703617/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Warnings :warning: (4)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:warning: Warnings Count
:warning: binary-file 1
:warning: ignored-expect-variant 2
:warning: no-newline-at-eof 2
:warning: single-line-file 1

See :warning: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Jun 10 '25 17:06 github-actions[bot]

From a PM stance I'm cool with this, looks like a nice toe-dip into Actions and I'm eager to see community feedback on it :)

cinnamon-msft avatar Jun 10 '25 18:06 cinnamon-msft

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (1)

CLSCTXLOCALSERVER

To accept these unrecognized words as correct, you could run the following commands

... in a clone of the [email protected]:azchohfi/PowerToys.git repository on the alzollin/actionsInvoke branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/15600206079/attempts/1' &&
git commit -m 'Update check-spelling metadata'
If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Jun 12 '25 02:06 github-actions[bot]

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (1)

LOCKTYPE

These words are not needed and should be removed iwr Zhiwei

Some files were automatically ignored :see_no_evil:

These sample patterns would exclude them:

^src/common/CalculatorEngineCommon/exprtk\.hpp$

You should consider adding them to:

.github/actions/spell-check/excludes.txt

File matching is via Perl regular expressions.

To check these files, more of their words need to be in the dictionary than not. You can use patterns.txt to exclude portions, add items to the dictionary (e.g. by adding them to allow.txt), or fix typos.

To accept these unrecognized words as correct, update file exclusions, and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:azchohfi/PowerToys.git repository on the alzollin/actionsInvoke branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/15662980542/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Pattern suggestions :scissors: (1)

You could add these patterns to .github/actions/spell-check/patterns.txt:

# Automatically suggested patterns

# hit-count: 1 file-count: 1
# curl arguments
\b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*

Alternatively, if a pattern suggestion doesn't make sense for this project, add a # to the beginning of the line in the candidates file with the pattern to stop suggesting it.

Warnings and Notices :warning: (2)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:warning: Warnings and Notices Count
:information_source: candidate-pattern 1
:warning: large-file 1

See :warning: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Jun 15 '25 12:06 github-actions[bot]

/azp run

lei9444 avatar Jun 15 '25 12:06 lei9444

Azure Pipelines successfully started running 1 pipeline(s).

azure-pipelines[bot] avatar Jun 15 '25 12:06 azure-pipelines[bot]

/azp run

lei9444 avatar Jun 16 '25 04:06 lei9444

Azure Pipelines successfully started running 1 pipeline(s).

azure-pipelines[bot] avatar Jun 16 '25 04:06 azure-pipelines[bot]

/azp run

lei9444 avatar Jun 16 '25 07:06 lei9444

Azure Pipelines successfully started running 1 pipeline(s).

azure-pipelines[bot] avatar Jun 16 '25 07:06 azure-pipelines[bot]

/azp run

lei9444 avatar Jun 16 '25 09:06 lei9444

Azure Pipelines successfully started running 1 pipeline(s).

azure-pipelines[bot] avatar Jun 16 '25 09:06 azure-pipelines[bot]

/azp run

lei9444 avatar Jun 16 '25 09:06 lei9444

Azure Pipelines successfully started running 1 pipeline(s).

azure-pipelines[bot] avatar Jun 16 '25 09:06 azure-pipelines[bot]

/azp run

lei9444 avatar Jun 16 '25 10:06 lei9444

Azure Pipelines successfully started running 1 pipeline(s).

azure-pipelines[bot] avatar Jun 16 '25 10:06 azure-pipelines[bot]

/azp run

lei9444 avatar Jun 17 '25 00:06 lei9444

Azure Pipelines successfully started running 1 pipeline(s).

azure-pipelines[bot] avatar Jun 17 '25 00:06 azure-pipelines[bot]

/azp run

lei9444 avatar Jun 18 '25 06:06 lei9444

Azure Pipelines successfully started running 1 pipeline(s).

azure-pipelines[bot] avatar Jun 18 '25 06:06 azure-pipelines[bot]