## 0.10.1 - Graduate package to a stable release. See pre-releases prior to this version for changelog entries. ## 0.10.1-dev.1 - **FIX**: parse the BUD-08 nip94 field as a tag array. ## 0.10.1-dev.0 - **FIX**: release idle wallet and abandoned sockets. - **FIX**: close transports before replacement. - **FIX**: abort stalled relay HTTP requests. - **FIX**: stop reconnecting for stale RPC delivery. - **FIX**: persist background delivery retry results. - **FIX**: reduce background battery usage by removing closed connections only once. - **FIX**: NWC error handling for Rizful. - **REFACTOR**: inject RelayInfo HTTP fetch via RelayInfoRepo and HttpRequestDS. ## 0.10.0 - Graduate package to a stable release. See pre-releases prior to this version for changelog entries. ## 0.10.0-dev.9 - **FIX**: don't hold NIP-46 responses until the slowest relay acks. ## 0.10.0-dev.8 - **FIX**: reduce background polling and cache work. - **FIX**(nwc): expose hold settle deadline. - **FIX**: seedStore.write() first. - **FIX**: carry seed language. - **FIX**: normalize and await cashu seed phrase save. ## 0.10.0-dev.7 > Note: This release has breaking changes. - **REFACTOR**: let the blossom repository authorise on refusal. - **REFACTOR**: surface the http status code on every request failure. - **FIX**: stay anonymous with each blossom server until it refuses. - **FIX**: use hex secret in nostrconnect URI. - **FIX**: keep an anonymous blossom report anonymous. - **FIX**: carry the blossom authorization through every request it makes. - **FEAT**: pass an auth policy through the files facade. - **FEAT**: let a blossom operation say which identity it may reveal. - **FEAT**: add the blossom authorization, the repository half of a policy. - **BREAKING** **FEAT**: drop blossom useAuth and customSigner in favour of auth. ## 0.10.0-dev.6 - **REFACTOR**: rename RelayAuth to AuthPolicy. - **FIX**: match nip05 check cache and dedup on both identifier and pubkey. - **FIX**: key nip05 cache by canonical identifier and skip failed checks in resolve. - **FIX**: abort nip05 requests after a 5s timeout. - **FIX**: ignore nip05 redirects and normalize identifier parsing. - **FIX**: stop resolving unknown names to the _ root entry. - **FEAT**: add retryDelivery opt-out to broadcast. ## 0.10.0-dev.5 - **PERF**: cache master key for cashu quote. - **FIX**: guard cashu quote op (on autostart). - **FIX**: backfill method, usedKeysets if missing. - **FIX**: scanUpperBound. - **FIX**: updatePendingQuotes to return all refreshed transactions. - **FIX**: global quote counter. - **FIX**: forward the connect timeout to a broadcast's bound connection. - **FIX**(test): keep the connection's identity set with each received event. - **FIX**: stop waking a relay for a delivery parked on a missing identity. - **FIX**: attach a broadcast auth policy to the relay target, not the event. - **FIX**: stop opening an anonymous connection for a required broadcast. - **FIX**: release a broadcast auth policy once its delivery settled. - **FEAT**: ensureMintCounterSafety. - **FEAT**: streamable recoverAndCompleteQuote(). - **FEAT**: recoverAndCompleteQuote() api. - **FEAT**: auto resume pending transactions. - **FEAT**: determenistic cashu quote key. - **FEAT**: let a broadcast say which identity it may be attributed to. ## 0.10.0-dev.4 - **FIX**: address app update review feedback. - **FEAT**(updates): add NIP-82 release support. ## 0.10.0-dev.3 > Note: This release has breaking changes. - **PERF**(cache): batch visibility context reads. - **PERF**: improve rust verifier memory usage. - **FIX**(metadata): cache the metadata event that was broadcast. - **FIX**(cache): compare conflict coordinates byte for byte. - **FIX**(cache): keep d-tag whitespace when matching deletion coordinates. - **FIX**: address Rust verifier review feedback. - **FIX**(cache): keep d-tag case when matching deletion coordinates. - **FIX**(cache): stop a limited read from dropping visible events. - **FIX**: missing amount in bip321. - **FIX**: add tbs. - **FIX**: not add lnurl wallet if invalid. - **FEAT**(wallets): add LNbits provider. - **FEAT**: packed event verification in rust. - **FEAT**(nwc): add optional maxFeeMsat to pay (NWC-321 max_fee). - **BREAKING** **FEAT**(cache): add loadHiddenEvents. ## 0.10.0-dev.2 - **REFACTOR**: internalize the WebSocket client and remove wrapper package dependencies. > Note: This release has breaking changes. - **FIX**: end a reconciliation whose signer refuses to answer the challenge. - **FIX**: stop spending the reconciliation budget on waiting for a signer. - **FIX**: raise an impossible reconciliation from the call, not from its future. - **FEAT**: let a negentropy reconciliation say which identity it may use. - **FEAT**: add native WebSocket compression opt-out. - **BREAKING** **FEAT**(accounts): add accountsStream. ## 0.10.0-dev.1 > Note: This release has breaking changes. - **REFACTOR**: drop notSent. - **REFACTOR**: name the relay request status a status. - **PERF**: stop rebuilding the relay outcomes for nobody. - **FIX**: prerelease. - **FIX**: final over var. - **FIX**(requests): end a query that reached no relay. - **FIX**: do not resurrect a jit request that already ended. - **FIX**: do not send a relay set request closed while connecting. - **FIX**: keep a request open while its auth retry connects. - **FIX**(cli): avoid wallet startup network work. - **FIX**: give the outcome stream fallback its initial snapshot. - **FIX**: report a dead socket, and stream a page while it runs. - **FIX**: preserve JIT fallback on cache errors. - **FIX**: surface broadcast retry send errors. - **FIX**: harden relay auth retries. - **FIX**: keep a jit request open while its other relays are still connecting. - **FIX**: do not send a jit request that was closed while its connection opened. - **FIX**: authenticate as an account that was handed over, not only a registered one. - **FIX**: answer an impossible request without waiting for its timeout. - **FIX**: tell two requests apart by the identity they authenticate as. - **FIX**: paginate each relay of a relay set on its own. - **FIX**(auth): serialize broadcast authentication. - **FIX**: multiple instances with dedicated GlobalState. - **FEAT**: send a required request only on its bound connection in the jit engine. - **FEAT**: send a required request only on its bound connection. - **FEAT**: add RelayAuth, the identity a request may be attributed to. - **FEAT**: stream the relay outcomes of a request. - **FEAT**: expose the outcome of a request on each relay. - **DOCS**(release): add 0.9.3 notes. - **DOCS**(cli): condense wallet command help. - **DOCS**(ndk): finalize 0.9.2 changelog. - **BREAKING** **FIX**: stop authenticating to relays that never asked. - **BREAKING** **FEAT**: let a request say which identity it may authenticate as. ## 0.10.0-dev.0 > Note: This release has breaking changes. - Start the 0.10.0 prerelease series. ## 0.9.4-dev.2 > Note: This release has breaking changes. - **REFACTOR**: drop notSent. - **REFACTOR**: name the relay request status a status. - **PERF**: stop rebuilding the relay outcomes for nobody. - **FIX**: final over var. - **FIX**(requests): end a query that reached no relay. - **FIX**: do not resurrect a jit request that already ended. - **FIX**: do not send a relay set request closed while connecting. - **FIX**: keep a request open while its auth retry connects. - **FIX**(cli): avoid wallet startup network work. - **FIX**: give the outcome stream fallback its initial snapshot. - **FIX**: report a dead socket, and stream a page while it runs. - **FIX**: preserve JIT fallback on cache errors. - **FIX**: surface broadcast retry send errors. - **FIX**: harden relay auth retries. - **FIX**: keep a jit request open while its other relays are still connecting. - **FIX**: do not send a jit request that was closed while its connection opened. - **FIX**: authenticate as an account that was handed over, not only a registered one. - **FIX**: answer an impossible request without waiting for its timeout. - **FIX**: tell two requests apart by the identity they authenticate as. - **FIX**: paginate each relay of a relay set on its own. - **FIX**(auth): serialize broadcast authentication. - **FIX**: multiple instances with dedicated GlobalState. - **FEAT**: send a required request only on its bound connection in the jit engine. - **FEAT**: send a required request only on its bound connection. - **FEAT**: add RelayAuth, the identity a request may be attributed to. - **FEAT**: stream the relay outcomes of a request. - **FEAT**: expose the outcome of a request on each relay. - **DOCS**(release): add 0.9.3 notes. - **DOCS**(cli): condense wallet command help. - **DOCS**(ndk): finalize 0.9.2 changelog. - **BREAKING** **FIX**: stop authenticating to relays that never asked. - **BREAKING** **FEAT**: let a request say which identity it may authenticate as. ## 0.9.4-dev.1 > Note: This release has breaking changes. - **REFACTOR**: drop notSent. - **REFACTOR**: name the relay request status a status. - **PERF**: stop rebuilding the relay outcomes for nobody. - **FIX**: final over var. - **FIX**: do not resurrect a jit request that already ended. - **FIX**: do not send a relay set request closed while connecting. - **FIX**: keep a request open while its auth retry connects. - **FIX**(cli): avoid wallet startup network work. - **FIX**: give the outcome stream fallback its initial snapshot. - **FIX**: report a dead socket, and stream a page while it runs. - **FIX**: preserve JIT fallback on cache errors. - **FIX**: surface broadcast retry send errors. - **FIX**: harden relay auth retries. - **FIX**: keep a jit request open while its other relays are still connecting. - **FIX**: do not send a jit request that was closed while its connection opened. - **FIX**: authenticate as an account that was handed over, not only a registered one. - **FIX**: answer an impossible request without waiting for its timeout. - **FIX**: tell two requests apart by the identity they authenticate as. - **FIX**: paginate each relay of a relay set on its own. - **FIX**(auth): serialize broadcast authentication. - **FIX**: multiple instances with dedicated GlobalState. - **FEAT**: send a required request only on its bound connection in the jit engine. - **FEAT**: send a required request only on its bound connection. - **FEAT**: add RelayAuth, the identity a request may be attributed to. - **FEAT**: stream the relay outcomes of a request. - **FEAT**: expose the outcome of a request on each relay. - **DOCS**(release): add 0.9.3 notes. - **DOCS**(cli): condense wallet command help. - **DOCS**(ndk): finalize 0.9.2 changelog. - **BREAKING** **FIX**: stop authenticating to relays that never asked. - **BREAKING** **FEAT**: let a request say which identity it may authenticate as. ## 0.9.4-dev.0 - **REFACTOR**: drop notSent. - **REFACTOR**: name the relay request status a status. - **PERF**: stop rebuilding the relay outcomes for nobody. - **FIX**: give the outcome stream fallback its initial snapshot. - **FIX**: report a dead socket, and stream a page while it runs. - **FIX**: preserve JIT fallback on cache errors. - **FIX**: surface broadcast retry send errors. - **FIX**: harden relay auth retries. - **FIX**(auth): serialize broadcast authentication. - **FIX**: multiple instances with dedicated GlobalState. - **FEAT**: stream the relay outcomes of a request. - **FEAT**: expose the outcome of a request on each relay. ## 0.9.3 - **FIX**(cli): prevent wallet commands from replaying pending deliveries or restoring unrelated remote signers, and close CLI databases cleanly. - **FIX**(installer): download stable CLI releases without consuming the GitHub REST API quota. - **DOCS**(cli): condense wallet help and standardize optional argument notation. - **CI**: run NDK tests serially to reduce peak native verifier memory usage. ## 0.9.2 - **FEAT**: add DM relay discovery and publishing APIs. - **FEAT**: add explicit legacy NIP-04 DMs and NIP-17 file messages. - **FEAT**(nwc): expose supported extensions, add hold-invoice timeouts, and support `max_fee` for `pay_invoice`. - **FIX**: paginate every relay in a relay set independently. - **FIX**: make request hashes independent of filter-list ordering. - **FIX**: record fetched ranges only from network events and retain the oldest timestamp reported by each relay. - **FIX**: normalize relay URLs and treat disallowed event kinds as permanent failures. - **FIX**(release): isolate generated package-version updates. ## 0.9.1-dev.3 - **FIX**(release): isolate version generation. - **FIX**: hash a request independently of the order of its filter lists. - **FIX**: clean relay url. - **FIX**: more dms. - **FIX**: kind not allowed is a permanet failure. - **FIX**: track only the oldest event timestamp per relay for fetched ranges. - **FIX**: record fetched ranges from network events only. - **FEAT**(nwc): add optional maxFeeMsat to pay_invoice (NIP-47 max_fee). ## 0.9.1-dev.2 - **FIX**(release): isolate version generation. - **FIX**: hash a request independently of the order of its filter lists. - **FIX**: clean relay url. - **FIX**: more dms. - **FIX**: kind not allowed is a permanet failure. - **FIX**: track only the oldest event timestamp per relay for fetched ranges. - **FIX**: record fetched ranges from network events only. - **FEAT**(nwc): add optional maxFeeMsat to pay_invoice (NIP-47 max_fee). ## 0.9.1-dev.1 - **FIX**: isolate relay, request, broadcast, and authentication state per NDK instance. - **FEAT**: publishDmRelays. - **FEAT**: allow explicit dm relay discovery. - **FEAT**: add explicit legacy nip04 dms. ## 0.9.1-dev.0 - **FEAT**: publishDmRelays. - **FEAT**: nip17 file message. ## 0.9.0 > Note: This release has breaking changes. - **REFACTOR**: key request state by connection instead of relay url. - **REFACTOR**: key the connect path by connection instead of relay url. - **REFACTOR**: key relay connections by RelayConnectionKey. - **REFACTOR**: drop the CacheWrite usecase in favor of CacheManager. - **FIX**: recompute event id when building a NIP-51 set event. - **FIX**: mem cache for event verification. - **FIX**: index relay connectivity by list, not by url. - **FIX**: unblock dart analyze on Dart 3.13. - **FIX**: test lacl first test cacheWrite. - **FIX**: encode negentropy messages per protocol v1. - **FIX**: count the requests open on a connection by id. - **FIX**: drop authentication state on a transient disconnect. - **FIX**: keep a request alive while its authentication reconnects. - **FIX**: route socket errors through the same disconnect handler as onDone. - **FIX**: replay a query whose socket died before its EOSE. - **FIX**: replay a request whose authentication died with its socket. - **FIX**: account active requests where they are sent. - **FIX**: scope authentication state to a transport generation. - **FIX**: forget connections that have no transport left. - **FIX**: do not send REQ for a request that was closed. - **FIX**: engines pick relays, so they must see one connection per relay. - **FIX**: replay subscriptions on their own connection only. - **FIX**: send CLOSE on the connection the subscription was sent on. - **FIX**: include target relays and request lifetime in the request dedup key. - **FEAT**: add post-quantum hybrid encryption for direct messages (ML-KEM-1024). - **FEAT**: bind each connection to at most one identity. - **FEAT**: add RelayConnectionKey to identify a relay connection. - **BREAKING** **FIX**: replace GPL-3.0-only crystals-dilithium with fips204 (ML-DSA). - **BREAKING** **FEAT**: stream relay connections as a list instead of a url keyed map. ## 0.8.4 - Graduate package to a stable release. See pre-releases prior to this version for changelog entries. ## 0.8.4-dev.12 > Note: This release has breaking changes. - **REFACTOR**: key request state by connection instead of relay url. - **REFACTOR**: key the connect path by connection instead of relay url. - **REFACTOR**: key relay connections by RelayConnectionKey. - **REFACTOR**: drop the CacheWrite usecase in favor of CacheManager. - **FIX**: recompute event id when building a NIP-51 set event. - **FIX**: mem cache for event verification. - **FIX**: index relay connectivity by list, not by url. - **FIX**: unblock dart analyze on Dart 3.13. - **FIX**: test lacl first test cacheWrite. - **FIX**: encode negentropy messages per protocol v1. - **FIX**: count the requests open on a connection by id. - **FIX**: drop authentication state on a transient disconnect. - **FIX**: keep a request alive while its authentication reconnects. - **FIX**: route socket errors through the same disconnect handler as onDone. - **FIX**: replay a query whose socket died before its EOSE. - **FIX**: replay a request whose authentication died with its socket. - **FIX**: account active requests where they are sent. - **FIX**: scope authentication state to a transport generation. - **FIX**: forget connections that have no transport left. - **FIX**: do not send REQ for a request that was closed. - **FIX**: engines pick relays, so they must see one connection per relay. - **FIX**: replay subscriptions on their own connection only. - **FIX**: send CLOSE on the connection the subscription was sent on. - **FIX**: include target relays and request lifetime in the request dedup key. - **FEAT**: add post-quantum hybrid encryption for direct messages (ML-KEM-1024). - **FEAT**: bind each connection to at most one identity. - **FEAT**: add RelayConnectionKey to identify a relay connection. - **BREAKING** **FIX**: replace GPL-3.0-only crystals-dilithium with fips204 (ML-DSA). - **BREAKING** **FEAT**: stream relay connections as a list instead of a url keyed map. ## 0.8.4-dev.11 - **FIX**: dart format with standalone SDK 3.12.2 (match CI). - **FIX**: dart format all packages (CI format check). - **FIX**: dart format (match CI environment without pub get). - **FIX**: sweep stale delivery records during eviction. - **FIX**: sweep stale delivery records during eviction. - **FIX**: sweep/hide NIP-09 coordinate (a-tag) deletions across cache backends. - **FEAT**: add local-first interactive signer retry flow. - **FEAT**: local first. - **FEAT**: local first. - **FEAT**: local first. ## 0.8.4-dev.10 - **FIX**: complete cache-served queries without waiting for timeout. ## 0.8.4-dev.9 - **REFACTOR**(signers): remove id parameter from EventSigner nip04 methods. ## 0.8.4-dev.8 - **FIX**(test): apply tag filters in mock relay. ## 0.8.4-dev.7 - **FIX**: randomize NIP-59 gift wrap timestamps. ## 0.8.4-dev.6 - **REFACTOR**: centralized json serialisation for WalletTransaction. - **FIX**: update transactions after state import. - **FIX**: import mutating before validating. - **FIX**: add missing methods to cashu cache decorator. - **FIX**: remove direct cache access in cashu import/export. - **FEAT**: add FlutterSecuredStorage Cashu Seed Store impl. ## 0.8.4-dev.5 - **FIX**: fallback to logged account for broadcast auth. - **FIX**: broadcast mock relay events to live subscriptions. ## 0.8.4-dev.4 - **FIX**: add cashu preflight checks to wallet init. - **FIX**: typo, return type. - **FIX**: add missing timeout to wallets.sendaa. - **FEAT**: cashu preflight checks. ## 0.8.4-dev.3 - **FIX**: add cashu preflight checks to wallet init. - **FIX**: typo, return type. - **FIX**: add missing timeout to wallets.sendaa. - **FEAT**: cashu preflight checks. ## 0.8.4-dev.2 > Note: This release has breaking changes. - **FIX**: resolve 404 responses as not found. - **FEAT**: errors as exception. - **BREAKING** **FEAT**(nip05): split Nip05ResolveError into typed subtypes. - **BREAKING** **FEAT**(nip05): return Nip05ResolveResult from resolve(). ## 0.8.4-dev.1 - **FEAT**(ndk): allow precomputed sha256 for blossom uploads. ## 0.8.4-dev.0 - **REFACTOR**: rename ConcurrencyLimitedSignerMixin to ConcurrencyLimiterMixin. - **FIX**: skip remote call when a queued request is cancelled. - **FEAT**: implement ConcurrencyLimitedSignerMixin for managing concurrent requests in signers. ## 0.8.3 - sync versions ## 0.8.3-dev.0 ## 0.8.2 - Graduate package to a stable release. See pre-releases prior to this version for changelog entries. ## 0.8.2-dev.9 - **REFACTOR**: rename Negentropy to NegentropyEncoder. - **FIX**: update code doc, remove implementation. - **FIX**: move NIP-77 cleanup into async allFutures in destroy(). - **FIX**: delete transactions. - **FIX**: delete proofs. - **FIX**: privatize Nip77Internal. - **FIX**: timeout completion guards. - **FIX**: improve NOTICE detection for NIP-77 errors. - **FIX**: reject truncated varint in NIP-77 decoder. - **FIX**: use full filter for local cache in NIP-77 reconciliation. - **FIX**: verify relay origin on NEG-MSG and NEG-ERR. - **FIX**: close NIP-77 sessions in Ndk.destroy(). - **FIX**: no-op test. - **FEAT**: nip77. ## 0.8.2-dev.8 - **REVERT**: seperate cache manger package. - **REFACTOR**: use LocalEventSignerFactory for creating signers, keypairs. - **REFACTOR**: event signer factory. - **FIX**(test): avoid same-second collision in broadcast metadata test. - **FIX**(test): apply NIP-01 replacement in MockRelay. - **FIX**: use ephemeralSigner obj when available. - **FIX**: use factory signer. - **FIX**: return the complete signed event from remote signer. - **FIX**: parse public tags on private list. - **FIX**: update tearDown to cleanUp in cache manager test suite documentation. - **FIX**: circular dependency embed test suite. - **FIX**: remove test suite dependency from ndk (cycle). - **FIX**: repeated listen breaks stream connection. - **FEAT**: add getDmRelays for NIP-17 DM relay list (kind 10050). - **FEAT**: add writeUrls getter to UserRelayList. - **FEAT**: enhance Sembast support with platform-specific implementations and error handling. - **FEAT**: add GiftWrapUnwrapResult for enhanced gift wrap unwrapping with signature verification. - **FEAT**: implement conditional imports. - **FEAT**: add web support to SembastCacheManager. ## 0.8.2-dev.7 - **REVERT**: seperate cache manger package. - **REFACTOR**: use LocalEventSignerFactory for creating signers, keypairs. - **REFACTOR**: event signer factory. - **FIX**(test): avoid same-second collision in broadcast metadata test. - **FIX**(test): apply NIP-01 replacement in MockRelay. - **FIX**: use ephemeralSigner obj when available. - **FIX**: use factory signer. - **FIX**: return the complete signed event from remote signer. - **FIX**: parse public tags on private list. - **FIX**: update tearDown to cleanUp in cache manager test suite documentation. - **FIX**: circular dependency embed test suite. - **FIX**: remove test suite dependency from ndk (cycle). - **FIX**: repeated listen breaks stream connection. - **FEAT**: add getDmRelays for NIP-17 DM relay list (kind 10050). - **FEAT**: add writeUrls getter to UserRelayList. - **FEAT**: enhance Sembast support with platform-specific implementations and error handling. - **FEAT**: add GiftWrapUnwrapResult for enhanced gift wrap unwrapping with signature verification. - **FEAT**: implement conditional imports. - **FEAT**: add web support to SembastCacheManager. ## 0.8.2-dev.6 - **FIX**: delete pubspec.lock. - **FIX**: stubs for qsVerifier/Signer. - **FIX**: sign seal event. - **FIX**: treat 2xx http statuses as success. - **FEAT**: flatpack build. ## 0.8.2-dev.5 - **FEAT**(experiment): qs dilithium singer, verifier. ([e680430b](https://github.com/relaystr/ndk/commit/e680430b5f4ae2826d5ec642688b0afbe49b0609)) ## 0.8.2-dev.4 - **FEAT**(experiment): qs dilithium singer, verifier. ([e680430b](https://github.com/relaystr/ndk/commit/e680430b5f4ae2826d5ec642688b0afbe49b0609)) ## 0.8.2-dev.3 - **FIX**: merge user metrics. ([624ae703](https://github.com/relaystr/ndk/commit/624ae70314a855787f15d3731c3edbb02532c8ec)) - **FIX**: merge assertions events. ([cff74ee1](https://github.com/relaystr/ndk/commit/cff74ee1b2df1bd6ab12a2579cc218ec6f702da2)) - **FIX**: use Bip340EventSigner to sign events in tests. ([7934063b](https://github.com/relaystr/ndk/commit/7934063bd5bdfc1fa798b11936291918068f88b9)) - **FEAT**: add optional relayUrls param to getOptimizedFilters and handle empty cache. ([d3e3a242](https://github.com/relaystr/ndk/commit/d3e3a24270afab6a1c0d4ababe9c067df5420e51)) - **FEAT**: default providers. ([26fc8faf](https://github.com/relaystr/ndk/commit/26fc8faf22e53a97f91fe05c7ff5988bdb46414c)) - **FEAT**: others trusted assertions. ([ada22c70](https://github.com/relaystr/ndk/commit/ada22c70bc7e75b9d404a5cc1356ec31ad6886a6)) - **FEAT**: user trusted assertions. ([04772612](https://github.com/relaystr/ndk/commit/04772612aad14f0f13fa3207c44ecce239f6b5d5)) ## 0.8.2-dev.2 - **FIX**: merge user metrics. ([624ae703](https://github.com/relaystr/ndk/commit/624ae70314a855787f15d3731c3edbb02532c8ec)) - **FIX**: merge assertions events. ([cff74ee1](https://github.com/relaystr/ndk/commit/cff74ee1b2df1bd6ab12a2579cc218ec6f702da2)) - **FIX**: use Bip340EventSigner to sign events in tests. ([7934063b](https://github.com/relaystr/ndk/commit/7934063bd5bdfc1fa798b11936291918068f88b9)) - **FEAT**: add optional relayUrls param to getOptimizedFilters and handle empty cache. ([d3e3a242](https://github.com/relaystr/ndk/commit/d3e3a24270afab6a1c0d4ababe9c067df5420e51)) - **FEAT**: default providers. ([26fc8faf](https://github.com/relaystr/ndk/commit/26fc8faf22e53a97f91fe05c7ff5988bdb46414c)) - **FEAT**: others trusted assertions. ([ada22c70](https://github.com/relaystr/ndk/commit/ada22c70bc7e75b9d404a5cc1356ec31ad6886a6)) - **FEAT**: user trusted assertions. ([04772612](https://github.com/relaystr/ndk/commit/04772612aad14f0f13fa3207c44ecce239f6b5d5)) ## 0.8.2-dev.1 - **FIX**: withCachedPermissions copy rest of fields. ([4a083f6f](https://github.com/relaystr/ndk/commit/4a083f6f3a8cbaa636158c44658d5bb769224019)) - **FIX**: not showing balance after alby go connect. ([74b7c456](https://github.com/relaystr/ndk/commit/74b7c456c198e5d5a8622cccc850c871ac10877c)) ## 0.8.1-dev.0+1 - **FIX**: nwc cached permissions. ([dd6a8892](https://github.com/relaystr/ndk/commit/dd6a8892963c04a62ee0c1eda5ea4db7e6bc42d3)) ## 0.8.1 - **FEAT**: Wallets usecase - **FEAT**: Cashu support - **FEAT**: LNURL wallet receive only - **FEAT**: ndk CLI tool with install.sh script - **FEAT**: Drift cache manager - **FEAT**: Signer pending requests - **FEAT**: Paginated requests - **FEAT**: Rust event verifier using native assets in ndk core package - **FEAT**: Web event verifier using web crypto - **FEAT**: Implement RFC 3986 compliant relay URL normalization - **FEAT**: Move amber into ndk_flutter - **FEAT**: Move sembast to core - **FIX**: Fix: broadcast timeout - **FIX**: Remove deprecated isar package - **FIX**: lints. ([6d60d87c](https://github.com/relaystr/ndk/commit/6d60d87c43e0f3455853a22ddf53523cfa64ddf4)) ## 0.7.2-dev.2 - **FIX**: min sdk 3.6 for hooks. ## 0.7.2-dev.1 - **FIX**: cleanup. - **FEAT**: cli. ## 0.7.2-dev.0 - **FEAT**: paginated requests. ## 0.7.1 - FEAT: cache known properties. - FEAT: isolate manager with stream response. - FEAT: improved upload progress report. - FEAT: blossom mirrorToServers(). - FEAT: files api uploadFromFile(), downloadToFile(). - FEAT: blossom file stream. - FEAT(broadcast): add NIP-09 compliant deletion with e, k, and a tags. - FEAT: implement RFC 3986 compliant relay URL normalization. - FEAT: expose signer API on Account entity. - FEAT: add SignerRequestRejectedException for remote signer rejections. - FEAT: add nip46 pending requests integration test. - FEAT: add unified pending requests API. - FEAT(cache): add removeEvents method for bulk event deletion. - FEAT(cache): add clearAll() method to CacheManager. - FEAT: add caching support for nip05.resolve() with identifier lookup. - FEAT: add caching support for nip05.resolve() with identifier lookup. - FEAT: add caching support for nip05.resolve() with identifier lookup. - FEAT: add of() method to fetch NIP-05 data without pubkey. - FEAT: add missing state field in lookup_invoice_response.dart. - FEAT: add missing getPublicList. - FEAT: change removeEvents to support flexible filtering. - FEAT: gift wrap add custom signer parameter. - FEAT: add saveToCache option for broadcast. - FEAT: nip42 multi auth. - REFACTOR: rename rawContent to content. - REFACTOR: uploadBlob use dataStreamFactory. - REFACTOR: extract URL normalization to separate file. - REFACTOR: make dispose() async. - REFACTOR: remove unused requestRelays method. - REFACTOR: rename nip05.fetch() to nip05.resolve(). - REFACTOR: nip05 usecase. - FIX: concurent list modification. - FIX: allow blossom uploadBlob without login via temporary/custom signer. - FIX: tests passes. - FIX: toJson and fromJson. - FIX: meme cache mock. - FIX: tests. - FIX: use setter for known properties + content never null. - FIX: mem cache manager mock. - FIX: preserve tags and custom fields in metadata. - FIX: propagate signer exceptions through broadcast. - FIX: getPublicList() reduce db calls by saving last event. - FIX: getPublicList add limit. - FIX: getPublicList only save latest event. - FIX(broadcast): return immediately when all relays have responded. - FIX: web init. - FIX: use isolate manager for native hash calc. - FIX: get file hash for uploadBlobFromFile(). - FIX: flanky blossom test depending on order. - FIX(perf): lazy log. - FIX: remove all event versions from cache on NIP-09 deletion. - FIX: flanky test. - FIX: close duplicate request when original completes. - FIX: fail fast when all relays are offline. - FIX: complete request when auth-required received without challenge. - FIX: complete request when relay requires auth but client cannot sign. - FIX: distinguish CLOSED from EOSE in relay request state. - FIX: add destroy in tear down. - FIX: ensure NIP-46 subscription is ready before sending remote requests. - FIX: subscribe before broadcast in connectWithBunkerUrl to avoid missing NIP-46 responses. - FIX: move authCallbackTimeout to NdkConfig. - FIX: add timeout for pending AUTH callbacks. - FIX: authenticate all accounts in authenticateAs for lazy auth mode. - FIX: handle NIP-42 auth-required by re-sending REQ/EVENT after AUTH. - FIX: rename stateChanges to authStateChanges. - FIX: minIsolatePoolSize. - FIX: use Accounts instead of pubkeys to authenticate. ## 0.7.1-dev.20 - **REFACTOR**: rename rawContent to content. - **FIX**: concurent list modification. - **FIX**: allow blossom uploadBlob without login via temporary/custom signer. - **FIX**: tests passes. - **FIX**: toJson and fromJson. - **FIX**: meme cache mock. - **FIX**: tests. - **FIX**: use setter for known properties + content never null. - **FIX**: mem cache manager mock. - **FIX**: preserve tags and custom fields in metadata. - **FEAT**: cache known properties. ## 0.7.1-dev.19 - **FIX**: propagate signer exceptions through broadcast. ## 0.7.1-dev.18 - **FIX**: getPublicList() reduce db calls by saving last event. - **FIX**: getPublicList add limit. - **FIX**: getPublicList only save latest event. - **FEAT**: add missing getPublicList. ## 0.7.1-dev.17 - **FIX**(broadcast): return immediately when all relays have responded. ## 0.7.1-dev.16 - **REFACTOR**: uploadBlob use dataStreamFactory. - **FIX**: web init. - **FIX**: use isolate manager for native hash calc. - **FIX**: get file hash for uploadBlobFromFile(). - **FIX**: flanky blossom test depending on order. - **FEAT**: isolate manager with stream response. - **FEAT**: improved upload progress report. - **FEAT**: blossom mirrorToServers(). - **FEAT**: files api uploadFromFile(), downloadToFile(). - **FEAT**: blossom file stream. ## 0.7.1-dev.15 - **FIX**(perf): lazy log. ## 0.7.1-dev.14 - **REFACTOR**: extract URL normalization to separate file. - **FIX**: remove all event versions from cache on NIP-09 deletion. - **FIX**: flanky test. - **FEAT**(broadcast): add NIP-09 compliant deletion with e, k, and a tags. - **FEAT**: implement RFC 3986 compliant relay URL normalization. ## 0.7.1-dev.13 - **REFACTOR**: make dispose() async. - **FEAT**: expose signer API on Account entity. - **FEAT**: add SignerRequestRejectedException for remote signer rejections. - **FEAT**: add nip46 pending requests integration test. - **FEAT**: add unified pending requests API. ## 0.7.1-dev.12 - **FEAT**: change removeEvents to support flexible filtering. - **FEAT**(cache): add removeEvents method for bulk event deletion. - **DOCS**: add safety note to removeEvents documentation. ## 0.7.1-dev.11 - **FIX**: close duplicate request when original completes. - **FEAT**(cache): add clearAll() method to CacheManager. - **DOCS**: add DANGER warning to clearAll() method. ## 0.7.1-dev.10 - **REFACTOR**: remove unused requestRelays method". - **REFACTOR**: remove unused requestRelays method. - **FIX**: fail fast when all relays are offline. ## 0.7.1-dev.9 - **FIX**: complete request when auth-required received without challenge. - **FIX**: complete request when relay requires auth but client cannot sign. ## 0.7.1-dev.8 - **FIX**: distinguish CLOSED from EOSE in relay request state. ## 0.7.1-dev.7 - **REFACTOR**: rename nip05.fetch() to nip05.resolve(). - **REFACTOR**: nip05 usecase. - **FEAT**: add caching support for nip05.resolve() with identifier lookup. - **FEAT**: add caching support for nip05.resolve() with identifier lookup. - **FEAT**: add caching support for nip05.resolve() with identifier lookup. - **FEAT**: add of() method to fetch NIP-05 data without pubkey. ## 0.7.1-dev.6 - **FIX**: add destroy in tear down. - **FIX**: ensure NIP-46 subscription is ready before sending remote requests. - **FIX**: subscribe before broadcast in connectWithBunkerUrl to avoid missing NIP-46 responses. ## 0.7.1-dev.5 - **FEAT**: add missing state field in lookup_invoice_response.dart. ## 0.7.1-dev.4 - **FIX**: move authCallbackTimeout to NdkConfig. - **FIX**: add timeout for pending AUTH callbacks. - **FIX**: authenticate all accounts in authenticateAs for lazy auth mode. - **FIX**: handle NIP-42 auth-required by re-sending REQ/EVENT after AUTH. - **FEAT**: add eagerAuth in NDK config. ## 0.7.1-dev.3 - **FIX**: rename stateChanges to authStateChanges. - **FEAT**: gift wrap add custom signer parameter. ## 0.7.1-dev.2 - **FIX**: minIsolatePoolSize. ## 0.7.1-dev.1 - **FEAT**: add saveToCache option for broadcast. ## 0.7.1-dev.0 - **FIX**: use Accounts instead of pubkeys to authenticate. - **FEAT**: nip42 multi auth. ## 0.7.0 - **FEAT**: isolate manager stub. - **FIX**: remove unused import. - **FIX**: sha256 convert in isolate. - **FIX**: fetched ranges integration test. - **FIX**: rename coverage usecase to fetchedRanges. - **FIX**: timerange until. - **FIX**: added ranges. - **FEAT**: cache managers support. - **FEAT**: mark as experimental. - **FEAT**: coverage disabled by default. - **FEAT**: unify cache events api. - **FEAT**: integration tests. - **FEAT**: unit tests. - **FEAT**: automatic coverage. - **FEAT**: coverage usecase. - **REFACTOR**: proof of work as instance. - **REFACTOR**(fix): encode zapRequest. - **REFACTOR**(fix): encode gift wrap. - **REFACTOR**(fix): use signed event in sets engine. - **REFACTOR**(fix): brodcast detect need for signing. - **REFACTOR**(fix): mock relay fix send encode. - **REFACTOR**: zap request calc id. - **REFACTOR**(fix): auth event id. - **REFACTOR**(fix): sign event in test. - **REFACTOR**: immutable event sources. - **REFACTOR**: ndk tests. - **REFACTOR**: valid sig. - **REFACTOR**: other packages. - **REFACTOR**: entities. - **REFACTOR**: signer, amber. - **REFACTOR**: event service. - **REFACTOR**: nip01 immutable. - **REFACTOR**: decode nip01 event in isolate. - **FIX**: remove meaningless comments. - **FIX**: mem cache methods (loadNip05s, loadMetadatas). - **FIX**: blossom signing. - **FIX**: add copy with to extended class. - **FIX**: websocket state check optimization. - **FEAT**: add test suite in actual cache tests. - **FEAT**: global test suite. - **FEAT**: preserve order decoding. - **FEAT**: eose extract request id. - **FEAT**: isolate pool. - **FEAT**: deligate tasks to isolates. - **FEAT**: add tests. - **FEAT**: deprecation message for filters. - **FIX**: bip340 event verifier. - **FEAT**: add test. - **FIX**: clean imports. - **FIX**: improve relay reconnection. - **FIX**: close relay. - **FIX**: Handle null error value in NWC response deserialization. - **FIX**: forcing a pre-release. - **FIX**: move test to an apropriate area. - **FIX**: clean relay url function + add tests. - **FEAT**: add test. - **FIX**: update the mock relay + test. - **FIX**: test pass. - **FEAT**: add a test. - **FIX**: use mock relay. - **FIX**: new test pass. - **FEAT**: test. ## 0.6.1-dev.9 - **FEAT**: isolate manager stub. ## 0.6.1-dev.8 - **FIX**: remove unused import. - **FIX**: sha256 convert in isolate. - **FIX**: fetched ranges integration test. - **FIX**: rename coverage usecase to fetchedRanges. - **FIX**: timerange until. - **FIX**: added ranges. - **FEAT**: cache managers support. - **FEAT**: mark as experimental. - **FEAT**: coverage disabled by default. - **FEAT**: unify cache events api. - **FEAT**: integration tests. - **FEAT**: unit tests. - **FEAT**: automatic coverage. - **FEAT**: coverage usecase. ## 0.6.1-dev.7 - **REFACTOR**: proof of work as instance. - **REFACTOR**(fix): encode zapRequest. - **REFACTOR**(fix): encode gift wrap. - **REFACTOR**(fix): use signed event in sets engine. - **REFACTOR**(fix): brodcast detect need for signing. - **REFACTOR**(fix): mock relay fix send encode. - **REFACTOR**: zap request calc id. - **REFACTOR**(fix): auth event id. - **REFACTOR**(fix): sign event in test. - **REFACTOR**: immutable event sources. - **REFACTOR**: ndk tests. - **REFACTOR**: valid sig. - **REFACTOR**: other packages. - **REFACTOR**: entities. - **REFACTOR**: signer, amber. - **REFACTOR**: event service. - **REFACTOR**: nip01 immutable. - **REFACTOR**: decode nip01 event in isolate. - **FIX**: remove meaningless comments. - **FIX**: mem cache methods (loadNip05s, loadMetadatas). - **FIX**: blossom signing. - **FIX**: add copy with to extended class. - **FIX**: websocket state check optimization. - **FEAT**: add test suite in actual cache tests. - **FEAT**: global test suite. - **FEAT**: preserve order decoding. - **FEAT**: eose extract request id. - **FEAT**: isolate pool. - **FEAT**: deligate tasks to isolates. ## 0.6.1-dev.6 - **FEAT**: add tests. - **FEAT**: deprecation message for filters. ## 0.6.1-dev.5 - **FIX**: bip340 event verifier. - **FEAT**: add test. ## 0.6.1-dev.4 - **FIX**: clean imports. - **FIX**: improve relay reconnection. ## 0.6.1-dev.3 - **FIX**: close relay. ## 0.6.1-dev.2 - **FIX**: Handle null error value in NWC response deserialization. - **FIX**: forcing a pre-release. - **FIX**: move test to an apropriate area. - **FIX**: clean relay url function + add tests. - **FEAT**: add test. ## 0.6.1-dev.1 - **FIX**: update the mock relay + test. - **FIX**: test pass. - **FEAT**: add a test. ## 0.6.1-dev.0 - **FIX**: use mock relay. - **FIX**: new test pass. - **FEAT**: test. ## 0.6.0 - Graduate package to a stable release. See pre-releases prior to this version for changelog entries. ## 0.6.0-dev.20 - **REFACTOR**: remove param signer from lists api. - **REFACTOR**: use immutable event in toEvent(). - **REFACTOR**: reoder, naming, description. - **FIX**: upgrade to nip44. - **FIX**: mock relay delete from memory. - **FIX**: calculate id in nip51set. - **FEAT**: lists nip04 backwards compatibility with nip04. - **FEAT**: delete set. ## 0.6.0-dev.19 - **REFACTOR**: remove param signer from lists api. - **REFACTOR**: use immutable event in toEvent(). - **REFACTOR**: reoder, naming, description. - **FIX**: upgrade to nip44. - **FIX**: mock relay delete from memory. - **FIX**: calculate id in nip51set. - **FEAT**: lists nip04 backwards compatibility with nip04. - **FEAT**: delete set. ## 0.6.0-dev.18 - **FIX**: missing convert dependency. - **FIX**: remove hex package depandance. ## 0.6.0-dev.17 - **FIX**: missing convert dependency. - **FIX**: remove hex package depandance. ## 0.6.0-dev.16 - **FIX**: tests coverage. - **FIX**: remove hex package usage. - **FIX**: split long file. - **FIX**: round trip tests. - **FIX**: var to final. - **FIX**: move class to entities. - **FIX**: missing test coverage. - **FIX**: missing test coverage. - **FEAT**: nip19 getters on events. - **FEAT**: nprofile, naddr and nevent support. ## 0.6.0-dev.15 - **FIX**: tests coverage. - **FIX**: remove hex package usage. - **FIX**: split long file. - **FIX**: round trip tests. - **FIX**: var to final. - **FIX**: move class to entities. - **FIX**: missing test coverage. - **FIX**: missing test coverage. - **FEAT**: nip19 getters on events. - **FEAT**: nprofile, naddr and nevent support. ## 0.6.0-dev.14 - **FIX**: waiting for connection broadcast jit. ## 0.6.0-dev.13 - **FIX**: waiting for connection broadcast jit. ## 0.6.0-dev.12 - **FIX**: Use 0x100000000 instead of 1 << 32 for web compatibility. ## 0.6.0-dev.11 - **FIX**: Use 0x100000000 instead of 1 << 32 for web compatibility. ## 0.6.0-dev.10 - **FIX**: add id recalculation in Nip01Event.copyWith. - **FIX**: make the test "validate event: greater POW" predictable. - **FIX**: wrap json.decode with a try catch block. ## 0.6.0-dev.9 - **FIX**: add id recalculation in Nip01Event.copyWith. - **FIX**: make the test "validate event: greater POW" predictable. - **FIX**: wrap json.decode with a try catch block. ## 0.6.0-dev.8 - **FIX**: add test and call clean url during broadcast. ## 0.6.0-dev.7 - **FIX**: add test and call clean url during broadcast. ## 0.6.0-dev.6 - **FIX**: static analysis issues. ## 0.6.0-dev.5 - **FIX**: static analysis issues. ## 0.6.0-dev.4 - **FEAT**: log color, params. ## 0.6.0-dev.3 - **FEAT**: log color, params. ## 0.6.0-dev.2 - **REFACTOR**: concurrent streams with rxdart. - **FIX**: improved null filter. - **FIX**: drop invalid events. ## 0.6.0-dev.1 - **REFACTOR**: concurrent streams with rxdart. - **FIX**: improved null filter. - **FIX**: drop invalid events. ## 0.6.0-dev.0 - Bump "ndk" to `0.6.0-dev.0`. ## 0.5.2-dev.2 - **FIX**: buffer not clearing. - **FEAT**: concurrent event stream. ## 0.5.2-dev.1 - **FIX**: buffer not clearing. - **FEAT**: concurrent event stream. ## 0.5.2-dev.0+1 - **FIX**: call dispose on destroy. - **FIX**: BehaviorSubject for immediate values. - **FIX**: copy value to fix modification. ## 0.5.1 - feat: nip46 signer - feat: useragent identifier - fix: limit in loadEvents - dep: upgrade to pointycastle v4 ## 0.5.0 - feat: NIP07 web signer support - feat: sembast cache manager (+web support) ## 0.4.1 - fix: close relay only closes the specifi relay - fix: fixed common ndk warnings - fix: remove inFlight requests - fix: jit engine connections to low value relays ## 0.4.0 - feat: nip 59 gift wrap - feat: tlv decode nip19 - feat: search usecase - feat: relayConnectivityChanges usecase - feat: Add settleDeadline field to NwcNotification - feat: Nip51 mute list event filterenhancementNew feature or request - feat: NWC hold invoice support - feat: Support NWC Primal Wallet specific behaviorenhancement - fix: breaking realtime updates with multiple filters - fix: add support for multiple filters on RELAYS_SET engine - fix: Add NWC useETagForEachRequest & ignoreCapabilitiesCheck to connect - fix: Fix connection to a bad relay blocking event delivery - fix: Connection to a bad relay blocking broadcastenhancement - fix: Filter with ids breaks realtime updatesbug - fix: rust dependency with latest flutter version - updated dependencies ## 0.3.2 - improvement: add NWC get_budget method support - improvement: adds percent consider broadcast done ## 0.3.1 - improvement: generic filter tags - fix: blossom parsing issues - fix: log invalid signed events ## 0.3.0 - blossom improvmements - accounts usecase (switch signer) - docs: enable gossip guide, accounts ## 0.2.6 - full blossom support - new docs ## 0.2.5 - fix async of send auth challenge after signing ## 0.2.4 - fix wrongly timeouts being triggered - fix using same relays from zap request for zap receipts ## 0.2.2 - fix passing ZapRequest to lnurl nostr param ## 0.2.1 - NIP-47 Nostr Wallet Connect - NIP-57 Zaps support - NIP-42 Authentication of clients to relays - NIP-44 Encrypted Payloads (Versioned) - Unification of RelayManager in JIT - Web_socket_client nostr transport implementation with backoff reconnects - Melos support, separated monorepos - Objectbox cache initial support of basic models - Isar cache support - many bugfixes and improvements in relay timeout handling ## 0.1.3 - upgrade to flutter_rust_bridge 2.6.0 - close usecase in requests - async cache manager - set contact list usecase - use broadcast usecase for other usecases ## 0.1.2 - upgrade to flutter_rust_bridge 2.5.0 ## 0.1.1 - LF line break issue linux ## 0.1.0 - complete re architecture of the lib [ADR](https://github.com/relaystr/ndk/blob/master/doc/ADRs/layerd-architecture.md) - gossip read support in two engines [LISTS, JIT] - caching support - rust event verifier - drop support for acinq verifier - examples and sample app - improved testing - requests middleware - convenience methods for common nostr usecases - rename repo `dart_ndk` => `ndk` ## 0.1.0-dev996 - upgrade to bip340 0.3.0 ## 0.1.0-dev995 - link working rust_lib_ndk - readme - examples ## 0.1.0-dev994 - static fixes ## 0.1.0-dev993 - test examples ## 0.1.0-dev992 - refine example ## 0.1.0-dev991 - update examples ## 0.1.0-dev99 - re-subscribe to in flight subscription requests after relay reconnection ## 0.1.0-dev98 - add documentation for public members ## 0.1.0-dev94 - add replyETags getter to Nip01Event ## 0.1.0-dev92 - add example README.md ## 0.1.0-dev91 - major architecure refactor - rust event verifier - removed acinq verifier ## 0.1.0-dev8 - use fork of amberflutter for isAppInstalled method ## 0.1.0-dev6 - amber event signer ## 0.1.0-dev6 - acinq sec256k1 event verifier (native android) ## 0.1.0-dev5 - set isar maxSizeMiB to 1024 - use compactOnLaunch: const CompactCondition(minRatio: 2.0, minBytes: 100 _ 1024 _ 1024, minFileSize: 256 _ 1024 _ 1024), ## 0.1.0-dev3 - fixed reconnect method ## 0.1.0-dev1 - gossip outbox/inbox model implemented ## 0.0.1 - TODO: Describe initial release.