Skip to content

feat(extension): authenticate local daemons and persist pairing credentials - #428

Open
iuyo5678 wants to merge 1 commit into
feat/local-pairing-04-lifecyclefrom
feat/local-pairing-05-extension-auth
Open

iuyo5678 wants to merge 1 commit into
feat/local-pairing-04-lifecyclefrom
feat/local-pairing-05-extension-auth

Conversation

@iuyo5678

@iuyo5678 iuyo5678 commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

The extension now verifies the local daemon before sending its business handshake. Credentials and rotation candidates live in extension-owned IndexedDB with strict, compare-and-write transactions. A separate verifier activates new links without disturbing the current connection; interrupted commits recover using the saved candidate and a fresh transcript.

Adds authentication gating and bounded retries to the transport, sender-validated popup operations, migration eligibility for upgrades before 0.4.0, explicit skip controls, and permanent migration retirement after the first successful pairing. Extension version is 0.4.0; 0.4.1 is the planned compatibility exit. Switching to local retains remote authorization, and remote renewals cannot reselect an inactive remote connection.

Validation: extension unit/component suite passed (2,607 tests, 235 environment-specific skips); added remote-renewal race regression passed; typecheck, lint and production build passed. Real Rust daemon tests passed for activation, reconnect, rotation, business handshake and revocation. A separately built main-branch 0.3.2 binary passed the migration-only legacy fallback test. The Chrome/Edge cross-platform release matrix still requires real-device validation.

Recovery detail: a verifier keeps a persisted candidate after an ambiguous commit reply, because deleting it could lose the only valid replacement key. Definite pre-commit rejection discards the staged credential.

Concurrent activation is covered by regressions: if the main connection advances the credential while verification opens, the verifier checks the updated key against a fresh server proof. The browser video fixture pairs the production extension before reconnecting its business transport.

Stack: 5/9. Base: #427.

Stack order: #424 → #425 → #426 → #427 → #428 → #429 → #430 → #431 → #432. Each PR targets the preceding branch; PR8 and PR9 retain their release prerequisites.

@iuyo5678
iuyo5678 force-pushed the feat/local-pairing-05-extension-auth branch from 2670f22 to 32dff12 Compare October 13, 2026 13:38
@iuyo5678
iuyo5678 added this pull request to stack #433 October 13, 2026 13:52

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants