Original release notes
[!WARNING] iOS users running ZEUS on more than one device are advised to read the warning below!
v13.2.2 Highlights
- Embedded LND v0.21.3-beta
- Swaps: SATS Routing (new default) and Coinos added as providers
- iOS: automatic cleanup of stale iCloud Keychain wallet data (see note below)
- Nostr Wallet Connect: view connection secrets after creation, stricter connection string validation
- Cashu: P2PK locked token fixes
- LND: imported account receive fixes
- Seed recovery: catch typos before restoring
- Channel migration export when the node won't start
- Further security hardening measures
- Miscellaneous bug fixes
- Miscellaneous UI improvements
[!WARNING] ### iOS users running ZEUS on more than one device Due to a bug in a third-party dependency, older versions of ZEUS unintentionally stored wallet data (including seeds and connection credentials) in the iCloud-synced keychain rather than in device-only storage. iCloud Keychain is end-to-end encrypted: the data was only readable by your own trusted devices, not by Apple or anyone else, and we have no indication that any user data was exposed. It did, however, have unintended side effects, such as stale or deleted wallet data reappearing on new or restored devices signed into the same Apple ID. It also ran against our principle that seeds should never leave your device. This release moves that data into device-local storage and then automatically and permanently deletes the iCloud-synced copies. No prompt is shown. If iCloud Keychain is enabled, that deletion propagates to every device signed into the same Apple ID. The first device you open on v13.2.2 keeps a local copy of everything and then removes the iCloud copies. Any other device that has not yet been opened on v13.2.2 will lose its saved wallet configurations, because older versions kept that data only in the synced keychain and had no separate on-device copy. This applies whether that device is still on an older version or has only auto-updated in the background. Because whichever device opens first performs the cleanup, no update order avoids this. Devices with iCloud Keychain turned off are not affected. Before updating, on each device: - Make sure you have your seed phrase backed up for every embedded wallet (and your Cashu seed, if you use ecash) - Export your wallet configurations via
Menu>Tools>Export/Import Wallet ConfigurationsIf a device loses its wallets: your funds are not affected. Restore from your seed phrase, or import a wallet configuration export. The first device you opened on v13.2.2 still holds all of the data and can produce that export. Going forward, ZEUS wallet data will no longer appear automatically on new devices signed into your Apple ID. That behavior was never an intended feature, and embedded node wallets never transferred correctly through it. Single-device and Android users are not affected.
What's Changed
- chore(deps): bump react-native to 0.86.0 by @kaloudis in https://github.com/ZeusLN/zeus/pull/4185
- fix: validate Nostr Wallet Connect URIs before saving config by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4153
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4535
- chore(deps): bump browserslist from 4.23.0 to 4.28.8 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4539
- chore(deps): bump browserslist from 4.28.2 to 4.28.8 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4540
- chore(deps): bump browserslist from 4.24.4 to 4.28.8 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4541
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4543
- chore(deps): bump the minor-and-patch group with 26 updates by @kaloudis in https://github.com/ZeusLN/zeus/pull/4534
- views/Send: tie send max toggle to the UTXO selection by @kaloudis in https://github.com/ZeusLN/zeus/pull/4526
- feat(swaps): add Coinos and SATS Routing providers, retire Eldamar Swaps by @kaloudis in https://github.com/ZeusLN/zeus/pull/4542
- Seed Recovery: catch seed typos client-side (aezeed checksum + word normalization) by @kaloudis in https://github.com/ZeusLN/zeus/pull/4442
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4544
- models: decode percent-encoded memos for display by @kaloudis in https://github.com/ZeusLN/zeus/pull/4504
- chore: replace deprecated InteractionManager with requestIdleCallback by @kaloudis in https://github.com/ZeusLN/zeus/pull/4533
- chore(deps): bump fast-uri from 3.1.5 to 3.1.7 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4550
- chore(deps): bump @xmldom/xmldom from 0.8.13 to 0.8.15 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4551
- chore(deps): bump qs from 6.15.3 to 6.16.0 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4552
- Embedded LND: v0.21.3-beta-zeus by @kaloudis in https://github.com/ZeusLN/zeus/pull/4548
- chore(deps): bump js-lnurl to 0.6.0 by @kaloudis in https://github.com/ZeusLN/zeus/pull/4538
- fix(cashu): hide custom amount field for zero-amount invoices by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4547
- fix(nwc): return RATE_LIMITED instead of UNAUTHORIZED during connection updates by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4537
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4561
- LNURL: surface successActions when LndHub-style backends omit payment hash or preimage by @kaloudis in https://github.com/ZeusLN/zeus/pull/4514
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4564
- locales: fix contradictory incorrect-payment-details error copy by @kaloudis in https://github.com/ZeusLN/zeus/pull/4563
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4568
- feat(nwc): allow viewing connection secret after creation by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4565
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4570
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4571
- chore: add .agents/skills symlink by @kaloudis in https://github.com/ZeusLN/zeus/pull/4582
- fix: report supportsTaproot as false for LDK Node by @kaloudis in https://github.com/ZeusLN/zeus/pull/4584
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4586
- docs: drop AI co-author rule from skill by @kaloudis in https://github.com/ZeusLN/zeus/pull/4581
- fix(security): prevent iOS swipe-back from dismissing app lock by @kaloudis in https://github.com/ZeusLN/zeus/pull/4575
- feat: link the local wallet FAQs from Troubleshooting and Help by @kaloudis in https://github.com/ZeusLN/zeus/pull/4585
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4587
- [drop-android-x86] build: drop the 32-bit x86 Android ABI by @kaloudis in https://github.com/ZeusLN/zeus/pull/4596
- chore(deps): bump joi, brace-expansion, body-parser to patched versions by @kaloudis in https://github.com/ZeusLN/zeus/pull/4574
- fix(security): confirm before fetching a scanned BTCPay config by @kaloudis in https://github.com/ZeusLN/zeus/pull/4379
- views: use sending capacity for payment selection by @kaloudis in https://github.com/ZeusLN/zeus/pull/4580
- chore(deps): bump @babel/core from 7.29.6 to 7.29.7 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4606
- chore(deps): bump punycode from 1.4.1 to 2.3.1 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4602
- chore(deps): bump object-hash and @types/object-hash by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4603
- chore(deps): bump react-native-get-random-values from 1.9.0 to 2.0.0 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4600
- chore(deps): split safe minor bumps from #4599 by @kaloudis in https://github.com/ZeusLN/zeus/pull/4611
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4595
- chore(deps): bump svgo from 3.3.4 to 3.3.5 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4616
- chore(deps): bump joi from 17.12.1 to 17.13.7 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4615
- chore(deps): bump js-yaml from 3.15.1 to 3.15.2 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4614
- Receive: force LSP on when creating wrapped invoice by @kaloudis in https://github.com/ZeusLN/zeus/pull/4502
- fix(nwc): guard overlapping same-kind connection mutations by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4583
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4619
- tests: add BIP39 wordlist invariants for Bip39Utils by @kunalKumar-13 in https://github.com/ZeusLN/zeus/pull/4572
- backends: type the CLN responses CLNRest reads by @TheSeydiCharyyev in https://github.com/ZeusLN/zeus/pull/4618
- tests: add BBQr split/join invariants for BbqrUtils by @kunalKumar-13 in https://github.com/ZeusLN/zeus/pull/4621
- [feat] build: drop the 32-bit x86 Android ABI by @kaloudis in https://github.com/ZeusLN/zeus/pull/4597
- views: add empty-state text to channel lists by @kaloudis in https://github.com/ZeusLN/zeus/pull/4623
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4626
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4632
- stores: settle superseded getNodeInfo calls instead of leaving them pending by @kaloudis in https://github.com/ZeusLN/zeus/pull/4468
- backends: LDK: fix settled force-closes stuck as pending by @kaloudis in https://github.com/ZeusLN/zeus/pull/4483
- fix(security): exclude LDK Node data from iOS backups by @kaloudis in https://github.com/ZeusLN/zeus/pull/4380
- build: add --low-memory and --gradle-cache flags by @kaloudis in https://github.com/ZeusLN/zeus/pull/4573
- fix: NaN amount when scanning a BIP21 QR from inside the Send view by @kaloudis in https://github.com/ZeusLN/zeus/pull/4625
- fix(cashu): omit zero-valued NUT-11 tags so P2PK tokens are redeemable by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4628
- fix(cashu): stop amount from being clobbered by lock-settings round trip by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4629
- stores: fix crash opening a channel with a missing routing policy by @kaloudis in https://github.com/ZeusLN/zeus/pull/4592
- fix(cashu): clear route params with replaceParams by @TheSeydiCharyyev in https://github.com/ZeusLN/zeus/pull/4636
- fix(security): dispose CDK handles before full-wipe database sweep by @kaloudis in https://github.com/ZeusLN/zeus/pull/4578
- fix(cashu): make Lock Settings Back cancel instead of dropping the lock by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4638
- chore(deps): bump js-yaml to patched versions by @kaloudis in https://github.com/ZeusLN/zeus/pull/4641
- chore(deps): bump flagged pins in the vendored lnc-rn yarn.lock by @kaloudis in https://github.com/ZeusLN/zeus/pull/4554
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4639
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4647
- Currency modal: dismiss dialog window before navigating to Select Currency by @kaloudis in https://github.com/ZeusLN/zeus/pull/4455
- Offer channel migration export when the embedded node won't start by @kaloudis in https://github.com/ZeusLN/zeus/pull/4521
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4654
- fix(receive): don't show LSP connection error on non-LSP receive tabs by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4652
- LNURL: prevent toggling payment history into an empty panel by @kaloudis in https://github.com/ZeusLN/zeus/pull/4643
- Receive: generate imported account addresses under the account's key scope by @kaloudis in https://github.com/ZeusLN/zeus/pull/4518
- Hide on-chain fee rate fields on backends that don't apply them by @kaloudis in https://github.com/ZeusLN/zeus/pull/4661
- fix(modalbox): clamp fontScale-scaled sheet height to the container by @kaloudis in https://github.com/ZeusLN/zeus/pull/4667
- fix(lsps1): hide order form and enable retry when get_info fails by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4653
- refactor(migrations): stamp settings blob, single write by @kaloudis in https://github.com/ZeusLN/zeus/pull/4477
- fix: stop syncing keychain data to iCloud, add consent-gated legacy purge by @kaloudis in https://github.com/ZeusLN/zeus/pull/4385
- fix(navigation): prevent swipe-back to stale onboarding screen by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4671
- build: iOS: raise Pods deployment target floor to RN minimum by @kaloudis in https://github.com/ZeusLN/zeus/pull/4672
- fix(swaps): default to SATS Routing, retire Boltz and SwapMarket by @shubhamkmr04 in https://github.com/ZeusLN/zeus/pull/4620
- fix(cashu): fail closed on seed recovery errors by @kaloudis in https://github.com/ZeusLN/zeus/pull/4670
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4655
New Contributors
- @kunalKumar-13 made their first contribution in https://github.com/ZeusLN/zeus/pull/4572
Full Changelog: https://github.com/ZeusLN/zeus/compare/v13.2.1...v13.2.2-rc1
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:

