Commit graph

103 commits

Author SHA1 Message Date
Roland
3b3c37dd0c
fix: remove legacy acceptance of empty unlock password check (#2534)
* fix: remove legacy acceptance of empty unlock password check

CheckUnlockPassword previously treated a missing or empty
UnlockPasswordCheck value as a match — a legacy compatibility path from
before the canary was always written. It now requires the stored value
to be present and to equal the expected string.

StartApp checks for the canary up front and, if it is missing, stops
with a message asking the user to restore from a backup rather than
continuing. A new IsUnlockPasswordCheckSet helper reports whether the
value is present.

keys.Init now returns the error from reading NostrSecretKey instead of
ignoring it, so a read failure aborts instead of generating and saving a
new key.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* chore: add operation context to unlock password check errors

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 14:48:06 +07:00
frnandu
b55978d7bc
feat: just in time channels with lsps2 (#2275)
* feat: just in time channels with lsps2

* fix: clarify JIT receive channel fee

* fix: fees

* fix: fees 2

* fix: don't show low inbound when LSPS2 is active

* fix: remove the receive limit below the input if LSPS2 is being used

* fix: simplify

* fix: bring back fee % for outgoing

* fix: remove unneeded changes

* fix: typo

* fix: unneeded

* fix: don't show open first channel is LSPS2

* feat: clearer JIT channel fee copy on receive screen

* fix: add LSPS2 var info

* fix: don't duplicate JIT fee hint on create invoice form

* fix: make paymentDone a standard boolean

* fix: update to golang:1.26 in Dockerfile

* feat: read LSPS2 sources from channel suggestions, set minimum receive amount, update guide link

* docs:  update LDK_LSPS2_ADDRESSES to be used as an override

* fix: only show minimum jit receive amount on validation error

* fix: add more detail to receive error when receiving low amounts with jit

* fix: do not use JIT when user has public channels

* feat: add option to disable JIT

* fix: isTrusted check, add jit property to event

* fix: do not require node restart for toggling JIT

* chore: simplify JIT alert

* chore: add guide link on node settings JIT description

* feat: fetch the lsp2info to have access to params like minimum/maximum payment size

* refactor: share single learn-more link across JIT fee hint branches

* fix: remove variable amount invoice support

* fix: use lsps2info for min payment size and remove channelPeerSuggestion usage of minimumChannelSize

* fix: only do amount validation according to lsps2Info values if jit is enabled in settings

* feat: add jit first payment fee alert on receive via lightning address

* fix: remove unnecessary conditional

* fix: ensure at least one sat is left over when opening JIT channel

* chore: remove hardcoded suggestions

* chore: rename JIT enabled config variable

* fix: ui checks when JIT is disabled

* fix: amount input validation message

* fix: formatting

---------

Co-authored-by: anon <anon@anon.com>
Co-authored-by: saunter <68239231+stackingsaunter@users.noreply.github.com>
Co-authored-by: fmar <fmar@fmar>
Co-authored-by: René Aaron <rene@twentyuno.net>
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2026-06-10 14:47:07 +07:00
Roland Bewick
5c23375c08 feat: add bark logger
Some checks failed
Multiplatform Docker build & push / build (push) Has been cancelled
Code quality - linting and typechecking / linting (push) Has been cancelled
Backend testing with Postgres / test-postgres (push) Has been cancelled
2026-06-05 16:40:43 +07:00
Roland
84e56a23db
feat: bark backend (#2374)
* feat: bark backend

* fix: use real preimage

* fix: balance shows as 0 on startup after hours offline period

* chore: add bark-specific warnings to setup security page

* chore: update setup security page

* chore: use notifications instead of polling

* feat: bark sub-wallet support

* fix: tests

* feat: add env variables for mainnet support

* chore: add custom node commands for debugging, log next notification

* fix: notification handling

* fix: fees for outgoing payments, pending payment handling, decrease required tx confirmations

* chore: bump bark version

* chore: use better bark image

* fix: back button logic and imported mnemonic state in onboarding flow

* chore: update bark copy on security page

* chore: improve copy for first transaction checklist item

* fix: backup copy based on backend

* fix: remove unused/unnecessary code
2026-06-04 11:57:29 +07:00
Roland
a0d3da2803
fix: slow app deletion due to unnecessary key derivation (#2342)
* fix: slow app deletion due to unnecessary key derivation

* chore: fix comment grammar

Co-authored-by: Adithya Vardhan <imadithyavardhan@gmail.com>

---------

Co-authored-by: Adithya Vardhan <imadithyavardhan@gmail.com>
2026-05-14 20:34:59 +07:00
Roland
5b3f1bef9d
fix: update to alby go-nostr fork which reconnects after receiving CLOSED message (#2331) 2026-05-11 12:34:56 +07:00
daywalker90
28706ecf31
feat: add CLN backend (#2026)
* feat: add CLN as a lnclient backend

* feat: add hold invoice support for CLN backend

* fix: reduce CLN form to just addresses and lightning dir

* feat: add README for CLN grpc go code generation

* fix: cln backend does not support keysend with given preimages

* fix: hold invoice notifications in CLN backend

* fix: remove dead code in CLN backend from ListTransactions

* fix: env example CLN_ADDRESS_HOLD with different port to show it's a different service

* fix: cleanup of CLN ressources in all cases

* fix: cln backend's GetNetworkGraph only fetches specified nodeId's

* fix: cln backend: only advertise hold methods for nip47 if hold plugin enabled

* fix: cln's Shutdown should not stop CLN itself

* fix: relax the LND README line regarding env configuration

* fix: more nil checks in clnInvoiceToTransaction

* fix: prevent feerate overflow in CLN's RedeemOnchainFunds

* fix: don't access nil errors for empty reponses of certain CLN methods

* fix: nil instead of empty string in cln's GetNetworkGraph return types

* fix: nil checks for created_at in cln's clnInvoiceToTransaction

* fix: set minimum tls version to 1.2 for cln backend grpc connections

* fix: cln's subscribeOpenHoldInvoices doesn't give up as fast

* fix: deduplicate graph edges in cln's GetNetworkGraph

* fix: print the error string, not pointer address, in cln's ListChannels

* fix: remove cln's ListTransactions completely

* fix: use ListPeers instead of ListPeerChannels in cln's ListPeers

* feat: cln's MakeHoldInvoice supports minCltvExpiryDelta

* fix: use named return err in NewCLNService

* fix: cln listpeers log message

* fix: incorrect import

* fix: compile errors after rename

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2026-05-03 12:36:13 -07:00
René Aaron
ed7e10cf25
feat: user labels for transactions (#2265)
* feat: user labels poc

* feat: backend for transaction user labels

Add PATCH /api/transactions/:paymentHash/label that merges a
user-supplied {key:value} map into the existing transaction metadata
under the user_label key, preserving NIP-47 fields. Empty map clears
the labels. Trims whitespace, drops blank rows, caps key/value length.

Wire the frontend editor to call the endpoint and revalidate the
transactions SWR cache on success.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat: include user labels as columns in CSV export

Collect the union of user_label keys across all exported transactions
and emit each one as its own label_<key> column. The existing metadata
JSON column is preserved so importers like Raccoin keep working.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat: drop hardcoded label suggestions, autocomplete from prior keys

Open the editor with a single blank row instead of four pre-seeded
fields. Suggest label keys via a datalist populated from any
user_label keys already present in the SWR transactions cache, so
suggestions reflect the user's own taxonomy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat: inline label editor and indicator-only list row

Replace the nested label dialog with an inline editor that toggles
within the existing transaction detail dialog, removing dialog
stacking. In the transactions list, replace per-label badges with a
single tag icon next to the timestamp so row height stays uniform; the
full labels remain visible in the detail view.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix: don't bump updated_at on metadata-only edits

GORM's Update auto-touches updated_at, which made the transactions
list reorder labeled transactions to the top. Switch
SetTransactionMetadata to UpdateColumn so only the metadata column
changes. Add regression test.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat: route PATCH transaction label requests in wails

The desktop app routes API calls through WailsRequestRouter rather
than HTTP. Add a handler for PATCH /api/transactions/:hash/label
before the existing transaction lookup so labels work in Wails too.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore: finalize backend

* chore: rename to labels

* chore: finalize frontend

* chore: use tx id to add user labels

* chore: address minor nits

* fix: linting

* fix: use explicit primary key lookups

* chore: simplify transaction csv label export

* fix(frontend): drop label count from transaction list badge

The count adds visual weight without informing any decision from the
list view. The icon-as-badge already signals labels exist; the actual
values are in the details dialog.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(frontend): revert transaction list label indicator to bare icon

The Badge wrapper made the icon-only indicator wider than tall, which
looked off. Restores the pre-PR look — a small TagIcon next to the
timestamp — since the in-dialog editor is the place to see actual labels.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: im-adithya <imadithyavardhan@gmail.com>
2026-04-30 13:13:07 +02:00
Adithya Vardhan
6303c3ed6b
fix: fetch currencies through alby backend api (#2212)
* fix: fetch currencies through alby backend api

* fix: pass currency to bitcoin rate handler
2026-04-09 23:03:26 +05:30
Adithya Vardhan
51b867e992
fix: make HTTP start JWT secret loading idempotent (#2165)
* fix: make HTTP start JWT secret loading idempotent

* fix: check unlock password before loading jwt

* fix: use mutex to guard jwtsecret in config
2026-04-07 16:39:49 +05:30
frnandu
354099cbff
feat: encrypt xpub for auto swap outs (#1973)
* feat: encrypt xpub for auto swap out

* fix: include encryptionKey in the cache key (sha256)

* fix: make cache 2 level nested map

* chore: comment

* fix: missing import

* fix: use ValidateXpub

* fix: cleanup

* fix: cleanup

* fix: better name

* fix: cleanup

* fix: cleanup

* fix: cleanup

* fix: open dialog to ask password on autoswap xpub

* fix: reject extended private keys

* fix: fix amount comp

* chore: improve autoswap destination handling and form submission flow

* fix: clear cached xpub when enabling autoswaps

* fix: autoswap destination validation and xpub handling

* chore: add mutex for auto swap xpub

* chore: add copy icon for destination in auto swap info

---------

Co-authored-by: fmar <fmar@fmar.dev>
Co-authored-by: anon <anon@anon.com>
Co-authored-by: im-adithya <imadithyavardhan@gmail.com>
2026-03-25 22:28:16 +05:30
Adithya Vardhan
4efe735acf
fix: prevent LN client access during shutdown (#2096)
* fix: prevent LN client access during shutdown

* chore: run mockery

* chore: push lnClientShuttingDown inside stopLNClient

* fix: use atomic bool for synced access
2026-02-27 15:45:09 +07:00
Roland
1f1aacfa8b
chore: use encrypted jwt secret (#1988)
* chore: use encrypted jwt secret

* chore: improve jwt secret unlock test

* chore: replace unencrypted jwt secret on unlock

* chore: add TODO to remove encrypted JWT secret check after 2027
2025-12-17 00:25:33 +07:00
Roland
a5f2c2d692
fix: check lnclient in event handler (#1987)
* fix: check lnclient in event handler

* fix: stop processing subscriptions events channel if context is done
2025-12-16 22:42:26 +07:00
Roland
32f09d3a9f
fix: typo in comment (#1927) 2025-12-15 11:19:19 +07:00
Roland
46a2d9e410
chore: bump LDK-Node to v0.7.0-rc1 (#1931)
* chore: bump LDK-Node to v0.7.0-rc1

* chore: bump ldk-node-go dependency to remove aws-lc-rs

* fix: default LDK listening address

* chore: retry on vss conflict

* fix: disable lazy deletes in vss store
2025-11-29 11:26:47 +07:00
Roland
d12ed10c67
chore: add method to return cached config value (#1944)
* chore: add method to return cached config value

* fix: add check for relay urls when starting NWC wallet service

* fix: mocks

* chore: always use cache for config entries
2025-11-29 11:24:27 +07:00
Roland
cdbced9d5a
fix: ensure relays on startup (#1926)
if the user has no apps then the relays are never connected to.
This leads to the relays incorrectly shown as offline
2025-11-20 22:02:06 +07:00
Roland
87146bf80b
fix: handle unexpected subscription closure from relay pool (#1911)
* chore: log go-nostr debug messages

* fix: handle unexpected subscription closes from relay

* chore: also output messages from go-nostr info logger in debug mode

* chore: temporarily use forked go-nostr fix

* chore: update forked go-nostr fix

* fix: relay shows as offline on startup

* chore: update go-nostr

* chore: remove debug tags

* chore: run go mod tidy

* fix: only get relay statuses once
2025-11-18 11:03:51 +07:00
Roland
377a3169c6
feat: support multiple relays (#1802)
* feat: support multiple relays (WIP)

* fix: multiple NWC url construction for multiple relays

* fix: startup

* chore: update go-nostr to fix pool relay reconnect

* fix: split nip-47 queue info publish event for each relay url

* fix: add relayUrls to dispatched nwc success events

* fix: ensure newly created app info publishing is not blocked by sleep from failed publishes

* feat: multiple relays improvements

- update app deleted and updated consumers to handle multiple relays
- handle multiple relays in healthcheck
- display relay online status in about page
- renaming and improved comments

* chore: simplify error messages

* fix: unnecessary db error log when checking if app has notification permission

* fix: tests

* chore: remove old comment

* fix: app wallet subscription context usage
2025-11-06 18:01:09 +07:00
Roland
92c6b54b27
feat: new connection wizard (#1690)
* feat: new connection wizard (WIP)

* feat: move app created logic into finalize step on new app page

* feat: move superuser connection creation to new app wizard, make alby go a standard app

* chore: remove unused property

* chore: update suggested app guides (up to snort)

* chore: update suggested app guides (WIP)

* chore: update guides for rest of app store apps

* feat: add sheet selection for scope groups

* chore: add guide for buzzpay

* fix: show stepper controls when returnTo is set

* chore: use flex wrap

* fix: icons in scopes component

* fix: remove default connect button on internal apps

* fix: use responsive button for connect button in app store detail header

---------

Co-authored-by: im-adithya <imadithyavardhan@gmail.com>
2025-09-15 13:10:12 +07:00
Adithya Vardhan
4e0b9c5b37
chore: use NewRequestWithContext instead of NewRequest (#1677) 2025-09-02 19:52:30 +07:00
Roland
13c24c7a87
feat: choose payment method when opening first channel (#1606)
* feat: choose payment method when opening first channel (WIP)

* chore: update terms

* chore: consume lsp endpoint, display fees+LSP in manual channel flow, first channel ui improvements

* chore: improve handling of fee_credits payment method

* chore: add terms and description

* feat: add terms to manual increase incoming capacity flow

* chore: add error handling for get_info endpoint

* feat: allow alby account to pay for manual channel order

* chore: use consistent logging methods

* chore: rename lsp balance sats field to be consistent

* chore: update to use consistent field name for public key in auto channel request

* chore: rename channel suggestion url and type fields

* feat: support included payment method

* chore: update LDK startup peers

* chore: move non-oauth methods out of alby oauth service

* chore: improve terms around duration, only display duration in terms modal
2025-08-27 23:34:15 +07:00
Roland
0aab4cd0d5
chore: lookup app by id instead of wallet pubkey when publishing nip47 info (#1638) 2025-08-21 16:47:39 +05:30
Roland
16eff34b8a
feat: track forwards to display on a home page widget (#1623)
* feat: track forwards to display on a home page widget

* fix: test

* chore: improve copy

* feat: configure PPM routing fees
2025-08-21 16:39:03 +05:30
Adithya Vardhan
0a4ecdeb74
chore: set user agent while connecting to relay (#1636) 2025-08-21 15:45:58 +07:00
Adithya Vardhan
60010e09fc
fix: stop autoswaps on shutting down ln client (#1572)
fix: pass in correct context to swap service
2025-08-06 12:24:43 +07:00
Adithya Vardhan
e23bfa6af0
chore: remove datadog profiling (#1406)
chore: remove unused datadog dependency
2025-07-29 16:20:29 +05:30
Roland
359c31b8a9
fix: log duration in correct place after removing excess events (#1542) 2025-07-28 13:29:59 +07:00
Roland
59f9a92cda
fix: speed up background deletion task (#1516)
* fix: speed up background deletion task

- always sleep 10 minutes between iterations
- reduce amount to 100 per iteration

* chore: change removing excess events log level to info

* fix: add index on response events to speed up batch event deletion

* chore: remove unnecessary log, run task only when needed
2025-07-21 17:16:44 +07:00
Roland
72cb91aa7c
chore: update TODO to use correct removal date (#1507) 2025-07-18 17:33:17 +07:00
Roland
e1d9c7963e
fix: remove event deletion from migration (#1503) 2025-07-15 13:17:06 +07:00
Roland
2bb6483579
fix: limit number of deleted events, remove duplicated service shutdown (#1492) 2025-07-11 16:30:41 +05:30
Roland
69388d5fae
feat: remove excess events (#1482)
* feat: remove excess events

* chore: add success log after deleting excess events
2025-07-10 19:12:03 +05:30
Adithya Vardhan
a1eaa63eed
Swaps improvements (shifting to standalone page + one-time swaps) (#1371)
* chore: move out swaps from settings

* chore: link to swaps in wallet and node page

* chore: add frontend for swap ins

* chore: update all swap redirects

* chore: remove swap dialogs

* chore: remove auto swap-ins frontend

* feat: add support for one time swap outs

* chore: remove unused code

* chore: use separate endpoint for one off swap outs

* chore: further changes

* chore: separate one off and auto swaps

* chore: naming changes

* fix: tests

* feat: add one off swap in

* feat: add auto swap ins

* chore: remove comments

* fix: tests

* chore: further changes

* chore: further changes

* chore: rename to swap in and swap out

* chore: do not show swaps for non LDK/LND users

* chore: add receive limit checks for swap ins

* chore: remove probing

* chore: dark mode

* fix: swap link

* chore: add extra swap links

* fix: fee rates log

* fix: fee rates log

* chore: color changes

* Feat: swap out improvements (#1403)

* feat: swap out improvements

- add lockup transaction id to hold payment metadata
- return swap ID and payment hash in swap out response
- retries to get fee rates
- separate swap out success page with status

* chore: rename

* chore: show current balance on swap out form

* chore: add pulse animation to badge while pending

* chore: minor typo

* chore: update fee rate retry interval to 10 seconds

* chore: use icons instead of badges

---------

Co-authored-by: im-adithya <imadithyavardhan@gmail.com>

* chore: update comment

* chore: remove comment

* chore: update boltz client to v2.6.1

* feat: swap in improvements (WIP) (#1411)

* feat: swap in improvements (WIP)

* feat: new swap in status page

* fix: hide pay button when already paid

* chore: improve swap in UI

* chore: more swap in ui improvements

* chore: minor improvements and fixes

* fix: typo

* feat: add swap in refund logic in case of failure

* fix: tests

* chore: add swap expired case for refunds

---------

Co-authored-by: im-adithya <imadithyavardhan@gmail.com>

* feat: add swaps table (#1419)

* feat: add swaps table

* fix: test

* chore: bump LDK-node to v0.6.0 (#1418)

* [Freepilot] fix: startup error handling (#1413)

* fix: handle errors from service.NewService() in startup code

Previously, both HTTP and Wails startup code ignored errors from
service.NewService(ctx) using blank identifier (_), which could
cause panics later if NewService fails (e.g., unable to connect
to postgres database).

Now properly handle the error and exit gracefully with a fatal
log message when service initialization fails.

* fix: compile error

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>

* feat: add hd key derivation

* Chore: add albyhub region cookie to developer page (#1421)

* docs: add AlbyHub-Region cookie instructions to developer page

* fix: use region from alby api

---------

Co-authored-by: achaldps@gmail.com <achaldps@gmail.com>

* build(deps): bump golang.org/x/crypto from 0.38.0 to 0.39.0 (#1415)

Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.38.0 to 0.39.0.
- [Commits](https://github.com/golang/crypto/compare/v0.38.0...v0.39.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.39.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump gorm.io/driver/sqlite from 1.5.7 to 1.6.0 (#1416)

Bumps [gorm.io/driver/sqlite](https://github.com/go-gorm/sqlite) from 1.5.7 to 1.6.0.
- [Commits](https://github.com/go-gorm/sqlite/compare/v1.5.7...v1.6.0)

---
updated-dependencies:
- dependency-name: gorm.io/driver/sqlite
  dependency-version: 1.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump github.com/btcsuite/btcd/btcec/v2 from 2.3.4 to 2.3.5 (#1417)

Bumps [github.com/btcsuite/btcd/btcec/v2](https://github.com/btcsuite/btcd) from 2.3.4 to 2.3.5.
- [Release notes](https://github.com/btcsuite/btcd/releases)
- [Changelog](https://github.com/btcsuite/btcd/blob/master/CHANGES)
- [Commits](https://github.com/btcsuite/btcd/compare/btcec/v2.3.4...btcec/v2.3.5)

---
updated-dependencies:
- dependency-name: github.com/btcsuite/btcd/btcec/v2
  dependency-version: 2.3.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: allow setting LDK node alias (#1398)

* feat: add node alias customization for LDK nodes with public channels

- Add new NodeAlias field to InfoResponse in API
- Add SetNodeAlias method to API with config storage
- Add HTTP endpoint POST /node/alias for setting node alias
- Add corresponding Wails endpoint support
- Create new Node settings page in frontend
- Add conditional navigation item for LDK nodes with public channels
- Include upgrade dialog and paid subscription check
- Display success message prompting node restart after alias change
- Show error toast for non-paid users attempting to change alias

* chore: use node alias from config in LDK init

* fix: make upgrade button non-absolute, remove disabled attribute

* chore: move node alias page to be consistent with other node management pages

* chore: remove redundant comment

* chore: show upgrade dialog when clicking node alias option, show also for private channels

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>

* fix: always pass in fee and handle mempool errors (#1408)

* fix: always pass in fee and handle mempool errors

* chore: improve withdraw on-chain funds UI

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>

* feat: derive keys from id and add fields to swap table

* feat: use bip 85 to derive swap mnemonic

* chore: mark swaps as failed if payment fails

* feat: add process refund method for swap ins

* chore: add process refund to swap service interface

* feat: add frontend

* fix: swap out failure message

* feat: add process refund button in swap in status screen

* chore: further improvements

* fix: wails routes

* feat: add frequency selector for ZapPlanner payments (#1312) (#1317)

* feat: add frequency selector for ZapPlanner payments (#1312)

* feat: add frequency selector for ZapPlanner payments (#1312) +corrections

* feat(zapplanner): add USD/BTC selector and frequency option

Budget renewal still has to be adjusted

* feat(zapplanner): set default frequency to 1 month

* feat(zapplanner): set default amount to usd and added (sats) to clarify BTC unit

* feat(zapplanner): convert months to days for subscriptions

* feat(zapplanner): add open to convertCurrency deps to allow consecutive subscriptions

* feat(Zapplanner freq&currency selector): added all currencies to the selector

* feat(Zapplanner freq&currency selector): removed bug about 2xBTC(sats) on the menu

* feat(zapplanner): frequency & currency all comments addressed

* chore: zapplanner fixes

- currency sorting
- sats currency usage for ZapPlanner
- force whole values for ZapPlanner
- pass correct currency to ZapPlanner
- rename field
- fix input width

---------

Co-authored-by: jpl-btc <>
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>

* chore: add reconnection logic

* chore: specify fees while locking btc

* fix: do not use context background

* chore: improve auto swaps frontend

* chore: add boltz logo to tx item

* Updated Primal app connection (#1428)

* Updated Primal app connection

* fix: lint

---------

Co-authored-by: René Aaron <rene@twentyuno.net>

* chore: bump uniffi-bindgen-go and revert error handling in the LDK client (#1434)

* chore: revert error handling in the LDK client

* chore: update ldk-node-go dependency

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>

* Read.me adjustments (#1440)

* Update README.md

1) We spend a lot of time helping users to fix their problems with Raspi PIs.
2) Computers that are offline regularly create a bad UX because payments in external apps do not work and channels are closed earlier.

* Update README.md

* feat: add expired state to nip47 transactions (#1441)

* fix: use custom mempool url (#1431)

* fix: use custom mempool url

* chore: return mempool url in info endpoint

* chore: use mempool url from info response in frontend

* chore: remove default mempool url in frontend

* fix: tests

* feat: add LDK bitcoind rpc chain source (#1367)

* feat: add LDK bitcoind rpc chain source

* fix: crash in bitcoindrpc due to not enabling continuous sync

* chore: renaming

* chore: mark swap status as failed

* chore: use mempool url from info

* chore: poll balances on node page

* fix: when opening outbound channel, extract host part if full peer connection url is pasted

* chore: use mempool url from backend info endpoint

* docs: add boltz regtest setup instructions

* chore: separate swap in and out status pages

* fix: remove duplicate useInfo

* fix: mnemonic derivation logic

* chore: address comments

* chore: add tests for swap mnemonic generation

* chore: add refunded state

* chore: rename columns

* chore: simplify swap status frontend

* chore: mark swap out as successful after claim tx conf

* chore: add address to refund

* fix: wails

* feat: add resubscription

* chore: add logging

* chore: save refund address to db and use new address

* chore: add comment

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Roland <33993199+rolznz@users.noreply.github.com>
Co-authored-by: Freepilot <215356755+freepilot-bot@users.noreply.github.com>
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
Co-authored-by: achaldps@gmail.com <achaldps@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nodii <13803869+NodeDiver@users.noreply.github.com>
Co-authored-by: Moritz Kaminski <moritz.kaminski@gmail.com>
Co-authored-by: René Aaron <rene@twentyuno.net>
Co-authored-by: Roman D <roman@dmitrienko.com>

* chore: rename to receive_amount

* chore: remove auto swap success and add boltz link

* chore: use constant and rename variables

* fix: mark swaps as failed

* fix: show receive amount in swap in success screen

* chore: remove duplicate endpoint and reorder

* chore: add comment in wails handler

* chore: use markSwapState

* chore: add retries

* fix: use one websocket per swap

* chore: frontend fixes

* feat: add swap mnemonic to debug tools

* fix: tx list

* fix: tests

* chore: further changes

* chore: improve copy

* chore: improve copy

* chore: improve copy

* chore: rename, add autofocus on swap inputs

* fix: swap in failed state when no lockup tx exists

* chore: add interval note to active swap component

* chore: remove boltz image

* chore: use hasChannelManagement check

* chore: use link instead of navigate

* chore: mark swaps as failed in case of errors

* chore: add comment

* chore: only mark swaps as failed in defer function

* chore: improve copy

* chore: update boltz client to v2.7.2

* chore: use refundSwapRequest param

* fix: refund swap method

* chore: minor changes

* chore: add retries

* chore: add retries and use single ws connection for pending swaps

* fix: swap fee error message

* chore: remove sending partial signature in swap in

* chore: log error when update channel is not ok

* fix: add tx claimed state in swap in listener

* chore: add nwc_swap_succeeded to whitelist and readme

* feat: use single boltz ws connection

* chore: only check for tx claimed state

* chore: use lock while sending updates

* chore: handle boltz update error

* chore: remove swap id from success event

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
Co-authored-by: Roland <33993199+rolznz@users.noreply.github.com>
Co-authored-by: Freepilot <215356755+freepilot-bot@users.noreply.github.com>
Co-authored-by: achaldps@gmail.com <achaldps@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nodii <13803869+NodeDiver@users.noreply.github.com>
Co-authored-by: Moritz Kaminski <moritz.kaminski@gmail.com>
Co-authored-by: René Aaron <rene@twentyuno.net>
Co-authored-by: Roman D <roman@dmitrienko.com>
2025-07-10 20:06:12 +07:00
Adithya Vardhan
f41f96335e
feat: auto-swaps (#1266)
Also fixes #1303

## TODOs

- [x] Do final testing with LDK/LND on mainnet
- [x] Improve fee display on the frontend, currently looks scary
- [x] ~Shift Swaps from settings~ (Agreeed to do in follow-up)
- [x] ~Add option to do one-time swaps~ (Agreeed to do in follow-up)

### Minor
- [x] `LDK_NETWORK` config var should now be `NETWORK`
- [x] ~Use LNClient method to publish transactions~ (Agreeed to do in
follow-up)

### Testing
- [ ] Phoenix
- [ ] Cashu
- [x] Wails
2025-05-14 21:31:50 +05:30
im-adithya
4990eeff35 chore: add NETWORK to config 2025-05-14 18:56:39 +05:30
Roland
6300c5deff
fix: re-enqueue failed info publish request (#1300) 2025-05-08 20:21:59 +07:00
im-adithya
56e9f48111 chore: remove stopautoswaps method from service 2025-04-23 11:54:12 +05:30
im-adithya
777d987410 chore: further changes 2025-04-18 16:01:38 +05:30
im-adithya
1eed702a8c chore: use config and env variables 2025-04-18 12:14:41 +05:30
im-adithya
75b4992da6 chore: further changes 2025-04-18 12:03:45 +05:30
im-adithya
940ad3b5c9 feat: add backend for auto swaps 2025-04-16 20:58:32 +05:30
Roland
6f662623b9
fix: show health alert if vss is enabled but subscription was cancelled, save vss token to user config (#1228)
* fix: show health alert if vss is enabled but subscription was cancelled

* fix: better handling if alby api is inaccessible to allow basic functionality (#1229)

* fix: better handling if alby api is inaccessible to allow basic functionality

* fix: don't show formatted fiat amounts if failed to fetch rates
2025-03-31 21:55:33 +07:00
Roland
597446876e
feat: add info event publish queue (#1187)
Fixes #1170

We decided to add a queue to solve the problem of rate-limiting
2025-03-24 12:38:02 +07:00
Roland Bewick
f737faac35 fix: enqueue of info events to publish on startup 2025-03-24 12:24:34 +07:00
im-adithya
6b388264ba chore: rename to publishAllAppInfoEvents and add description comment 2025-03-20 20:27:28 +05:30
im-adithya
65e304e2c0 chore: remove context param 2025-03-20 19:39:08 +05:30
im-adithya
063752c553 chore: queue info events separately 2025-03-20 19:37:16 +05:30
René Aaron
d3a3b615cb
feat: alby pro subscriptions (#1153)
* feat: draft

* fix: replace alert dialog

* fix: ordering of features

* feat: new components & helpers

* fix: make yearly plan the default

* fix: cleanup

* fix: update guides link

* fix: upgrade

* fix: add to home

* fix: upgrade prompts

* fix: remove support page

* fix: external link button

* fix: minify

* fix: conditionally show backup feature

* fix: onboarding & account linking

* fix: replace alby pro icon

* chore: use plan code instead of buzz, fix incorrect components briefly rendering

* fix: badge

* fix: change badge type

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2025-03-17 11:23:07 +01:00