Commit graph

1380 commits

Author SHA1 Message Date
Roland
d2cebc5c6f
fix: replace react-lottie with lottie-react for Vite 8 compatibility (#2546)
Vite 8 changed CJS default-import interop: with "type": "module" set,
a default import of a CJS dependency now resolves to the whole
module.exports object instead of its .default export. react-lottie is
CJS-only, so <Lottie> received an object as the element type and
crashed LottieLoading/LottieSuccess with "Element type is invalid".

Swap to the maintained, ESM-built lottie-react, aliasing it to its ES
build since its browser field points at a UMD build with the same
interop hazard. No other dependency is affected by the interop change.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 23:52:50 +07:00
Roland
edd283cdb2
fix: update encryption scheme for node migration files (#2539)
* fix: update encryption scheme for node migration files

Migration files are now encrypted with AES-CTR using a key derived via
Argon2 with a 32-byte salt, the same derivation used for encrypted
configuration values. Files created by earlier versions can still be
restored: the restore path detects the scheme by trial-decrypting the
archive header and checking for the ZIP file signature, which also
rejects an incorrect unlock password up front instead of extracting
garbage.

The migration screen now also tells users to never share their
migration file with anyone.

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

* fix: reword migration file warning

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

* fix: read full migration file header before detecting cipher scheme

io.ReadAtLeast can return once the smallest scheme's header is read,
which truncates the larger current-scheme header when the reader
delivers short reads (e.g. a network request body). Read the full
header and only tolerate a short read that still covers the smallest
scheme.

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

* fix: extract migration files to a staging directory during restore

If extraction failed partway through, the partially populated restore
directory was left in the working directory, and the next startup would
apply the incomplete restore. Extract to a staging directory and only
move it into place after every entry has been extracted successfully.
Also reject archives that contain no files.

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

* fix: assert traversal-specific error in restore backup test

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 22:14:49 +07:00
Roland
1c7abc62e9
chore: add Bark terms link and exit disclosure to security page (#2544)
* chore: add Bark terms link and exit disclosure to security page

Link Second's Terms of Service from the Bark setup security screen, note
that the hub must stay online so automatically refreshed funds do not
expire, and clarify (via tooltip) that unilateral exit is not built into
Alby Hub yet and must be executed manually with the wallet data.

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

* chore: improve copy

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 22:04:43 +07:00
Roland
1c7c026e54
chore: make vite config compatible with native config loader (#2542)
Replace __dirname with import.meta.dirname and use Vite's native
resolve.tsconfigPaths option instead of the vite-tsconfig-paths plugin.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 21:40:43 +07:00
Roland
5125418188
chore(deps): bump dependencies to fix Dependabot alerts (#2541)
* chore(deps): bump google.golang.org/grpc to v1.82.1 and edwards25519 to v1.1.1

Fixes Dependabot alerts GHSA-hrxh-6v49-42gf (gRPC-Go xDS RBAC and HTTP/2
vulnerabilities) and GHSA-fw7p-63qq-7hpr (edwards25519 MultiScalarMult).

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

* chore(deps): bump react-router to 7.18.2 and refresh vulnerable transitive deps

Bumps react-router 7.14.2 -> 7.18.2 and re-resolves fast-uri, js-yaml,
brace-expansion, minimatch, picomatch, flatted and @babel packages to
patched versions, clearing the remaining open npm Dependabot alerts.

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 19:57:27 +07:00
dependabot[bot]
d3847fdaae
build(deps-dev): bump vite from 5.4.19 to 8.2.0 in /frontend (#2516)
* build(deps-dev): bump vite from 5.4.19 to 8.2.0 in /frontend

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.19 to 8.2.0.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/create-vite@8.2.0/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.2.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: remove stale react paths override in tsconfig

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Adithya Vardhan <imadithyavardhan@gmail.com>
2026-08-11 16:20:48 +05:30
dependabot[bot]
7c7dfa6876
build(deps): bump lucide-react from 1.7.0 to 1.28.0 in /frontend (#2518)
Bumps [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) from 1.7.0 to 1.28.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/1.28.0/packages/lucide-react)

---
updated-dependencies:
- dependency-name: lucide-react
  dependency-version: 1.28.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>
2026-08-11 15:48:31 +05:30
dependabot[bot]
621db07fc8
build(deps): bump @fontsource-variable/figtree from 5.2.10 to 5.3.0 in /frontend (#2519)
Some checks are pending
Multiplatform Docker build & push / build (push) Waiting to run
Code quality - linting and typechecking / linting (push) Waiting to run
Backend testing with Postgres / test-postgres (push) Waiting to run
build(deps): bump @fontsource-variable/figtree in /frontend

Bumps [@fontsource-variable/figtree](https://github.com/fontsource/font-files/tree/HEAD/fonts/variable/figtree) from 5.2.10 to 5.3.0.
- [Changelog](https://github.com/fontsource/font-files/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fontsource/font-files/commits/HEAD/fonts/variable/figtree)

---
updated-dependencies:
- dependency-name: "@fontsource-variable/figtree"
  dependency-version: 5.3.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>
2026-08-11 15:40:39 +05:30
Roland
4402d2fff8
fix: remove request bodies from error logs (#2533)
The Wails request router included the full request body in its error
log entries, and the HTTP app creation handler logged the whole request
struct on failure. Log only the route, method and error instead,
matching the existing behavior of the /api/mnemonic handler, and log
only the route and method for requests in the desktop frontend.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 15:49:26 +07:00
Roland
3d22993389
fix: validate return_to redirect URLs (#2532)
return_to query parameters are now parsed and only http and https URLs
are used for redirects, both in the frontend and when the createApp API
adds the connection parameters to the URL.

The production frontend build now also includes the same
Content-Security-Policy meta tag that is served as a header in http
mode, so the policy also applies where no HTTP headers are set, e.g. in
the desktop app.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 14:57:51 +07:00
Roland
037765794d
fix: keep showing migration success page after creating migration file (#2527)
Some checks are pending
Multiplatform Docker build & push / build (push) Waiting to run
Code quality - linting and typechecking / linting (push) Waiting to run
Backend testing with Postgres / test-postgres (push) Waiting to run
* fix: keep showing migration success page after creating migration file

After creating a node migration file the hub is halted and the Alby
OAuth token is intentionally removed, so visiting the homepage sent the
user through /start into the Alby OAuth flow. Track the halted state
in memory and redirect back to the migration success page instead.

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

* fix: synchronize migration flag access and propagate zip close error

Make nodeMigrationFileCreated an atomic.Bool since it is written by
CreateBackup and read by GetInfo on concurrent HTTP handler goroutines,
and finalize the migration archive explicitly so a failed zip close
returns an error instead of reporting a corrupt backup as success.

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

* fix: return minimal info response after migration file is created

Once a migration file is created the hub is halted and the database is
closed. GetInfo previously only worked because every config key it reads
happened to be served from the config cache; any cache miss on an
error-propagating read would fail /api/info. Return early with a minimal
response instead so the migration success page does not depend on cache
state.

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 15:37:26 +07:00
Roland
ffee8cbcbe
feat: enable migration from postgres to sqlite (#2524)
Allows users running Alby Hub on postgres (e.g. Alby Cloud) to create a
migration file from Settings -> Migrate Alby Hub. The contents of the
postgres database are copied into a temporary local sqlite database
which is included in the migration file, so it can be imported into a
fresh sqlite-based hub.

- extract the db_migrate CLI copy logic into a shared db.MigrateDB
- also copy the swaps and forwards tables (previously silently dropped)
- only require VSS in the source when migrating to postgres
- show a hint on the migrate page when running on postgres
- show database storage type and VSS status on the about page
- don't log an error when removing non-existent db files before restore

Closes #2500

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 14:20:41 +07:00
Roland
6d0cb6fd2c
fix: bark onboarding, migration messaging and receive settlement for bark 0.6.0 (#2523)
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
* fix: update bark onboarding and backup messaging for seed-based recovery

Since bark 0.6.0, offchain funds are recoverable from the mnemonic
alone via the seed-derived recovery mailbox. Remove the outdated
warnings that the recovery phrase is not sufficient, show the standard
recovery guidance for bark during onboarding, and expose the
seed-recovery scan result as a 'recoveryreport' custom node command so
users migrating to a new device can verify their funds were restored.

Closes #2512

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

* fix: settle bark lightning receives in the new delivering state

bark 0.6.0 added a 'delivering' receive state between preimage reveal
and settlement. The receive claim handler only treated
'preimage-revealed' and 'settled' as paid, so claimed receives were
published without a preimage and the transactions service rejected the
settlement ('no preimage in payment'), leaving paid invoices pending
forever.

Recognize all states at or past preimage reveal via a receiveIsPaid
helper (a positive allowlist, so an unknown future state degrades to
pending rather than falsely settled), only mark the transaction settled
when the preimage is present, and prefer bark's own settled_at
timestamp when available.

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

* fix: replace import channels checkbox with LDK-specific warning

The 'I don't have another Alby Hub to migrate or open channels'
checkbox on the import recovery phrase screen only applied to LDK but
was required for every backend, and its claim that channel funds are
always lost is wrong when dynamic channel backups (VSS) are enabled.

Remove the checkbox and the channels bullet from the import screen and
show the caveat on the Security & Recovery page instead, only when a
mnemonic was imported and the LDK backend was chosen.

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 16:39:02 +07:00
Roland
d198b19bef
feat: enable typing card name when choosing other card (#2511)
* feat: enable typing card name when choosing other card

Closes #2457

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

* fix: reset connect-card dialog form on open and show empty name validation error

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

* chore: use shadcn Button for other-card option in connect dialog

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 13:38:46 +07:00
Roland
6175489cb0
chore: remove unused argon2-wasm-esm dependency (#2508)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 17:55:38 +07:00
Roland
d94f6933f5
fix: remove avatar from lightning address QR (#2509)
The avatar overlay made the QR code hard to scan, especially for
short lightning addresses. Without center content the QR also drops
back to a lower error correction level, improving scannability.

Fixes #2507

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 11:20:01 +07:00
Alchemist
35d666d469
feat: filter transactions (#2464)
* feat: filter transactions

* fix: harden transaction filters

* refactor: use explicit nullable transaction filters with HideFailed polarity

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

* feat: set transaction filters in a dialog from wallet actions menu

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

* feat: filter transactions by search term and type

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

* fix: reject invalid transaction filters and reset page synchronously

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

* fix: parse complete minimum amount value in transactions filter dialog

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

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 10:52:14 +07:00
Roland
fbaff5d8a0
fix: show icon and proper name for lightning node backend on about page (#2501)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 17:21:00 +07:00
Roland
d3455eee7d
fix: explain API access is unavailable in the desktop app (#2499)
Creating a developer token in the Wails build failed with a confusing
"Unhandled route: POST /api/unlock" error, because the desktop app does
not expose an HTTP API for the token to be used against. Hide the token
creation form in the desktop build and show an explanatory message
instead.

Fixes #2471

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 15:26:40 +07:00
Roland
9971aa1ac8
fix: update bark icon (#2497)
Replace the bark.jpg icon with the new light and dark SVG icons.

Fixes #2446

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 15:08:03 +07:00
dependabot[bot]
ec2ec911be
build(deps-dev): bump @commitlint/config-conventional from 20.5.0 to 21.2.0 in /frontend (#2487)
build(deps-dev): bump @commitlint/config-conventional in /frontend

Bumps [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) from 20.5.0 to 21.2.0.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.2.0/@commitlint/config-conventional)

---
updated-dependencies:
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 21.2.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 17:19:59 +07:00
Alchemist
816e0dda6e
feat: receive invoices to apps (#2466)
* feat: receive invoices to apps

* fix: handle cleared receive selector
2026-08-04 17:18:22 +07:00
saunter
417cb16d97
feat: refresh payment QR and status components (#2459)
* feat: refresh payment QR and status components

* fix: align payment success button spacing

* fix: invert payment QR colors in dark mode

* fix: address payment QR review feedback

* fix: flatten nested cards in payment review FixedFloat tiles

* chore: remove internal payment component review screen

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

* fix: keep QR codes dark-on-light in dark mode

Inverted QR codes are unreadable by many scanner apps (e.g. Phoenix).

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

---------

Co-authored-by: René Aaron <rene@getalby.com>
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 17:08:45 +07:00
dependabot[bot]
857f145784
build(deps): bump @fontsource-variable/inter from 5.2.8 to 5.3.0 in /frontend (#2485)
build(deps): bump @fontsource-variable/inter in /frontend

Bumps [@fontsource-variable/inter](https://github.com/fontsource/font-files/tree/HEAD/fonts/variable/inter) from 5.2.8 to 5.3.0.
- [Changelog](https://github.com/fontsource/font-files/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fontsource/font-files/commits/HEAD/fonts/variable/inter)

---
updated-dependencies:
- dependency-name: "@fontsource-variable/inter"
  dependency-version: 5.3.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>
2026-08-04 16:31:20 +07:00
dependabot[bot]
fa03a9ba70
build(deps): bump @getalby/sdk from 7.0.0 to 8.0.3 in /frontend (#2488)
* build(deps): bump @getalby/sdk from 7.0.0 to 8.0.3 in /frontend

Bumps [@getalby/sdk](https://github.com/getAlby/js-sdk) from 7.0.0 to 8.0.3.
- [Release notes](https://github.com/getAlby/js-sdk/releases)
- [Commits](https://github.com/getAlby/js-sdk/compare/v7.0.0...v8.0.3)

---
updated-dependencies:
- dependency-name: "@getalby/sdk"
  dependency-version: 8.0.3
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: bump node version in workflows

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2026-08-04 16:25:24 +07:00
Roland
32af89bc8c
chore: bump rebalance fees to ensure payment succeeds (#2470)
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-07-29 14:31:18 +07:00
dependabot[bot]
afdb842a54
build(deps-dev): bump @tailwindcss/forms from 0.5.10 to 0.5.11 in /frontend (#2453)
build(deps-dev): bump @tailwindcss/forms in /frontend

Bumps [@tailwindcss/forms](https://github.com/tailwindlabs/tailwindcss-forms) from 0.5.10 to 0.5.11.
- [Release notes](https://github.com/tailwindlabs/tailwindcss-forms/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss-forms/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss-forms/compare/v0.5.10...v0.5.11)

---
updated-dependencies:
- dependency-name: "@tailwindcss/forms"
  dependency-version: 0.5.11
  dependency-type: direct:development
  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>
2026-07-27 19:52:09 +07:00
Anshuman
754acfc9df
fix: update wave.space affiliate URL (#2475) 2026-07-27 19:51:07 +07:00
dependabot[bot]
e6fcc3e3c1
build(deps-dev): bump typescript-eslint from 8.60.1 to 8.61.0 in /frontend (#2452)
build(deps-dev): bump typescript-eslint in /frontend

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.60.1 to 8.61.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.61.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.61.0
  dependency-type: direct:development
  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>
2026-07-27 19:19:40 +07:00
dependabot[bot]
270d23d273
build(deps-dev): bump @types/node from 25.8.0 to 25.9.3 in /frontend (#2450)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 25.8.0 to 25.9.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 25.9.3
  dependency-type: direct:development
  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>
2026-07-27 19:18:50 +07:00
René Aaron
bf9c346a98
feat: use switch and improve copy on node settings page (#2441)
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
* feat: use switch and improve copy on node settings page

* fix: allow disabling JIT channels when no liquidity source exists
2026-06-12 11:11:17 +07:00
Roland
b1c0d4eac8
fix: add fallback instructions if JIT LSP seems to be offline (#2443)
* fix: add fallback instructions if JIT LSP seems to be offline

* fix: duplicate invoice probe

* fix: properly check if lsps2 is enabled before setting jit request failed

* fix: don't render incorrect maximum receive amount if balances aren't loaded
2026-06-12 11:09:27 +07:00
Alchemist
a21c320fde
feat: simplify receive screen (#2426)
Some checks are pending
Multiplatform Docker build & push / build (push) Waiting to run
Code quality - linting and typechecking / linting (push) Waiting to run
Backend testing with Postgres / test-postgres (push) Waiting to run
* feat: simplify receive screen

* fix: use absolute receive routes

* chore: move other options to separate card, improve copy

* chore: also add accordion to receive invoice screen (for non-logged-in users)

* fix: JIT alert padding

* feat: explain other receive options with descriptive menu rows

* fix: move first channel jit alert outside of card

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
Co-authored-by: René Aaron <rene@twentyuno.net>
2026-06-11 19:20:35 +07:00
Roland
864c841c07
feat: add solvocard + add provider name to bitcoin card topup (#2440) 2026-06-11 15:56:52 +07:00
René Aaron
2f258138bc
fix: send referrer header on stories YouTube embed (#2435) 2026-06-11 13:17:27 +07:00
Anthonyushie
5249ebe7db
fix: add lightning tag to Freedomia card (#2437) 2026-06-11 13:15:39 +07:00
Roland
cc429c4553
chore: fix formatting (#2430)
Some checks are pending
Multiplatform Docker build & push / build (push) Waiting to run
Code quality - linting and typechecking / linting (push) Waiting to run
Backend testing with Postgres / test-postgres (push) Waiting to run
2026-06-10 14:51:37 +07:00
Adithya Vardhan
d8faf09109
fix: avoid mempool api failures during swaps by using boltz for fee and tx lookup (#2421)
* fix: avoid mempool api failures during swaps by using boltz for fee and tx lookup

* fix: ensure swap payment isn't made twice on refresh

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2026-06-10 14:47:54 +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
e5dc19ae68
feat: add readonly option for app store apps (#2415) 2026-06-10 13:17:13 +07:00
Roland
98e7d987bb
feat: pass selected provider to card topup app (#2416)
* feat: pass selected provider to card topup app

The Bitcoin Card Topup app (card.albylabs.com) now supports configuration
presets selected via a `provider` query param. Pass the provider chosen on
the Cards page through to the topup app's install link so its preset is
pre-applied, simplifying setup.

Closes #2384

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

* chore: move bitcoin card topup install guide component to a new file

* chore: remove accidentally committed worktree gitlinks

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

* chore: use more general copy for card topup app install guide

* fix: remove subtree commits

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 13:16:02 +07:00
René Aaron
3453b69a1c
feat: refine wallet empty states (#2382)
* fix: tighten inline empty state spacing on wallet pages

* chore: refine wallet empty states

- Replace placeholder icons (drum, link) with channel-specific icons (ZapIcon for lightning, BitcoinIcon for on-chain)
- Rewrite empty-state copy with warmer, less technical phrasing
- Drop redundant CTA (Receive button already sits above)
- Add subtle bg-accent surface to anchor the transactions section

* chore(empty-state): add variant prop, drop unused button props on wallet pages

* chore(empty-state): swap muted surface from bg-accent/40 to bg-muted

* chore(transactions): allow callers to override empty-state copy and icon

App transaction lists now show app-context messaging ('No transactions yet'
+ 'Payments made through this app will appear here.' with a ReceiptIcon)
instead of the wallet-specific lightning copy.

* chore(empty-state): drop unused 'none' variant

* chore(empty-state): default showButton to false

* chore(empty-state): drop showButton prop, derive from buttonText+buttonLink

* fix(empty-state): drop nested surface in app transactions card

Add 'none' variant and use it from AppTransactionList so the empty state
no longer renders a bg-muted box inside the already-bordered Card.

* fix(app-transactions): swap ReceiptIcon for ArrowDownUpIcon

ReceiptIcon renders a dollar sign — wrong for a bitcoin app.

* chore(empty-state): default variant to 'muted', CTA placeholders opt into 'dashed'

---------

Co-authored-by: Roland Bewick <roland.bewick@gmail.com>
2026-06-10 13:00:43 +07:00
René Aaron
d1636cbcce
fix: reduce wallet balance/transaction polling interval to 10s (#2425)
Some checks are pending
Multiplatform Docker build & push / build (push) Waiting to run
Code quality - linting and typechecking / linting (push) Waiting to run
Backend testing with Postgres / test-postgres (push) Waiting to run
* fix: reduce wallet balance/transaction polling interval to 10s

The wallet dashboard polls /api/balances and /api/transactions every 3s
via SWR refreshInterval. For hubs left open in a browser tab, this produces
a high, continuous volume of identical requests around the clock with little
UX benefit, since SWR already revalidates on window focus.

Raise the interval for the balances and transactions-list hooks to 10s. The
single-transaction hook (used while waiting for a specific invoice to settle)
is intentionally left at 3s, where fast updates matter and polling is
short-lived.

* refactor: drop poll-interval comments, rationale moved to PR
2026-06-09 20:52:40 +07:00
Roland
2657c89aa8
feat: reframe AI agent inspiration tab around managing the hub (#2418)
* feat: reframe AI agent inspiration tab around managing the hub

Change the Node inspiration tab on the AI & Agents page to a Hub tab focused on managing Alby Hub itself (app connections, sub-wallets, budgets) rather than lightning channels. Channel/node prompts only show when the backend supports channel management.

Closes #2401

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix: icon

* chore: name

* chore: remove stray .claude/worktrees gitlinks

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: René Aaron <rene@twentyuno.net>
2026-06-09 20:50:30 +07:00
Roland
10771b7c0a
chore: remove Bitrefill custom app in favor of standard NWC connection (#2420)
* chore: remove Bitrefill custom app in favor of standard NWC connection

Bitrefill now supports Nostr Wallet Connect directly, so the custom
embedded iframe app is no longer needed. Remove the internal Bitrefill
screen and route, convert the app store entry to a standard NWC
connectable app, and drop the embed.bitrefill.com frame-src CSP
exceptions from both the backend header and the dev Vite config.

Closes #2283

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

* chore: update bitrefill instructions and add mobile links

* chore: remove accidentally committed .claude/worktrees gitlinks

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

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:11:04 +07:00
dependabot[bot]
7b963e944f
build(deps): bump @base-ui/react from 1.4.1 to 1.5.0 in /frontend (#2405)
Bumps [@base-ui/react](https://github.com/mui/base-ui/tree/HEAD/packages/react) from 1.4.1 to 1.5.0.
- [Release notes](https://github.com/mui/base-ui/releases)
- [Changelog](https://github.com/mui/base-ui/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mui/base-ui/commits/v1.5.0/packages/react)

---
updated-dependencies:
- dependency-name: "@base-ui/react"
  dependency-version: 1.5.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>
2026-06-09 15:03:29 +07:00
dependabot[bot]
2215b04da6
build(deps-dev): bump eslint from 10.3.0 to 10.4.1 in /frontend (#2409)
Bumps [eslint](https://github.com/eslint/eslint) from 10.3.0 to 10.4.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.3.0...v10.4.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.4.1
  dependency-type: direct:development
  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>
2026-06-09 15:01:12 +07:00
dependabot[bot]
2d4aab5bee
build(deps): bump tailwind-merge from 3.4.1 to 3.6.0 in /frontend (#2408)
Bumps [tailwind-merge](https://github.com/dcastil/tailwind-merge) from 3.4.1 to 3.6.0.
- [Release notes](https://github.com/dcastil/tailwind-merge/releases)
- [Commits](https://github.com/dcastil/tailwind-merge/compare/v3.4.1...v3.6.0)

---
updated-dependencies:
- dependency-name: tailwind-merge
  dependency-version: 3.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>
2026-06-09 14:29:27 +07:00
dependabot[bot]
6cacd12dcc
build(deps-dev): bump vite-plugin-pwa from 1.2.0 to 1.3.0 in /frontend (#2407)
Bumps [vite-plugin-pwa](https://github.com/vite-pwa/vite-plugin-pwa) from 1.2.0 to 1.3.0.
- [Release notes](https://github.com/vite-pwa/vite-plugin-pwa/releases)
- [Commits](https://github.com/vite-pwa/vite-plugin-pwa/compare/v1.2.0...v1.3.0)

---
updated-dependencies:
- dependency-name: vite-plugin-pwa
  dependency-version: 1.3.0
  dependency-type: direct:development
  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>
2026-06-09 14:28:18 +07:00
René Aaron
d2cd4a5ed2
fix: change first payment checklist item to receive-only (#2393) (#2394)
Some checks are pending
Multiplatform Docker build & push / build (push) Waiting to run
Code quality - linting and typechecking / linting (push) Waiting to run
Backend testing with Postgres / test-postgres (push) Waiting to run
Renames the onboarding checklist item from "Send or receive your
first payment" to "Receive your first payment" and marks it complete
when the wallet has a spendable balance (e.g. after opening an
outbound channel) in addition to having a transaction.
2026-06-04 17:45:42 +07:00