feat(pass-extension): add autofill keyboard shortcut command#481
feat(pass-extension): add autofill keyboard shortcut command#481yuribodo wants to merge 3343 commits into
Conversation
fix(INDA-662): Fix mailto URL encoding on INDA side See merge request web/clients!23585
…'main' Guard against undefined 'Plans' in spring sale offer eligibility See merge request web/clients!23586
Rename 'accepted' state to 'user joined' for external invitation (sharing modal) See merge request web/clients!23583
…efox (not work on Safari)
Support shortcuts to open Pass popup and large window on Chrome & Firefox (not work on Safari) See merge request web/clients!23488
Pass feature flags to the SDK and support payloads with body See merge request web/clients!23591
…d-in-dashboard' into 'main' Auto select OS tab for client download in dashboard See merge request web/clients!22229
fix(INDA-412): Resolve issue with close ticket button in account See merge request web/clients!23588
[DRVWEB-5253] Hidden the checkboxes in devices DriveExplorer See merge request web/clients!23599
Add eligibility for feedback first cancellation See merge request web/clients!23546
Fix: display billing address error message on account lite and spring sale offers See merge request web/clients!23598
VPNPLG-39: Fix wrong placeholder for TV input See merge request web/clients!23581
Fix: clarify trial dates on dashboard See merge request web/clients!23602
…nd render accordingly
… into 'main' [VPNB2B-25] Allow SettingsListItem to and icon props to be optional and render accordingly See merge request web/clients!23584
"larger window" opens in a new tab instead of a new window See merge request web/clients!23597
[DRVWEB-4916] Fix album icon in sharing modal See merge request web/clients!23601
Co-authored-by: Nico Hoffmann <nicolas.hoffmann@proton.ch>
Add spotlight on app dropdown for the release of Meet and Booking See merge request web/clients!23703
[DRVWEB-4973] Photos timeline with sdk See merge request web/clients!23455
[DRVWEB-5167] folders section cleanup + DriveExplorer See merge request web/clients!23415
…(mock-free, fakes and stub inside)
DRVWEB: Search unit test suites + first integration tests for worker (mock-free, fakes and stub inside) See merge request web/clients!23668
Docs update loading screen See merge request web/clients!23717
Update all non-major dependencies See merge request web/clients!23682
Meet mobile downloads section FF See merge request web/clients!23730
…nd handle tab id 0
|
Hi thanks for the MR, from what I understand, it simply opens the dropdown? Currently it already opens when the username/password field is in focus, which is the default behavior for most websites. |
Hi @nguyenkims , that's correct it opens the dropdown rather than firing autofill directly The difference from the default focus behavior is that this works keyboard-only, without the user having to click or tab into a field first. That's the main use case: power users who want to fill credentials without touching the mouse at all. The feature request in #453 has quite a bit of community interest, which is what motivated this contribution. Happy to discuss scope or adjust the approach if you have a different direction in mind! |
|
Thanks, but once the dropdown is shown, users still need to use the mouse to select a login. For a keyboard-centric experience, it'd be nice to let users navigate with the up/down arrow keys. |
115579e to
b6fd253
Compare
Summary
Adds a keyboard shortcut to trigger autofill in the Proton Pass browser extension, as discussed and approved in #453.
autofillcommand in Chrome and Firefox manifests withCtrl+Shift+Uas the default shortcutAUTOFILL_TRIGGERmessage to the active tab's content scriptCloses #453
Changes
manifest-chrome.json"autofill"command entrymanifest-firefox.json"autofill"command entrysrc/types/messages.tsAUTOFILL_TRIGGERtoWorkerMessageTypeenumsrc/lib/extension/commands.ts"autofill"commandsrc/lib/extension/commands.spec.tssrc/app/content/services/autofill/autofill.service.tsAUTOFILL_TRIGGERhandler usingwithContextpatternHow it works
Ctrl+Shift+Ubrowser.commands.onCommandfires in the background scriptAUTOFILL_TRIGGERviabrowser.tabs.sendMessageFrameMessageBrokerreceives the messageDropdownAction.AUTOFILL_LOGINviaformManager.getFields()inline.dropdown.toggle()If no login field is detected on the page, the shortcut is a no-op.
Design decisions
Default shortcut
Ctrl+Shift+U: Chosen to avoid conflicts with existing commands (Ctrl+Shift+Xfor popup,Ctrl+Shift+Lfor larger window). The industry standard for autofill isCtrl+Shift+L(used by Bitwarden and LastPass). If the team is open to it, reassigningCtrl+Shift+Lfromopen-larger-windowtoautofillin a follow-up would align with user expectations from competing password managers.Dropdown approach (not direct autofill): Opens the dropdown instead of auto-filling the top match. This is safer, gives the user control when multiple credentials match, and reuses the existing dropdown infrastructure with minimal new code.
Safari excluded: Safari does not support the
browser.commandsAPI. The command listener is already gated byBUILD_TARGET !== 'safari'inworker/index.ts.Test plan
handleExtensionCommand(4 tests passing):open-larger-windowcommandAUTOFILL_TRIGGERto active tab forautofillcommandCtrl+Shift+Uon a login page → dropdown opens on first login fieldCtrl+Shift+Uon a page with no login form → nothing happensCtrl+Shift+XandCtrl+Shift+Lstill work as before