mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-07-09 03:49:52 +02:00
## 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>
Specs
All approved specs are inside the Wiki spec section
Spec process
- A proposed item is either new or requesting additional design
- Spec is written inside the Specs folder and a PR happens with feedback.
- Once spec is signed off, we move it into the Wiki spec section.
Thought process behind this
We want a single wholistic for PowerToys. This includes both source code, docs, and specs. At the same time, we want to ensure items have pull requests and feedback. Since the wiki cannot do PR's, we will do the process above.
This process will allow specs to be image rich but not impact the primary repository's size as more items come online.