Skip to content

0.34.0

Latest

Choose a tag to compare

@github-actions github-actions released this 14 Jul 13:24
7314da8

Automatic history import for existing wallets, fee quantization defaults for better privacy, coin control labels, local mempool API support, bug fixes, and security hardening.

Added

  • Detect CoinJoin transactions from their output structure (3ec85e3d)
  • Show cj-out/cj-change for imported wallets by reconstructing CoinJoin labels from on-chain data (ea805be6)
  • Show fidelity bond addresses that hold more than one UTXO in list-bonds, including the extra locked coins and the total locked at the address (63ef4778)
  • Add shared fee-quantization grid primitives in jmcore (52702271)
  • Show a fee-quantization bands chart in the orderbook watcher (d60612a7)
  • Add a zero (free-maker) band to the absolute fee quantization grid (527329c2)
  • Count advertised bonds without a backend and chart makers in their rounded-up fee band (276c7c03)
  • Fee quantization chart shows cumulative reachable bond share per band (864e93e1)
  • Default maker fee sits on a quantization quantum with randomization disabled (9134c0c6)
  • Redesign the fee quantization chart to show which makers share an exact-fee anonymity set, with a legend, unit captions, and per-band median max size (8a1afa30)
  • Fee quantization chart tooltip now shows cumulative bond share and max coinjoin size for 10 makers, in sats (939fd698)
  • Persist handed-out deposit addresses so /address/new never reissues one after a restart (dc5ae6c9)
  • Let deposit addresses be set aside with a label, shown in jm-wallet info --extended (dc5ae6c9)
  • Add 'jm-wallet address' commands to reserve, label, release, and list deposit addresses (d5a736db)
  • Add incremental wallet transaction enumeration for descriptor and Neutrino backends (9500de04)
  • Notify websocket clients about deposits, CoinJoins, sends, and later confirmations for descriptor and Neutrino wallets (e7cbccd3)
  • Allow explicit direct access to a configured mempool API (602be73d)

