Release v1.1.0 - Add WebLN API support for Lightning wallet integration
- Add window.webln API for web app Lightning wallet integration
- Implement webln.enable(), getInfo(), sendPayment(), makeInvoice() methods
- Add WebLN permission prompts with proper amount display for payments
- Dispatch webln:ready and webln:enabled events per WebLN standard
- Add NWC client caching for persistent wallet connections
- Implement inline BOLT11 invoice amount parsing
- Always prompt for sendPayment (security-critical, irreversible)
- Add signMessage/verifyMessage stubs that return "not supported"
- Fix response handling for undefined returns in content script
Files modified:
- projects/common/src/lib/models/nostr.ts (WeblnMethod, ExtensionMethod types)
- projects/common/src/lib/models/webln.ts (new - WebLN response types)
- projects/common/src/public-api.ts (export webln types)
- projects/{chrome,firefox}/src/plebian-signer-extension.ts (window.webln)
- projects/{chrome,firefox}/src/background.ts (WebLN handlers)
- projects/{chrome,firefox}/src/background-common.ts (WebLN permissions)
- projects/{chrome,firefox}/public/prompt.html (WebLN cards)
- projects/{chrome,firefox}/src/prompt.ts (WebLN method handling)
- projects/common/src/lib/services/storage/types.ts (ExtensionMethod type)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,3 +8,12 @@ export type Nip07Method =
|
||||
| 'nip44.decrypt';
|
||||
|
||||
export type Nip07MethodPolicy = 'allow' | 'deny';
|
||||
|
||||
export type WeblnMethod =
|
||||
| 'webln.enable'
|
||||
| 'webln.getInfo'
|
||||
| 'webln.sendPayment'
|
||||
| 'webln.makeInvoice'
|
||||
| 'webln.keysend';
|
||||
|
||||
export type ExtensionMethod = Nip07Method | WeblnMethod;
|
||||
|
||||
41
projects/common/src/lib/models/webln.ts
Normal file
41
projects/common/src/lib/models/webln.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* WebLN API Types
|
||||
* Based on the WebLN specification: https://webln.dev/
|
||||
*/
|
||||
|
||||
export interface WebLNNode {
|
||||
alias?: string;
|
||||
pubkey?: string;
|
||||
color?: string;
|
||||
}
|
||||
|
||||
export interface GetInfoResponse {
|
||||
node: WebLNNode;
|
||||
}
|
||||
|
||||
export interface SendPaymentResponse {
|
||||
preimage: string;
|
||||
}
|
||||
|
||||
export interface RequestInvoiceArgs {
|
||||
amount?: string | number;
|
||||
defaultAmount?: string | number;
|
||||
minimumAmount?: string | number;
|
||||
maximumAmount?: string | number;
|
||||
defaultMemo?: string;
|
||||
}
|
||||
|
||||
export interface RequestInvoiceResponse {
|
||||
paymentRequest: string;
|
||||
}
|
||||
|
||||
export interface KeysendArgs {
|
||||
destination: string;
|
||||
amount: string | number;
|
||||
customRecords?: Record<string, string>;
|
||||
}
|
||||
|
||||
export interface SignMessageResponse {
|
||||
message: string;
|
||||
signature: string;
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
import { Nip07Method, Nip07MethodPolicy } from '@common';
|
||||
import { ExtensionMethod, Nip07MethodPolicy } from '@common';
|
||||
|
||||
export interface Permission_DECRYPTED {
|
||||
id: string;
|
||||
identityId: string;
|
||||
host: string;
|
||||
method: Nip07Method;
|
||||
method: ExtensionMethod;
|
||||
methodPolicy: Nip07MethodPolicy;
|
||||
kind?: number;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ export * from './lib/helpers/nip05-validator';
|
||||
|
||||
// Models
|
||||
export * from './lib/models/nostr';
|
||||
export * from './lib/models/webln';
|
||||
|
||||
// Services (and related)
|
||||
export * from './lib/services/storage/storage.service';
|
||||
|
||||
Reference in New Issue
Block a user