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 js-yaml from 3.14.2 to 3.15.0 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4206
- deps: patch ws, js-yaml, and markdown-it security alerts by @kaloudis in https://github.com/ZeusLN/zeus/pull/4214
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4219
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4220
- docs: add Claude Code skill library under .claude/skills by @kaloudis in https://github.com/ZeusLN/zeus/pull/4209
- fix: poll status for free LSPS1/LSPS7 orders by @shubhamkmr04 in https://github.com/ZeusLN/zeus/pull/4204
- fix: display units for invoice expiry and CLTV expiry by @kaloudis in https://github.com/ZeusLN/zeus/pull/4225
- SwipeButton: lock knob in place after successful swipe by @kaloudis in https://github.com/ZeusLN/zeus/pull/4224
- fix: use TextInput suffix for fee limit percent fields by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4228
- backends: fix amountless invoice creation for LDK Node by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4232
- chore(deps): bump protobufjs from 7.6.3 to 7.6.5 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4235
- chore(deps): bump brace-expansion from 1.1.11 to 1.1.16 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4234
- chore(deps): bump brace-expansion from 5.0.6 to 5.0.7 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4236
- [feat] LND v0.21-beta by @kaloudis in https://github.com/ZeusLN/zeus/pull/4177
- Receive: surface Flow LSP proposal rejection as dismissable warning by @kaloudis in https://github.com/ZeusLN/zeus/pull/4233
- chore(deps): bump shell-quote from 1.8.4 to 1.10.0 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4237
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4238
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4240
- fix: deep links handled twice with 'Select wallet on start-up' by @kaloudis in https://github.com/ZeusLN/zeus/pull/4226
- stores: prevent stale closeChannel error from wiping channel list by @kaloudis in https://github.com/ZeusLN/zeus/pull/4230
- chore(deps): bump fast-uri from 3.1.2 to 3.1.4 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4241
- chore(deps): bump svgo from 3.3.3 to 3.3.4 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4242
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4243
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4244
- ci: add Dependabot config for npm and GitHub Actions version updates by @kaloudis in https://github.com/ZeusLN/zeus/pull/4215
- chore(deps): bump @babel/preset-env from 7.22.15 to 7.29.7 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4256
- chore(deps): bump mobx from 5.15.3 to 5.15.7 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4253
- ci: bump actions/setup-node from 6 to 7 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4245
- ci: bump actions/checkout from 6 to 7 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4246
- fix: prevent Security settings UI flash on open by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4239
- chore(deps): bump events from 1.1.1 to 3.3.0 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4248
- chore(deps): bump concurrently from 9.1.2 to 10.0.3 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4251
- chore(deps): bump protobufjs-cli from 1.3.3 to 2.0.0 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4252
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4259
- chore(deps): bump 47 minor and patch dependencies (slimmed #4247) by @kaloudis in https://github.com/ZeusLN/zeus/pull/4260
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4263
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4264
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4265
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4266
- chore(deps): bump json from 2.19.2 to 2.19.9 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4267
- chore(deps): bump valibot from 1.2.0 to 1.4.2 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4268
- chore(deps): migrate lnc-rn from deprecated tslint to eslint v9 by @kaloudis in https://github.com/ZeusLN/zeus/pull/4271
- chore(deps): clear Dependabot alerts on transitive dependencies by @kaloudis in https://github.com/ZeusLN/zeus/pull/4274
- chore(deps): bump protobufjs to v8 + protobufjs-cli 2.5.1, regenerate bindings by @kaloudis in https://github.com/ZeusLN/zeus/pull/4262
- build: fix vendored lnc-rn bob build + add mocha test suite by @kaloudis in https://github.com/ZeusLN/zeus/pull/4275
- LDK: Add support for 24 word seed phrases by @shubhamkmr04 in https://github.com/ZeusLN/zeus/pull/4212
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4282
- [feat] fix(LNC): route register callbacks through events to avoid new-arch crash by @kaloudis in https://github.com/ZeusLN/zeus/pull/4205
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4283
- build: run prettier on generated proto types after gen-proto by @kaloudis in https://github.com/ZeusLN/zeus/pull/4284
- deps: fix shell-quote DoS, clean up minimatch pins by @kaloudis in https://github.com/ZeusLN/zeus/pull/4281
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4290
- fix(CLN): include unpaid invoices in Activity by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4291
- fix: show the correct seed when backing up an inactive wallet by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4280
- Lockscreen: prevent duress wipe in security management flows by @kaloudis in https://github.com/ZeusLN/zeus/pull/4293
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4295
- views: WalletConfiguration: lock interface for initialized LDK Node by @kaloudis in https://github.com/ZeusLN/zeus/pull/4296
- chore(deps): bump @react-native-documents/picker from 11.0.3 to 12.0.2 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4249
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4299
- fix(nwc): fix lookup_invoice, list_transactions, and backend invoice lookup by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4294
- docs: add SECURITY.md with vulnerability disclosure policy by @kaloudis in https://github.com/ZeusLN/zeus/pull/4310
- fix(CLN/LND): poll lookupInvoice in the Receive payment watcher by @kaloudis in https://github.com/ZeusLN/zeus/pull/4300
- utils: disable REST proxy in embedded LND config by @kaloudis in https://github.com/ZeusLN/zeus/pull/4311
- fix(swaps): always generate an independent swap rescue key by @kaloudis in https://github.com/ZeusLN/zeus/pull/4314
- build: verify sha256 of FFI bindings and harden fetch-libraries.sh by @kaloudis in https://github.com/ZeusLN/zeus/pull/4316
- fix(vss): fail restore loudly when VSS is unreachable instead of building an empty wallet by @kaloudis in https://github.com/ZeusLN/zeus/pull/4292
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4318
- fix(nwc): serialize pay_invoice handling to prevent shared-store races by @kaloudis in https://github.com/ZeusLN/zeus/pull/4303
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4320
- fix: guard against payment double-submission in send path by @kaloudis in https://github.com/ZeusLN/zeus/pull/4301
- fix(nwc): count pending payments against connection spending budget by @kaloudis in https://github.com/ZeusLN/zeus/pull/4305
- Receive: surface real LSP Flow errors, don't fall back to unwrapped invoice by @kaloudis in https://github.com/ZeusLN/zeus/pull/4319
- fix(donations): verify LNURL invoice before silent donation payment by @kaloudis in https://github.com/ZeusLN/zeus/pull/4322
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4330
- fix(receive): use plain decimal amounts in BIP21 URIs by @kaloudis in https://github.com/ZeusLN/zeus/pull/4324
- fix(swaps): enforce BIP39 checksum on rescue key restore by @kaloudis in https://github.com/ZeusLN/zeus/pull/4321
- chore(deps): bump socket.io-parser from 4.2.6 to 4.2.7 by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4333
- chore(deps): bump fast-uri from 3.1.4 to 3.1.5 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in https://github.com/ZeusLN/zeus/pull/4332
- fix(nwc): debit budget on settled payments missing from the payments list by @kaloudis in https://github.com/ZeusLN/zeus/pull/4334
- fix(nwc): await signature so sign_message returns the right one by @kaloudis in https://github.com/ZeusLN/zeus/pull/4308
- fix: PeerItem: render stats with KeyValue to avoid Text crash by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4315
- fix(security): fully wipe wallet data on duress and lockout by @kaloudis in https://github.com/ZeusLN/zeus/pull/4327
- ui: LnurlPay: start amount empty instead of min sendable by @kaloudis in https://github.com/ZeusLN/zeus/pull/4337
- fix(lnc): pin Metro to app react-native over nested zeus_modules copy by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4339
- ui: Themes: distinguish placeholders from input text by @kaloudis in https://github.com/ZeusLN/zeus/pull/4338
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4342
- fix(nwc): rotate and persist client secret on relay change by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4341
- fix(nwc): include routing and melt fees in connection budget by @ajaysehwal in https://github.com/ZeusLN/zeus/pull/4340
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4346
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in https://github.com/ZeusLN/zeus/pull/4348
- views: Lightning Address: push device token when notifications enabled by @kaloudis in https://github.com/ZeusLN/zeus/pull/4349
- fix: stop logging sensitive payment and credential material by @kaloudis in https://github.com/ZeusLN/zeus/pull/4336