Fixed

  • All maker settings are now configurable from config.toml, including dual_offers, directory reconnection tuning, and orderbook rate limiter knobs. (af8fd720)
  • Existing coins on reused addresses are no longer auto-frozen on the first sync after a wallet restart or unlock. (84ab95b0)
  • Accept a single-string notifications url and show a clear message for invalid config values instead of crashing at startup (64767960)
  • Verify the appended nick signature on relayed maker responses and attribute them to the signed sender instead of matching nicks by substring, preventing a malicious maker from hijacking another maker's encrypted session or forging error responses (e0af9a15)
  • Validate a peer-supplied relative cjfee before fixed-point formatting so a crafted offer can no longer expand to gigabytes and exhaust memory in every peer parsing the orderbook (f2efe3c7)
  • Stop auto-freezing legitimate first-use coins discovered by a (29595ef0)
  • Wait out Bitcoin Core's transient wallet-loading state on all wallet load paths instead of triggering a redundant rescan or failing (45346eaa)
  • Stop surfacing the expected neutrino 501 from /v1/tx as an error during wallet info (8bb4a7ba)
  • Detect confirmation of neutrino pending coinjoins via chain lookups so they are no longer marked failed once they confirm (006593a8)
  • Fix fidelity bond UTXOs disappearing from wallet balance when the local bond registry has no matching entry but Bitcoin Core already tracks the bond address (b7030c7d)
  • Fix fidelity bond registry migration failing to claim legacy entries with a stale or inconsistent path/pubkey (edb1fd52)
  • Fix wallet-info reporting fidelity bonds as found when the bond-aware sync would not actually register them (2379a9c1)
  • Fix fidelity bond sync listing all 960 timenumber addresses and registering only one bond at the wrong value (4877e743)
  • Fix fidelity bond value in list-bonds not refreshing after a plain wallet sync when the bond address has multiple UTXOs (d2d1b1b2)
  • Starting a wallet rescan while Bitcoin Core is already rescanning no longer fails with RPC error -4; the existing scan is tracked instead (7537e7e7)
  • getrescaninfo now reports real rescan progress from Bitcoin Core instead of always 0.0 (7351e296)
  • getrescaninfo and /session keep reporting rescanning=true while Bitcoin Core is still scanning (7351e296)
  • sign_bond_psbt.py now reports the installed HWI version and hints that HWI >= 3.1.0 is required to detect newer devices (Ledger Stax/Flex, Trezor Safe 3/5) when no hardware wallet is found. (606841c0)
  • spend-bond guidance no longer claims current Ledger firmware can sign bond PSBTs via HWI; it explains the legacy-app caveat and points to the mnemonic and Specter DIY QR fallbacks. (49f5b5a8)
  • Make the first wallet command after jm-wallet generate near-instant by recording the wallet creation height, and report scan progress during first-time wallet setup instead of appearing frozen (0d341e59)
  • Fix /address/new/{mixdepth} returning the same address on repeated calls (bb4e8f1a)
  • Honor the documented orderbook_min_wait and orderbook_quiet_period config keys in the taker CLI instead of silently using defaults (68483c64)
  • Honor orderbook_min_wait and orderbook_quiet_period for CoinJoins started through the jmwalletd API (9ecda897)
  • Honor the [tumbler] pacing settings (retry delay, confirmation poll interval, min confirmations) in the standalone tumbler CLI, not just jmwalletd (6b001d03)
  • Honor all [taker] policy settings for tumbler phases and CoinJoins started through the jmwalletd API (7e6a220b)
  • Prevent background work (commitment broadcasts, wallet resyncs, notifications) from being garbage-collected mid-flight and log its failures (e2b0e370)
  • Fix the session endpoint always reporting a null schedule while a tumbler is running, so JAM can render scheduler progress again (8fb33ad6)
  • Fix the fee quantization chart labeling the 10% relative quantum as 1% (880d3e40)
  • Fee quantization chart renders the grid even while the orderbook is still empty (66d5b730)
  • Browsers no longer serve a stale web UI after the orderbook watcher is upgraded (16d47fc3)
  • Per-connection Tor/TCP dial logs moved from INFO to DEBUG (bda6ddd3)
  • Reduce orderbook watcher log noise from bond deduplication and maker health checks (faf643a4)
  • Verify that a maker's signing pubkey owns the UTXO it signs before accepting the signature, so a maker can no longer pass verification with a key it does not control and make the taker assemble and broadcast a consensus-invalid coinjoin (5591ccca)
  • Require the maker's !ioauth btc_sig to verify and bind the auth pubkey to one of its declared UTXOs, dropping the maker otherwise, so a malicious directory can no longer substitute a maker's encryption key to MITM the session and a maker can no longer authenticate with a UTXO it does not control (80d60717)
  • Accept honest makers whose declared UTXO scriptPubKey hex is uppercase (6a354843)
  • Rescans requested above the chain tip (e.g. JAM's default mainnet SegWit height on signet/regtest) are clamped to the tip instead of failing server-side after a 200 OK response (c1384d3a)
  • Stop peerlist-fetch log spam and abort immediately when the directory connection drops (04477a3a)
  • Tumbler stop now terminates a stuck phase after a grace period instead of hanging (f251697f)
  • Show a 'reused' privacy warning for deposit addresses paid to more than once (56fbedf6)
  • Fix backup detection on Raspiblitz by using portable bash glob (b9b9a221)
  • Fixed exit behavior when pressing 'B' while already in JM-NG shell on RaspiBlitz (c9054d99)
  • Abort in-flight peerlist requests immediately when their continuous listener disconnects (5d98fa14)
  • Keep tumbler shutdown bounded while recording cancellation only after the runner actually stops (d6bc39e7)
  • Make wallet discovery portable on BusyBox and include hidden wallet files without changing caller shell options (75a6e9e7)
  • Preserve forced-address-reuse protection and explicit metadata changes across restarts and concurrent wallet processes (a7443611)
  • Verify CI-first release signatures without requiring local manifests (a0f2979f)
  • Install the tumbler with complete maker and taker profiles (648768d0)
  • Prevent wallet notifications from being missed immediately after WebSocket connection (28d3a84e)