Original release notes
Nutshell 0.21.0
[!CAUTION] This release includes database migrations for the mint and mint authentication databases. Ensure you back up your databases before upgrading your Nutshell instance to avoid data loss.
Nutshell 0.21.0 brings security hardening, Lightning backend improvements, wallet fixes, and the retirement of deprecated integrations and APIs.
Compatibility Notes
- Removed Lightning backends:
BlinkWallet,LNbitsWallet, and the deprecatedCoreLightningRestWallet. Operators using these must switch to a supported backend before upgrading. Core Lightning users should useCLNRestWalletwithxpayavailable. - Removed legacy API support: deprecated mint endpoints and wallet compatibility fallbacks for older mint responses have been retired. Integrations should use the current
/v1API.
Notable Changes
Mint
- LND self-payments: optional support through
MINT_LND_ALLOW_SELF_PAYMENT, disabled by default, for both REST and gRPC backends. - LND invoice compatibility: fixes for millisatoshi invoice creation and sub-satoshi rounding, plus clearer errors for unsupported partial self-payments.
- Core Lightning:
CLNRestWalletnow usesxpayfor outgoing payments. - NUT-06 request limits:
/v1/infonow advertisesmax_array_length, allowing wallets to size requests before submitting them. - Standardized error codes: aligned with the Cashu specifications, including error
12002for inactive output keysets. - Spark: updated the Breez SDK dependency.
Wallet
- Named wallets: receiving tokens and listing wallets now consistently use the correct wallet name and database.
- CLI invoice handling: unpaid invoices are no longer reported as paid, and waiting for WebSocket payment notifications is bounded.
- Lightning change: blank change outputs now use amount
0for NUT-08 compatibility. - npub.cash: correctly recognizes already-issued quotes using the updated mint error code.
Other
- Added scheduled mutation testing and expanded Lightning, Spark, mint, wallet, and authentication integration tests.
- Removed obsolete regtest tooling and standardized LF line endings.
New Contributors
- @orangeshyguy21
- @SatsAndSports
- @Hardeezah
Full Changelog: https://github.com/cashubtc/nutshell/compare/0.20.3...0.21.0
What's Changed
- chore: remove dead regtest tooling by @orangeshyguy21 in https://github.com/cashubtc/nutshell/pull/1098
- feat: update nut29 test vector with uuidv7 by @KvngMikey in https://github.com/cashubtc/nutshell/pull/1099
- add SECURITY.md by @callebtc in https://github.com/cashubtc/nutshell/pull/1102
- fix(wallet): pass wallet name when constructing mint_wallet on receive paths by @KvngMikey in https://github.com/cashubtc/nutshell/pull/1089
- Refactor: use central constants for method and subscription kind strings by @KvngMikey in https://github.com/cashubtc/nutshell/pull/1101
- fix(mint): validate blinded output points by @a1denvalu3 in https://github.com/cashubtc/nutshell/pull/1106
- fix a variety of issues with SIG_ALL and its interaction with P2PK and HTLC by @SatsAndSports in https://github.com/cashubtc/nutshell/pull/1008
- Align route and payment state handling by @a1denvalu3 in https://github.com/cashubtc/nutshell/pull/1108
- feat(lightning): add setting to allow LND self-payments Closes #1092 by @Hardeezah in https://github.com/cashubtc/nutshell/pull/1107
- Chore/retire deprecated code by @callebtc in https://github.com/cashubtc/nutshell/pull/1086
- fix(wallet): handle unpaid invoices in the CLI invoice command by @edgarmuyomba in https://github.com/cashubtc/nutshell/pull/1022
- fix(lightning): improve error message for unsupported LND partial self-payments by @Hardeezah in https://github.com/cashubtc/nutshell/pull/1113
- test: melt with real routing fees on regtest by @orangeshyguy21 in https://github.com/cashubtc/nutshell/pull/1103
- fix(wallet): send blank change outputs with amount 0 by @robwoodgate in https://github.com/cashubtc/nutshell/pull/1118
- chore(lightning): remove Blink and LNbits backends by @callebtc in https://github.com/cashubtc/nutshell/pull/1110
- feat: add scheduled mutation testing by @a1denvalu3 in https://github.com/cashubtc/nutshell/pull/1094
- fix(mint): return error 12002 for inactive output keysets by @callebtc in https://github.com/cashubtc/nutshell/pull/1120
- fix(mint): enable balance watchdog with SIGTERM process shutdown by @Hardeezah in https://github.com/cashubtc/nutshell/pull/1117
- use cln xpay by @callebtc in https://github.com/cashubtc/nutshell/pull/1127
- fix(ci): restore mutation testing reports by @a1denvalu3 in https://github.com/cashubtc/nutshell/pull/1136
- feat(mint): advertise the maximum request array length by @robwoodgate in https://github.com/cashubtc/nutshell/pull/1115
- Fix: Standardize error codes by @KvngMikey in https://github.com/cashubtc/nutshell/pull/1129
- fix(deps): bump breez-sdk-spark to ^0.17.0... by @KvngMikey in https://github.com/cashubtc/nutshell/pull/1144
- chore: enforce LF line endings by @a1denvalu3 in https://github.com/cashubtc/nutshell/pull/1141
- fix(wallet): dispatch NPC already-issued check on 20002 not 11000 by @KvngMikey in https://github.com/cashubtc/nutshell/pull/1142
- ci: pin regtest setup and update fee-rounding test by @a1denvalu3 in https://github.com/cashubtc/nutshell/pull/1148
- fix(mint): unblock mutation tests with RPC state cleanup by @a1denvalu3 in https://github.com/cashubtc/nutshell/pull/1149
- fix(auth): align auth promises schema with the mint CRUD by @KvngMikey in https://github.com/cashubtc/nutshell/pull/1145
- fix(ci): run Keycloak auth integration tests by @a1denvalu3 in https://github.com/cashubtc/nutshell/pull/1150
- fix: use wallet name in wallets command by @orangeshyguy21 in https://github.com/cashubtc/nutshell/pull/1155
- fix: LND msat invoice creation by @callebtc in https://github.com/cashubtc/nutshell/pull/1156
- refactor(mint): align ledger execution and Lightning backend contracts by @callebtc in https://github.com/cashubtc/nutshell/pull/1157
- fix(lightning): don't treat sub-satoshi rounding as a partial payment by @gorrdy in https://github.com/cashubtc/nutshell/pull/1153
- chore(release): bump version to 0.21.0 by @callebtc in https://github.com/cashubtc/nutshell/pull/1158
- test(spark): run shared mint and wallet regtests by @a1denvalu3 in https://github.com/cashubtc/nutshell/pull/1147
New Contributors
- @orangeshyguy21 made their first contribution in https://github.com/cashubtc/nutshell/pull/1098
- @SatsAndSports made their first contribution in https://github.com/cashubtc/nutshell/pull/1008
- @Hardeezah made their first contribution in https://github.com/cashubtc/nutshell/pull/1107
Full Changelog: https://github.com/cashubtc/nutshell/compare/0.20.3...0.21.0

