github ZeusLN/zeus v13.2.3

3 hours ago
ZEUS v13.2.3

v13.2.3 Highlights:

  • Embedded LND v0.21.4
  • LDK Node v0.7.0-zeus-rl-0.2.7 (rust-lightning v0.2.7 security fixes)
  • Further security hardening measures
  • Miscellaneous bug fixes
  • Miscellaneous UI improvements never transferred correctly through it. Single-device and Android users are not affected.

What's Changed

  • build: make Xcode Cloud post-clone survive Intel runners by @kaloudis in #4677
  • Verify LSP wrapped invoices against the invoice they wrap by @kaloudis in #4673
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4679
  • locales: fix 17 broken localeString references, add en.json coverage test by @kaloudis in #4674
  • fix(ui): swap the GIF loading indicator for the Lottie loader by @kaloudis in #4678
  • fix(channels): require a host when connecting a peer by @kaloudis in #4644
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4681
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4682
  • tests: scan all literal keys in localeString calls by @kaloudis in #4680
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4683
  • tests: surface coverage summary in CI logs and PR comments by @kaloudis in #4676
  • fix(security): bind LNURL-auth callback host to signing domain by @kaloudis in #4576
  • build(ios): refresh Podfile.lock for react-native-get-random-values 2.0.0 by @kaloudis in #4691
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4690
  • tests: cover StealthModeUtils, which had none by @kunalKumar-13 in #4685
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4692
  • chore(deps): bump assert from 1.5.0 to 2.1.0 by @dependabot[bot] in #4607
  • chore(deps): bump react-native-reanimated to 4.7.0 by @kaloudis in #4689
  • fix: LSP and LSPS1 reset button visibility and Olympus detection by @shubhamkmr04 in #4664
  • fix(lsps1): show empty state when no orders match the current node by @ajaysehwal in #4704
  • fix(recovery): guard clearLegacyLocations behind DEV by @kunalKumar-13 in #4694
  • stores: no node calls until a wallet is picked by @TheSeydiCharyyev in #4450
  • fix: gate simple taproot reset on backend support by @shubhamkmr04 in #4705
  • fix: keep preset amounts when fiat has no rate by @TheSeydiCharyyev in #4651
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4722
  • fix(lsps): arm custom-message timeout per-request, not per-subscription by @ajaysehwal in #4702
  • fix(nwc): point empty NWC budget at Cashu settings when Lightning balance is zero by @ajaysehwal in #4662
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4732
  • chore(deps): bump metro to 0.84.6 to drop image-size by @kaloudis in #4734
  • views: drop the latch before taking the fetch lock by @TheSeydiCharyyev in #4726
  • build: stop tracking LDK Node jniLibs by @kaloudis in #4737
  • Balance view: stop double counting unconfirmed on-chain funds by @kaloudis in #4515
  • utils: stop accepting mainnet bech32 addresses on testnet by @kaloudis in #4721
  • utils: accept uppercase Lightning Address domains by @kaloudis in #4731
  • remove SATSCARD bounty by @kaloudis in #4767
  • docs: ask first-time contributors to disclose AI assistance by @kaloudis in #4772
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4773
  • utils: share one LUD-16 lnurlp URL builder by @kaloudis in #4762
  • fix(nwc): don't crash NWC settings when settings have no ecash key by @kaloudis in #4763
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4777
  • nostr: lowercase NIP-05 identifiers before lookup by @kaloudis in #4761
  • SweepStore: use regtest and testnet params on regtest and signet by @kaloudis in #4758
  • fix(balance): count a force close with an unconfirmed sweep once by @kunalKumar-13 in #4775
  • chore(deps): bump @nostr-dev-kit/ndk to 3.0.3 by @kaloudis in #4701
  • AddressUtils: validate destinations against the node's network in one place by @kaloudis in #4759
  • handleAnything: drop wrong-network addresses from unified URIs by @kaloudis in #4760
  • fix: harden the BIP 353 lookup (skip .onion, encode the query name) by @kaloudis in #4729
  • fix(settings): don't crash when a stored blob is missing a settings group by @ajaysehwal in #4788
  • fix: avoid spurious node refetch after unlocking by @myxmaster in #4423
  • LnurlChannel: use the themed Switch component by @kaloudis in #4790
  • [feat] chore(deps): bump react-native to 0.87.1 by @kaloudis in #4566
  • build(deps): bump brace-expansion from 1.1.16 to 1.1.21 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #4795
  • chore(deps): bump moment from 2.30.1 to 2.31.0 by @dependabot[bot] in #4794
  • fix: pay BIP 353 offers from records with multiple params by @kaloudis in #4658
  • chore(deps): bump brace-expansion and markdown-it to patched versions by @kaloudis in #4798
  • chore(proto): regenerate bindings with protobufjs 8.8.0 by @kaloudis in #4799
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4801
  • chore(deps): bump minor and patch dependencies from #4796 by @kaloudis in #4800
  • Avoid keyboard-inserted spaces in URL and host inputs by @myxmaster in #4793
  • chore(deps): bump react-native-nitro-tor from 0.6.0 to 0.6.1 in the minor-and-patch group across 1 directory by @dependabot[bot] in #4805
  • chore(ios): update Podfile.lock for react-native-nitro-tor 0.6.1 by @kaloudis in #4808
  • Handle LightningAddressStore promise rejections by @kaloudis in #4485
  • fix(bolt12): show the actual payment outcome after LDK direct pay by @kaloudis in #4307
  • chore(deps): bump js-yaml from 3.14.2 to 3.15.0 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #4206
  • deps: patch ws, js-yaml, and markdown-it security alerts by @kaloudis in #4214
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4219
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4220
  • docs: add Claude Code skill library under .claude/skills by @kaloudis in #4209
  • fix: poll status for free LSPS1/LSPS7 orders by @shubhamkmr04 in #4204
  • fix: display units for invoice expiry and CLTV expiry by @kaloudis in #4225
  • SwipeButton: lock knob in place after successful swipe by @kaloudis in #4224
  • fix: use TextInput suffix for fee limit percent fields by @ajaysehwal in #4228
  • backends: fix amountless invoice creation for LDK Node by @ajaysehwal in #4232
  • chore(deps): bump protobufjs from 7.6.3 to 7.6.5 by @dependabot[bot] in #4235
  • chore(deps): bump brace-expansion from 1.1.11 to 1.1.16 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #4234
  • chore(deps): bump brace-expansion from 5.0.6 to 5.0.7 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in #4236
  • [feat] LND v0.21-beta by @kaloudis in #4177
  • Receive: surface Flow LSP proposal rejection as dismissable warning by @kaloudis in #4233
  • chore(deps): bump shell-quote from 1.8.4 to 1.10.0 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in #4237
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4238
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4240
  • fix: deep links handled twice with 'Select wallet on start-up' by @kaloudis in #4226
  • stores: prevent stale closeChannel error from wiping channel list by @kaloudis in #4230
  • chore(deps): bump fast-uri from 3.1.2 to 3.1.4 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #4241
  • chore(deps): bump svgo from 3.3.3 to 3.3.4 by @dependabot[bot] in #4242
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4243
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4244
  • ci: add Dependabot config for npm and GitHub Actions version updates by @kaloudis in #4215
  • chore(deps): bump @babel/preset-env from 7.22.15 to 7.29.7 by @dependabot[bot] in #4256
  • chore(deps): bump mobx from 5.15.3 to 5.15.7 by @dependabot[bot] in #4253
  • ci: bump actions/setup-node from 6 to 7 by @dependabot[bot] in #4245
  • ci: bump actions/checkout from 6 to 7 by @dependabot[bot] in #4246
  • fix: prevent Security settings UI flash on open by @ajaysehwal in #4239
  • chore(deps): bump events from 1.1.1 to 3.3.0 by @dependabot[bot] in #4248
  • chore(deps): bump concurrently from 9.1.2 to 10.0.3 by @dependabot[bot] in #4251
  • chore(deps): bump protobufjs-cli from 1.3.3 to 2.0.0 by @dependabot[bot] in #4252
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4259
  • chore(deps): bump 47 minor and patch dependencies (slimmed #4247) by @kaloudis in #4260
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4263
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4264
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4265
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4266
  • chore(deps): bump json from 2.19.2 to 2.19.9 by @dependabot[bot] in #4267
  • chore(deps): bump valibot from 1.2.0 to 1.4.2 by @dependabot[bot] in #4268
  • chore(deps): migrate lnc-rn from deprecated tslint to eslint v9 by @kaloudis in #4271
  • chore(deps): clear Dependabot alerts on transitive dependencies by @kaloudis in #4274
  • chore(deps): bump protobufjs to v8 + protobufjs-cli 2.5.1, regenerate bindings by @kaloudis in #4262
  • build: fix vendored lnc-rn bob build + add mocha test suite by @kaloudis in #4275
  • LDK: Add support for 24 word seed phrases by @shubhamkmr04 in #4212
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4282
  • [feat] fix(LNC): route register callbacks through events to avoid new-arch crash by @kaloudis in #4205
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4283
  • build: run prettier on generated proto types after gen-proto by @kaloudis in #4284
  • deps: fix shell-quote DoS, clean up minimatch pins by @kaloudis in #4281
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4290
  • fix(CLN): include unpaid invoices in Activity by @ajaysehwal in #4291
  • fix: show the correct seed when backing up an inactive wallet by @ajaysehwal in #4280
  • Lockscreen: prevent duress wipe in security management flows by @kaloudis in #4293
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4295
  • views: WalletConfiguration: lock interface for initialized LDK Node by @kaloudis in #4296
  • chore(deps): bump @react-native-documents/picker from 11.0.3 to 12.0.2 by @dependabot[bot] in #4249
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4299
  • fix(nwc): fix lookup_invoice, list_transactions, and backend invoice lookup by @ajaysehwal in #4294
  • docs: add SECURITY.md with vulnerability disclosure policy by @kaloudis in #4310
  • fix(CLN/LND): poll lookupInvoice in the Receive payment watcher by @kaloudis in #4300
  • utils: disable REST proxy in embedded LND config by @kaloudis in #4311
  • fix(swaps): always generate an independent swap rescue key by @kaloudis in #4314
  • build: verify sha256 of FFI bindings and harden fetch-libraries.sh by @kaloudis in #4316
  • fix(vss): fail restore loudly when VSS is unreachable instead of building an empty wallet by @kaloudis in #4292
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4318
  • fix(nwc): serialize pay_invoice handling to prevent shared-store races by @kaloudis in #4303
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4320
  • fix: guard against payment double-submission in send path by @kaloudis in #4301
  • fix(nwc): count pending payments against connection spending budget by @kaloudis in #4305
  • Receive: surface real LSP Flow errors, don't fall back to unwrapped invoice by @kaloudis in #4319
  • fix(donations): verify LNURL invoice before silent donation payment by @kaloudis in #4322
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4330
  • fix(receive): use plain decimal amounts in BIP21 URIs by @kaloudis in #4324
  • fix(swaps): enforce BIP39 checksum on rescue key restore by @kaloudis in #4321
  • chore(deps): bump socket.io-parser from 4.2.6 to 4.2.7 by @dependabot[bot] in #4333
  • chore(deps): bump fast-uri from 3.1.4 to 3.1.5 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #4332
  • fix(nwc): debit budget on settled payments missing from the payments list by @kaloudis in #4334
  • fix(nwc): await signature so sign_message returns the right one by @kaloudis in #4308
  • fix: PeerItem: render stats with KeyValue to avoid Text crash by @ajaysehwal in #4315
  • fix(security): fully wipe wallet data on duress and lockout by @kaloudis in #4327
  • ui: LnurlPay: start amount empty instead of min sendable by @kaloudis in #4337
  • fix(lnc): pin Metro to app react-native over nested zeus_modules copy by @ajaysehwal in #4339
  • ui: Themes: distinguish placeholders from input text by @kaloudis in #4338
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4342
  • fix(nwc): rotate and persist client secret on relay change by @ajaysehwal in #4341
  • fix(nwc): include routing and melt fees in connection budget by @ajaysehwal in #4340
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4346
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4348
  • views: Lightning Address: push device token when notifications enabled by @kaloudis in #4349
  • fix: stop logging sensitive payment and credential material by @kaloudis in #4336
  • chore(deps): bump js-yaml from 3.15.0 to 3.15.1 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #4357
  • chore(deps): bump nanoid from 3.3.11 to 3.3.18 by @dependabot[bot] in #4359
  • fix(nwc): safe pay_invoice activity upsert and reconcile persistence by @ajaysehwal in #4343
  • chore(deps): bump js-yaml and brace-expansion to patched versions by @kaloudis in #4386
  • fix: never touch the network during a clipboard probe by @kaloudis in #4371
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4391
  • fix(nwc): enforce connection expiry on all subscribed methods by @ajaysehwal in #4360
  • fix: migrate CLN payments from deprecated pay/keysend to xpay/xkeysend by @kaloudis in #4390
  • fix(nwc): scope list_transactions and lookup_invoice to connection activity by @ajaysehwal in #4392
  • fix: Contacts: clear stale prefillContact on every AddContact exit by @kaloudis in #4405
  • ui: disable pay on zero balance, grey out disabled button icons by @kaloudis in #4404
  • Embedded LND: v0.21.2-beta-zeus by @kaloudis in #4401
  • fix: release fetchLock on every fetchData exit (stale balance until reconnect) by @kaloudis in #4398
  • Block payment of expired lightning invoices by @kaloudis in #4368
  • fix: enforce DNSSEC validation on BIP 353 BOLT 12 address resolution by @kaloudis in #4361
  • ui: NeutrinoPeers: move loading indicator into header by @kaloudis in #4408
  • fix(nwc): rate-limit make_invoice requests per connection by @ajaysehwal in #4393
  • config: new default LSP hosts: zeuslsp.com by @kaloudis in #4356
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4412
  • Swaps: retire ZEUS swap server, default to Boltz, fetch rates only in Swaps view by @kaloudis in #4399
  • fix(ldk): real UTXO confirmations in coin control, anchor reserve no longer shown as pending by @kaloudis in #4395
  • deps: Bump Cashu Dev Kit to 0.17.3: fix ecash operations against cdk-mintd 0.17 mints (Minibits) by @kaloudis in #4397
  • stores: clear stale ZEUS Pay auth cache on node switch by @kaloudis in #4415
  • fix(security): purge orphaned key material on wallet deletion and wipe by @kaloudis in #4328
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4425
  • LSPS1/LSPS7 order screens: fix cleared amount fields re-rendering as 0 and doubled background on gradient themes by @kaloudis in #4396
  • fix(nwc): keep sign_message off full-access by default by @ajaysehwal in #4411
  • Privacy: configurable mempool instance by @kaloudis in #4227
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4428
  • LSPS1: refetch service info on focus after stacked instance wipes store by @kaloudis in #4427
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4429
  • chore: bump CDK to 0.17.4; drop npubcash quote-key marker workaround by @kaloudis in #4424
  • fix(lnc): route payment results through handlePayment on every path by @kaloudis in #4331
  • fix: show errors on Zeus Pay Plus screen by @ajaysehwal in #4430
  • Cashu: probe multi-mint melt quotes only until capacity covers the payment by @kaloudis in #4369
  • fix: payment timeout races on LND REST, CLNRest, LndHub, and Tor by @kaloudis in #4306
  • views: ZeusPayPlus: route settings gear to NWC address settings by @kaloudis in #4432
  • ZEUS Pay: retire Zaplocker onboarding by @kaloudis in #4419
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4438
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4439
  • components: prevent crash rendering oversized QR payloads by @kaloudis in #4441
  • fix: don't contact an untrusted token's mint on view by @kaloudis in #4367
  • Move pull-to-refresh indicator out of the balances list by @kaloudis in #4437
  • ui: KeyValue: add copy icon and make tap copy values by @kaloudis in #4406
  • ui: Sweepremoteclosed: fix fee fetch, loading and button states by @kaloudis in #4414
  • fix(lnurl): bind paid invoice to shown metadata, amount, and safe callback by @kaloudis in #4374
  • ios: LncMobile: harden StreamingCallback against nil results by @kaloudis in #4448
  • Activity: fix crash toggling filters while a date filter is set by @kaloudis in #4447
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4452
  • views: Bolt12Address: copy + QR with Address and Offer tabs by @kaloudis in #4445
  • Warn before adding a cleartext HTTP Cashu mint by @kaloudis in #4375
  • Currency Converter: fix keyboard dismissing after every keystroke by @kaloudis in #4446
  • fix(swaps): verify reverse-swap invoice before it can be paid by @kaloudis in #4309
  • refactor: move Receive payment watchers into backend classes by @kaloudis in #4312
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4453
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4454
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4467
  • fix(nwc): stop returning the invoice as a cashu payment preimage by @kaloudis in #4463
  • views: don't gate LNURL withdraws on wallet balance by @kaloudis in #4473
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4476
  • fix(security): harden Cashu proof db at rest and on delete by @kaloudis in #4376
  • fix(cashu): describe the cashu seed by where it actually came from by @kaloudis in #4461
  • fix(nwc): mask the connection string like every other credential by @kaloudis in #4464
  • fix(swaps): stop overwriting a swap's state with an HTTP status code by @kaloudis in #4465
  • SyncStore: estimate chain tip from node headers when mempool instance is unreachable by @kaloudis in #4407
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4478
  • deps: consolidate nostr stack on nostr-tools 2.23.3 by @kaloudis in #4313
  • fix(backends): anchor the WebSocket scheme rewrite to the scheme by @kaloudis in #4466
  • fix: warn before sending node credentials over cleartext HTTP by @kaloudis in #4363
  • Require re-authentication before revealing wallet seed by @kaloudis in #4352
  • Embedded LND restore: don't wipe seed when backing out of SCB entry by @kaloudis in #4304
  • fix: encrypt node-config exports with AES-256-GCM, drop plaintext variant by @kaloudis in #4378
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4479
  • fix(security): save rescue key via system save dialog, purge legacy plaintext exports by @kaloudis in #4373
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4484
  • components: sync accessibilityState of wallet rows by @TheSeydiCharyyev in #4433
  • fix(nwc): prevent deletion race during in-flight pay_invoice by @ajaysehwal in #4443
  • fix(nwc): hold NWC budget for late-settling pays by @ajaysehwal in #4435
  • config: default LDK RGS servers to v2 endpoints by @kaloudis in #4475
  • fix: pin reviewed invoice so a swapped payment string can't be paid by @kaloudis in #4362
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4496
  • Clarify hold invoice cancellation errors by @newmattock in #4085
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4498
  • refactor: deduplicate FAILURE_REASON locale-key maps (#4490) by @ajaysehwal in #4499
  • components: extract shared swipeable wallet row shell by @TheSeydiCharyyev in #4501
  • Cashu: restore freshest Nostr mint backup, gate on stored timestamp floor by @kaloudis in #4370
  • fix(nwc): guard updateConnection against in-flight handler races by @ajaysehwal in #4500
  • backends: don't show read-only badge when LNC connection fails by @kaloudis in #4509
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4519
  • Show status for unconfirmed on-chain transactions by @kaloudis in #4459
  • ldk-node: bump to v0.7.0-zeus-rl-0.2.5 (rust-lightning v0.2.5 security fixes) by @kaloudis in #4489
  • views: NWC: show in-flight wait on delete/regenerate by @ajaysehwal in #4520
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4529
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4530
  • fix(nfc): add remaining URI schemes to NDEF_DISCOVERED filter by @kaloudis in #4517
  • lndmobile: make EGS graph reset non-destructive, repair bricked graph DBs by @kaloudis in #4528
  • chore(deps): bump react-native to 0.86.0 by @kaloudis in #4185
  • fix: validate Nostr Wallet Connect URIs before saving config by @ajaysehwal in #4153
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4535
  • chore(deps): bump browserslist from 4.23.0 to 4.28.8 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in #4539
  • chore(deps): bump browserslist from 4.28.2 to 4.28.8 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #4540
  • chore(deps): bump browserslist from 4.24.4 to 4.28.8 by @dependabot[bot] in #4541
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4543
  • chore(deps): bump the minor-and-patch group with 26 updates by @kaloudis in #4534
  • views/Send: tie send max toggle to the UTXO selection by @kaloudis in #4526
  • feat(swaps): add Coinos and SATS Routing providers, retire Eldamar Swaps by @kaloudis in #4542
  • Seed Recovery: catch seed typos client-side (aezeed checksum + word normalization) by @kaloudis in #4442
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4544
  • models: decode percent-encoded memos for display by @kaloudis in #4504
  • chore: replace deprecated InteractionManager with requestIdleCallback by @kaloudis in #4533
  • chore(deps): bump fast-uri from 3.1.5 to 3.1.7 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #4550
  • chore(deps): bump @xmldom/xmldom from 0.8.13 to 0.8.15 by @dependabot[bot] in #4551
  • chore(deps): bump qs from 6.15.3 to 6.16.0 by @dependabot[bot] in #4552
  • Embedded LND: v0.21.3-beta-zeus by @kaloudis in #4548
  • chore(deps): bump js-lnurl to 0.6.0 by @kaloudis in #4538
  • fix(cashu): hide custom amount field for zero-amount invoices by @ajaysehwal in #4547
  • fix(nwc): return RATE_LIMITED instead of UNAUTHORIZED during connection updates by @ajaysehwal in #4537
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4561
  • LNURL: surface successActions when LndHub-style backends omit payment hash or preimage by @kaloudis in #4514
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4564
  • locales: fix contradictory incorrect-payment-details error copy by @kaloudis in #4563
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4568
  • feat(nwc): allow viewing connection secret after creation by @ajaysehwal in #4565
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4570
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4571
  • chore: add .agents/skills symlink by @kaloudis in #4582
  • fix: report supportsTaproot as false for LDK Node by @kaloudis in #4584
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4586
  • docs: drop AI co-author rule from skill by @kaloudis in #4581
  • fix(security): prevent iOS swipe-back from dismissing app lock by @kaloudis in #4575
  • feat: link the local wallet FAQs from Troubleshooting and Help by @kaloudis in #4585
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4587
  • [drop-android-x86] build: drop the 32-bit x86 Android ABI by @kaloudis in #4596
  • chore(deps): bump joi, brace-expansion, body-parser to patched versions by @kaloudis in #4574
  • fix(security): confirm before fetching a scanned BTCPay config by @kaloudis in #4379
  • views: use sending capacity for payment selection by @kaloudis in #4580
  • chore(deps): bump @babel/core from 7.29.6 to 7.29.7 by @dependabot[bot] in #4606
  • chore(deps): bump punycode from 1.4.1 to 2.3.1 by @dependabot[bot] in #4602
  • chore(deps): bump object-hash and @types/object-hash by @dependabot[bot] in #4603
  • chore(deps): bump react-native-get-random-values from 1.9.0 to 2.0.0 by @dependabot[bot] in #4600
  • chore(deps): split safe minor bumps from #4599 by @kaloudis in #4611
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4595
  • chore(deps): bump svgo from 3.3.4 to 3.3.5 by @dependabot[bot] in #4616
  • chore(deps): bump joi from 17.12.1 to 17.13.7 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in #4615
  • chore(deps): bump js-yaml from 3.15.1 to 3.15.2 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #4614
  • Receive: force LSP on when creating wrapped invoice by @kaloudis in #4502
  • fix(nwc): guard overlapping same-kind connection mutations by @ajaysehwal in #4583
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4619
  • tests: add BIP39 wordlist invariants for Bip39Utils by @kunalKumar-13 in #4572
  • backends: type the CLN responses CLNRest reads by @TheSeydiCharyyev in #4618
  • tests: add BBQr split/join invariants for BbqrUtils by @kunalKumar-13 in #4621
  • [feat] build: drop the 32-bit x86 Android ABI by @kaloudis in #4597
  • views: add empty-state text to channel lists by @kaloudis in #4623
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4626
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4632
  • stores: settle superseded getNodeInfo calls instead of leaving them pending by @kaloudis in #4468
  • backends: LDK: fix settled force-closes stuck as pending by @kaloudis in #4483
  • fix(security): exclude LDK Node data from iOS backups by @kaloudis in #4380
  • build: add --low-memory and --gradle-cache flags by @kaloudis in #4573
  • fix: NaN amount when scanning a BIP21 QR from inside the Send view by @kaloudis in #4625
  • fix(cashu): omit zero-valued NUT-11 tags so P2PK tokens are redeemable by @ajaysehwal in #4628
  • fix(cashu): stop amount from being clobbered by lock-settings round trip by @ajaysehwal in #4629
  • stores: fix crash opening a channel with a missing routing policy by @kaloudis in #4592
  • fix(cashu): clear route params with replaceParams by @TheSeydiCharyyev in #4636
  • fix(security): dispose CDK handles before full-wipe database sweep by @kaloudis in #4578
  • fix(cashu): make Lock Settings Back cancel instead of dropping the lock by @ajaysehwal in #4638
  • chore(deps): bump js-yaml to patched versions by @kaloudis in #4641
  • chore(deps): bump flagged pins in the vendored lnc-rn yarn.lock by @kaloudis in #4554
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4639
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4647
  • Currency modal: dismiss dialog window before navigating to Select Currency by @kaloudis in #4455
  • Offer channel migration export when the embedded node won't start by @kaloudis in #4521
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4654
  • fix(receive): don't show LSP connection error on non-LSP receive tabs by @ajaysehwal in #4652
  • LNURL: prevent toggling payment history into an empty panel by @kaloudis in #4643
  • Receive: generate imported account addresses under the account's key scope by @kaloudis in #4518
  • Hide on-chain fee rate fields on backends that don't apply them by @kaloudis in #4661
  • fix(modalbox): clamp fontScale-scaled sheet height to the container by @kaloudis in #4667
  • fix(lsps1): hide order form and enable retry when get_info fails by @ajaysehwal in #4653
  • refactor(migrations): stamp settings blob, single write by @kaloudis in #4477
  • fix: stop syncing keychain data to iCloud, add consent-gated legacy purge by @kaloudis in #4385
  • fix(navigation): prevent swipe-back to stale onboarding screen by @ajaysehwal in #4671
  • build: iOS: raise Pods deployment target floor to RN minimum by @kaloudis in #4672
  • fix(swaps): default to SATS Routing, retire Boltz and SwapMarket by @shubhamkmr04 in #4620
  • fix(cashu): fail closed on seed recovery errors by @kaloudis in #4670
  • [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4655

New Contributors

Full Changelog: v13.1.2...v13.2.3

Verifying the Release

In order to verify the release, you'll need to have gpg or gpg2 installed on your system. Once you've obtained a copy (and hopefully verified that as well), you'll first need to import the keys that have signed this release if you haven't done so already:

gpg --keyserver hkps://keys.openpgp.org --recv-keys 96C225207F2137E278C31CF7AAC48DE8AB8DEE84

Once you have his PGP key you can verify the release (assuming manifest-v13.2.3.txt and manifest-v13.2.3.txt.sig are in the current directory) with:

gpg --verify manifest-v13.2.3.txt.sig manifest-v13.2.3.txt

You should see the following if the verification was successful:

gpg: Signature made Fri Oct  9 19:08:17 2026 EDT
gpg:                using RSA key 96C225207F2137E278C31CF7AAC48DE8AB8DEE84
gpg:                issuer "zeusln@tutanota.com"
gpg: Good signature from "Zeus LN <zeusln@tutanota.com>"
gpg:                 aka "ZEUS Support <support@zeusln.com>"
gpg:                 aka "ZEUS Security <security@zeusln.com>"

That will verify the signature on the main manifest page which ensures integrity and authenticity of the binaries you've downloaded locally. Next, depending on your operating system you should then re-calculate the sha256 sum of the binary, and compare that with the following hashes:

cat manifest-v13.2.3.txt

One can use the shasum -a 256 <file name here> tool in order to re-compute the sha256 hash of the target binary for your operating system. The produced hash should be compared with the hashes listed above and they should match exactly.

Android fingerprint

Users verifying the release on an Android device can check against the key fingerprint below using AppVerifier. This fingerprint can also be found on our website here.

SHA1: 32:06:3C:97:96:38:0D:99:EE:4A:CB:B8:1E:2A:6F:27:FD:66:8E:C1
  SHA256: 2A:F8:E2:0A:C9:44:57:67:CB:D4:4E:D8:4D:BB:FC:33:C6:C9:82:48:89:7C:4F:84:3C:42:C2:76:5C:4A:D3:BA
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3

External links

ZEUS documentation
PGP Key

Android

arm64-v8a APK
Universal APK
Manifest
Manifest Signature

Zapstore
F-Droid

Google Play

iOS

IPA

Apple App Store

Don't miss a new zeus release

NewReleases is sending notifications on new releases.