Browser autofill agent — desktop + extension - #1556
Open
YoannDev90 wants to merge 3 commits into
Open
Conversation
Adds a browser autofill agent that bridges the browser extension (Chrome/Firefox/Vivaldi/Edge) and the desktop vault via Native Messaging or WebSocket with ECDH + HMAC challenge-response. Desktop: BrowserAutofillAgentManager, status service, settings UI, pairing code flow, Rust native host module. Extension: MV3 with modular ES architecture (10 lib modules), native Web Crypto X25519, dual Chrome/Firefox manifests, context menu, keyboard shortcut, locked/unlocked icon. Closes AChep#1524
Author
|
And sorry for the long AI comment, I didn't know what to say. |
- extension/build-extension.sh: package chrome/firefox with version injection - .github/workflows/build-extension.yml: build + publish (Chrome/Firefox/Safari) - safari/generate-project.sh: generate Xcode project (run once on macOS) - safari/build-safari-extension.sh: build Safari .app for testing - PlasmoHQ/bpp integration for Chrome Web Store + Firefox Add-ons publishing - App Store Connect upload via xcodebuild + notarytool Closes AChep#1524
YoannDev90
force-pushed
the
feat/browser-autofill-agent-v2
branch
from
August 30, 2026 20:26
b786dec to
8b5ce44
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1524
What
Adds a browser autofill agent that bridges the browser extension (Chrome/Firefox/Vivaldi/Edge) and the desktop vault. The user enables the agent in settings, the extension communicates with the desktop via Native Messaging (Chrome/Firefox/Edge) or WebSocket (Safari), and credentials are filled automatically.
How it works
Desktop side:
BrowserAutofillAgentManagerlaunches two servers concurrently:127.0.0.1:<port>with ECDH + HMAC challenge-response handshakeBrowserAutofillAgentStatusService) exposes state (Starting/Ready/Failed/Unsupported/Stopped) to the UIExtension side:
background.js(orchestrator) + 10 modules inlib/nm-client.js) and WebSocket (ws-client.js)service_worker) and Firefox (scripts)Ctrl+Shift+Space, locked/unlocked icon stateDesktop changes
BrowserAutofillAgentManager.ktstart(), IPC cleanup in finally,@VolatileonwsAgentProcess, dead code removed (onBeforeStart,extraCliArgs)Main.ktawaitCancellation(), status service, port constant,rememberUpdatedStatefor portSettingBrowserAgent.ktstrings.xmlSettingsRepository.ktFingerprintRepositoryModule.ktBrowserAutofillAgentStatusServicebindingGlobalModuleCommon.ktAgentManager.kt,AgentIpcServer.ktdesktopApp/build.gradle.kts,settings.gradledesktopBrowserAgentmodule (Rust)Extension changes (new)
manifest.chrome.jsonservice_workermanifest.firefox.jsonscripts+ gecko settingsbackground.jscontent.jslib/crypto.jslib/ws-client.jslib/nm-client.jslib/messaging.jslib/context-menu.jslib/logger.jslib/base64.js,lib/hmac.jsoptions.jsswitch-browser.shRust native host (new)
desktopBrowserAgent/— Rust binary that bridges the IPC socket (nm) and the WS server. Built via Cargo for desktop.Security
__kgSetSecretrestricted to extension pages (chrome-extension:///moz-extension://)fillmessage uses onlysender.tab.id(nomessage.tabIdfallback)Testing
Tested with the AppImage on CachyOS + Firefox. If anyone can test the full flow on other OS/browsers (macOS, Windows, Chrome, Vivaldi, Edge, Safari), it would help catch issues before shipping to production.
Note
An AI coding assistant was used as a development aid to accelerate implementation and research.