Commit graph

79 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
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
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
Adithya Vardhan
72ad7d849c
fix: remove bitcoin maxi mode and always show crypto actions (#2135) 2026-03-13 10:17:14 +07:00
Roland
a3bfd5eac1
feat: add second relay to default config (#2103) 2026-02-28 12:11:21 +07:00
Adithya Vardhan
7bed6ecd86
feat: add fixed float along with bitcoin maxi mode (#2094)
* feat: add option to purchase channels with other crypto

* feat: add option to receive via other crypto

* feat: add crypto swap alert if sending fails

* feat: add bitcoin maxi mode

* fix: add invoice description on swapping

* chore: align top up wording everywhere

* chore: stop showing alert if recipient input is edited

* chore: change swap fee to 1%

* feat: add fixed float option to deposit and withdraw pages

* chore: extract fixed float swap in flow

* chore: add FixedFloatButton component

* chore: store bitcoin maxi setting in config

* fix: tests using mockery

* fix: issues
2026-02-28 11:54:28 +07:00
klabo
4353aa4e57
feat: add HIDE_UPDATE_BANNER environment variable (#2051)
* feat: add HIDE_UPDATE_BANNER environment variable

Add a new HIDE_UPDATE_BANNER env var that allows platform operators
(e.g. Start9) to suppress the built-in version update banner when
they provide their own update notification mechanism.

When set to true, the "What's New" widget is hidden and the header
banner only shows for VSS migration notices. The version comparison
against the Alby API is skipped entirely.

Closes #2048

* chore: simplify

* chore: undo changes

---------

Co-authored-by: Joel Klabo <max@klabo.world>
Co-authored-by: im-adithya <imadithyavardhan@gmail.com>
2026-02-10 22:30:08 +05:30
Sergey B.
5281681776
feat: remove hasLdkDir check (#2014)
* feat: remove hasLdkDir check

* chore: regenerate mocks

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2026-02-09 21:39:25 +07:00
Roland
191958570a
feat: add alert to node page when user has any large LDK channel monitors (#2007) 2026-01-07 20:24:22 +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
frnandu
e15f9f7b3d
fix: include encryptionKey in the cache key (sha256) (#1969)
* fix: include encryptionKey in the cache key (sha256)

* fix: make cache 2 level nested map

* chore: comment

* chore: add config unlock password tests

* fix: config SetUpdate also update encrypted column

* chore: update tests to check cache is used

---------

Co-authored-by: fmar <fmar@fmar.dev>
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2025-12-12 15:09:50 +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
René Aaron
6294d519c2
feat: bip177 (#1864)
* feat: bip177 option in settings

* fix: tests

* fix: use constants

* fix: bitcoin display format type

* fix: patch request

* fix: cleanup types

* fix: migrate to formatted bitcoin amount component

* fix: prevent banner from being shown again when updating settings

* fix: move stuff into api

* fix: component usage

* fix: onchain transaction table

* fix: amounts

* fix: format numbers

* fix: settings sections

* fix: copy

* chore: use existing constants

* chore: minor ui fixes and copy improvements for amount displays

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2025-11-10 15:48:27 +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
3a811399c7
feat: add ldk electrum chain source (#1682) 2025-09-04 11:53:22 +07:00
fmar
fc5aa1853e
feat: autoswaps using xpubs (#1575)
* feat: autoswaps using xpubs

* fix: rollback hour to minute change

* fix: remove unused

* fix: cleanup

* fix: improve flow control

* fix: simplify checks

* fix: use usedXpubDerivation bol

* feat: bump xpub index only on successful swap (#1609)

- add bool used_xpub to swap table
- fix reading empty autoswap xpub index start from config

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
Co-authored-by: Roland <33993199+rolznz@users.noreply.github.com>
2025-08-15 17:24:00 +07:00
Roland
1eac8138f1
feat: add environment variable to configure LDK announcement addresses (#1600) 2025-08-14 21:57:22 +07:00
Adithya Vardhan
e23bfa6af0
chore: remove datadog profiling (#1406)
chore: remove unused datadog dependency
2025-07-29 16:20:29 +05:30
Matjaž Lipuš
e0a51ba0c3
chore: rename LOG_EVENTS env variable (#1509)
* renamed config

* updated configs

* chore: renamed to SEND_EVENTS_TO_ALBY
2025-07-18 21:42:59 +07:00
Matjaž Lipuš
6eec16a57f
Add GetBaseFrontendUrl() to remove duplication (#1506) 2025-07-16 23:49:23 +07:00
Roland
b1484228ad
feat: rebalance into channel (#1364)
* feat: rebalance into channel (WIP)

* feat: rebalancing

- add mainnet service URL
- add loading state
- add validation to avoid bad rebalancing
- add rebalance warnings

* chore: improve rebalance dialog copy

* chore: add rebalance endpoint to wails handler

* chore: change fee to 0.2%

* fix: local spendable balance check

* fix: local spendable balance check

* fix: local spendable balance check, close dialog on successful swap

* chore: use min/max for rebalancing amounts rather than errors

* docs: change rebalancing fee copy

* fix: only show rebalance option for channels that are less than half full

* fix: rebalance fee copy

* fix: reload balances after swapping
2025-07-09 16:00:51 +07:00
Adithya Vardhan
b260d5f925
feat: specify max channel saturation power of half from env (#1430)
* feat: specify max channel saturation power of half from env

* feat: add max path count ldk variable to env

* fix: app config types

* chore: change ldk max path count default to 5

* chore: add comment
2025-06-26 17:59:42 +05:30
Roland
3e37d569f5
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
2025-06-24 23:25:51 +07:00
Adithya Vardhan
546dcbf135
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
2025-06-24 21:23:19 +05:30
Achal Jhawar
bb0b9c3257
feat: Regenerate JWT Secret on password change (#1389)
* feat: Regenerate JWT Secret on password change

* refactor: fetch JWT secret directly from database

* fix: Ensure JWT regeneration is atomic with password change

* refactor: Simplify JWT secret initialization by removing if-else branching

* chore: minor copy and documentation for JWT secret

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2025-06-10 21:55:19 +07:00
Roland
158d4a2539
fix: set default vss url to allow enabling vss on self-hosted hubs (#1328) 2025-05-22 12:20:13 +07:00
im-adithya
4990eeff35 chore: add NETWORK to config 2025-05-14 18:56:39 +05:30
im-adithya
9fb144d7d4 chore: remove max fee percentage setting and display fee 2025-04-29 13:32:17 +05:30
im-adithya
d8d0c92413 chore: add max fee percentage 2025-04-28 14:20:10 +05:30
im-adithya
f4ad3dc386 chore: add amount to swap workflow 2025-04-18 14:41:11 +05:30
im-adithya
1eed702a8c chore: use config and env variables 2025-04-18 12:14:41 +05:30
René Aaron
7f0aafeef0 feat: add boltz api cfg param 2025-04-17 12:34:31 +02:00
im-adithya
940ad3b5c9 feat: add backend for auto swaps 2025-04-16 20:58:32 +05:30
Roland Bewick
9cb5644fb9 fix: error log when fetching currency 2025-03-24 12:45:09 +07:00
Roland Bewick
e107e05d80 chore: remove unused green and breezlight backends 2025-03-15 13:11:36 +07:00
Roland
3dd11b26b4
fix: do not allow changing unlock password to an empty password (#1151) 2025-03-06 21:39:48 +07:00
Adithya Vardhan
f561547173
fix: remove lnd certificate from user config if not provided (#1106)
* fix: remove lnd certificate from user config if not provided

* chore: change comment

* chore: only set empty certhex if backend is LND
2025-02-20 14:31:39 +07:00
Pavan Joshi
11908ce937
fix: avoid empty currency selector initially (#1088)
* fix: default currency to usd for new hubs

* chore: default currency to uppercase

* chore: remove uppercase

* feat: add currency to error logs at function level for getBitcoinRate

* chore: use info.currency instead of state variable

* chore: filter out satoshi from fiat currencies

* feat: hide fiat currency if currency is SATS

---------

Co-authored-by: im-adithya <imadithyavardhan@gmail.com>
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2025-02-14 16:56:55 +07:00
Roland
e7a0b250e9
fix: only use JWT middleware on /api paths (#1074) 2025-02-11 23:42:09 +07:00
Pavan Joshi
5140cfb02e
feat: currency switcher (#1050)
* feat: language switcher

* feat: add fiat amount to send and receive instances

* feat: add wails handler to set currency

* chore: improve fiat currency handling

- simplify code
- change api endpoint to update settings rather than just currency
- add missing fiat value on receive invoice page
- allow passing classname to formatted fiat component

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2025-01-31 18:46:50 +07:00
Roland
f0e749f51d
feat: auto unlock (#949)
* feat: auto unlock feature

* chore: write auto unlock password from env to user config

* chore: simplify alert
2025-01-07 20:08:10 +07:00
Roland
2b3384725b
feat: add env variable to enable ldk transient network graph (#917) 2025-01-06 20:00:10 +07:00
Roman D
06a65fc378
feat: make file logger optional (#913)
* feat: make file logger optional

* chore: rename config variable

---------

Co-authored-by: Roland <33993199+rolznz@users.noreply.github.com>
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2024-12-23 16:25:59 +07:00
Roland
a428a4a4a5
fix: allow changing relay (#904) 2024-12-18 16:01:23 +07:00
Roland
2d1327ee2b
feat: make it easier to run multiple hubs locally (#861) 2024-12-17 11:48:03 +07:00
Roland
7dbf15c622
fix: Always update LND certificate (#820)
* Update config.go

* fix: always update lnd address and macaroon file
2024-11-26 20:32:46 -06:00