Development

Browser autofill preview

This is an unpacked development preview for Chrome and Chromium on macOS and Linux. The matching Native Messaging host ships with current fd0 builds, but the extension is not published in a browser store.

Choose an fd0 login beside a credential field to fill it without submitting the form. The preview also generates passwords, explicitly saves or revision-updates logins, accepts pasted otpauth://setup links, and fills a fresh TOTP code after a recent selection.

Build and register it

Clone the fd0 repository, then build the unpacked Manifest V3 extension, the CLI, and its dedicated Native Messaging host.

$ cd browser
$ bun install --frozen-lockfile
$ bun run typecheck
$ bun test
$ bun run build

$ cd ..
$ go build -o .build/browser/fd0 ./cmd/fd0
$ go build -o .build/browser/fd0-browser-host ./cmd/fd0-browser-host
$ .build/browser/fd0 browser enable \
    --host .build/browser/fd0-browser-host

Open chrome://extensions or chromium://extensions, enable Developer mode, choose Load unpacked, and select browser/dist. The browser must show extension id flkmmllfacmjnhjgdfliahdkhfjmdoec.

Fill a login

$ fd0 pass add demo --url https://example.com
$ fd0 pass field set demo username ada@example.com
$ fd0 pass field set demo password --secret --generate
$ fd0 unlock

Focus a username or password field on an HTTPS page, then choose the matching fd0 item. The field button reopens the picker; the toolbar action selects one concrete frame with a visible credential field. Existing HTTPS tabs reconnect after an extension rebuild without a manual reload.

Only matching item metadata crosses into the extension before selection: opaque references, titles, usernames, vault labels, revisions, and whether a TOTP is available. The password is requested from the local agent after selection, and fd0 checks the HTTPS origin again before filling the same browser document.

Remove the development registration

$ .build/browser/fd0 browser disable

This removes only the Native Messaging manifest carrying fd0's development marker. Remove the unpacked extension separately from chrome://extensions. Neither action removes your vault.

If the picker does not appear

Unlock fd0, confirm the page uses HTTPS, and check that the browser still shows the extension id above. If more than one saved account could be updated, choose the intended login explicitly. HTTP pages remain unsupported.