Skip to content

Releases: mmalmi/nostr-pubsub

nostr-pubsub TypeScript v0.5.5

Choose a tag to compare

@mmalmi mmalmi released this 26 Jul 14:51
Immutable release. Only release title and notes can be modified.

Adds an opaque exact-object verification boundary for shared SimplePool transports. Worker-owned relay ingestion can now use nostr-wasm once per event and reuse private canonical admission without a duplicate Schnorr pass or trusting a spoofable public marker.

nostr-pubsub TypeScript v0.5.4

Choose a tag to compare

@mmalmi mmalmi released this 26 Jul 13:58
Immutable release. Only release title and notes can be modified.

Avoids duplicate Schnorr verification when an adjacent protocol layer re-admits an event already authenticated by nostr-pubsub's private canonical trust boundary. Spoofed public verification markers still fail closed.

nostr-pubsub TypeScript 0.5.3

Choose a tag to compare

@mmalmi mmalmi released this 26 Jul 13:27
Immutable release. Only release title and notes can be modified.

Adds cancellable asynchronous batch verification admission for immutable events checked by a Web Worker or other trusted boundary. Canonical admitted events use the router's verified-copy fast path without repeating Schnorr verification on the caller thread.

nostr-pubsub TypeScript 0.5.2

Choose a tag to compare

@mmalmi mmalmi released this 18 Jul 16:41
Immutable release. Only release title and notes can be modified.
  • Add the shared SimplePoolNostrRelayTransport browser relay carrier.\n- Verify inbound and outbound events at the package transport boundary.\n- Bound historical queries while keeping live subscriptions open.\n- Treat publication as successful when any configured relay accepts it.

nostr-pubsub TypeScript 0.5.1

Choose a tag to compare

@mmalmi mmalmi released this 18 Jul 15:16
Immutable release. Only release title and notes can be modified.

Preserve negative backend priorities in routed relay-only publication. Includes the complete routed INV/WANT live and historical pubsub implementation from 0.5.0.

nostr-pubsub TypeScript v0.5.0

Choose a tag to compare

@mmalmi mmalmi released this 18 Jul 15:07
Immutable release. Only release title and notes can be modified.

Changelog

0.5.0 - 2026-07-18

  • Replace the raw-datagram FIPS relay bridge with the reliable FIPS-TCP
    nostr.pubsub/1 client on port 7368; localPeerId is now required for
    deterministic simultaneous-stream ownership.
  • Use compatible grouped INV, one-event WANT, and ordinary addressed
    EVENT for both bounded historical replay and new live events, with global
    event-ID deduplication and alternate-provider retry.
  • Add matching historical and live routers for Hashtree/local indexes, FIPS
    peers, and traditional Nostr relays; remove the legacy route bus alias and
    obsolete FipsNostrRelayService API.
  • Add the owned NostrPubsubRouter for applications that need one reusable
    query/publish/live provider rather than one-shot route helper calls.
  • Add shared Rust-process wire vectors and real FIPS-TCP coverage for all five
    REQ/INV/WANT/EVENT/CLOSE messages.

0.4.0 - 2026-07-18

  • Split the read-only NostrEventReader and write-only NostrEventPublisher
    contracts while preserving the combined EventBus API and routed bus alias.
  • Give source routes explicit dataset identities: replicas fail over within one
    dataset, while additive datasets are queried concurrently and merged.
  • Deduplicate verified events with complete provenance, deterministic ordering,
    one global result limit, isolated source failures, and per-route/per-dataset
    outcome reporting.
  • Propagate cancellation and one absolute deadline through routed and in-memory
    queries without activating any relay or changing publication policy.
  • Honor NIP-01 OR semantics by applying each filter's limit independently and
    reserving QueryOptions.limit for the router-wide result cap.

0.3.1 - 2026-07-16

  • Retry a local subscription's REQ after an initially unavailable FIPS route
    later reconnects, while keeping replay delivery valid during the pending send.
  • Close a late successful REQ when its local subscription or peer admission was
    removed before the send completed.

0.3.0 - 2026-07-16

  • Add FipsNostrPubsubClient, the shared browser nostr.pubsub/1
    REQ/EVENT/CLOSE carrier for signed Nostr events.
  • Keep peer admission application-owned and explicit; connected peers are never
    inferred, and subscriptions refresh when admitted standalone links reconnect.
  • Bound replay, subscriptions, filters, peers, frames, and pending work; failed
    publications remain retryable and invalid or non-admitted traffic is dropped.
  • Match the native FSP datagram maximum exactly: accept 65,525 bytes and reject
    65,526, with a real Rust process roundtrip gate.
  • Include TypeScript sources referenced by the published declaration and source
    maps so clean-installed artifacts are self-contained.

0.2.0 - 2026-07-16

  • Add the bounded FipsInvWantStream and FipsInvWantTcpDriver over the
    shared TCP/FIPS v1 stack.
  • Cover partial and coalesced records, queue and peer bounds, close/reset
    lifecycle, reconnects, and real Rust-to-TypeScript process interoperability.
  • Match Rust simultaneous-connect ordering by normalizing compressed and
    x-only transport identities to their canonical npub ordering key.
  • Keep authenticated capability discovery explicit; no fallback provider
    namespace or unauthenticated peer inference is introduced.

0.1.5 - 2026-07-13

  • Add the authenticated FIPS Nostr relay adapter and shared Rust/TypeScript
    interoperability vectors.

nostr-pubsub TypeScript v0.4.0

Choose a tag to compare

@mmalmi mmalmi released this 18 Jul 11:19
Immutable release. Only release title and notes can be modified.

Dataset-aware read routing: additive datasets, ordered replica failover, cancellation/deadlines, verified deduplication and provenance, while retaining the EventBus compatibility surface.

nostr-pubsub TypeScript 0.3.1

Choose a tag to compare

@mmalmi mmalmi released this 17 Jul 20:45
Immutable release. Only release title and notes can be modified.

Recover explicit FIPS nostr.pubsub/1 subscriptions after route reconnection while preserving bounded replay and late-close lifecycle semantics. Wire, capability, and the 65,525-byte native FSP bound are unchanged.

nostr-pubsub TypeScript 0.3.0

Choose a tag to compare

@mmalmi mmalmi released this 16 Jul 02:05
Immutable release. Only release title and notes can be modified.

Shared authenticated FIPS Nostr pubsub client for signed REQ, EVENT, and CLOSE traffic. Peer admission remains explicit and application-owned. Matches the native 65,525-byte FSP service-body boundary and includes Rust process interoperability coverage.

nostr-pubsub TypeScript 0.2.0

Choose a tag to compare

@mmalmi mmalmi released this 15 Jul 23:45

TypeScript 0.2.0

  • Adds the bounded FipsInvWantStream and FipsInvWantTcpDriver over the shared @fips/tcp 0.2.0 stack.
  • Handles incremental split/coalesced records, bounded queues and peers, authenticated endpoint identity, graceful close/reset, reconnects, and simultaneous-connect convergence.
  • Matches Rust ordering by normalizing compressed/x-only peer identities to canonical npub ordering keys while retaining transport IDs for routing.
  • Keeps capability discovery explicit and authenticated; no fallback namespace or arbitrary-peer inference is added.

Verification includes 42 TypeScript tests, two real Rust-process TCP/FIPS exchanges, 23 Rust nostr-pubsub-fips tests, legacy cross-language vectors, strict Clippy, build/check, and a clean release-tarball install/import.

Artifact SHA-256: 8203971a6e90e506711b7c50ad93822b1d1af6e5c1c16d21c6a1748b9fcec016