Commit graph

115 commits

Author SHA1 Message Date
Adithya Vardhan
a2af8fd598
fix: return optional total balance in list apps response for subwallets (#2057)
* fix: return optional total balance in list apps response for subwallets

* chore: add error handling to subwallet balance query

* chore: add METADATA_APPSTORE_APP_ID_KEY constant

* chore: add MAX_FREE_SUBWALLETS constant

* chore: use subwallet query and total count for limit check
2026-02-26 12:25:06 +05:30
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
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
Adithya Vardhan
1fde06a61d
feat: add retries for swap refund (#1914)
* feat: add retries for swap refund

* chore: address feedback
2025-11-18 11:05:20 +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
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
René Aaron
0c7cf4fcf6
fix: delete lightning address when deleting a sub-wallet (#1858)
* fix: delete lightning address when deleting a sub-wallet

* fix: pass app to useDeleteApp hook

* fix: move deletion to server

* fix: merge changes

* Update frontend/src/components/connections/DisconnectApp.tsx

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

* fix: create helper function

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
Co-authored-by: Adithya Vardhan <imadithyavardhan@gmail.com>
2025-11-06 16:41:12 +05:30
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
Krrish Sehgal
faf80b122d
fix: patch app endpoints should allow partial fields (#1778)
* fix: update patch app endpoints to allow sending partial fields from the frontend

* fix: removed unnessary complexity in handlesave func

* fix: use correct subwallet app id when setting subwallet lightning address in get_info command

* fix: do not allow changing subwallet to be non-isolated

* chore: simplify update app scopes logic

* fix: patch app to remove expires at

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2025-10-14 14:42:55 +07:00
Krrish Sehgal
0d28c0d429
fix: case sensitive search in postgres (#1801) 2025-10-14 13:27:21 +07:00
Krrish Sehgal
392eef45bc
fix: add nil checks to get-swap-service (#1788) 2025-10-14 12:39:54 +07:00
Adithya Vardhan
5538765123
chore: always add swap out fees on top (#1739) 2025-09-19 13:14:38 +07:00
Adithya Vardhan
4e0b9c5b37
chore: use NewRequestWithContext instead of NewRequest (#1677) 2025-09-02 19:52:30 +07:00
Roland
7a38f051c5
fix: auto swap to xpub (#1662) 2025-08-29 16:47:31 +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
aae53d603f
feat: merge app store and connections page (#1596)
* feat: merge app store and connections page

* feat: app store detail for connected apps (WIP)

* feat: add connected app details to app store detail page (WIP)

* feat: add budget usage to app detail pages

* chore: improve readonly permissions ui

* feat: improve mobile responsiveness for new connections / app store (WIP)

* fix: mobile app detail header actions

* feat: add single app detail to alby go

* chore: rename suggested apps to app store apps

* chore: hide duplicated budget renewal in app detail single connected app

* fix: heading copy

* chore: redirect from app store detail to app details page if already connected, improve edit state

* feat: move budget and lightning address to cards, add connection details modal, better accessibility

* chore: remove unused code

* fix: app store category sorting

* chore: change topup/drawdown copy

* chore: remove unused app store detail header code

* chore: update icons, minor dropdown improvements

* fix: remove metadata bg

* fix: reorder buttons

* fix: remove optional jsx props

* fix: permissions spacing

* chore: remove unused, unnecessary and duplicated code

* chore: add missing suggested apps data, make app usage look better for isolated non-subwallet apps

* chore: move disconnect button into advanced dropdown on app details page

---------

Co-authored-by: René Aaron <rene@twentyuno.net>
2025-08-27 22:51:18 +07:00
Roland
1add20094e
feat: payment failed alert (#1593)
* feat: payment failed alert (WIP)

* feat: add payment failed alert to all payment flows, fix button sizes on mobile

* chore: improve copy

* chore: adjust spacing

---------

Co-authored-by: im-adithya <imadithyavardhan@gmail.com>
2025-08-21 17:09: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
Roland
cdc6ef8dab
fix: move filtering out subwallets on apps page to backend (#1614)
fix: move filtering out subwallets on app page to backend
2025-08-19 17:31:54 +07:00
Adithya Vardhan
46a491ef00
feat: add swap out and onchain withdraw to send flow (#1582)
* chore: remove balance card and fix layout

* chore: change send screen styling

* feat: add onchain send

* feat: send exact amount in swap outs

* chore: address feedback

* chore: change swap transaction title and add to address

* chore: refactor zero amount screen and remove confirmation

* chore: add x icon to recipient in lnurl pay

* chore: split onchain send page into separate components

* fix: set headers and remove send layout

* chore: show warning if balance is low

* chore: change name to PendingPaymentAlert

* chore: add increase balance warning on exceeding amount

* chore: minor changes

* chore: remove you'll be notified message

* chore: add on-chain transactions alert on wallet page

* chore: align sending and payment pending alerts

* chore: make sure amount doesn't reset

* fix: small onchain amount alert copy

* chore: rename isSending to useExactReceiveAmount

* chore: add mempool and anchor reserves alert to onchain send screen

* chore: use spending alert consistently and remove red text

* chore: add option to edit fee rate

* fix: styling after tailwind upgrade

* feat: add swap in and onchain deposit to receive flow (#1585)

* chore: remove receive layout

* feat: add onchain address to receive flow

* feat: add receive screen to swap in and deposit bitcoin

* chore: rename import to MIN_SWAP_AMOUNT

* chore: add onchain button when alby account is disconnected

* fix: link

* chore: add OnchainAddressDisplay and use useSearchParams hook

* fix: use actual swap limits from boltz api (#1598)

* fix: create another invoice button

* chore: use fee rate instead of network fee

* fix: styling after tailwind upgrade

* chore: rename swap fees to swap info

* chore: use lottie loading component

* chore: add mempool alert

* chore: make swaps the default option for send/receive onchain

---------

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

* chore: consistently show fee rate in sat/vByte

* chore: minor copy changes

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2025-08-15 18:28:00 +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
8340496ded
fix: order by last used at to order unused apps last (#1594) 2025-08-14 21:58:10 +07:00
Roland
1369bb9d21
chore: add apps pagination (#1543) 2025-07-29 20:57:18 +07:00
Roland
fe2a345651
feat: add app last used time (#1498)
* feat: add app last used time

* chore: use app last used instead of fetching last event

* chore: rename last_used to last_used_at, remove unused code

* fix: prettier
2025-07-14 15:26:29 +07:00
Matjaž Lipuš
6fd26b91e5
fix: check reserved app name (#1497) 2025-07-14 12:45:48 +07:00
Roland
6023a6c262
chore: add rebalance succeeded event (#1489) 2025-07-11 13:38:32 +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
Roland
ec590faa49
feat: create sub-wallet lightning address (#1452)
* feat: create sub-wallet lightning address (WIP)

* feat: create subwallet lightning address from show page, improve error toast

* feat: add delete lightning address

* chore: add wails handlers for creating and deleting lightning addresses

* fix: delete request

* fix: log property format

* chore: use full address from response instead of hardcoding alby domain

* chore: rename lightning address hooks

* chore: check plan code for creating lightning address on show app page
2025-07-08 22:57:41 +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
Freepilot
8a0a432985
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>
2025-06-18 13:33:14 +07:00
Adithya Vardhan
c653ae9090
feat: add BOLT-12 offers (#1242)
* 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>
2025-06-04 22:28:19 +07:00
René Aaron
4ab91202b7
feat: waitlist for bank accounts (#1354)
* feat: waitlist for virtual bank accounts

* fix: copy

* fix: apis

* fix: rename event

* feat: success state

* fix: copy

* fix: copy

* Update frontend/src/screens/features/BankAccount.tsx
2025-06-04 15:11:33 +02:00
Adithya Vardhan
9b6e88f1cc
feat: add option to edit fee while withdrawing (#1044)
* 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>
2025-05-29 23:38:46 +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
Adithya Vardhan
f4bfa42b55
feat: add info page to settings (#1310)
* feat: add info page to settings

* chore: add plan info

* chore: reorder info page in settings sidebar

* fix: move about to bottom of menu items

* chore: replace hardcoded plan codes

---------

Co-authored-by: René Aaron <rene@twentyuno.net>
2025-05-14 16:14:39 +02:00
im-adithya
6caa2aa7d0 Merge branch 'master' into feat/auto-swaps 2025-05-06 12:48:26 +05:30
Roland Bewick
153da0ee12 feat: add on-chain transactions to node page 2025-05-02 13:51:37 +07:00
im-adithya
433a4cfef8 chore: add fees 2025-04-30 19:25:07 +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
3dd9f1eab9 chore: do not pass ctx to get auto swaps config 2025-04-23 17:43:59 +05:30
im-adithya
0f71ab34b5 chore: rename to get auto swaps config 2025-04-23 16:57:13 +05:30
im-adithya
a54b804636 chore: rename to disable auto swaps 2025-04-23 16:36:37 +05:30
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
f4ad3dc386 chore: add amount to swap workflow 2025-04-18 14:41:11 +05:30
im-adithya
75b4992da6 chore: further changes 2025-04-18 12:03:45 +05:30
René Aaron
277fcf68a3 fix: save settings 2025-04-17 11:10:17 +02:00
im-adithya
940ad3b5c9 feat: add backend for auto swaps 2025-04-16 20:58:32 +05:30