* chore: remove json tags from lnclient models
these should not be passed through the API directly
* fix: properly return not implemented errors
* fix: json tags on TLVRecord
* feat: add both Sat and Msat companion fields for all ambiguous balance/amount properties
* feat: add sat and msat companion fields to backend API responses
* chore: align frontend types and other missing fields
* chore: keep old formula for calculating total fee sat
* chore: remove unnecessary balance assignments in cashu and phoenix
* chore: add deprecated comment to non unit fields
* chore: rename callers and variable to specify units
* chore: remove msat fields for channel size and liquidity fields
* chore: drop msat fields from onchain channel size and liquidity responses
* chore: further changes
* chore: remove amount msat field onchain tx
* chore: remove msats from onchain balance response
* chore: remove msat fields for swaps
* chore: remove msat fields for punishment reserves
* chore: simplify rebalancing fee calculation
* chore: remove unnecessary fields
* chore: mark deprecated fields in frontend types
---------
Co-authored-by: im-adithya <imadithyavardhan@gmail.com>
Transactions are listed from the database via transactionsService, not
from the LN backend. The LNClient.ListTransactions method was never
called and each backend's implementation was dead code.
Closes#2045
Co-authored-by: Joel Klabo <max@klabo.world>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add BOLT-12 offers
* chore: display incoming bolt 12 payments in tx list
* chore: show bolt 12 button for users without alby account
* fix: check if bolt12payment fields are nil before assigning
* chore: do not pass in expiry
* fix: use checkLDKerr for error handling
* chore: add wails support
* chore: ui improvements
* chore: show bolt-12 for LDK backend type only
* chore: add offer info to tx metadata
* chore: use bolt12Offer
* fix: make offer description optional
* fix: remove incorrect log line
* chore: minor updates to node payBOLT12Offer command
* chore: remove unnecessary BOLT-12 offer copy
* chore: remove unused quantity
* chore: cleanup bolt12Offer usage in TransactionItem
* chore: prioritize lightning address, make bolt-12 copy consistent
* chore: rename generate offer to make offer
* fix: error handling
* chore: move payment hash into pay offer response
---------
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
* feat: add option to edit fee while withdrawing
* chore: add alert if fee rate exceeds fastest fee
* fix: tests
* feat: add support for LDK
* chore: do not accept decimal fee rates in frontend
* chore: minor withdraw UI improvements
* chore: make fee rate optional and update mockery
* chore: remove unnecessary else
* chore: do not format lottie files
* feat: add lotties files to prettier ignore
---------
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
* feat: add LND hold invoices support
* fix: add HOLD_INVOICE_ACCEPTED_NOTIFICATION to notifications list returned by get_info
* fix: revert
* fix: remove unneeded null checks
* docs: add extra event type to README
* feat: add LND hold invoices support
* fix: add HOLD_INVOICE_ACCEPTED_NOTIFICATION to notifications list returned by get_info
* fix: revert
* fix: remove unneeded null checks
* docs: add extra event type to README
* fix: remove 0 expiry checking in the make_hold_invoice_controller
* fix: use JSON logging
* revert fly.toml
* fix: duplicated check
* fix: move publishing nwc_hold_invoice_accepted out of the transaction
* fix: move publishing nwc_hold_invoice_accepted out of the transaction
* fix: check the invoice state ACCEPTED before calling the lnClient.SettleHoldInvoice
* fix: check the invoice state ACCEPTED before calling the lnClient.SettleHoldInvoice
* fix: check the invoice state ACCEPTED before calling the lnClient.SettleHoldInvoice
* fix: check the invoice state ACCEPTED before calling the lnClient.SettleHoldInvoice
* fix: cancel hold invoice tests
* fix: make hold invoice tests
* fix: make hold invoice tests
* fix: settle hold invoice tests
* fix: resubscribe to pending hold invoices
* fix: missing WatchHoldInvoice
in the mocks
* feat: add LDK impl
* fix: cleanup
* fix: payment_hash
* fix: remove unneeded update
* feat: add support for self payments for hold invoices (#1304)
Co-authored-by: frnandu <frnandu@gmail.com>
* fix: remove hold invoices scope
* fix: remove hold invoices scope
* fix: mock hold bolt11 expiry to 10 years
* fix: sleep 1 second to give a change of lookupinvoice to read cancelled
* fix: missing timeout param
* feat: add hold invoice settle deadline to transactions (#1324)
* chore: update mockery, remove unused hold invoice method
* chore: remove unnecessary comment
* chore: remove unused code
* fix: do not return hold transaction if lookup failed
* chore: remove unused code
* fix: return correct errors from nip47 controllers, remove unused code
* fix: failing test
* chore: remove unnecessary code
* fix: make error message more general
* chore: remove unused code
* fix: use correct context in lnd service
* fix: unstable hold payments test
---------
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
Co-authored-by: Roland <33993199+rolznz@users.noreply.github.com>
* feat: return pending sweep balance details in LDK
* fix: filter out empty values in pending sweep details
* chore: also show pending sweep balances on the node page
---------
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
* chore: update LDK-node dependency to 0.4.1
* fix: set node alias to open public channels
* chore: update ldk-node-go dependency
* chore: set 100x higher dust exposure for trusted peers
* fix: change dust multiplier for trusted peers to 10x
* fix: do not show pending balance from closed channels for ClaimableAwaitingConfirmations
There is overlap in balance from pending closed channels and total onchain balance.
They will show as incoming in the total onchain balance once the channel becomes sweepable.
This PR also adds extra balance info that can be retrieved from debug tools -> get balances
* feat: show tlv records in transaction popup
* chore: add podcastinginfo component
* chore: remove ? in podcasting info component
* chore: decode tlv record values in backend
* chore: add backup for tx description
* feat: add boostagram column and use jsonb in metadata
* chore: do not modify metadata while parsing
* chore: combine boostagram and metadata migration
* feat: extract description from custom records
* chore: fix keysend tests
* chore: change metadata param type in makeinvoice
* chore: fix make invoice tests
* chore: metadata fixes
* fix: boostragram and metadata migration
- only migrate values that are non-empty
- wrap in db transaction
* chore: set metadata json column to null if empty
* fix: remove jsonb from migration
* chore: code cleanup, rename api models, fix metadata usage
* fix: metadata format
* chore: remove unused contant
* fix: tests
* chore: improve tests
---------
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
* feat: add transactions table
* feat: add transactions service with makeinvoice method
* feat: use internal transactions WIP
* feat: check unsettled transactions
* feat: use transactions service in nip47 package WIP
* feat: use transactions service in NIP-47 handlers
* fix: transaction list colors
* fix: tests
* chore: remove old payments table
* fix: return budget usage as sats
* feat: use internal transactions table for keysend payments
* feat: consume nwc_payment_received event in transaction service (WIP)
* feat: update existing transaction from nwc_payment_received event in transactions service
* feat: update existing transaction from nwc_payment_sent event in transactions service
* feat: handle async payment failed events in transactions service
* fix: tests
* feat: correctly implement NIP-47 NOT_FOUND error code
* feat: intercept self payments
* feat: isolated balance and visibility
* feat: validate keysend payment does not exceed app internal balance
* feat: budget check in transactions service, correctly pass payment errors to NIP-47 response
also reduce query duplication
* fix: order transactions when looking up transaction
* feat: add fee reserves to unsettled outgoing transactions
* chore: rename app permissions max amount field
* chore: rename transaction amount values to be clearly millisats
* chore: merge balance type and visibility into isolated property on apps table
* chore: move duplicated permission check from nip-47 controllers to handler
* fix: app name in transaction list
* Feat: permissions revamp v2 (#273)
* feat: revamp permissions component
* chore: changes
* chore: changes
* chore: add view mode for show app screen
* chore: further changes
* feat: new illustration for linking account (#254)
* feat: new illustration for linking account
* fix: update paths
* fix: icon props (#256)
* fix: use date from frontend
* chore: add expiryselect component
* chore: further changes
* chore: further changes
* chore: add date-fns for date picker
* chore: further changes
* chore: further changes
* fix: add central LDK gossip node to help gossip new public channels (#262)
* fix: make dialog responsive (#258)
* chore: further changes
* typo
* chore: spacing issues
* chore: use scopes from capabilities
* chore: change scope type descriptions
* chore: styling fixes
* chore: fix typings
* chore: budget renewal component
* fix: LDK mark channel as inactive and show error if counterparty forwarding info missing (#267)
fix: mark channel as inactive and show error if counterparty forwarding info missing
* chore: remove unnecessary dark classes (#255)
* fix: links to open first channel in sidebar and onboarding checklist (#268)
* feat: improve migrate node UI (#269)
* fix: migrate node copy (#270)
* fix: stop nostr when app is shutdown and use context to stop lnclient (#271)
* fix: permissions revamp WIP
* feat: basic isolated apps UI
* fix: new app connection, edit app connection, deep linking
---------
Co-authored-by: im-adithya <imadithyavardhan@gmail.com>
Co-authored-by: René Aaron <100827540+reneaaron@users.noreply.github.com>
Co-authored-by: Michael Bumann <hello@michaelbumann.com>
* fix: make transactions table ID autoincrement
* fix: do not send unrelated notifications to isolated apps
* fix: nip-47 notifications not receiving updated transaction state
* fix: migrate existing tables to have autoincrementing primary keys (#274)
* fix: migrate existing tables to have autoincrementing primary keys
* fix: recreate request and response event tables after apps
* fix: remove null from request_events app_id
* fix: do not crash when reloading app created page
* chore: update pragma commands, add busy_timeout
* fix: remove unnecessary migration of user_configs table
* chore: update comment on autoincrement migration
* feat: sqlite database config improvements
* fix: autoincrement migration to delete unlinked app permissions
* chore: update tests for dynamic budgets (WIP)
* fix: get balance tests
* chore: add extra event handler tests
* chore: add extra event handler test
* chore: add extra multi_pay_invoice tests
* chore: transactions service tests (WIP)
* chore: add transactions service payment tests
* chore: add tests for self payments
* fix: notifications tests
* chore: add notifications tests for transactions service
* chore: add fee reserve tests for transactions service
* chore: add list transactions tests
* chore: add keysend tests for transactions service
* feat: subscribe for payments and invoices (#281)
* fix: db transaction should be passed as pointer
* feat(lnd): subscribe for payments and invoices
* chore: rearrange check for settled
* chore: remove TODO
* chore: retry on error and add select
* chore: publish payment failed event
* chore: use json logging
* feat: add lnd notification types
* chore: remove sleep
* fix: incorrect key on transaction list items
* fix: test
* fix: disable isolated app type on non-supported backends
---------
Co-authored-by: im-adithya <imadithyavardhan@gmail.com>
Co-authored-by: René Aaron <100827540+reneaaron@users.noreply.github.com>
Co-authored-by: Michael Bumann <hello@michaelbumann.com>