Back to Freedom.Tech Back
All JoinMarket-NG releasesAll versions
Release Wed, May 20, 2026 3 min read

JoinMarket-NG 0.30.0

Original release notes

Major improvements for wallet performance, specially for exiting old wallets with lots of transactions. Also security hardening, TUI improvements, and bug fixes.

Added

  • Add JSON-RPC batch helper to DescriptorWalletBackend to enable single-round-trip address lookups. (7dc89c31)
  • New wallet files are now encrypted with Argon2id (OWASP 2024 baseline parameters) instead of PBKDF2-HMAC-SHA256. Existing PBKDF2 wallet files continue to load unchanged. (5e6641de)
  • Cap per-tx fee rate at 1000 sat/vB by default (configurable via wallet.max_fee_rate_sat_vb) to prevent silent fee blowups from misconfigured estimators or oversized manual overrides. (041de9c0)
  • Auto-expand descriptor scan_range on wallet setup when used addresses sit near the lookahead boundary (76cbece3)
  • Replace the auto-expand descriptor scan_range probe and the --rescan-deep flag with a single 'jmwallet info --scan-depth N' one-shot recovery path that re-imports descriptors and rescans from genesis. The probe was unreliable for the migrated-wallet case it was meant to solve. (5984ef60)
  • Added Raspiblitz exit handler with B menu option and dynamic ESC behavior (8308f4f1)
  • TUI: Add configurable log level via [tui] log_level in config.toml (6780bc3f)
  • Add jm-wallet info --scan-status and jm-wallet rescan to (c340b993)
  • Orderbook watcher web UI now signals which makers are (461ef3a9)
  • Redesign the jm-wallet send confirmation summary for clearer field ordering and labels (21effc40)

Fixed

  • Speed up descriptor-wallet sync by replacing listaddressgroupings with listreceivedbyaddress, eliminating multi-minute hangs on wallets with many transactions or CoinJoin co-spends (11b118bd)
  • Validate destination address checksum and network in jmwallet direct_send (fixes regression of #196) (eb970809)
  • Require authentication on GET /api/v1/wallet/yieldgen/report so the maker earnings report is no longer readable without a bearer token. (e4a1a5e7)
  • Stop including fidelity bond proof in public reconnect announcements; bonds are now only sent via privmsg in response to !orderbook, matching the reference protocol. (519ffed2)
  • Fix maker incorrectly rejecting offers with 'Insufficient balance' when the dual-offer fee intersection falls in the dust band; the dominated offer is now suppressed cleanly with a clear log message (add613fd)
  • Fixed history header duplication and minor TUI issues (08230473)
  • Fixed maker menu TUI feedback and wallet info navigation (be50f914)
  • TUI: Capitalize "Fidelity Bonds" consistently across maker bond menus, prompts, and help text (c35df0db)
  • TUI: Show full testnet/signet/regtest fidelity bond addresses instead of dropping the network prefix (9ca785e7)
  • Restore bonds create improvements and add multi-network regex (94748205)
  • Fix fidelity-bond forgery where verify_bonds() did not bind the UTXO to the bond scriptPubKey (bdbac766)
  • Honor wallet.mnemonic_password from config when loading mnemonics via --mnemonic-file or MNEMONIC_FILE env (issue #498) (67043636)
  • Reject negative or out-of-range cjfee values in maker offers (009e0394)
  • Allow disabling broadcast on jm-wallet send via --no-broadcast (55a33edb)
  • Reject malformed amounts, mixdepths and counterparty counts on the wallet daemon HTTP API (9470db49)
  • Tighten JWT scope verification to reject cross-wallet tokens (f5371de6)
  • Fix tumbler runner crashing as failed instead of cancelled when stopped during a phase retry back-off (e6af7263)
  • Fix periodic summary notification reporting inflated earnings (42d2eeb9)
  • jm-wallet send now persists its change address in (b399a814)
  • TUI: Offer password storage for encrypted wallets in maker (36eb8df0)
  • Fix jam-ng and jmwalletd image builds broken by Debian trixie package version pins in the bookworm-based jam-builder stage (77c2ea5d)
  • Persist used addresses to prevent reissuing a previously funded deposit address after the UTXO is spent. (24e3e2f4)
  • Discover all wallet-owned addresses (including change) via paginated listtransactions to prevent missing them in deposit-address selection. (7d2cc00d)
  • Persist spent input addresses on transaction history rows to prevent deposit-address reuse across restarts (f98ffc5b)
  • TUI: Check for duplicate wallet name before import prompts (50d84ec1)