Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 08:46
· 51 commits to main since this release

[0.2.0] - 2026-10-22

🚀 Features

  • (cli) Add export, import, scan, and compact commands
  • [breaking] Add NIP-09 deletion and NIP-40 expiration
  • (relay) Raise the open-file soft limit at startup
  • Add per-connection rate limits and connection caps
  • Add Prometheus metrics
  • Add the strfry write-policy plugin
  • Reload the configuration on SIGHUP
  • [breaking] Add NIP-42 authentication and NIP-70 protected events
  • [breaking] Bound abuse per address and outbound memory per process
  • [breaking] Add NIP-45 COUNT with HyperLogLog
  • (server) Warn when the writer stalls
  • Add NIP-77 negentropy sync
  • [breaking] Honor NIP-62 requests to vanish
  • [breaking] Add the NIP-86 relay management API
  • (sql) Add the SQL event store
  • (core) Add Filter equality and canonical to_json
  • (core) Restore sessions from persisted connection state
  • (sql) Report the earliest stored expiration
  • (worker) Add the host-testable relay object
  • (worker) Add the Durable Object glue and wrangler config
  • (sql) Count the stored events a filter set matches
  • (worker) Answer NIP-45 COUNT
  • (sql) Honor NIP-62 requests to vanish
  • (worker) Drain NIP-62 vanish sweeps in the alarm
  • (sql) Persist and apply NIP-86 moderation state
  • (worker) Serve the NIP-86 management API
  • (worker) Install a panic hook so aborts reach the log
  • (sql) Add a record-only scan for negentropy sync
  • (worker) Negotiate NIP-77 negentropy sync
  • (worker) Gate publishes through a write-policy binding
  • (relay) Enable permessage-deflate by default
  • (worker) Bound live subscriptions by a byte budget
  • (core) Complete the NIP-11 document
  • (core) Add the landing page and NodeInfo documents
  • Serve the landing page and NodeInfo
  • (relay) Enforce REQ and COUNT filter validation
  • (relay) Add TCP keepalive, ops tracing targets, and CLI parity
  • (relay) Budget live subscriptions by approx_bytes

🐛 Bug Fixes

  • (security) Harden the transport against resource exhaustion
  • Reap stale LMDB readers and make compaction crash-safe
  • (core) Stop capping addressable REQs without a d filter
  • Release queued outbound bytes when a connection ends
  • (relay) Flush the close frame queued on read errors
  • (worker) Clear the cached alarm when it fires
  • (worker) Close hibernated sockets with bad attachments
  • (worker) Regenerate colliding connection ids
  • (relay) Publish moderation snapshots in commit order
  • (worker) Answer only the relay endpoints
  • (http) Allow browser NIP-86 calls with shared CORS headers
  • (config) Reject auto_ping_seconds = 0 at load and reload
  • (config) Refuse a write-policy plugin without /bin/sh
  • (conformance) Stop the whole server process group on exit

📚 Documentation

  • Drop a private intra-doc link from vanish_step
  • (server) Mention vanish sweeps on SLOW_WRITE
  • Document the Workers build and conformance runs
  • Slim the README and add contributing and security guides
  • (changelog) Record the workers edition and core moves
  • (security) Note the missing HTTP request rate limit

⚡ Performance

  • (worker) Parse NOSFRY_CONFIG once per isolate
  • (sql) Stream REQ payloads in 64-seq chunks

🚜 Refactor

  • (core) Move WriteOutcome into the core
  • (core) Share the NIP-11 document and auth configuration
  • (core) Take PackedRef views by value
  • (core) Share the moderation state and the NIP-86 protocol
  • (core) Share the negentropy reconcile helpers
  • (core) Share the write-policy protocol
  • (core) Share the effective NIP-11 info

🎨 Styling

  • (bench) Format the harness with rustfmt

🧪 Testing

  • Add cargo-fuzz targets and CI fuzz runs
  • Allow targets of in-flight deletions in the crash test
  • Accept a COUNT that answers before its id is replaced
  • Share the store differential suite
  • (conformance) Add the black-box relay suite
  • (conformance) Fence CLOSE with a barrier before publishing
  • Share the COUNT differential checks
  • (conformance) Cover NIP-45 COUNT
  • Cover NIP-62 in the store differential suite
  • (conformance) Cover NIP-62 request to vanish
  • Share the NIP-86 moderation script across stores
  • (conformance) Cover the NIP-86 management API
  • (conformance) Read management responses by content length
  • Check the record-mode scan against the model
  • (conformance) Cover NIP-77 negentropy reconciliation
  • (conformance) Cover the write-policy protocol on both editions

⚙️ Miscellaneous Tasks

  • Format TOML with taplo and publish a container image
  • Run the conformance suite for both editions
  • (release) 0.2.0

🛡️ Security

  • Bump rustls-webpki and webpki-roots for RUSTSEC-2026-038x (#32)

💼 Other

  • Add the soak harness and its analysis script
  • Serve restricted kinds in the benchmark relay config
  • Disable per-address buckets in the soak config
  • Hold the soak pace after stalls and check outbound drain
  • Exercise COUNT, negentropy and vanish in the soak
  • (worker) Keep target_features in the wrangler build command
  • (deps) Bump yawc to 0.4.4