v0.2.0 — FedCM (federated one-tap sign-in)
Agents get walled out of Google-SSO apps because "Sign in with Google" one-tap and navigator.credentials.get({identity}) render their account chooser as native browser UI — the button is a cross-origin IdP iframe and the chooser is browser chrome, so no synthetic click can reach either. Veil now drives it over CDP's FedCM domain.
New — FedCM
Page:enableFedCm({autoSelectFirst}),waitForFedCmDialog(),selectFedCmAccount(),dismissFedCm(),disableFedCm(), and a one-callsignInWithFedCm({triggerRef}).- MCP:
veil_fedcm_enable+veil_fedcm_signin(10 tools total). - Verified end-to-end (headless, exit 0) against the canonical Chrome FedCM demo IdP/RP — run it:
bun run examples/fedcm.ts.
Three things that are easy to get wrong and are handled for you:
- Enable on demand, never at startup — any site that silently probes FedCM at load hangs if interception is on and nothing resolves the probe.
- Selection is bound to the page's own CDP session — the
dialogShownevent drops the sessionId, and selecting on the wrong target leaves the dialog (and the page'scredentials.get()) hanging forever. resetCooldownon enable — Chrome suppresses the dialog after repeated dismissals.
Also
- Fix:
page.close()RAM leak (Target.closeTarget+ CDP handler cleanup).
Full Changelog: v0.1.0...v0.2.0