mirror of
https://github.com/PR0M3TH3AN/bitlogin.git
synced 2026-10-27 08:31:21 +00:00
widget: headless signer — restore + sign without the custom element
The element was the only way to sign, so a host that renders its own UI, a background job, or a headless test couldn't sign without mounting <bitlogin-auth>. Add @bitlogin/widget/headless: createHeadlessSigner() → a DOM-free wrapper over the crypto worker exposing restore, getPublicKey, signEvent, nip44Encrypt/Decrypt, isUnlocked, logout, destroy. It restores the cached session and signs with no element and no window.nostr. It deliberately cannot interactively log in (that needs the password UI): restore() returns null when nothing is cached, at which point the host mounts <bitlogin-auth> once; after that the headless signer works across reloads. New bitlogin-headless.js build entry + @bitlogin/widget/headless export (also re-exported from @bitlogin/widget). Covered by headless.test.ts with a scripted worker; README gains "Signing without the widget (headless)". Addresses the "headless session-restore API" item of the Tessera integration feedback (docs/TODO.md). Co-Authored-By: Claude Opus 4.8 <[email protected]> Claude-Session: https://claude.ai/code/session_01BXQCvJPA6sVSQ5j8uBd9bB
This commit is contained in:
1 parent
5ae41ed9db
commit
b8b19599e0
7 files changed
+245
-5
No files matched your search
@@ -95,6 +95,8 @@ window.bitlogin = {
|
||||
|
||||
export { readCachedSession } from "./session.js";
|
||||
export type { PublicSessionInfo } from "./publicSession.js";
|
||||
export { createHeadlessSigner } from "./headless.js";
|
||||
export type { HeadlessSigner, HeadlessSignerOptions } from "./headless.js";
|
||||
export { BitLoginAuthElement } from "./element.js";
|
||||
export type {
|
||||
BitLoginEventMap,
|
||||
|
||||
Reference in new issue
Block a user