v13.2.4 Highlights:
- Embedded LND v0.21.5-beta
- LDK Node v0.7.1
- CDK v0.18.2
- Further security hardening measures
- Miscellaneous bug fixes
- Miscellaneous UI improvements
Special thanks
We're grateful to have received code and security scans from the following teams and individuals:
- Bitcoin Red Team
- Anthropic
- Felipe Knorr Kuhn
- MrHodl
- Renato Garda
- Agli Chandra
Thank you for helping us fortify ZEUS.
What's Changed
- 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
- 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
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4812
- fix(swaps): re-derive the preimage when rescuing reverse swaps by @kaloudis in #4460
- GraphSyncPromptModal: use whole strings for button labels by @myxmaster in #4820
- fix: disable Open Channel button on missing or invalid input by @myxmaster in #4811
- Embedded LND: v0.21.4-beta-zeus by @kaloudis in #4813
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4823
- fix(android): keep inputs and buttons above the keyboard by @kaloudis in #4807
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4824
- tests: cover LND wallet password generation by @kaloudis in #4825
- fix(deps): replace react-native-securerandom with react-native-get-random-values by @a-khushal in #4099
- build: remove stale RNSecureRandom pod lock by @kaloudis in #4826
- stores: remove no-op BalanceStore settings reaction by @myxmaster in #4815
- views: always prefill the fixed LNURL amount by @TheSeydiCharyyev in #4723
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4830
- stores: BalanceStore: clear error after a successful fetch by @myxmaster in #4831
- lint: add rule against negative layout offsets by @myxmaster in #4817
- views: label fixed-amount LNURL-pay requests by @TheSeydiCharyyev in #4832
- views: validate LnurlPay params before using them by @TheSeydiCharyyev in #4833
- stores: BalanceStore: only reset the failed fetch's loading flag by @myxmaster in #4834
- Don't arm the Wallet settings refresh for writes that don't need a refetch by @myxmaster in #4837
- views: OpenChannel, Send: fix fund max amount handling by @myxmaster in #4836
- fix(pos): store per-item order tax in cents, add PosStore tests by @shubhamkmr04 in #4706
- ldk-node: bump to v0.7.0-zeus-rl-0.2.7 (rust-lightning v0.2.7 security fixes) by @kaloudis in #4822
- views: reject LnurlPay requests with minSendable 0 by @TheSeydiCharyyev in #4843
- fix(stealth): keep decoy screens clear of the navigation bar by @kaloudis in #4806
- fix(LNC): reconnect reliably after restart and wallet switch by @kaloudis in #4481
- fix(security): authenticate share intents on the POS cold start by @kaloudis in #4713
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4849
- stores: ChannelsStore: require a host in connectPeer by @myxmaster in #4847
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4853
- docs(security): use security@zeusln.com for vulnerability reports by @kaloudis in #4854
- fix: name and show the real LSPS1 peer on Open Channel by @shubhamkmr04 in #4718
- CLNRest: report pending channel opens as pending_open_balance by @kaloudis in #4743
- ConnectivityStore: clear offline state when monitoring stops by @myxmaster in #4851
- fix(pos): copy total_tax_money when re-saving a standalone order by @shubhamkmr04 in #4858
- chore(deps): bump the minor-and-patch group with 7 updates by @dependabot[bot] in #4859
- ThemeUtils: align upgrade tint ramp with getUpgradeIntensity by @kaloudis in #4709
- chore(deps): bump react-native-view-shot from 5.1.1 to 6.1.0 by @dependabot[bot] in #4860
- Apply the user's routing fee limit to LDK BOLT 12 payments by @kaloudis in #4353
- chore(deps): bump source-map-js from 1.2.1 to 1.2.2 by @dependabot[bot] in #4872
- chore(deps): bump joi from 17.13.7 to 17.13.8 by @dependabot[bot] in #4874
- chore(deps): bump joi from 17.13.7 to 17.13.8 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in #4873
- chore(deps): bump compression from 1.8.1 to 1.8.2 by @dependabot[bot] in #4871
- chore(deps): bump shell-quote from 1.10.0 to 1.12.0 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in #4870
- chore(deps): resolve shell-quote to 1.12.0 (GHSA-pqg4-j6r4-53mv) by @kaloudis in #4879
- chore(deps): bump compression from 1.7.4 to 1.8.2 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in #4869
- chore(deps): bump bs58check from 2.1.2 to 4.0.0 by @dependabot[bot] in #4868
- chore(deps): bump @scure/bip39 from 1.6.0 to 2.4.0 by @dependabot[bot] in #4863
- fix(pos): stop adding tax on top of the Square recon total by @shubhamkmr04 in #4857
- docs: PR template: fix typo, heading levels and test question by @myxmaster in #4885
- chore(deps): bump bip32 from 3.0.1 to 5.0.1 by @dependabot[bot] in #4864
- deps: bump pbkdf2 resolution to 3.1.7 by @kaloudis in #4884
- chore(deps): bump @react-native-community/datetimepicker from 8.5.1 to 9.2.1 by @dependabot[bot] in #4862
- chore(deps): bump @react-native-vector-icons/feather from 12.4.0 to 13.1.4 by @dependabot[bot] in #4867
- utils: show tb1 addresses for CLN on signet by @TheSeydiCharyyev in #4855
- Don't read clipboard on launch when clipboard reading is off by @kaloudis in #4856
- views: OpenChannel, ChannelsSettings: hide min confs on LDK Node, load a saved 0 by @kaloudis in #4841
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4895
- fix(pos): restore the header on the POS connection error screen by @kaloudis in #4699
- fix(pos): quote recon export fields so formatted rates stay in one column by @shubhamkmr04 in #4892
- skills: document channel min confs and functional settings updates by @kaloudis in #4901
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4900
- docs: note that PP Neue Montreal and Marlide Display are commercial by @kaloudis in #4906
- fix(utils): keep CSV export cells from being run as spreadsheet formulas by @shubhamkmr04 in #4896
- ci: run gates on PRs into slash-named branches and set least-privilege permissions by @kaloudis in #4928
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4931
- skills: refresh test counts in zeus-validation-and-qa by @kaloudis in #4930
- skills: replace stale zero-test-coverage claims by @kaloudis in #4934
- Swaps: fix reverse swap claim from the creation screen by @kaloudis in #4893
- fix(pos): show the full sale date on order rows by @kaloudis in #4746
- themes: remove retired themes from the picker by @kaloudis in #4768
- fix: preset wallet pictures not saving on Android release builds by @kaloudis in #4708
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4941
- Settings: merge group writes inside the queue, drop write locks by @kaloudis in #4904
- Embedded LND: v0.21.4-beta-zeus.1 by @kaloudis in #4950
- Alerts: drop the zombie channel count warning by @kaloudis in #4953
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4954
- oss-scanner: add build image and threat model by @kaloudis in #4955
- tests: use fake timers in NodeInfoStore and DateTimeUtils tests by @kaloudis in #4926
- Swaps: verify reverse swap lockup before claiming by @kaloudis in #4894
- Swaps: fall back to an uncooperative refund when the host won't co-sign by @kaloudis in #4942
- fix(bolt12): require offer review before paying on LDK Node by @kaloudis in #4365
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4958
- Embedded LND: recreate missing channel edges on SQLite nodes by @kaloudis in #4814
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4959
- CashuStore: start with an empty mint list by @kaloudis in #4907
- Wallet: bind refresh to the selected wallet on every backend, and LNC RPC dispatch by @kaloudis in #4962
- LNC: move streaming call listeners into the backend by @kaloudis in #4516
- EmbeddedLND: read sat_sent and sat_recv from listPeers by @kaloudis in #4923
- LndHub: stop stale host and session token reaching the wrong server by @kaloudis in #4979
- Block channel opens on wallets without channel management by @myxmaster in #5000
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #5009
- Channel: show CSV delay on every backend that reports it by @kaloudis in #4747
- fix: refresh lightning balance when opening Send and PaymentRequest by @ajaysehwal in #4897
- Activity: extract ActivityListItem into its own component by @kaloudis in #4769
- backends: skip reserved outputs in CLN balance by @TheSeydiCharyyev in #4998
- stores: ChannelsStore: refresh channels and balances after a close attempt by @myxmaster in #4978
- test: cover moment call sites after the 2.31.0 bump by @kaloudis in #4797
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #5012
- eslint: forbid focused and disabled jest tests by @kaloudis in #4927
- tests: InvoicesStore: assert store state after getNewAddress by @kaloudis in #4992
- tests: make handleAnything assertions able to fail and cover gated routes by @kaloudis in #4925
- tests: backends: cover LND request core, error fallback and timeout race by @kaloudis in #4987
- tests: lndmobile: assert decoded requests and responses for channel commands by @kaloudis in #4991
- tests: DataClearUtils: cover per-step failures during data clear by @kaloudis in #4990
- eslint: flag themeColor inside module-level StyleSheet.create by @kaloudis in #4929
- tests: MigrationUtils: cover storage and cloud-sync migration failure paths by @kaloudis in #4989
- tests: backends: cover CLNRest request core and JSON-RPC error fallback by @kaloudis in #4988
- tests: count untested source files in coverage by @kaloudis in #5027
- tests: backends: cover NostrWalletConnect requests, results and flags by @kaloudis in #5026
- tests: Bolt11Utils: cover every decode throw branch by @kaloudis in #5025
- tests: use the real ErrorUtils in store and view tests by @kaloudis in #5034
- tests: cover v13.2.3 changes found untested in the release review by @kaloudis in #5020
- tests: share LocaleUtils, Stores and react-native-fs mocks by @kaloudis in #5040
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #5041
- tests: CashuStore: cover multi-mint planning, payment and selection by @kaloudis in #5043
- tests: CashuStore: cover minting, quote checks and online token sends by @kaloudis in #5048
- tests: move view tests to React Native Testing Library by @kaloudis in #5053
- ci: post Telegram notifications to the GitHub Notifications topic by @kaloudis in #5055
- tests: NostrWalletConnectStore: mock collaborators, not the store itself by @kaloudis in #5054
- build: bump CashuDevKit (CDK) to 0.18.1 by @kaloudis in #4588
- tests: mount the settings view tests with RNTL by @kaloudis in #5056
- tests: WalletConfiguration: mount with RNTL and check the saved node by @kaloudis in #5057
- tests: mount the swap refund and QR scanner tests with RNTL by @kaloudis in #5058
- tests: SwapDetails: mount with RNTL and drive the swap WebSocket by @kaloudis in #5059
- tests: mount WalletHeader, NostrContacts and LightningSwipeableRow with RNTL by @kaloudis in #5061
- tests: mount PaymentRequest, SendingLightning and ChoosePaymentMethod with RNTL by @kaloudis in #5062
- tests: mount Bolt12OfferReview and LnurlPay with RNTL by @kaloudis in #5064
- tests: Send: mount with RNTL by @kaloudis in #5065
- tests: OpenChannel: mount with RNTL by @kaloudis in #5066
- Tests: Amount, AmountInput and KeypadAmountDisplay components by @kaloudis in #5068
- Tests: CurrencyConverterContent component by @kaloudis in #5072
- Tests: FeeLimit and FeeBreakdown components by @kaloudis in #5073
- Tests: UTXOPicker component by @kaloudis in #5074
- Tests: LayerBalances and PaymentMethodList components by @kaloudis in #5075
- Tests: PinPad component by @kaloudis in #5076
- ZEUS Pay: remove Zaplocker address code by @kaloudis in #4933
- backends: skip reserved CLN outputs in getUTXOs by @TheSeydiCharyyev in #5011
- backends: widen the reserved comment in CLN getBalance by @TheSeydiCharyyev in #5080
- Tests: LightningAddressStore auth, status, redeem and account flows by @kaloudis in #5082
- backends: NostrWalletConnect: send the payment hash to lookup_invoice by @kaloudis in #5030
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #5083
- fix(fees): reject implausible on-chain fee rates before they can spend by @kaloudis in #4462
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #5088
- Activity: label embedded LND pending transactions unconfirmed by @kaloudis in #5016
- skills: recount tests in zeus-validation-and-qa by @kaloudis in #5091
- Display: add date format, time format and seconds settings by @kaloudis in #4951
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #5103
- models: Channel: format short channel ids without bolt07 by @kaloudis in #4880
- chore(deps): bump @babel/preset-typescript from 7.22.15 to 7.29.7 by @dependabot[bot] in #5098
- build: remove unused compressing devDependency by @kaloudis in #5109
- chore(deps): bump the minor-and-patch group across 1 directory with 15 updates by @dependabot[bot] in #5110
- chore(deps): bump react-native-url-polyfill from 2.0.0 to 4.0.0 by @dependabot[bot] in #5097
- fix(bbqr): import pako's deflate and inflate as named exports by @kaloudis in #5114
- chore(deps): bump pako and @types/pako by @dependabot[bot] in #5099
- BalancePane: show the seed backup reminder again by @myxmaster in https://github.com/ZeusLN/zeus/pull/5086
- chore(deps): bump bignumber.js from 9.0.2 to 11.1.5 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5096
- stores: NostrWalletConnect: pay zero-amount invoices with the request by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/5106
- Receive: compare paid amounts against the sat amount by @kaloudis in https://github.com/ZeusLN/zeus/pull/4922
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5122
- LndHub: disable channel and address-signing flags inherited from LND by @kaloudis in https://github.com/ZeusLN/zeus/pull/4924
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5123
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5145
- Wallet: halt fetchData when LNC connection fails by @kaloudis in https://github.com/ZeusLN/zeus/pull/4510
- ZEUS-2365: classify pending and failed payments from CLN, LDK Node and NWC by @kaloudis in https://github.com/ZeusLN/zeus/pull/4513
- CashuInvoice: do not report failed CDK transactions as paid by @kaloudis in https://github.com/ZeusLN/zeus/pull/4920
- Transaction: show confirmations row for embedded LND pending transactions by @kaloudis in https://github.com/ZeusLN/zeus/pull/5089
- feat(nwc): explain why a budget is required by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/5081
- components: use localized placeholder for manual on-chain fee input by @aswin-dev-debug in https://github.com/ZeusLN/zeus/pull/5108
- Tools: withdrawal request: pass sats to the backend by @kaloudis in https://github.com/ZeusLN/zeus/pull/5124
- Wallet: keep startup going when the Flow LSP is unreachable by @kaloudis in https://github.com/ZeusLN/zeus/pull/4782
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5149
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5153
- stores: FiatStore: don't fetch rates from the constructor by @kaloudis in https://github.com/ZeusLN/zeus/pull/5151
- utils: AddressUtils: rewrite four validator regexes by @kaloudis in https://github.com/ZeusLN/zeus/pull/5169
- stores: SettingsStore: keep a blank LDK Node scorer URL by @kaloudis in https://github.com/ZeusLN/zeus/pull/5154
- stores: ChannelsStore: stop a batch open when psbt_verify fails by @kaloudis in https://github.com/ZeusLN/zeus/pull/5157
- stores: SweepStore: check the key's network and the swept amount by @kaloudis in https://github.com/ZeusLN/zeus/pull/5160
- utils: handleAnything: tighten two merchant QR regexes by @kaloudis in https://github.com/ZeusLN/zeus/pull/5161
- utils: DataClearUtils: clear cookies and notifications by @kaloudis in https://github.com/ZeusLN/zeus/pull/5163
- views: WalletConfiguration: mask the LNC keys and the import banner by @kaloudis in https://github.com/ZeusLN/zeus/pull/5165
- views: WalletConfiguration: pass Use Tor to the custodial LndHub create by @kaloudis in https://github.com/ZeusLN/zeus/pull/5168
- utils: handleAnything: recognize a PSBT before LNURL by @kaloudis in https://github.com/ZeusLN/zeus/pull/5175
- utils: encode the username in the LUD-16 lnurlp URL by @kaloudis in https://github.com/ZeusLN/zeus/pull/5187
- utils: NostrUtils: skip NIP-05 lookups for .onion hosts by @kaloudis in https://github.com/ZeusLN/zeus/pull/5188
- stores: UnitsStore: store sats when fiat is turned off by @kaloudis in https://github.com/ZeusLN/zeus/pull/5232
- models: BaseModel: only stringify values with their own toString by @kaloudis in https://github.com/ZeusLN/zeus/pull/5221
- utils: DataClearUtils: purge xprv cache saved without a pubkey by @kaloudis in https://github.com/ZeusLN/zeus/pull/5176
- views: WalletConfiguration: keep LNC keys a wallet copy still uses by @kaloudis in https://github.com/ZeusLN/zeus/pull/5177
- utils: LinkingUtils: replace a focused screen on a deep link by @kaloudis in https://github.com/ZeusLN/zeus/pull/5235
- models: Payment: read the LndHub fee in getFee by @kaloudis in https://github.com/ZeusLN/zeus/pull/5228
- utils: KeychainPurgeUtils: purge retired cashu seed and xprv cache by @kaloudis in https://github.com/ZeusLN/zeus/pull/5183
- views: Bolt12OfferReview: refuse a fee limit that is not a number by @kaloudis in https://github.com/ZeusLN/zeus/pull/5202
- stores: SettingsStore: new connection generation on target change by @kaloudis in https://github.com/ZeusLN/zeus/pull/5213
- utils: ClinkUtils: refuse onion relays by parsed hostname by @kaloudis in https://github.com/ZeusLN/zeus/pull/5211
- backends: LND: don't parse a missing response when a socket closes by @kaloudis in https://github.com/ZeusLN/zeus/pull/5178
- stores: FiatStore: keep only well-formed rows from the ZEUS rates host by @kaloudis in https://github.com/ZeusLN/zeus/pull/5227
- views: SendingLightning: show the LNURL recipient only for its payment by @kaloudis in https://github.com/ZeusLN/zeus/pull/5222
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5250
- stores: LnurlPayStore: key hash-less metadata by its own hash by @kaloudis in https://github.com/ZeusLN/zeus/pull/5200
- views: LnurlPay: pay the checked invoice in the ecash flow by @kaloudis in https://github.com/ZeusLN/zeus/pull/5217
- stores: TransactionsStore: send batches with selected UTXOs via fundPsbt by @kaloudis in https://github.com/ZeusLN/zeus/pull/5210
- views: LnurlPay: Metadata: ignore metadata that is not LUD-06 by @kaloudis in https://github.com/ZeusLN/zeus/pull/5207
- utils: ClinkUtils: read the invoice amount from millisatoshis by @kaloudis in https://github.com/ZeusLN/zeus/pull/5215
- views: Receive: watch the address generated on a tab switch by @kaloudis in https://github.com/ZeusLN/zeus/pull/5224
- utils: handleAnything: say when a private key is for another network by @kaloudis in https://github.com/ZeusLN/zeus/pull/5251
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5259
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5262
- utils: BackgroundLockUtils: check the 60 s limit on a monotonic clock by @kaloudis in https://github.com/ZeusLN/zeus/pull/5152
- cashu-cdk: let CDK select the proofs for meltPartial by @kaloudis in https://github.com/ZeusLN/zeus/pull/5204
- cashu-cdk: clamp the total balance sum in the native modules by @kaloudis in https://github.com/ZeusLN/zeus/pull/5196
- backends: LdkNode: range-check invoice amount and expiry by @kaloudis in https://github.com/ZeusLN/zeus/pull/5233
- NWC: check expiry against the current time, and delete a wallet's connections with the wallet by @kaloudis in https://github.com/ZeusLN/zeus/pull/5144
- ios: LdkNodeModule: reject out-of-range channel and on-chain amounts by @kaloudis in https://github.com/ZeusLN/zeus/pull/5263
- backends: LdkNode: list a preimage only for succeeded payments by @kaloudis in https://github.com/ZeusLN/zeus/pull/5171
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5264
- utils: DataClearUtils: clear POS order records and sweep the iOS keychain by @kaloudis in https://github.com/ZeusLN/zeus/pull/5265
- utils: DataClearUtils: delete node directories of removed wallets by @kaloudis in https://github.com/ZeusLN/zeus/pull/5266
- backends: LdkNode: don't pay an offer twice while a payment is pending by @kaloudis in https://github.com/ZeusLN/zeus/pull/5268
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5272
- Cashu: melt only the quote of the invoice the caller loaded by @kaloudis in https://github.com/ZeusLN/zeus/pull/5137
- models: BaseModel: skip "proto" when copying fields by @kaloudis in https://github.com/ZeusLN/zeus/pull/5127
- Swaps: strip /v2 from the swap host before native claim and refund calls by @shubhamkmr04 in https://github.com/ZeusLN/zeus/pull/4944
- Track in-flight payments to a terminal state before releasing the send guard by @kaloudis in https://github.com/ZeusLN/zeus/pull/4492
- NostrWalletConnect: reserve the fee cap against the budget, keep unlisted holds for the HTLC lifetime by @kaloudis in https://github.com/ZeusLN/zeus/pull/5138
- views: contacts: show NIP-05 with the Nostrich icon by @kaloudis in https://github.com/ZeusLN/zeus/pull/5180
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5276
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5277
- Swaps: floor reverse swaps created before the amount check at their invoice by @shubhamkmr04 in https://github.com/ZeusLN/zeus/pull/5010
- NostrWalletConnect: take pay_invoice result from its own payment by @kaloudis in https://github.com/ZeusLN/zeus/pull/5136
- cashu: count the donation in the funds check by @TheSeydiCharyyev in https://github.com/ZeusLN/zeus/pull/4555
- chore(deps): bump @scure/base from 1.1.6 to 2.4.0 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5281
- Swaps: broadcast claims and refunds from the app, and recover settled claims by @kaloudis in https://github.com/ZeusLN/zeus/pull/4949
- fix(cashu): don't report unpaid melts as success by @kaloudis in https://github.com/ZeusLN/zeus/pull/4696
- utils: handleAnything: drop photo and banner from zeuscontact cards by @kaloudis in https://github.com/ZeusLN/zeus/pull/5194
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5292
- chore(deps): bump @react-native-community/netinfo from 11.4.1 to 12.0.1 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5280
- chore(deps): bump stream-browserify from 1.0.0 to 3.0.0 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5279
- chore(deps): bump @rneui/base and @rneui/themed by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5282
- feat(recovery): group orphaned data by key and restore one copy each by @kunalKumar-13 in https://github.com/ZeusLN/zeus/pull/4774
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5298
- deps: bump @getalby/sdk from 8.0.3 to 8.1.1 by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/5296
- fix(lndmobile): correlate payment events by payment hash by @kaloudis in https://github.com/ZeusLN/zeus/pull/4351
- chore(deps): bump launch-editor from 2.14.1 to 2.14.2 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5301
- deps: bump markdown-it from 14.3.1 to 14.3.3 by @kaloudis in https://github.com/ZeusLN/zeus/pull/5303
- CashuStore: confirm self-custody melts paid our invoice before reporting success by @kaloudis in https://github.com/ZeusLN/zeus/pull/5140
- build(ios): unbreak the Bundler path and guard the Xcodeproj version by @kaloudis in https://github.com/ZeusLN/zeus/pull/4693
- chore(deps): bump pod-install from 0.1.38 to 1.2.1 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5283
- build(ios): require activesupport 7.2.3.1 or later by @kaloudis in https://github.com/ZeusLN/zeus/pull/5304
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5305
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5327
- LSP: price invoices with their own fee quote, and confirm the fee before an LNURL-withdraw by @kaloudis in https://github.com/ZeusLN/zeus/pull/5142
- Swaps: check what spent a settled reverse lockup, and retry a stored claim by @kaloudis in https://github.com/ZeusLN/zeus/pull/5288
- stores: only swap the settings reference when the stored blob changed by @kaloudis in https://github.com/ZeusLN/zeus/pull/4594
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5391
- stores: NWC: record pay_invoice when the payments refresh fails by @kaloudis in https://github.com/ZeusLN/zeus/pull/5389
- Payments: treat an lnd payment in flight as pending, and match the deciding attempt by @kaloudis in https://github.com/ZeusLN/zeus/pull/5135
- POS: require the PIN for every screen outside the POS views by @kaloudis in https://github.com/ZeusLN/zeus/pull/5143
- swaps: tighten the reverse swap on-chain amount check by @kaloudis in https://github.com/ZeusLN/zeus/pull/5139
- swaps: claim reverse swaps on the script path and decide the claim fee at creation by @kaloudis in https://github.com/ZeusLN/zeus/pull/5126
- swaps: verify submarine swap response before saving by @kaloudis in https://github.com/ZeusLN/zeus/pull/5125
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5402
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5403
- WalletConfiguration: read the enableTor route param by @kaloudis in https://github.com/ZeusLN/zeus/pull/5132
- LSPS7: surface extendable-channels fetch errors, show maxed-out leases by @kaloudis in https://github.com/ZeusLN/zeus/pull/4567
- stores: LSPStore: validate the LSPS7 extendable_channels list by @kaloudis in https://github.com/ZeusLN/zeus/pull/5197
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5407
- views: send the donation after a payment at most once by @kaloudis in https://github.com/ZeusLN/zeus/pull/5291
- Lockscreen: finish interrupted wipes and save each attempt before checking it by @kaloudis in https://github.com/ZeusLN/zeus/pull/5141
- lndmobile: listPayments: request the newest payments by default by @kaloudis in https://github.com/ZeusLN/zeus/pull/5130
- utils: match lnd on duplicate BOLT11 singleton tags by @kaloudis in https://github.com/ZeusLN/zeus/pull/4631
- ChannelsPane: redraw lease badges when lease data or block height changes by @kaloudis in https://github.com/ZeusLN/zeus/pull/5408
- Tools: reach wallet config recovery from the intro screen by @kaloudis in https://github.com/ZeusLN/zeus/pull/5412
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5411
- patches: make iOS keychain overwrites atomic by @kaloudis in https://github.com/ZeusLN/zeus/pull/5413
- build: revert pod-install to 0.1.38 to fix Xcode Cloud by @kaloudis in https://github.com/ZeusLN/zeus/pull/5416
- chore(deps): bump fast-uri from 3.1.7 to 3.1.9 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5418
- android: MobileTools: consume the NFC tag when reading it by @kaloudis in https://github.com/ZeusLN/zeus/pull/5184
- android: remove unused LndMobileTools intent methods by @kaloudis in https://github.com/ZeusLN/zeus/pull/5326
- MigrationUtils: remove no-op legacy Cashu key migration by @kaloudis in https://github.com/ZeusLN/zeus/pull/5390
- build: remove unused vendored UR modules by @kaloudis in https://github.com/ZeusLN/zeus/pull/5325
- views: Wallet: retry instead of restarting from the error screen by @myxmaster in https://github.com/ZeusLN/zeus/pull/4883
- deps: lnc-rn: bump serialize-javascript from 7.0.5 to 7.1.4 by @kaloudis in https://github.com/ZeusLN/zeus/pull/5422
- skills: correct funds and wipe facts (LSP, swaps, LNURL, duress) by @kaloudis in https://github.com/ZeusLN/zeus/pull/5423
- skills: teach versioned settings migrations (SETTINGS_VERSION) by @kaloudis in https://github.com/ZeusLN/zeus/pull/5424
- skills: re-verify stale facts against master 3dc9f83 by @kaloudis in https://github.com/ZeusLN/zeus/pull/5425
- stores: NWC make_invoice returns its own invoice by @kaloudis in https://github.com/ZeusLN/zeus/pull/5316
- views: Receive: NFC withdraw for the amount on screen, only while open by @kaloudis in https://github.com/ZeusLN/zeus/pull/5234
- views: Receive: show the LSP fee the shown invoice was priced with by @kaloudis in https://github.com/ZeusLN/zeus/pull/5431
- stores: ChannelBackupStore: handle failed backups server responses by @kaloudis in https://github.com/ZeusLN/zeus/pull/5447
- Pass the configured payment timeout to keysend by @kaloudis in https://github.com/ZeusLN/zeus/pull/4355
- fix(migration): verify a migrated key by comparing the read-back by @kunalKumar-13 in https://github.com/ZeusLN/zeus/pull/4736
- fix(recovery): verify a restore by comparing the read-back, not its truthiness by @kunalKumar-13 in https://github.com/ZeusLN/zeus/pull/4712
- NodeInfo: treat testnet4 nodes as testnet by @kaloudis in https://github.com/ZeusLN/zeus/pull/4908
- fix: display units for Cashu payment request expiry and CLTV expiry by @kaloudis in https://github.com/ZeusLN/zeus/pull/4512
- App: end the login session when a new App root mounts by @kaloudis in https://github.com/ZeusLN/zeus/pull/5199
- UrlUtils: use signet mempool API and explorer paths on signet nodes by @kaloudis in https://github.com/ZeusLN/zeus/pull/4910
- Round percent fee limits up to whole sats by @kaloudis in https://github.com/ZeusLN/zeus/pull/4850
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5448
- backends: CLNRest: drop failed Tor requests from the call cache by @kaloudis in https://github.com/ZeusLN/zeus/pull/4993
- locales: use single locale strings for fixed word order labels by @aswin-dev-debug in https://github.com/ZeusLN/zeus/pull/5446
- LDK Node: don't show the success screen for a pending keysend by @kaloudis in https://github.com/ZeusLN/zeus/pull/4980
- views: ActivityFilter: keep the End Date row's right inset by @kaloudis in https://github.com/ZeusLN/zeus/pull/4886
- FeeStore: let the unfiltered forwarding history retry run by @kaloudis in https://github.com/ZeusLN/zeus/pull/4921
- views: WalletConfiguration: clear stale credentials on lndconnect import by @kaloudis in https://github.com/ZeusLN/zeus/pull/5128
- LSPStore: log the custom-message socket error reason by @kaloudis in https://github.com/ZeusLN/zeus/pull/5115
- locales: fee limit explainer: describe the action, not the view by @TheSeydiCharyyev in https://github.com/ZeusLN/zeus/pull/5443
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5451
- backends: CLNRest: throw the JSON-RPC error message from restReq by @kaloudis in https://github.com/ZeusLN/zeus/pull/4995
- LND: fetch the newest on-chain transactions, not the oldest by @kaloudis in https://github.com/ZeusLN/zeus/pull/4770
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5455
- swaps: distrust persisted claim authority on imported swaps by @kaloudis in https://github.com/ZeusLN/zeus/pull/4960
- fix: hand each shared image to one reader by @kaloudis in https://github.com/ZeusLN/zeus/pull/4744
- Cashu: record the quote id meltPartial paid each MPP part with by @kaloudis in https://github.com/ZeusLN/zeus/pull/5052
- Receive: round the BIP21 on-chain amount up to whole sats by @kaloudis in https://github.com/ZeusLN/zeus/pull/5409
- android: MainActivity: drop the launch intent when re-created by @kaloudis in https://github.com/ZeusLN/zeus/pull/5193
- Fee limits: keep a 0 sat limit as a cap, and cap LDK Node keysend fees by default by @kaloudis in https://github.com/ZeusLN/zeus/pull/5134
- views: Send: load the default fee percentage for keysend by @kaloudis in https://github.com/ZeusLN/zeus/pull/5179
- stores: keep only expected fields of swap creation responses by @kaloudis in https://github.com/ZeusLN/zeus/pull/5334
- Cashu: don't consume tokens before the self-custody sweep is ready by @kaloudis in https://github.com/ZeusLN/zeus/pull/4488
- Embedded LND: v0.21.5-beta.rc1-zeus by @kaloudis in https://github.com/ZeusLN/zeus/pull/5461
- Sends: don't offer a retry for on-chain sends that may have gone out by @kaloudis in https://github.com/ZeusLN/zeus/pull/4961
- views: LSPS1, LSPS7: show 0 confirmation counts instead of a bare 0 by @TheSeydiCharyyev in https://github.com/ZeusLN/zeus/pull/5419
- tests: LinkingUtils: cover handleInitialUrl by @kaloudis in https://github.com/ZeusLN/zeus/pull/5464
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5471
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5473
- tests: check that translations keep en.json placeholders by @kaloudis in https://github.com/ZeusLN/zeus/pull/5470
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5475
- fix(cashu): iOS crash on wallet switch from CDK database teardown by @kaloudis in https://github.com/ZeusLN/zeus/pull/5453
- LDK Node: v0.7.1-zeus by @kaloudis in https://github.com/ZeusLN/zeus/pull/5476
- Embedded LND: v0.21.5-beta-zeus by @kaloudis in https://github.com/ZeusLN/zeus/pull/5474
- build: bump CashuDevKit (CDK) to 0.18.2 by @kaloudis in https://github.com/ZeusLN/zeus/pull/5481
- iOS: only run the first-run keychain clear with protected data by @kaloudis in https://github.com/ZeusLN/zeus/pull/5414
New Contributors
- @newmattock made their first contribution in #4085
- @kunalKumar-13 made their first contribution in #4572
Full Changelog: v13.1.2...v13.2.4
What's Changed
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #4959
- CashuStore: start with an empty mint list by @kaloudis in #4907
- Wallet: bind refresh to the selected wallet on every backend, and LNC RPC dispatch by @kaloudis in #4962
- LNC: move streaming call listeners into the backend by @kaloudis in #4516
- EmbeddedLND: read sat_sent and sat_recv from listPeers by @kaloudis in #4923
- LndHub: stop stale host and session token reaching the wrong server by @kaloudis in #4979
- Block channel opens on wallets without channel management by @myxmaster in #5000
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #5009
- Channel: show CSV delay on every backend that reports it by @kaloudis in #4747
- fix: refresh lightning balance when opening Send and PaymentRequest by @ajaysehwal in #4897
- Activity: extract ActivityListItem into its own component by @kaloudis in #4769
- backends: skip reserved outputs in CLN balance by @TheSeydiCharyyev in #4998
- stores: ChannelsStore: refresh channels and balances after a close attempt by @myxmaster in #4978
- test: cover moment call sites after the 2.31.0 bump by @kaloudis in #4797
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #5012
- eslint: forbid focused and disabled jest tests by @kaloudis in #4927
- tests: InvoicesStore: assert store state after getNewAddress by @kaloudis in #4992
- tests: make handleAnything assertions able to fail and cover gated routes by @kaloudis in #4925
- tests: backends: cover LND request core, error fallback and timeout race by @kaloudis in #4987
- tests: lndmobile: assert decoded requests and responses for channel commands by @kaloudis in #4991
- tests: DataClearUtils: cover per-step failures during data clear by @kaloudis in #4990
- eslint: flag themeColor inside module-level StyleSheet.create by @kaloudis in #4929
- tests: MigrationUtils: cover storage and cloud-sync migration failure paths by @kaloudis in #4989
- tests: backends: cover CLNRest request core and JSON-RPC error fallback by @kaloudis in #4988
- tests: count untested source files in coverage by @kaloudis in #5027
- tests: backends: cover NostrWalletConnect requests, results and flags by @kaloudis in #5026
- tests: Bolt11Utils: cover every decode throw branch by @kaloudis in #5025
- tests: use the real ErrorUtils in store and view tests by @kaloudis in #5034
- tests: cover v13.2.3 changes found untested in the release review by @kaloudis in #5020
- tests: share LocaleUtils, Stores and react-native-fs mocks by @kaloudis in #5040
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #5041
- tests: CashuStore: cover multi-mint planning, payment and selection by @kaloudis in #5043
- tests: CashuStore: cover minting, quote checks and online token sends by @kaloudis in #5048
- tests: move view tests to React Native Testing Library by @kaloudis in #5053
- ci: post Telegram notifications to the GitHub Notifications topic by @kaloudis in #5055
- tests: NostrWalletConnectStore: mock collaborators, not the store itself by @kaloudis in #5054
- build: bump CashuDevKit (CDK) to 0.18.1 by @kaloudis in #4588
- tests: mount the settings view tests with RNTL by @kaloudis in #5056
- tests: WalletConfiguration: mount with RNTL and check the saved node by @kaloudis in #5057
- tests: mount the swap refund and QR scanner tests with RNTL by @kaloudis in #5058
- tests: SwapDetails: mount with RNTL and drive the swap WebSocket by @kaloudis in #5059
- tests: mount WalletHeader, NostrContacts and LightningSwipeableRow with RNTL by @kaloudis in #5061
- tests: mount PaymentRequest, SendingLightning and ChoosePaymentMethod with RNTL by @kaloudis in #5062
- tests: mount Bolt12OfferReview and LnurlPay with RNTL by @kaloudis in #5064
- tests: Send: mount with RNTL by @kaloudis in #5065
- tests: OpenChannel: mount with RNTL by @kaloudis in #5066
- Tests: Amount, AmountInput and KeypadAmountDisplay components by @kaloudis in #5068
- Tests: CurrencyConverterContent component by @kaloudis in #5072
- Tests: FeeLimit and FeeBreakdown components by @kaloudis in #5073
- Tests: UTXOPicker component by @kaloudis in #5074
- Tests: LayerBalances and PaymentMethodList components by @kaloudis in #5075
- Tests: PinPad component by @kaloudis in #5076
- ZEUS Pay: remove Zaplocker address code by @kaloudis in #4933
- backends: skip reserved CLN outputs in getUTXOs by @TheSeydiCharyyev in #5011
- backends: widen the reserved comment in CLN getBalance by @TheSeydiCharyyev in #5080
- Tests: LightningAddressStore auth, status, redeem and account flows by @kaloudis in #5082
- backends: NostrWalletConnect: send the payment hash to lookup_invoice by @kaloudis in #5030
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #5083
- fix(fees): reject implausible on-chain fee rates before they can spend by @kaloudis in #4462
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #5088
- Activity: label embedded LND pending transactions unconfirmed by @kaloudis in #5016
- skills: recount tests in zeus-validation-and-qa by @kaloudis in #5091
- Display: add date format, time format and seconds settings by @kaloudis in #4951
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #5103
- models: Channel: format short channel ids without bolt07 by @kaloudis in #4880
- chore(deps): bump @babel/preset-typescript from 7.22.15 to 7.29.7 by @dependabot[bot] in #5098
- build: remove unused compressing devDependency by @kaloudis in #5109
- chore(deps): bump the minor-and-patch group across 1 directory with 15 updates by @dependabot[bot] in #5110
- chore(deps): bump react-native-url-polyfill from 2.0.0 to 4.0.0 by @dependabot[bot] in #5097
- fix(bbqr): import pako's deflate and inflate as named exports by @kaloudis in #5114
- chore(deps): bump pako and @types/pako by @dependabot[bot] in #5099
- BalancePane: show the seed backup reminder again by @myxmaster in https://github.com/ZeusLN/zeus/pull/5086
- chore(deps): bump bignumber.js from 9.0.2 to 11.1.5 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5096
- stores: NostrWalletConnect: pay zero-amount invoices with the request by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/5106
- Receive: compare paid amounts against the sat amount by @kaloudis in https://github.com/ZeusLN/zeus/pull/4922
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5122
- LndHub: disable channel and address-signing flags inherited from LND by @kaloudis in https://github.com/ZeusLN/zeus/pull/4924
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5123
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5145
- Wallet: halt fetchData when LNC connection fails by @kaloudis in https://github.com/ZeusLN/zeus/pull/4510
- ZEUS-2365: classify pending and failed payments from CLN, LDK Node and NWC by @kaloudis in https://github.com/ZeusLN/zeus/pull/4513
- CashuInvoice: do not report failed CDK transactions as paid by @kaloudis in https://github.com/ZeusLN/zeus/pull/4920
- Transaction: show confirmations row for embedded LND pending transactions by @kaloudis in https://github.com/ZeusLN/zeus/pull/5089
- feat(nwc): explain why a budget is required by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/5081
- components: use localized placeholder for manual on-chain fee input by @aswin-dev-debug in https://github.com/ZeusLN/zeus/pull/5108
- Tools: withdrawal request: pass sats to the backend by @kaloudis in https://github.com/ZeusLN/zeus/pull/5124
- Wallet: keep startup going when the Flow LSP is unreachable by @kaloudis in https://github.com/ZeusLN/zeus/pull/4782
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5149
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5153
- stores: FiatStore: don't fetch rates from the constructor by @kaloudis in https://github.com/ZeusLN/zeus/pull/5151
- utils: AddressUtils: rewrite four validator regexes by @kaloudis in https://github.com/ZeusLN/zeus/pull/5169
- stores: SettingsStore: keep a blank LDK Node scorer URL by @kaloudis in https://github.com/ZeusLN/zeus/pull/5154
- stores: ChannelsStore: stop a batch open when psbt_verify fails by @kaloudis in https://github.com/ZeusLN/zeus/pull/5157
- stores: SweepStore: check the key's network and the swept amount by @kaloudis in https://github.com/ZeusLN/zeus/pull/5160
- utils: handleAnything: tighten two merchant QR regexes by @kaloudis in https://github.com/ZeusLN/zeus/pull/5161
- utils: DataClearUtils: clear cookies and notifications by @kaloudis in https://github.com/ZeusLN/zeus/pull/5163
- views: WalletConfiguration: mask the LNC keys and the import banner by @kaloudis in https://github.com/ZeusLN/zeus/pull/5165
- views: WalletConfiguration: pass Use Tor to the custodial LndHub create by @kaloudis in https://github.com/ZeusLN/zeus/pull/5168
- utils: handleAnything: recognize a PSBT before LNURL by @kaloudis in https://github.com/ZeusLN/zeus/pull/5175
- utils: encode the username in the LUD-16 lnurlp URL by @kaloudis in https://github.com/ZeusLN/zeus/pull/5187
- utils: NostrUtils: skip NIP-05 lookups for .onion hosts by @kaloudis in https://github.com/ZeusLN/zeus/pull/5188
- stores: UnitsStore: store sats when fiat is turned off by @kaloudis in https://github.com/ZeusLN/zeus/pull/5232
- models: BaseModel: only stringify values with their own toString by @kaloudis in https://github.com/ZeusLN/zeus/pull/5221
- utils: DataClearUtils: purge xprv cache saved without a pubkey by @kaloudis in https://github.com/ZeusLN/zeus/pull/5176
- views: WalletConfiguration: keep LNC keys a wallet copy still uses by @kaloudis in https://github.com/ZeusLN/zeus/pull/5177
- utils: LinkingUtils: replace a focused screen on a deep link by @kaloudis in https://github.com/ZeusLN/zeus/pull/5235
- models: Payment: read the LndHub fee in getFee by @kaloudis in https://github.com/ZeusLN/zeus/pull/5228
- utils: KeychainPurgeUtils: purge retired cashu seed and xprv cache by @kaloudis in https://github.com/ZeusLN/zeus/pull/5183
- views: Bolt12OfferReview: refuse a fee limit that is not a number by @kaloudis in https://github.com/ZeusLN/zeus/pull/5202
- stores: SettingsStore: new connection generation on target change by @kaloudis in https://github.com/ZeusLN/zeus/pull/5213
- utils: ClinkUtils: refuse onion relays by parsed hostname by @kaloudis in https://github.com/ZeusLN/zeus/pull/5211
- backends: LND: don't parse a missing response when a socket closes by @kaloudis in https://github.com/ZeusLN/zeus/pull/5178
- stores: FiatStore: keep only well-formed rows from the ZEUS rates host by @kaloudis in https://github.com/ZeusLN/zeus/pull/5227
- views: SendingLightning: show the LNURL recipient only for its payment by @kaloudis in https://github.com/ZeusLN/zeus/pull/5222
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5250
- stores: LnurlPayStore: key hash-less metadata by its own hash by @kaloudis in https://github.com/ZeusLN/zeus/pull/5200
- views: LnurlPay: pay the checked invoice in the ecash flow by @kaloudis in https://github.com/ZeusLN/zeus/pull/5217
- stores: TransactionsStore: send batches with selected UTXOs via fundPsbt by @kaloudis in https://github.com/ZeusLN/zeus/pull/5210
- views: LnurlPay: Metadata: ignore metadata that is not LUD-06 by @kaloudis in https://github.com/ZeusLN/zeus/pull/5207
- utils: ClinkUtils: read the invoice amount from millisatoshis by @kaloudis in https://github.com/ZeusLN/zeus/pull/5215
- views: Receive: watch the address generated on a tab switch by @kaloudis in https://github.com/ZeusLN/zeus/pull/5224
- utils: handleAnything: say when a private key is for another network by @kaloudis in https://github.com/ZeusLN/zeus/pull/5251
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5259
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5262
- utils: BackgroundLockUtils: check the 60 s limit on a monotonic clock by @kaloudis in https://github.com/ZeusLN/zeus/pull/5152
- cashu-cdk: let CDK select the proofs for meltPartial by @kaloudis in https://github.com/ZeusLN/zeus/pull/5204
- cashu-cdk: clamp the total balance sum in the native modules by @kaloudis in https://github.com/ZeusLN/zeus/pull/5196
- backends: LdkNode: range-check invoice amount and expiry by @kaloudis in https://github.com/ZeusLN/zeus/pull/5233
- NWC: check expiry against the current time, and delete a wallet's connections with the wallet by @kaloudis in https://github.com/ZeusLN/zeus/pull/5144
- ios: LdkNodeModule: reject out-of-range channel and on-chain amounts by @kaloudis in https://github.com/ZeusLN/zeus/pull/5263
- backends: LdkNode: list a preimage only for succeeded payments by @kaloudis in https://github.com/ZeusLN/zeus/pull/5171
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5264
- utils: DataClearUtils: clear POS order records and sweep the iOS keychain by @kaloudis in https://github.com/ZeusLN/zeus/pull/5265
- utils: DataClearUtils: delete node directories of removed wallets by @kaloudis in https://github.com/ZeusLN/zeus/pull/5266
- backends: LdkNode: don't pay an offer twice while a payment is pending by @kaloudis in https://github.com/ZeusLN/zeus/pull/5268
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5272
- Cashu: melt only the quote of the invoice the caller loaded by @kaloudis in https://github.com/ZeusLN/zeus/pull/5137
- models: BaseModel: skip "proto" when copying fields by @kaloudis in https://github.com/ZeusLN/zeus/pull/5127
- Swaps: strip /v2 from the swap host before native claim and refund calls by @shubhamkmr04 in https://github.com/ZeusLN/zeus/pull/4944
- Track in-flight payments to a terminal state before releasing the send guard by @kaloudis in https://github.com/ZeusLN/zeus/pull/4492
- NostrWalletConnect: reserve the fee cap against the budget, keep unlisted holds for the HTLC lifetime by @kaloudis in https://github.com/ZeusLN/zeus/pull/5138
- views: contacts: show NIP-05 with the Nostrich icon by @kaloudis in https://github.com/ZeusLN/zeus/pull/5180
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5276
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5277
- Swaps: floor reverse swaps created before the amount check at their invoice by @shubhamkmr04 in https://github.com/ZeusLN/zeus/pull/5010
- NostrWalletConnect: take pay_invoice result from its own payment by @kaloudis in https://github.com/ZeusLN/zeus/pull/5136
- cashu: count the donation in the funds check by @TheSeydiCharyyev in https://github.com/ZeusLN/zeus/pull/4555
- chore(deps): bump @scure/base from 1.1.6 to 2.4.0 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5281
- Swaps: broadcast claims and refunds from the app, and recover settled claims by @kaloudis in https://github.com/ZeusLN/zeus/pull/4949
- fix(cashu): don't report unpaid melts as success by @kaloudis in https://github.com/ZeusLN/zeus/pull/4696
- utils: handleAnything: drop photo and banner from zeuscontact cards by @kaloudis in https://github.com/ZeusLN/zeus/pull/5194
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5292
- chore(deps): bump @react-native-community/netinfo from 11.4.1 to 12.0.1 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5280
- chore(deps): bump stream-browserify from 1.0.0 to 3.0.0 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5279
- chore(deps): bump @rneui/base and @rneui/themed by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5282
- feat(recovery): group orphaned data by key and restore one copy each by @kunalKumar-13 in https://github.com/ZeusLN/zeus/pull/4774
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5298
- deps: bump @getalby/sdk from 8.0.3 to 8.1.1 by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/5296
- fix(lndmobile): correlate payment events by payment hash by @kaloudis in https://github.com/ZeusLN/zeus/pull/4351
- chore(deps): bump launch-editor from 2.14.1 to 2.14.2 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5301
- deps: bump markdown-it from 14.3.1 to 14.3.3 by @kaloudis in https://github.com/ZeusLN/zeus/pull/5303
- CashuStore: confirm self-custody melts paid our invoice before reporting success by @kaloudis in https://github.com/ZeusLN/zeus/pull/5140
- build(ios): unbreak the Bundler path and guard the Xcodeproj version by @kaloudis in https://github.com/ZeusLN/zeus/pull/4693
- chore(deps): bump pod-install from 0.1.38 to 1.2.1 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5283
- build(ios): require activesupport 7.2.3.1 or later by @kaloudis in https://github.com/ZeusLN/zeus/pull/5304
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5305
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5327
- LSP: price invoices with their own fee quote, and confirm the fee before an LNURL-withdraw by @kaloudis in https://github.com/ZeusLN/zeus/pull/5142
- Swaps: check what spent a settled reverse lockup, and retry a stored claim by @kaloudis in https://github.com/ZeusLN/zeus/pull/5288
- stores: only swap the settings reference when the stored blob changed by @kaloudis in https://github.com/ZeusLN/zeus/pull/4594
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5391
- stores: NWC: record pay_invoice when the payments refresh fails by @kaloudis in https://github.com/ZeusLN/zeus/pull/5389
- Payments: treat an lnd payment in flight as pending, and match the deciding attempt by @kaloudis in https://github.com/ZeusLN/zeus/pull/5135
- POS: require the PIN for every screen outside the POS views by @kaloudis in https://github.com/ZeusLN/zeus/pull/5143
- swaps: tighten the reverse swap on-chain amount check by @kaloudis in https://github.com/ZeusLN/zeus/pull/5139
- swaps: claim reverse swaps on the script path and decide the claim fee at creation by @kaloudis in https://github.com/ZeusLN/zeus/pull/5126
- swaps: verify submarine swap response before saving by @kaloudis in https://github.com/ZeusLN/zeus/pull/5125
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5402
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5403
- WalletConfiguration: read the enableTor route param by @kaloudis in https://github.com/ZeusLN/zeus/pull/5132
- LSPS7: surface extendable-channels fetch errors, show maxed-out leases by @kaloudis in https://github.com/ZeusLN/zeus/pull/4567
- stores: LSPStore: validate the LSPS7 extendable_channels list by @kaloudis in https://github.com/ZeusLN/zeus/pull/5197
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5407
- views: send the donation after a payment at most once by @kaloudis in https://github.com/ZeusLN/zeus/pull/5291
- Lockscreen: finish interrupted wipes and save each attempt before checking it by @kaloudis in https://github.com/ZeusLN/zeus/pull/5141
- lndmobile: listPayments: request the newest payments by default by @kaloudis in https://github.com/ZeusLN/zeus/pull/5130
- utils: match lnd on duplicate BOLT11 singleton tags by @kaloudis in https://github.com/ZeusLN/zeus/pull/4631
- ChannelsPane: redraw lease badges when lease data or block height changes by @kaloudis in https://github.com/ZeusLN/zeus/pull/5408
- Tools: reach wallet config recovery from the intro screen by @kaloudis in https://github.com/ZeusLN/zeus/pull/5412
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5411
- patches: make iOS keychain overwrites atomic by @kaloudis in https://github.com/ZeusLN/zeus/pull/5413
- build: revert pod-install to 0.1.38 to fix Xcode Cloud by @kaloudis in https://github.com/ZeusLN/zeus/pull/5416
- chore(deps): bump fast-uri from 3.1.7 to 3.1.9 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/5418
- android: MobileTools: consume the NFC tag when reading it by @kaloudis in https://github.com/ZeusLN/zeus/pull/5184
- android: remove unused LndMobileTools intent methods by @kaloudis in https://github.com/ZeusLN/zeus/pull/5326
- MigrationUtils: remove no-op legacy Cashu key migration by @kaloudis in https://github.com/ZeusLN/zeus/pull/5390
- build: remove unused vendored UR modules by @kaloudis in https://github.com/ZeusLN/zeus/pull/5325
- views: Wallet: retry instead of restarting from the error screen by @myxmaster in https://github.com/ZeusLN/zeus/pull/4883
- deps: lnc-rn: bump serialize-javascript from 7.0.5 to 7.1.4 by @kaloudis in https://github.com/ZeusLN/zeus/pull/5422
- skills: correct funds and wipe facts (LSP, swaps, LNURL, duress) by @kaloudis in https://github.com/ZeusLN/zeus/pull/5423
- skills: teach versioned settings migrations (SETTINGS_VERSION) by @kaloudis in https://github.com/ZeusLN/zeus/pull/5424
- skills: re-verify stale facts against master 3dc9f83 by @kaloudis in https://github.com/ZeusLN/zeus/pull/5425
- stores: NWC make_invoice returns its own invoice by @kaloudis in https://github.com/ZeusLN/zeus/pull/5316
- views: Receive: NFC withdraw for the amount on screen, only while open by @kaloudis in https://github.com/ZeusLN/zeus/pull/5234
- views: Receive: show the LSP fee the shown invoice was priced with by @kaloudis in https://github.com/ZeusLN/zeus/pull/5431
- stores: ChannelBackupStore: handle failed backups server responses by @kaloudis in https://github.com/ZeusLN/zeus/pull/5447
- Pass the configured payment timeout to keysend by @kaloudis in https://github.com/ZeusLN/zeus/pull/4355
- fix(migration): verify a migrated key by comparing the read-back by @kunalKumar-13 in https://github.com/ZeusLN/zeus/pull/4736
- fix(recovery): verify a restore by comparing the read-back, not its truthiness by @kunalKumar-13 in https://github.com/ZeusLN/zeus/pull/4712
- NodeInfo: treat testnet4 nodes as testnet by @kaloudis in https://github.com/ZeusLN/zeus/pull/4908
- fix: display units for Cashu payment request expiry and CLTV expiry by @kaloudis in https://github.com/ZeusLN/zeus/pull/4512
- App: end the login session when a new App root mounts by @kaloudis in https://github.com/ZeusLN/zeus/pull/5199
- UrlUtils: use signet mempool API and explorer paths on signet nodes by @kaloudis in https://github.com/ZeusLN/zeus/pull/4910
- Round percent fee limits up to whole sats by @kaloudis in https://github.com/ZeusLN/zeus/pull/4850
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5448
- backends: CLNRest: drop failed Tor requests from the call cache by @kaloudis in https://github.com/ZeusLN/zeus/pull/4993
- locales: use single locale strings for fixed word order labels by @aswin-dev-debug in https://github.com/ZeusLN/zeus/pull/5446
- LDK Node: don't show the success screen for a pending keysend by @kaloudis in https://github.com/ZeusLN/zeus/pull/4980
- views: ActivityFilter: keep the End Date row's right inset by @kaloudis in https://github.com/ZeusLN/zeus/pull/4886
- FeeStore: let the unfiltered forwarding history retry run by @kaloudis in https://github.com/ZeusLN/zeus/pull/4921
- views: WalletConfiguration: clear stale credentials on lndconnect import by @kaloudis in https://github.com/ZeusLN/zeus/pull/5128
- LSPStore: log the custom-message socket error reason by @kaloudis in https://github.com/ZeusLN/zeus/pull/5115
- locales: fee limit explainer: describe the action, not the view by @TheSeydiCharyyev in https://github.com/ZeusLN/zeus/pull/5443
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5451
- backends: CLNRest: throw the JSON-RPC error message from restReq by @kaloudis in https://github.com/ZeusLN/zeus/pull/4995
- LND: fetch the newest on-chain transactions, not the oldest by @kaloudis in https://github.com/ZeusLN/zeus/pull/4770
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5455
- swaps: distrust persisted claim authority on imported swaps by @kaloudis in https://github.com/ZeusLN/zeus/pull/4960
- fix: hand each shared image to one reader by @kaloudis in https://github.com/ZeusLN/zeus/pull/4744
- Cashu: record the quote id meltPartial paid each MPP part with by @kaloudis in https://github.com/ZeusLN/zeus/pull/5052
- Receive: round the BIP21 on-chain amount up to whole sats by @kaloudis in https://github.com/ZeusLN/zeus/pull/5409
- android: MainActivity: drop the launch intent when re-created by @kaloudis in https://github.com/ZeusLN/zeus/pull/5193
- Fee limits: keep a 0 sat limit as a cap, and cap LDK Node keysend fees by default by @kaloudis in https://github.com/ZeusLN/zeus/pull/5134
- views: Send: load the default fee percentage for keysend by @kaloudis in https://github.com/ZeusLN/zeus/pull/5179
- stores: keep only expected fields of swap creation responses by @kaloudis in https://github.com/ZeusLN/zeus/pull/5334
- Cashu: don't consume tokens before the self-custody sweep is ready by @kaloudis in https://github.com/ZeusLN/zeus/pull/4488
- Embedded LND: v0.21.5-beta.rc1-zeus by @kaloudis in https://github.com/ZeusLN/zeus/pull/5461
- Sends: don't offer a retry for on-chain sends that may have gone out by @kaloudis in https://github.com/ZeusLN/zeus/pull/4961
- views: LSPS1, LSPS7: show 0 confirmation counts instead of a bare 0 by @TheSeydiCharyyev in https://github.com/ZeusLN/zeus/pull/5419
- tests: LinkingUtils: cover handleInitialUrl by @kaloudis in https://github.com/ZeusLN/zeus/pull/5464
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5471
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5473
- tests: check that translations keep en.json placeholders by @kaloudis in https://github.com/ZeusLN/zeus/pull/5470
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/5475
- fix(cashu): iOS crash on wallet switch from CDK database teardown by @kaloudis in https://github.com/ZeusLN/zeus/pull/5453
- LDK Node: v0.7.1-zeus by @kaloudis in https://github.com/ZeusLN/zeus/pull/5476
- Embedded LND: v0.21.5-beta-zeus by @kaloudis in https://github.com/ZeusLN/zeus/pull/5474
- build: bump CashuDevKit (CDK) to 0.18.2 by @kaloudis in https://github.com/ZeusLN/zeus/pull/5481
- iOS: only run the first-run keychain clear with protected data by @kaloudis in https://github.com/ZeusLN/zeus/pull/5414
Full Changelog: v13.2.3...v13.2.4
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.4.txt and manifest-v13.2.4.txt.sig are in the current directory) with:
gpg --verify manifest-v13.2.4.txt.sig manifest-v13.2.4.txt
You should see the following if the verification was successful:
gpg: Signature made Wed Oct 28 09:31:04 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.4.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
Android
arm64-v8a APK
Universal APK
Manifest
Manifest Signature