Skip to content

Changelog

WoompaLoompa edited this page Aug 11, 2026 · 2 revisions

Changelog

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).

v0.1.6 — reliable incoming + outgoing payments

Follow-up to the v0.1.5 account client that makes ClinkWallet pay and track reliably in both directions:

  • Paying out fixed. PayInvoice now sends the node-required amount field: 0 for 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 GetUserOperations API (latestIncomingInvoiceOperations, matched by BOLT11 and a paidAtUnix timestamp) instead of GetPaymentState, which only tracks outgoing payments. Paid invoices now report success instead of hanging pending.
  • 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_invoice prefers the account path (mint via NewInvoice) 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 preimage for internal (same-node) payments; a settled response is now treated as a success regardless.
  • config.json renamed to CLINK — Recurring Payments (matches the live deployment).

See Installation#clink-as-the-lightning-backend and Development#funding-source-clinkwallet.

v0.1.5 — fully paying funding source

Released latest. ClinkWallet is no longer receive-only:

  • New optional account connection string (lnbits_clink_funding_account / LNBITS_CLINK_FUNDING_ACCOUNT, an nprofile1... string from the Lightning.pub node's Profile → Copy connection string, optionally with a :token suffix).
  • 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 + requestId envelope) and nostr/nip44v1.py (pure-Python XChaCha20 NIP-44 v1 encrypt/decrypt, tested against libsodium/stablelib vectors).
  • nostr/bech32.py gains NIP-19 nprofile decode/encode (pubkey + relays, optional token suffix parsing).
  • The core /admin → Funding Sources card renders noffer and account inputs for CLINK (settings mixin + frontend bundle patch).
  • Without an account, pay_invoice returns a clear receive-only without a Lightning.pub account error and status() reports 0 msat.

See Installation#clink-as-the-lightning-backend and Development#funding-source-clinkwallet.

v0.1.4 — CLINK as a funding source (receive-first)

  • Registers ClinkWallet as an LNbits funding source: BOLT11 invoices are requested from a remote Lightning.pub node's offer service (kind 21001) using LNBITS_CLINK_FUNDING_NOFFER.
  • The class is injected into lnbits.wallets at extension load, so it resolves in set_funding_source() and appears in /admin → Funding Sources.
  • Receive-first: create_invoice is fully wired; sending and balance needed the account work shipped in v0.1.5.

v0.1.3 — icon fix

  • Replaced the event_repeat icon with event. event_repeat is not a single ligature in the Material Icons font, so it rendered as event + repeat + underscore (three glyphs where one was expected).

v0.1.2 — frontend rendering fix

  • 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.

v0.1.1 — LNbits 1.5.x compatibility fix

  • Extension pages now read the user/wallet context from window.g instead of this.g (on LNbits 1.5.x the g object is injected into the core app via a global mixin that extension pages never receive, so this.g was undefined and pages rendered blank).

v0.1.0 — initial release

  • First published release: offers (noffer1...), debit pointers (ndebit1...), the node relay listener, and the NIP-44/bech32/event protocol stack.

Clone this wiki locally