Skip to content

0.6.0

Latest

Choose a tag to compare

@yysskk yysskk released this 05 Jul 19:26
0.6.0
ab307f9

A large protocol and tooling release: ten new NIPs, a new NostrConnect library for remote signing, a spec-compliance fix to NIP-44 encryption, and expanded test coverage.

Added

  • NIP-13 Proof of Work — difficulty, commitment-aware validation, and cooperative mining.
  • NIP-21 nostr: URIs — bidirectional conversion for NIP-19 entities (nsec rejected).
  • NIP-23 Long-form content — kind 30023 articles / 30024 drafts with naddr addressing.
  • NIP-27 Content references — parse nostr: mentions and map them to p/q/a tags.
  • NIP-45 Event counts (COUNT) at the connection, pool, and client levels.
  • NIP-46 Nostr Connect — a new NostrConnect library: the RemoteSigner actor, bunker:// and nostrconnect:// flows, auth_url challenges, and typed commands.
  • NIP-49 Private key encryption — EncryptedPrivateKey (ncryptsec) via scrypt + XChaCha20-Poly1305.
  • NIP-50 Search — a search field on Filter.
  • NIP-51 Lists — standard lists (mute/pin/bookmarks) and parameterized sets, with NIP-44-encrypted private items.
  • NIP-56 Reporting (kind 1984).
  • NostrSigning protocol unifying local EventSigner and remote RemoteSigner; NostrClient accepts either for signing, publishing, and NIP-42 auth.

Fixed

  • NIP-44 encryption is now spec-compliant and interoperable — it previously used the AEAD ChaCha20 keystream (block counter 1) and a floating-point padding calculation, so payloads did not match other Nostr clients. Now bare ChaCha20 at counter 0 with the spec's integer padding, validated against the official vectors. Payloads from earlier releases will not decrypt, but they never interoperated.
  • Relay hardening: graceful WebSocket close-code fallback, and observable NIP-42 auth-responder failures.

Changed

  • ClientMessage, RelayMessage, and NostrError gain new cases — additive, but a source break for exhaustive switches.

Requirements

Swift 6.3+ · iOS 17 / macOS 14 / tvOS 17 / watchOS 10 / visionOS 1

See the full changelog.