Breaking Changes
See PR #1081 for full details and migration guide.
WalletRequestError.causeis now typed as theWalletRequestErrorCause | undefineddiscriminated union (wasunknown). Code that catchesWalletRequestErrorand readserr.causemust narrow on a discriminant (status/state/source) before accessing fields, and chained errors are now wrapped in{ source }instead of being assigned the inner error directly (#1081)
Features
- feat(errors): type
WalletRequestError.causeas a discriminated union (#1081) by @tuliomir - feat(shielded): crypto provider interface and send-side primitives (#1085) by @pedroferreira1
- feat(shielded): transaction headers — shielded outputs, unshield balance (#1086) by @pedroferreira1
- feat(shielded): address derivation, network version byte, key chains (#1087) by @pedroferreira1
- feat(shielded): data model + storage layer for shielded addresses (#1088) by @pedroferreira1
- feat(stream): support multisig (P2SH) wallets in manual stream sync (#1106) by @raul-oliveira
Shielded PRs (#1085–#1088) are foundational, purely additive groundwork (crypto, headers, address derivation, storage). They are not yet wired into any user-facing flow — transparent-only wallets are byte-identical to v3.1.1.
Tests & Chores
- test: shared create-token tests for both facades (#1076) by @tuliomir
- test: shared UTXO query tests for both facades (#1078) by @tuliomir
- chore: raise itest CI timeout 50->70 minutes (#1109) by @tuliomir
Full Changelog: v3.1.1...v3.2.0