AsyncLocal mandate binding — ResolveBtcpayInvoiceAsync no longer queries by OrderId. The invoice controller sets LightningLikePaymentHandler.CurrentBtcpayInvoiceId (an AsyncLocal<string>) before calling CreatePaymentPrompts. The resolution method reads the AsyncLocal and looks up the invoice via InvoiceRepository.GetInvoice(id), verifying StoreId match.
Relay session immediate resubscribe — RelaySession.Extend() signals when new #p keys arrive; RunAsync() resubscribes immediately instead of waiting for the 30-second tick.
Preimage-less same-node gate — ClinkReceiptMonitor rejects preimage-less {"res":"ok"} receipts when the ndebit node differs from the merchant noffer node; accepts only when same-node.
v1.2.1 is out!
https://github.com/WoompaLoompa/btcpay-clink/releases#release-v1.2.1
What's Changed
ResolveBtcpayInvoiceAsyncno longer queries by OrderId. The invoice controller setsLightningLikePaymentHandler.CurrentBtcpayInvoiceId(anAsyncLocal<string>) before callingCreatePaymentPrompts. The resolution method reads the AsyncLocal and looks up the invoice viaInvoiceRepository.GetInvoice(id), verifyingStoreIdmatch.RelaySession.Extend()signals when new#pkeys arrive;RunAsync()resubscribes immediately instead of waiting for the 30-second tick.ClinkReceiptMonitorrejects preimage-less{"res":"ok"}receipts when the ndebit node differs from the merchant noffer node; accepts only when same-node.