Skip to content

feat(shortcut-guide): add Postman manifest and fix numbered-key display - #48461

Merged
Yu Leng (moooyo) merged 6 commits into
microsoft:mainfrom
brycewc:shortcut-guide-postman-numbered-keys
Jun 22, 2026
Merged

Yu Leng (moooyo) merged 6 commits into
microsoft:mainfrom
brycewc:shortcut-guide-postman-numbered-keys

Conversation

@brycewc

@brycewc Bryce Cindrich (brycewc) commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Summary of the Pull Request

Adds a Shortcut Guide manifest for Postman and fixes a rendering bug where single-digit keys in manifests displayed incorrectly.

  • Fix numbered-key renderingsrc/modules/ShortcutGuide/ShortcutGuide.Ui/Converters/ShortcutDescriptionToKeysConverter.cs: a single digit (09) in a manifest's Keys was treated as a Windows virtual-key code instead of the literal digit. Since VK 1 is the left mouse button, VK 9 is Tab, and VK 0 is undefined, shortcuts such as Ctrl+0 (reset zoom) and Ctrl+9 (last tab) rendered as blank/incorrect glyphs. Single digits are now rendered as the literal character.
  • Add Postman shortcutssrc/modules/ShortcutGuide/ShortcutGuide.Ui/Assets/ShortcutGuide/Manifests/Postman.Postman.en-US.yml: new manifest for Postman.exe covering Tabs, Sidebar, Request, Interface, Window and modals, and Console. Auto-included via the existing Manifests/*.yml glob in ShortcutGuide.Ui.csproj.
  • Show tab-number ranges — Edge, Chrome, Firefox, and Postman manifests: the "switch to a specific tab" entry used the literal key 1, which (after the fix above) read as Ctrl + 1. It now uses a 1 - 8 range so the keycap conveys "any tab number 1 through 8". The separate "last tab" (9) and "reset zoom" (0) entries remain literal single keys.
  • Add unit tests — new ShortcutGuide.UnitTests (MSTest) project covering ShortcutDescriptionToKeysConverter.GetKeysList, including the single-digit regression.

PR Checklist

Detailed Description of the Pull Request / Additional comments

The Shortcut Guide displays per-app shortcuts from YAML manifests, matched to the foreground window via WindowFilter. Keys are converted to keycaps by ShortcutDescriptionToKeysConverter. Numeric key strings were unconditionally parsed as virtual-key codes, so literal-digit shortcuts rendered wrong. The fix adds a >= 0 and <= 9 case that emits the digit character as-is; non-digit numeric codes (arrows, etc.) are unchanged.

The new Postman manifest exercises this with Ctrl+0 / Ctrl+9. The browser/Postman "specific tab" entries were updated from the literal 1 to the 1 - 8 range string, rendered verbatim by KeyVisual (the same path used by the existing Number (1-9) key in the Windows Explorer manifest).

A new ShortcutGuide.UnitTests (MSTest) project covers the converter: single digits render literally (regression test), modifier ordering, non-numeric passthrough (e.g. 1 - 8), and arrow-key VK mapping.

Validation Steps Performed

Built and ran locally (x64 Debug):

  • Built ShortcutGuideModuleInterface, ShortcutGuide.Ui, and ShortcutGuide.IndexYmlGenerator; launched the Debug PowerToys.exe.
  • Triggered Shortcut Guide (Win+Shift+/) with Postman focused: the Postman section renders with all categories, and Ctrl+1 / Ctrl+9 / Ctrl+0 display correctly (previously blank/incorrect).
  • Verified the "specific tab" entry renders as Ctrl + 1 - 8 in Edge, Chrome, Firefox, and Postman.
  • Built ShortcutGuide.UnitTests and ran via vstest.console.exe: 8/8 tests pass.
PowerToys Shortcut Guide Running Postman

Co-Authored-By: Claude Opus 4.8

Add a Shortcut Guide manifest for Postman (Postman.exe). Also fix a bug where single-digit keys (0-9) in a manifest were treated as Windows virtual-key codes instead of literal digits, so shortcuts like Ctrl+0 (reset zoom) and Ctrl+9 (last tab) rendered as blank/incorrect glyphs.

Show the 'switch to a specific tab' shortcut as a '1 - 8' range instead of a literal '1' in the Edge, Chrome, Firefox, and Postman manifests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

This comment has been minimized.

Add ShortcutGuide.UnitTests (MSTest) with tests for ShortcutDescriptionToKeysConverter.GetKeysList: single-digit keys render as the literal digit (regression for VK-code misinterpretation), modifier ordering, non-numeric passthrough, and arrow-key VK mapping. Registered in PowerToys.slnx; CI discovers it via the existing **\*UnitTest*.dll glob.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@brycewc

Copy link
Copy Markdown
Contributor Author

@microsoft-github-policy-service agree

Postbot is Postman's built-in AI assistant, referenced in the Postman shortcut manifest. Add it to the check-spelling expect list.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

This comment has been minimized.

@niels9001

Copy link
Copy Markdown
Collaborator

Bryce Cindrich (@brycewc) Thanks for this PR! Can you add a screenshot in the PR description of the built version with the changes applied?

@noraa-junker

Copy link
Copy Markdown
Collaborator

Please use <0>, <1> and so on for numbers. That is the intended way. We should probably document it.

@brycewc

Bryce Cindrich (brycewc) commented Jun 11, 2026

Copy link
Copy Markdown
Contributor Author

Please use <0>, <1> and so on for numbers. That is the intended way. We should probably document it.

Noraa Junker (@noraa-junker), thanks! That makes sense. <9> is already handled by the bracket-strip in KeyVisual, and since the spec defines a bare number as a virtual-key code, <N> is the correct way to express a literal number key. I'm happy to switch to it and add <0> through <9> to the "Special keys" table in the spec.

One scoping question before I push the change. The converter tweak in this PR currently makes bare digits render as literal numbers globally. There are about 90 bare-digit keys across 15 existing manifests (Adobe apps, Slack, IntelliJ, VS Code, Blender, and others). If I revert the converter and move to <N>, those existing manifests will render incorrectly again unless they are also converted.

Would you like this PR to:

Convert all existing manifests to <N> and revert the converter change. This fully fixes the rendering the intended way, but it is a larger diff.
Keep it scoped to the new Postman manifest plus document the <N> convention, with the bulk conversion as a follow-up issue.
Also, for ranges like "switch to a specific tab (1-8)", is a literal label such as 1 - 8 fine, or do you have a preferred notation? (<1> - <8> will not render cleanly, since the bracket-strip only trims the ends.)

@brycewc

Copy link
Copy Markdown
Contributor Author

Please use <0>, <1> and so on for numbers. That is the intended way. We should probably document it.

Noraa Junker (@noraa-junker) still waiting for your guidance per my last comment

@noraa-junker

Copy link
Copy Markdown
Collaborator

Please use <0>, <1> and so on for numbers. That is the intended way. We should probably document it.

Noraa Junker (@noraa-junker), thanks! That makes sense. <9> is already handled by the bracket-strip in KeyVisual, and since the spec defines a bare number as a virtual-key code, <N> is the correct way to express a literal number key. I'm happy to switch to it and add <0> through <9> to the "Special keys" table in the spec.

One scoping question before I push the change. The converter tweak in this PR currently makes bare digits render as literal numbers globally. There are about 90 bare-digit keys across 15 existing manifests (Adobe apps, Slack, IntelliJ, VS Code, Blender, and others). If I revert the converter and move to <N>, those existing manifests will render incorrectly again unless they are also converted.

Would you like this PR to:

Convert all existing manifests to <N> and revert the converter change. This fully fixes the rendering the intended way, but it is a larger diff. Keep it scoped to the new Postman manifest plus document the <N> convention, with the bulk conversion as a follow-up issue. Also, for ranges like "switch to a specific tab (1-8)", is a literal label such as 1 - 8 fine, or do you have a preferred notation? (<1> - <8> will not render cleanly, since the bracket-strip only trims the ends.)

Please revert all manifests to work the same as before. And yes if you could document this, this would be very welcome! Sorry for my late reply

Revert the converter and existing browser manifests to their prior
behavior, and instead use the established <N> notation for literal
digit keys in the new Postman manifest, per reviewer guidance on
PR microsoft#48461.

- Revert ShortcutDescriptionToKeysConverter digit special-casing so
  bare numbers stay virtual-key codes (no behavior change for existing
  manifests).
- Revert Chrome/Edge/Firefox tab-switch keys back to bare "1".
- Postman manifest: use <9> and <0> for literal digit keys; KeyVisual
  strips the brackets when rendering. The "1 - 8" range stays a literal
  label (brackets only trim at the ends).
- Document the <N> convention in the WinGet Manifest Keyboard Shortcuts
  schema spec.
- Update converter unit tests to cover the <N> passthrough.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@brycewc

Copy link
Copy Markdown
Contributor Author

Please use <0>, <1> and so on for numbers. That is the intended way. We should probably document it.

Noraa Junker (@noraa-junker), thanks! That makes sense. <9> is already handled by the bracket-strip in KeyVisual, and since the spec defines a bare number as a virtual-key code, <N> is the correct way to express a literal number key. I'm happy to switch to it and add <0> through <9> to the "Special keys" table in the spec.
One scoping question before I push the change. The converter tweak in this PR currently makes bare digits render as literal numbers globally. There are about 90 bare-digit keys across 15 existing manifests (Adobe apps, Slack, IntelliJ, VS Code, Blender, and others). If I revert the converter and move to <N>, those existing manifests will render incorrectly again unless they are also converted.
Would you like this PR to:
Convert all existing manifests to <N> and revert the converter change. This fully fixes the rendering the intended way, but it is a larger diff. Keep it scoped to the new Postman manifest plus document the <N> convention, with the bulk conversion as a follow-up issue. Also, for ranges like "switch to a specific tab (1-8)", is a literal label such as 1 - 8 fine, or do you have a preferred notation? (<1> - <8> will not render cleanly, since the bracket-strip only trims the ends.)

Please revert all manifests to work the same as before. And yes if you could document this, this would be very welcome! Sorry for my late reply

Noraa Junker (@noraa-junker), I reverted the other manifest changes, reverted the handling, and documented the convention. Would you like me to put through a different pull request going through the other manifests like Google Chrome and Microsoft Edge to fix the incorrect manifests, or are you going to have a core team member do those?

@noraa-junker

Copy link
Copy Markdown
Collaborator

Please use <0>, <1> and so on for numbers. That is the intended way. We should probably document it.

Noraa Junker (@noraa-junker), thanks! That makes sense. <9> is already handled by the bracket-strip in KeyVisual, and since the spec defines a bare number as a virtual-key code, <N> is the correct way to express a literal number key. I'm happy to switch to it and add <0> through <9> to the "Special keys" table in the spec.
One scoping question before I push the change. The converter tweak in this PR currently makes bare digits render as literal numbers globally. There are about 90 bare-digit keys across 15 existing manifests (Adobe apps, Slack, IntelliJ, VS Code, Blender, and others). If I revert the converter and move to <N>, those existing manifests will render incorrectly again unless they are also converted.
Would you like this PR to:
Convert all existing manifests to <N> and revert the converter change. This fully fixes the rendering the intended way, but it is a larger diff. Keep it scoped to the new Postman manifest plus document the <N> convention, with the bulk conversion as a follow-up issue. Also, for ranges like "switch to a specific tab (1-8)", is a literal label such as 1 - 8 fine, or do you have a preferred notation? (<1> - <8> will not render cleanly, since the bracket-strip only trims the ends.)

Please revert all manifests to work the same as before. And yes if you could document this, this would be very welcome! Sorry for my late reply

Noraa Junker (@noraa-junker), I reverted the other manifest changes, reverted the handling, and documented the convention. Would you like me to put through a different pull request going through the other manifests like Google Chrome and Microsoft Edge to fix the incorrect manifests, or are you going to have a core team member do those?

Yes a seperate PR would be nice, if you have the time

Match the double-quoted special-token convention used throughout the manifests (e.g. the bracketed Enter and Down tokens).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions github-actions Bot added Area-Localization issues regarding to Localization the application Product-Shortcut Guide Refers to the Shortcut Guide PowerToy labels Jun 20, 2026
Document that bracketed key tokens are conventionally double-quoted in the manifests, while noting YAML parses quoted and unquoted forms identically.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@moooyo

Copy link
Copy Markdown
Contributor

/azp run

@moooyo Yu Leng (moooyo) self-assigned this Jun 22, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@moooyo Yu Leng (moooyo) left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM for both PR

@moooyo
Yu Leng (moooyo) merged commit a0e53de into microsoft:main Jun 22, 2026
7 checks passed
Yu Leng (moooyo) pushed a commit that referenced this pull request Jun 22, 2026
#48757)

## Summary of the Pull Request

Converts the literal-digit shortcut keys in the bundled Shortcut Guide
manifests to the `<N>` special-key convention, so they render as the
correct number.

Per the manifest spec, a bare number in `Keys:` is a virtual-key code. A
literal digit key authored as a bare number is therefore misread (VK `9`
is Tab, VK `1` is the left mouse button, VK `0` is undefined) and
renders incorrectly. The fix authors these as the `<N>` token (for
example `"<9>"`), which `KeyVisual` strips to display the digit.

This is a data-only change: **91 literal-digit keys across 14
manifests** become `<N>` tokens. No code or doc changes; the renderer
and converter already support `<N>`, and the convention is documented in
the spec.

Follow-up to #48461, which introduced and documented the `<N>`
convention (per @noraa-junker's request for a separate PR to fix the
remaining manifests). Together with #48461 this resolves the rendering
reported in #48460.

Files touched (all under
`src/modules/ShortcutGuide/ShortcutGuide.Ui/Assets/ShortcutGuide/Manifests/`):
Adobe.Illustrator (18), Adobe.Photoshop (17), SlackTechnologies.Slack
(13), Adobe.InDesign (11), JetBrains.IntelliJIDEA.Community (11),
BlenderFoundation.Blender (3), Figma.Figma (3), Google.Chrome (3),
Microsoft.Edge (3), Microsoft.VisualStudioCode (3), Mozilla.Firefox (3),
+WindowsNT.Notepad (1), Adobe.AfterEffects (1), GIMP.GIMP (1).

## PR Checklist

- [ ] **Closes:** N/A (follow-up to #48461; contributes to #48460)
- [ ] **Communication:** discussed in #48461; @noraa-junker requested
this separate PR.
- [ ] **Tests:** N/A for data; the converter and `<N>` convention are
unit-tested in #48461. Validated here by deserializing every manifest
with YamlDotNet (see below).
- [x] **Localization:** unchanged; these are per-language manifest
files.
- [ ] **Dev docs:** N/A (the `<N>` convention is documented in the spec
via #48461).
- [ ] **New binaries:** N/A.
- [ ] **Documentation updated:** N/A.

## Detailed Description of the Pull Request / Additional comments

Each change wraps a single bare digit in angle brackets, for example:

```yaml
          Keys:
-            - 9
+            - "<9>"
```

Quoted tokens (`"<9>"`) are used to match the dominant special-token
style already in the manifests (`"<Enter>"`, `"<Down>"`, etc.).

Note (out of scope): `Adobe.Photoshop.en-US.yml` has a shortcut with an
empty `Name: ""` (around line 799). That is a pre-existing data issue
unrelated to digit rendering; the digit is still converted, and the
empty name is left as-is.

## Validation Steps Performed

- Confirmed the diff touches only the 14 manifests, 91 insertions and 91
deletions, with each changed line being a digit wrapped as `"<N>"` (no
whitespace, indentation, or encoding churn).
- Confirmed zero bare-digit `Keys` entries remain and exactly 91 new
`"<N>"` tokens exist.
- Deserialized all 32 manifests with YamlDotNet (the same library the
app uses at runtime): 0 parse errors.
- Rendering behavior for `<N>` is already verified in #48461 (the
renderer strips the brackets to show the digit).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Boliang Zhang (LegendaryBlair) pushed a commit that referenced this pull request Jun 22, 2026
…ay (#48461)

## Summary of the Pull Request

Adds a Shortcut Guide manifest for **Postman** and fixes a rendering bug
where single-digit keys in manifests displayed incorrectly.

- **Fix numbered-key rendering** —
`src/modules/ShortcutGuide/ShortcutGuide.Ui/Converters/ShortcutDescriptionToKeysConverter.cs`:
a single digit (`0`–`9`) in a manifest's `Keys` was treated as a Windows
virtual-key code instead of the literal digit. Since VK `1` is the left
mouse button, VK `9` is Tab, and VK `0` is undefined, shortcuts such as
`Ctrl+0` (reset zoom) and `Ctrl+9` (last tab) rendered as
blank/incorrect glyphs. Single digits are now rendered as the literal
character.
- **Add Postman shortcuts** —
`src/modules/ShortcutGuide/ShortcutGuide.Ui/Assets/ShortcutGuide/Manifests/Postman.Postman.en-US.yml`:
new manifest for `Postman.exe` covering Tabs, Sidebar, Request,
Interface, Window and modals, and Console. Auto-included via the
existing `Manifests/*.yml` glob in `ShortcutGuide.Ui.csproj`.
- **Show tab-number ranges** — Edge, Chrome, Firefox, and Postman
manifests: the "switch to a specific tab" entry used the literal key
`1`, which (after the fix above) read as `Ctrl + 1`. It now uses a `1 -
8` range so the keycap conveys "any tab number 1 through 8". The
separate "last tab" (`9`) and "reset zoom" (`0`) entries remain literal
single keys.
- **Add unit tests** — new `ShortcutGuide.UnitTests` (MSTest) project
covering `ShortcutDescriptionToKeysConverter.GetKeysList`, including the
single-digit regression.

## PR Checklist

- [x] Closes: #48460
- [ ] **Communication:** I've discussed this with core contributors
already. <!-- Filed #48460; the v0.100 announcement invites app-shortcut
contributions via PR. -->
- [x] **Tests:** Added/updated and all pass <!-- New
ShortcutGuide.UnitTests (MSTest); 8 tests pass locally via
vstest.console. -->
- [x] **Localization:** All end-user-facing strings can be localized
<!-- Shortcut names live in per-language manifest files (`*.en-US.yml`);
other locales fall back to en-US, consistent with existing manifests.
-->
- [ ] **Dev docs:** Added/updated <!-- N/A: no behavior requiring
dev-doc changes. -->
- [ ] **New binaries:** Added on the required places <!-- N/A: the new
manifest is a data asset under an already-shipped, globbed folder. The
new test project is auto-discovered by the existing `**\*UnitTest*.dll`
VSTest glob, so no CI pipeline change is required. -->
- [ ] **Documentation updated:** <!-- N/A -->

## Detailed Description of the Pull Request / Additional comments

The Shortcut Guide displays per-app shortcuts from YAML manifests,
matched to the foreground window via `WindowFilter`. Keys are converted
to keycaps by `ShortcutDescriptionToKeysConverter`. Numeric key strings
were unconditionally parsed as virtual-key codes, so literal-digit
shortcuts rendered wrong. The fix adds a `>= 0 and <= 9` case that emits
the digit character as-is; non-digit numeric codes (arrows, etc.) are
unchanged.

The new Postman manifest exercises this with `Ctrl+0` / `Ctrl+9`. The
browser/Postman "specific tab" entries were updated from the literal `1`
to the `1 - 8` range string, rendered verbatim by `KeyVisual` (the same
path used by the existing `Number (1-9)` key in the Windows Explorer
manifest).

A new `ShortcutGuide.UnitTests` (MSTest) project covers the converter:
single digits render literally (regression test), modifier ordering,
non-numeric passthrough (e.g. `1 - 8`), and arrow-key VK mapping.

## Validation Steps Performed

Built and ran locally (x64 Debug):

- Built `ShortcutGuideModuleInterface`, `ShortcutGuide.Ui`, and
`ShortcutGuide.IndexYmlGenerator`; launched the Debug `PowerToys.exe`.
- Triggered Shortcut Guide (`Win+Shift+/`) with **Postman** focused: the
Postman section renders with all categories, and `Ctrl+1` / `Ctrl+9` /
`Ctrl+0` display correctly (previously blank/incorrect).
- Verified the "specific tab" entry renders as `Ctrl + 1 - 8` in
**Edge**, **Chrome**, **Firefox**, and **Postman**.
- Built `ShortcutGuide.UnitTests` and ran via `vstest.console.exe`:
**8/8 tests pass**.

<img width="845" height="1432" alt="PowerToys Shortcut Guide Running
Postman"
src="https://github.com/user-attachments/assets/6359617e-3e2c-48b0-8005-b3684594ec94"
/>

Co-Authored-By: Claude Opus 4.8

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit a0e53de)
Boliang Zhang (LegendaryBlair) pushed a commit that referenced this pull request Jun 22, 2026
#48757)

## Summary of the Pull Request

Converts the literal-digit shortcut keys in the bundled Shortcut Guide
manifests to the `<N>` special-key convention, so they render as the
correct number.

Per the manifest spec, a bare number in `Keys:` is a virtual-key code. A
literal digit key authored as a bare number is therefore misread (VK `9`
is Tab, VK `1` is the left mouse button, VK `0` is undefined) and
renders incorrectly. The fix authors these as the `<N>` token (for
example `"<9>"`), which `KeyVisual` strips to display the digit.

This is a data-only change: **91 literal-digit keys across 14
manifests** become `<N>` tokens. No code or doc changes; the renderer
and converter already support `<N>`, and the convention is documented in
the spec.

Follow-up to #48461, which introduced and documented the `<N>`
convention (per @noraa-junker's request for a separate PR to fix the
remaining manifests). Together with #48461 this resolves the rendering
reported in #48460.

Files touched (all under
`src/modules/ShortcutGuide/ShortcutGuide.Ui/Assets/ShortcutGuide/Manifests/`):
Adobe.Illustrator (18), Adobe.Photoshop (17), SlackTechnologies.Slack
(13), Adobe.InDesign (11), JetBrains.IntelliJIDEA.Community (11),
BlenderFoundation.Blender (3), Figma.Figma (3), Google.Chrome (3),
Microsoft.Edge (3), Microsoft.VisualStudioCode (3), Mozilla.Firefox (3),
+WindowsNT.Notepad (1), Adobe.AfterEffects (1), GIMP.GIMP (1).

## PR Checklist

- [ ] **Closes:** N/A (follow-up to #48461; contributes to #48460)
- [ ] **Communication:** discussed in #48461; @noraa-junker requested
this separate PR.
- [ ] **Tests:** N/A for data; the converter and `<N>` convention are
unit-tested in #48461. Validated here by deserializing every manifest
with YamlDotNet (see below).
- [x] **Localization:** unchanged; these are per-language manifest
files.
- [ ] **Dev docs:** N/A (the `<N>` convention is documented in the spec
via #48461).
- [ ] **New binaries:** N/A.
- [ ] **Documentation updated:** N/A.

## Detailed Description of the Pull Request / Additional comments

Each change wraps a single bare digit in angle brackets, for example:

```yaml
          Keys:
-            - 9
+            - "<9>"
```

Quoted tokens (`"<9>"`) are used to match the dominant special-token
style already in the manifests (`"<Enter>"`, `"<Down>"`, etc.).

Note (out of scope): `Adobe.Photoshop.en-US.yml` has a shortcut with an
empty `Name: ""` (around line 799). That is a pre-existing data issue
unrelated to digit rendering; the digit is still converted, and the
empty name is left as-is.

## Validation Steps Performed

- Confirmed the diff touches only the 14 manifests, 91 insertions and 91
deletions, with each changed line being a digit wrapped as `"<N>"` (no
whitespace, indentation, or encoding churn).
- Confirmed zero bare-digit `Keys` entries remain and exactly 91 new
`"<N>"` tokens exist.
- Deserialized all 32 manifests with YamlDotNet (the same library the
app uses at runtime): 0 parse errors.
- Rendering behavior for `<N>` is already verified in #48461 (the
renderer strips the brackets to show the digit).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit cabb711)
Niels Laute (niels9001) pushed a commit that referenced this pull request Jul 3, 2026
## Summary of the Pull Request

Adds a Shortcut Guide manifest for the **1Password** desktop app.

- **New manifest:**
`src/modules/ShortcutGuide/ShortcutGuide.Ui/Assets/ShortcutGuide/Manifests/AgileBits.1Password.en-US.yml`:
26 shortcuts for `1Password.exe`, grouped into the same four sections
1Password uses in its in-app Keyboard Shortcuts reference:
- **Basics:** View keyboard shortcuts, Show Quick Access, Lock 1Password
- **Navigation:** Find, Switch to all accounts, Switch accounts &
collections, Back, Forward, Focus next/previous row, Focus right/left
section
- **Selected item:** Copy primary field / password / one-time password,
Open & fill in web browser, Open item in new window, Edit item, Save
item, Reveal concealed fields, Archive item, Delete item
  - **View:** Show/hide sidebar, Zoom in, Zoom out, Actual size
- **No code changes.** The manifest is auto-included via the existing
`Manifests/*.yml` glob in `ShortcutGuide.Ui.csproj`, exactly like the
existing Postman, Slack, Discord, and browser manifests.
- The two literal-digit shortcuts (`Ctrl+1` switch to all accounts,
`Ctrl+0` actual size) use the `<N>` token (`<1>` / `<0>`) per the
manifest spec, and the "Switch accounts & collections" range renders as
`2 - 9`.
- **Documentation:** Added a note in `doc/specs/WinGet Manifest Keyboard
Shortcuts schema.md` documenting the existing **sentence-case** naming
convention for `Name` and `SectionName` (capitalize only the first word
plus proper nouns / product feature names), so future contributors do
not copy an application's title-case shortcut-list styling. The
1Password names in this PR follow that convention, keeping only
feature/product names capitalized (Show Quick Access, Lock 1Password).

## PR Checklist

- [x] Closes: #48792
- [ ] **Communication:** I've discussed this with core contributors
already. <!-- Filed #48792; the v0.100 announcement invites app-shortcut
contributions via PR. Follows the precedent set by #48461 (Postman). -->
- [ ] **Tests:** Added/updated and all pass <!-- N/A: data-only change,
no new code paths. The manifest was validated by deserializing it with
YamlDotNet (the same `Deserializer` used by `ManifestInterpreter`),
confirming all 26 entries and key tokens parse into `ShortcutFile`. -->
- [x] **Localization:** All end-user-facing strings can be localized
<!-- Shortcut names live in the per-language manifest (`*.en-US.yml`);
other locales fall back to en-US, consistent with every existing
manifest. -->
- [x] **Dev docs:** Added/updated <!-- Documented the sentence-case
naming convention for Name / SectionName in doc/specs/WinGet Manifest
Keyboard Shortcuts schema.md. -->
- [ ] **New binaries:** Added on the required places <!-- N/A: the new
manifest is a data asset under an already-shipped, globbed folder. No
new binaries or test projects. -->
- [ ] **Documentation updated:** <!-- N/A: user-facing docs unchanged.
-->
- [x] **Local run:** Built the Shortcut Guide projects and ran the Debug
build with 1Password focused (`Win+Shift+/`); screenshot of the rendered
guide is attached below.

## Detailed Description of the Pull Request / Additional comments

The Shortcut Guide displays per-app shortcuts from YAML manifests,
matched to the foreground window via `WindowFilter`. Adding support for
an app is purely additive: drop a `<PackageName>.<locale>.yml` file in
the `Manifests` folder and it is picked up by the existing build glob
and the index generator.

- `PackageName: AgileBits.1Password` (the WinGet package identifier) and
`WindowFilter: "1Password.exe"` (the desktop app process).
- `Name: 1Password` is the display name shown in the Shortcut Guide app
picker.
- Shortcut names follow the repo's sentence-case convention (now
documented in the schema spec). Recommended is set on the five
highest-frequency / signature actions: Show Quick Access, Lock
1Password, Copy primary field, Copy password, Copy one-time password.

## Validation Steps Performed

- **Schema/parse:** Deserialized the manifest with
`YamlDotNet.Serialization.Deserializer` (the same path
`ManifestInterpreter.YamlToShortcutList` uses). All four sections and 26
entries parse, with 5 marked Recommended. No parse errors.
- **Key rendering:** Verified every key token against `KeyVisual` and
`ShortcutDescriptionToKeysConverter`: `<Space>`/`<Delete>` strip to
their labels, `<Left>`/`<Right>`/`<Up>`/`<Down>` map to arrow glyphs,
`<1>`/`<0>` strip to the literal digit (matching the merged Postman
`<9>`/`<0>` handling), `2 - 9` renders verbatim, and `+` / `-` render as
the literal symbols (as in the bundled Windows Explorer and Shell
manifests).
- **Source fidelity:** The section grouping and every shortcut/modifier
combination match 1Password's in-app Keyboard Shortcuts reference
one-to-one.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<img width="1462" height="2260" alt="image"
src="https://github.com/user-attachments/assets/e7824a38-cb56-4242-9a6a-31c7a93c03c9"
/>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Niels Laute (niels9001) added a commit that referenced this pull request Aug 10, 2026
## Summary of the Pull Request
Adds a Shortcut Guide manifest for Claude Desktop (Claude.exe), covering
General (quick chat/search, incognito chat, sidebar toggle, keyboard
shortcuts, settings, open-from-anywhere) and In-chat actions (send, new
line, extended thinking toggle, file upload, stop generation), pulled
directly from the app's own in-app "Keyboard shortcuts" panel (Ctrl+/
inside Claude Desktop).

## PR Checklist

- [x] Closes: #49237
- [ ] **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
Note: the "Open Claude from anywhere" global hotkey (Ctrl+Alt+Space) is
included since it's shown live in the app's shortcut panel on Windows,
though I haven't found it documented on support.claude.com as of this
writing — worth flagging in case Anthropic's docs are just behind.

Tests/Localization/Dev docs/New binaries/Documentation: N/A — this is a
data-only YAML manifest addition, no code changes, following the same
shape as the merged Postman manifest (#48461).

## Validation Steps Performed
Tested manually against a live build of Shortcut Guide with Claude
Desktop focused. Confirmed the Claude section renders with both
categories, and recommended shortcuts (Quick chat/search, Open Claude
from anywhere) are pinned at top. Screenshot attached below.

<img width="547" height="913" alt="Claude_Shortcut_Guide"
src="https://github.com/user-attachments/assets/cd4b17ab-058b-4a64-ade9-e34122aa1eab"
/>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7f3671bf-4341-4127-90f2-c8fbd00a1f73
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

0.100.1 Area-Localization issues regarding to Localization the application Product-Shortcut Guide Refers to the Shortcut Guide PowerToy

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Shortcut Guide renders single-digit shortcut keys incorrectly (Ctrl+0, Ctrl+9)

6 participants