What's Changed
- feat(model): add MintInfo.getMintMeltMethod and document offline rehydration by @robwoodgate in #812
- feat(wallet): prefer stale keysets in default proof selection by @robwoodgate in #813
- fix(wallet): widen exact-match trim bound for selection-level fee rounding by @robwoodgate in #814
- refactor(wallet): make RGLI exFee an integer sort key by @robwoodgate in #815
- feat(wallet): support u64 amounts in proof selection by @robwoodgate in #822
- refactor(model): return snapshots from MintInfo accessors by @robwoodgate in #824
- fix(model): preserve Amount instances through MintInfo snapshot by @robwoodgate in #826
- fix(wallet): compute NUT-08 blank count in bigint by @robwoodgate in #828
- fix(model): bound Amount.from to the u64 range by @robwoodgate in #830
- fix(model): cap Amount at the u64 range by @robwoodgate in #832
- feat!: nut-18 mint preferences (mp, sm) by @d4rp4t in #683
- feat(nut18): add PaymentRequestBuilder by @robwoodgate in #780
- feat(nut18): pay and validate payment requests end to end by @robwoodgate in #787
- feat(wallet): prefer newest keyset version in getCheapestKeyset by @robwoodgate in #835
- fix(wallet): return -1 from Keyset.version for unparseable ids by @robwoodgate in #837
- fix(wallet): classify odd-length hex keyset ids as legacy by @robwoodgate in #839
- fix(utils): return false from isValidHex for non-string input by @robwoodgate in #843
- feat(utils): rename normalizeUrl to normalizeMintUrl and make it public by @KvngMikey in #834
- feat(wallet): add getFeesToInclude fee helper by @robwoodgate in #846
- fix(wallet): validate pubkey in locked mint quote responses by @robwoodgate in #851
- fix(wallet): bound fee convergence loop by @robwoodgate in #854
- fix(wallet): reject a missing pubkey in locked mint quotes by @robwoodgate in #856
- docs(contributing): note runtime arg guards and untrusted mint input by @robwoodgate in #858
- feat(model): encode and decode NUT-18 payment payloads by @robwoodgate in #853
- fix(wallet): validate the lock pubkey in mint quote methods by @robwoodgate in #861
- chore(docker): update NUT_IMAGE to cashubtc/nutshell:0.20.3 by @robwoodgate in #860
- fix(wallet): bound keyset denomination count at ingest by @robwoodgate in #864
- feat(crypto): public secp pubkey validation in curve_secp by @robwoodgate in #863
- refactor(wallet): move MAX_KEYSET_DENOMINATIONS to limits by @robwoodgate in #866
- fix(utils): bound splitAmount output count by @robwoodgate in #859
- fix(wallet): compute keyset fees with integer arithmetic by @robwoodgate in #869
- fix(wallet): throw from sendOffline when no offline selection matches by @robwoodgate in #871
- fix(crypto): bound untrusted P2PK witness and CBOR decode input by @robwoodgate in #874
- fix(wallet): verify the lock pubkey on generic mint quotes by @robwoodgate in #875
- fix(crypto): harden P2PK witness edge cases by @robwoodgate in #877
- fix(wallet): tidy diagnostic log output by @robwoodgate in #879
- fix(wallet): more debug log tidy-up by @robwoodgate in #881
- fix(auth): tidy the OIDC debug logging by @robwoodgate in #883
- chore(main): release 5.0.0-rc.5 by @robwoodgate in #817
Full Changelog: v5.0.0-rc.4...v5.0.0-rc.5