A maintenance release carrying the v5 release-candidate fixes that apply to the v4 line, with no breaking changes.
Couple of changes worth highlighting: a NUT-17 subscription whose socket closes now has its error callback invoked, so a long-lived watch can resubscribe instead of waiting on a dead connection. New mnemonicToSeedSync function derives the BIP-39 seed from a phrase with no new dependency; validate the phrase first with @scure/bip39 or similar.
What's Changed
- fix(utils): resolve short keyset IDs in getDecodedTokenBinary [backport v4-dev] by @robwoodgate in #1154
- test: raise the vitest timeout by @robwoodgate in #1158
- fix(utils): apply the keyset unit alphabet to version 01 ids too [backport v4-dev] by @robwoodgate in #1166
- fix(mint): check a bolt11 melt preimage against the invoice payment hash [backport v4-dev] by @robwoodgate in #1165
- fix(auth): check OIDC endpoint schemes against the discovery document [backport v4-dev] by @robwoodgate in #1167
- refactor: route the last UTF-8 decodes through utils/bytes [backport v4-dev] by @robwoodgate in #1169
- docs: say where transport policy lives [backport v4-dev] by @robwoodgate in #1171
- fix(model): require boolean true for advertised NUT support [backport v4-dev] by @robwoodgate in #1177
- fix(core): keep a token's witness verbatim when re-encoding [backport v4-dev] by @robwoodgate in #1181
- fix(wallet): refuse pre-v3 locks the mint does not advertise [backport v4-dev] by @robwoodgate in #1196
- fix(wallet): refuse keyset id versions this build cannot spend [backport v4-dev] by @robwoodgate in #1200
- fix(core): warn on implicit numeric coercion of Amount [backport v4-dev] by @robwoodgate in #1205
- fix(utils): refuse text with a lone surrogate in the CBOR and TLV encoders [backport v4-dev] by @robwoodgate in #1210
- fix(wallet): verify the preimage on melt quote subscription updates [backport v4-dev] by @robwoodgate in #1211
- fix(transport): log a failed unsubscribe at info [backport v4-dev] by @robwoodgate in #1217
- fix(transport): export CallerAbortError and UncancellableReadError [backport v4-dev] by @robwoodgate in #1219
- docs: document websocket teardown and injectWebSocketImpl [backport v4-dev] by @robwoodgate in #1218
- feat(crypto): add mnemonicToSeedSync [backport v4-dev] by @robwoodgate in #1225
- fix(wallet): refuse NUT-29 batch operations the mint does not advertise [backport v4-dev] by @robwoodgate in #1226
- fix(transport): time out request attempts after 5 minutes by default [backport v4-dev] by @robwoodgate in #1227
- fix(model): accept a structuredClone'd Amount in Amount.from [backport v4-dev] by @robwoodgate in #1230
- fix(wallet): log a keyset summary on load instead of the whole cache [backport v4-dev] by @robwoodgate in #1239
- fix(transport): quieter retry logging, slower backoff, and NetworkError names the mint [backport v4-dev] by @robwoodgate in #1241
- chore(errors): move stray error classes into model/Errors [backport v4-dev] by @robwoodgate in #1247
- fix(transport): drop the DOM CloseEvent type from the WSConnection public surface [backport v4-dev] by @robwoodgate in #1250
- fix(transport): fail established subscriptions when the socket closes [backport v4-dev] by @robwoodgate in #1252
- chore(v4-dev): release 4.11.0 by @robwoodgate in #1156
Full Changelog: v4.10.2...v4.11.0