-
Notifications
You must be signed in to change notification settings - Fork 0
Changelog
WoompaLoompa edited this page Aug 11, 2026
·
2 revisions
Release history for lnbits-clink. Releases are published as GitHub
releases and announced
in the LNbits extension registry via the automated release pipeline (see
Development).
Follow-up to the v0.1.5 account client that makes ClinkWallet pay and track
reliably in both directions:
-
Paying out fixed.
PayInvoicenow sends the node-requiredamountfield:0for a fixed-amount invoice (the invoice amount is used) or the sats to pay for an amountless invoice. Previously sending the raw amount was rejected with "invoice has value, do not provide amount the the request" and omitting it failed with "invalid request body" — both surfaced as an HTTP 520. -
Incoming status fixed. Invoice status now polls the node's
GetUserOperationsAPI (latestIncomingInvoiceOperations, matched by BOLT11 and apaidAtUnixtimestamp) instead ofGetPaymentState, which only tracks outgoing payments. Paid invoices now report success instead of hangingpending. -
Stale-response guard. Responses are matched by decrypting the event and
checking its
requestId(plus the node pubkey), so a busy node can't satisfy a request with a reply meant for another in-flight call. -
Account-first invoice creation.
create_invoiceprefers the account path (mint viaNewInvoice) over the noffer offer path when an account is configured, so new invoices credit the node balance and are trackable. -
Empty preimages accepted. The node returns an empty
preimagefor internal (same-node) payments; a settled response is now treated as a success regardless. -
config.jsonrenamed to CLINK — Recurring Payments (matches the live deployment).
See Installation#clink-as-the-lightning-backend and Development#funding-source-clinkwallet.
Released latest. ClinkWallet is no longer receive-only:
- New optional account connection string (
lnbits_clink_funding_account/LNBITS_CLINK_FUNDING_ACCOUNT, annprofile1...string from the Lightning.pub node's Profile → Copy connection string, optionally with a:tokensuffix). - With an account configured, the wallet pays out (
PayInvoice), reports a real balance (GetUserInfo), and tracks invoice status (GetPaymentState) via the node's Nostr user API (kind 21000, NIP-44 v1 encryption). - New
account.py(user API client: deterministic derived signing key,authIdentifier+requestIdenvelope) andnostr/nip44v1.py(pure-Python XChaCha20 NIP-44 v1 encrypt/decrypt, tested against libsodium/stablelib vectors). -
nostr/bech32.pygains NIP-19 nprofile decode/encode (pubkey + relays, optional token suffix parsing). - The core
/admin → Funding Sourcescard renders noffer and account inputs for CLINK (settings mixin + frontend bundle patch). - Without an account,
pay_invoicereturns a clear receive-only without a Lightning.pub account error andstatus()reports0 msat.
See Installation#clink-as-the-lightning-backend and Development#funding-source-clinkwallet.
- Registers
ClinkWalletas an LNbits funding source: BOLT11 invoices are requested from a remote Lightning.pub node's offer service (kind 21001) usingLNBITS_CLINK_FUNDING_NOFFER. - The class is injected into
lnbits.walletsat extension load, so it resolves inset_funding_source()and appears in/admin → Funding Sources. - Receive-first:
create_invoiceis fully wired; sending and balance needed the account work shipped in v0.1.5.
- Replaced the
event_repeaticon withevent.event_repeatis not a single ligature in the Material Icons font, so it rendered asevent+repeat+ underscore (three glyphs where one was expected).
- Self-closing Quasar component tags (
<q-tab ... />, etc.) broke the browser-parsed in-DOM templates: non-void self-closing tags are treated as open tags and swallow their siblings, so tabs/panels/dialogs rendered nested and overlapping. - Converted every component tag to explicit open/close form across all templates. Added header navigation links and the Pay page.
- Extension pages now read the user/wallet context from
window.ginstead ofthis.g(on LNbits 1.5.x thegobject is injected into the core app via a global mixin that extension pages never receive, sothis.gwasundefinedand pages rendered blank).
- First published release: offers (
noffer1...), debit pointers (ndebit1...), the node relay listener, and the NIP-44/bech32/event protocol stack.
lnbits-clink — CLINK (Nostr-native Lightning) for LNbits.