v13.0.0 Highlights:
- New 'node in the phone': LDK Node
- New onboarding process
- Embedded LND: Migrate devices with channels intact
- Cashu rewrite (better performance)
- Cashu offline mode
- Embedded LND v0.20.1-beta
- New amount input + currency selection UX
- New graduated wallet upgrade prompts
- New Lightning address payment flow
- New payment success screen
- Cashu mint reviews powered by Nostr social graph
- ZEUS Pay+ custom profile images and bios
- Android stealth mode (Settings > Privacy > Stealth mode)
- Countless UI improvements
Still to come:
- Cashu multi-mint sends
What's Changed
- feat: Mint review system with Nostr integration (NIP-87) by @kaloudis in #3576
- refactor: Animated QR shared logic by @kaloudis in #3628
- ZEUS-2447: ui: fix repeating vibrations + animations on payment success by @kaloudis in #3656
- build(deps-dev): bump webpack from 5.94.0 to 5.104.1 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #3666
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3667
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3671
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3677
- ZEUS-2923: ui: add KeyboardAvoidingView to Wallet Config view to avoid keyboard overlaps by @kaloudis in #3655
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3680
- SeedRecovery: add missing key props by @myxmaster in #3675
- ShowHideToggle: hit area expansion by @myxmaster in #3659
- fix: ensure last wallet item is fully visible in wallet list by @ajaysehwal in #3669
- fix: prevent app crash when returning from LSPS1 view by @ajaysehwal in #3673
- ui: add width to avoid pill overflow by @myxmaster in #3660
- SeedRecovery: add invalid seed word validation feedback by @myxmaster in #3674
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3686
- refactor: deduplicate invoice option calculations in
Receiveview by @kaloudis in #3586 - fix:
TextInputmultiline by @kaloudis in #3688 - ui: add Lightning address metadata to LNURL-pay flows by @kaloudis in #3657
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3690
- LND: Developer Tools: abandonchan by @kaloudis in #3417
- ui: more comprehensive Payment Success view by @kaloudis in #3682
- ui: optimize Contact address truncation by @kaloudis in #3687
- build(deps): bump qs from 6.14.1 to 6.14.2 by @dependabot[bot] in #3692
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3691
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3694
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3698
- feat(swaps): Intro modal by @a-khushal in #3546
- locales: fix typo in ZEUS Pay explainer by @myxmaster in #3706
- enhancement: QR: Add 'Open Settings' button when camera permission denied by @kaloudis in #3702
- ui: add KeyboardAvoidingView to Swaps view to avoid keyboard overlaps by @kaloudis in #3693
- fix: spurious lsps7 "peer is not connected" error on startup by @myxmaster in #3710
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3705
- docs: ZEUS Contribution + Code Review Guidelines by @kaloudis in #3662
- ui: Keypad currency toggle modal by @kaloudis in #3683
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3712
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3716
- feat: set favorites in Currency list modal by @kaloudis in #3713
- feat: show initials avatar when contact has no photo by @ajaysehwal in #3714
- refactor: Keypad Panes shared logic by @kaloudis in #3637
- fix: crash when importing invalid lndhub:// URLs from clipboard by @a-khushal in #3598
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3719
- fix(swaps): add spacing between enableLSP label and switch by @ajaysehwal in #3726
- feat: add default avatar fallback for mints without an image by @ajaysehwal in #3715
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3727
- Android: fix back button behavior after payment success screen by @myxmaster in #3697
- refactor: use Text component truncation, not substrings, for wallet names by @kaloudis in #3730
- Disable 'Add a Tip with Each Payment' feature on iOS by @kaloudis in #3729
- deps: cashu-ts -> CDK by @kaloudis in #3614
- ui: dynamic labels for security settings screen and "delete password" shortcut by @myxmaster in #3722
- feat: use Keypad Pane for AmountInput by @kaloudis in #3638
- refactor: POS by @shubhamkmr04 in #3291
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3734
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3735
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3736
- feat: Validation for lightning addresses with Unicode characters and emojis by @cherry-1729-9090 in #3733
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3744
- fix(android): remove discolored background on channel tabs by @kaloudis in #3741
- ui: fix padding above 'Save Wallet Config' button by @kaloudis in #3349
- refactor: optimize Cashu migration by @kaloudis in #3747
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3749
- fix: respect safe area in hopPicker modal on iOS by @ajaysehwal in #3738
- fix: clear keypad value after navigating to send or receive screens by @kaloudis in #3740
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3750
- fix(patches): add crypto.js export to @noble/hashes to resolve Metro warnings by @ajaysehwal in #3745
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3751
- feat: display confirmation progress for pending open channels by @myxmaster in #3718
- fix: exit app instead of navigating on IntroSplash back press by @myxmaster in #3761
- fix: respect safe area in import account view on iOS by @ajaysehwal in #3763
- deps: React Native v0.84.0 by @kaloudis in #3728
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3756
- feat: show payment amount at top and highlight balance in red when insufficient by @ajaysehwal in #3478
- chore(deps): bump minimatch from 3.1.2 to 3.1.5 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #3766
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3767
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3772
- ZEUS-3755: fix: resolve race condition in LnurlAuth by passing sign result directly to sendValues by @kaloudis in #3760
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3776
- refactor: several negative positioning/margin hacks by @myxmaster in #3775
- fix: kill existing Embedded LND process before starting a new one by @ajaysehwal in #3664
- Cashu: Enhance upgrade prompts by @kaloudis in #3684
- fix: preserve swap amounts when scanning QR codes by @shubhamkmr04 in #3612
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3778
- feat: Prompt user for app store rating by @shubhamkmr04 in #3449
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3779
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3780
- chore(deps): bump fast-xml-parser from 4.4.1 to 4.5.4 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in #3781
- chore(deps): bump fast-xml-parser from 4.5.3 to 4.5.4 by @dependabot[bot] in #3782
- deps: react-native-tor: replace legacy framework with XCFramework for Apple Silicon simulator support by @kaloudis in #3681
- chore(deps): bump svgo from 3.3.2 to 3.3.3 by @dependabot[bot] in #3786
- Speed up transaction screen: Add descriptive input label for target confirmations by @myxmaster in #3709
- ui: improve NFC icons by @kaloudis in #3704
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3787
- fix(peers): fix search bar spacing and improve peer card UI by @ajaysehwal in #3737
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3790
- fix: Cashu Invoice: interval cleanup by @kaloudis in #3620
- feat: Add random mint selection for ecash receives by @kaloudis in #3789
- ui: replace tap-to-confirm with
Alert.alertmodals across all screens by @kaloudis in #3762 - [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3800
- fix: prevent QR scanner from firing navigation twice by @kaloudis in #3658
- fix: InfoModal: only show close button on upgrade prompts, rename onClose to onDismiss by @kaloudis in #3797
- feat: Add Edit Profile screen for image and bio on ZEUS Pay+ addresses by @kaloudis in #3721
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3804
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3805
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3806
- fix: align Tools screens with theme system and add Desert theme text colors by @ajaysehwal in #3803
- ui: Hide ≈ symbol while fiat rate is loading by @myxmaster in #3808
- fix: regression in invoice error handling in InvoicesStore by @ajaysehwal in #3809
- enhancement: Change prompt to 'Enter existing PIN' when setting Duress PIN by @aryanraj45 in #3699
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3812
- fix: add loading indicator to Connect Peer flow by @a-khushal in #3785
- refactor: extract invoice expiry calculation into ExpiryUtils by @myxmaster in #3795
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3815
- fix: MultiQR carousel bounce and swipe sensitivity by @kaloudis in #3798
- feat: Android: Stealth Mode by @kaloudis in #3596
- fix: move Android service handlers off main thread to prevent ANR by @kaloudis in #3813
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3817
- feat: Add client_info to LSPS1, LSPS7, and Flow requests by @kaloudis in #3810
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3818
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3820
- fix: skip LND restart on initial wallet creation to prevent cfheaders sync interruption by @kaloudis in #3816
- feat: add swipe-to-delete for unredeemable Cashu ZEUS Pay payments by @kaloudis in #3819
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3825
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3827
- Clear stale CMake cache before gradle clean by @myxmaster in #3765
- fix: disable autocorrect, show seed words in cleartext, and use 1-based indices for invalid word errors by @kaloudis in #3832
- fix: set default max_payments limit for Embedded LND ListPayments by @kaloudis in #3829
- feat: Cashu offline sending/receiving by @kaloudis in #3742
- feat: native-stack + shared transitions by @ajaysehwal in #3759
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3841
- feat: Display NFC icon below invoice QR, when invoice is opened via Activity by @a-khushal in #3842
- fix(nwc): drop keysend support and stabilize pending event + cashu activity handling by @ajaysehwal in #3835
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3844
- fix: stuck red text on keypad input by @a-khushal in #3668
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3845
- fix: persist photo and nickname when restoring wallets by @kaloudis in #3837
- fix: prevent deep link re-triggering on app resume from background by @kaloudis in #3834
- refactor: extract shared UI components from
SendingLightningandCashuSendingLightningby @kaloudis in #3711 - ux: improve seed recovery clipboard UX and validation by @myxmaster in #3840
- fix(lnd): normalize smart quotes in error matching for folder-missing detection by @ajaysehwal in #3839
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3848
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3850
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3853
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3854
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3857
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3861
- ui: consolidate Node Info + Network Info by @kaloudis in #3858
- fix: send all funds displaying wrong fiat and BTC conversion amounts by @kaloudis in #3855
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3863
- fix: derive node identicon from stable connection fields instead of nickname by @kaloudis in #3847
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3865
- build(deps): bump socket.io-parser from 4.2.4 to 4.2.6 by @dependabot[bot] in #3866
- build(deps): bump json from 2.18.0 to 2.19.2 by @dependabot[bot] in #3867
- Use locale string substitution for store name by @myxmaster in #3860
- fix: swaps view not updating when scanning a new QR without navigatin… by @shubhamkmr04 in #3862
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3868
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3870
- fix: Cashu payment notes not showing in Activity and stale note state on success view by @kaloudis in #3856
- build(deps): bump flatted from 3.3.3 to 3.4.2 by @dependabot[bot] in #3872
- enhancement: Refresh channel data after payment sent or received by @myxmaster in #3793
- fix: register SubscribeState listener before starting stream by @ajaysehwal in #3802
- build(deps): bump activesupport from 7.2.3 to 7.2.3.1 by @dependabot[bot] in #3874
- fix: stale payment success state persisting across invoice creations by @kaloudis in #3875
- feat: iOS - Image share Intent support for QR code processing by @shubhamkmr04 in #3343
- feat: Add modal explainer for pending payment clock icon (#3601) by @a-khushal in #3619
- fix: refine status card spacing and shrink balance container during active sync by @ajaysehwal in #3880
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3883
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3884
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3888
- Activity: LND: limit to 500 txs by @kaloudis in #2771
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3889
- build(deps): bump picomatch from 2.3.1 to 2.3.2 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #3890
- build(deps): bump picomatch from 2.3.1 to 2.3.2 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in #3891
- workflows: Bump CI Node.js to v24 by @kaloudis in #3887
- build(deps): bump yaml from 2.8.2 to 2.8.3 by @dependabot[bot] in #3893
- build(deps): bump sjcl from 1.0.8 to 1.0.9 by @dependabot[bot] in #3894
- fix: CLN routing event fee display by @kaloudis in #3895
- fix: add optional chaining and error display for swap fee fetching by @kaloudis in #3892
- config: Android: 16 KB page size by @ajaysehwal in #3565
- cleanup: remove dead share intent code from LinkingUtils and ShareIntentProcessor by @kaloudis in #3877
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3897
- Export Activity to CSV: Do not overwrite files (#3594) by @a-khushal in #3599
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3899
- backend: add LDK Node by @kaloudis in #3784
- fix: display loading state and enable scrolling in RaxTxHex by @ajaysehwal in #3882
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3901
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3902
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3903
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3904
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3906
- deps: replace react-native-ping with fetch-based latency check by @kaloudis in #3907
- fix: WalletHeader animation crashes (React Native New Architecture) by @myxmaster in #3910
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3913
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3914
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3916
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3918
- feat: LDK Node: display confirmation progress for pending open channels by @myxmaster in #3917
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3922
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3923
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3926
- Embedded LND: v0.20.1-beta-zeus by @kaloudis in #3908
- feat: new onboarding process by @kaloudis in #3796
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3929
- ui: dedicated success screens for channel open & peer connect by @myxmaster in #3748
- fix: CLN closed channels - correct peer name, close tx, and close height display by @kaloudis in #3924
- chore(deps-dev): bump webpack from 5.94.0 to 5.104.1 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #3930
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3931
- fix: deprecated API warnings across Android and iOS native sources by @kaloudis in #3753
- chore(deps): bump @xmldom/xmldom from 0.8.11 to 0.8.12 by @dependabot[bot] in #3932
- fix(onboarding): skip mint discovery for self-custody in selected settings by @ajaysehwal in #3933
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3934
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3935
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3936
- Remove deprecated LND API endpoints by @shubhamkmr04 in #3928
- chore(deps): bump lodash from 4.17.23 to 4.18.1 in /zeus_modules/@lightninglabs/lnc-rn by @dependabot[bot] in #3938
- chore(deps): bump lodash from 4.17.23 to 4.18.1 in /zeus_modules/@lightninglabs/lnc-core by @dependabot[bot] in #3939
- chore(deps): bump lodash from 4.17.23 to 4.18.1 by @dependabot[bot] in #3940
- fix: clipboard icon not hiding when read-clipboard is disabled by @myxmaster in #3943
- feat: Nostr mint list backup/restore (cross-compatible with cashu.me) by @kaloudis in #3879
- feat(Channel backup): Allow users to move to other device while keep the channels intact by @shubhamkmr04 in #3606
- fix: check NFC support and enabled state before NFC operations by @myxmaster in #3821
- refactor: extract handlePaymentReceived helper in subscribeInvoice by @myxmaster in #3822
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3944
- [Transifex] Updates for project ZEUS by @transifex-integration[bot] in #3945
New Contributors
- @aryanraj45 made their first contribution in #3699
Full Changelog: v0.12.3...v13.0.0-alpha1
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.0.0-alpha1.txt and manifest-v13.0.0-alpha1.txt.sig are in the current directory) with:
gpg --verify manifest-v13.0.0-alpha1.txt.sig manifest-v13.0.0-alpha1.txt
You should see the following if the verification was successful:
gpg: Signature made Mon Apr 6 09:19:33 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>"
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.0.0-alpha1.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