Back to Freedom.Tech Back
All nostream releasesAll versions
Release Sun, Jun 21, 2026 7 min read

nostream 3.0.0

Fixing TODO in web-app-factory.ts. Remove unsafe-inline and implement script nonces. in https://github.com/cameri/nostream/pull/394; Set event_deduplication in seed script in https://github.com/cameri/nostream/pull/386; Pin postgres image and use named volume in https://github.com/cameri/nostream/pull/393; Add DNS pre-flight check to verify Docker connectivity before s... in https://github.com/cameri/nostream/pull/398

What's Changed

  • docs: add Linux DNS troubleshooting by @Anshumancanrock in https://github.com/cameri/nostream/pull/397
  • Fixing TODO in web-app-factory.ts. Remove unsafe-inline and implement script nonces. by @Mohit-Davar in https://github.com/cameri/nostream/pull/394
  • fix: set event_deduplication in seed script by @kanishka0411 in https://github.com/cameri/nostream/pull/386
  • chore: update doc for start script and remove old script by @kartikangiras in https://github.com/cameri/nostream/pull/389
  • fix(docker): pin postgres image and use named volume by @CKodidela in https://github.com/cameri/nostream/pull/393
  • feat: add DNS pre-flight check to verify Docker connectivity before s... by @YashIIT0909 in https://github.com/cameri/nostream/pull/398
  • docs: add Redis ACL configuration guide for production deployments by @saniddhyaDubey in https://github.com/cameri/nostream/pull/408
  • fix(ci): update artifact actions to v4 for unit/integration coverage ... by @Priyanshubhartistm in https://github.com/cameri/nostream/pull/400
  • fix: disable Sonarcloud for external PRs by @Justxd22 in https://github.com/cameri/nostream/pull/420
  • docs: add env.example (#413) by @Justxd22 in https://github.com/cameri/nostream/pull/415
  • add NIP-62 vanish event support by @vikashsiwach in https://github.com/cameri/nostream/pull/418
  • fix(ci): correct commit message for NIP-62 vanish support by @phoenix-server in https://github.com/cameri/nostream/pull/430
  • feat: Import .jsonl file with events into the events table by @Anshumancanrock in https://github.com/cameri/nostream/pull/414
  • Added expires_at filter in message pipeline by @kushagra0902 in https://github.com/cameri/nostream/pull/403
  • chore: upgrade to node.js 24 LTS, update dependencies and improve type definitions by @Mahmoud-s-Khedr in https://github.com/cameri/nostream/pull/419
  • Fix: nip01 replaceable tiebreaker by @YashIIT0909 in https://github.com/cameri/nostream/pull/416
  • chore: add knip and remove dead code by @Anshumancanrock in https://github.com/cameri/nostream/pull/437
  • feat: add nginx reverse proxy to docker-compose by @kanishka0411 in https://github.com/cameri/nostream/pull/423
  • chore: update dependencies for express, body-parser, and js-yaml by @Mahmoud-s-Khedr in https://github.com/cameri/nostream/pull/442
  • chore: decouple knip from default lint script by @CKodidela in https://github.com/cameri/nostream/pull/460
  • fix(deps): upgrade axios to 1.15.0 to fix CVE-2025-62718 by @khadar1020 in https://github.com/cameri/nostream/pull/466
  • feat: implement NIP-17 & NIP-44 v2 for Modern Direct Messages by @CKodidela in https://github.com/cameri/nostream/pull/458
  • fix(router): NIP-11 being served only on root instead of relay path by @sagar-h007 in https://github.com/cameri/nostream/pull/399
  • chore: update eslint configuration and dependencies by @Mahmoud-s-Khedr in https://github.com/cameri/nostream/pull/448
  • test: update unit tests for NIP-01 compliance changes by @phoenix-server in https://github.com/cameri/nostream/pull/480
  • fix: properly await worker teardown in integration tests to prevent open handles by @phoenix-server in https://github.com/cameri/nostream/pull/481
  • feat: add opt-in event retention purge (#359) by @Justxd22 in https://github.com/cameri/nostream/pull/412
  • fix: update Dockerfile to run database migrations in CMD by @kartikangiras in https://github.com/cameri/nostream/pull/422
  • FIXES TODO in callbacks: implement strict validation for all payment callbacks by @Mohit-Davar in https://github.com/cameri/nostream/pull/426
  • chore(deps): bump @tootallnate/once, semantic-release, @semantic-release/github and @semantic-release/npm by @dependabot[bot] in https://github.com/cameri/nostream/pull/475
  • fix: serve real home page instead of redirecting, add templated pages by @CKodidela in https://github.com/cameri/nostream/pull/409
  • Implementes TODO in payments-service.ts. convert user admission to postgres stored function by @Mohit-Davar in https://github.com/cameri/nostream/pull/428
  • test: add missing unit tests for message factory functions by @d1vyanshu-kumar in https://github.com/cameri/nostream/pull/470
  • refactor: migrate validation from Joi to Zod by @CKodidela in https://github.com/cameri/nostream/pull/484
  • chore(deps): bump minimatch and mocha by @dependabot[bot] in https://github.com/cameri/nostream/pull/479
  • chore(deps): bump lodash from 4.17.21 to 4.18.1 by @dependabot[bot] in https://github.com/cameri/nostream/pull/472
  • chore(deps): bump follow-redirects from 1.15.11 to 1.16.0 by @dependabot[bot] in https://github.com/cameri/nostream/pull/471
  • test: set minimum unit test coverage thresholds by @phoenix-server in https://github.com/cameri/nostream/pull/486
  • feat: Export events to JSON Lines by @Anshumancanrock in https://github.com/cameri/nostream/pull/451
  • Feat: addition of nip-05 verification (issue #261) by @archief2910 in https://github.com/cameri/nostream/pull/463
  • feat: vanish optimization by @vikashsiwach in https://github.com/cameri/nostream/pull/446
  • test: add unit tests for WebSocket and Redis adapters by @abhinavrathee in https://github.com/cameri/nostream/pull/495
  • feat: add security load test and regression tooling by @YashIIT0909 in https://github.com/cameri/nostream/pull/462
  • test: add callback controller specs by @Anshumancanrock in https://github.com/cameri/nostream/pull/494
  • Implement caching for user admission check by @Mohit-Davar in https://github.com/cameri/nostream/pull/498
  • fix: OpenNode callback accepts unauthenticated requests by @Anshumancanrock in https://github.com/cameri/nostream/pull/454
  • test: add unit tests for MaintenanceWorker and PaymentsService by @Mahmoud-s-Khedr in https://github.com/cameri/nostream/pull/440
  • docs: sort settings list A-Z by @Anshumancanrock in https://github.com/cameri/nostream/pull/501
  • chore: inline 5 dependencies, removing external packages by @phoenix-server in https://github.com/cameri/nostream/pull/500
  • feat: i2p support addition (#35) by @archief2910 in https://github.com/cameri/nostream/pull/499
  • chore: replace semantic-release with changesets by @phoenix-server in https://github.com/cameri/nostream/pull/497
  • docs: update README for NIP-05 and NIP-44 by @radosvet93 in https://github.com/cameri/nostream/pull/518
  • feat: add NIP-13 Proof of Work enforcement scenarios and implementation by @Mahmoud-s-Khedr in https://github.com/cameri/nostream/pull/513
  • feat: implement EWMA rate limiter with strategy support (#404) by @saniddhyaDubey in https://github.com/cameri/nostream/pull/476
  • feat: NIP-03 opentimestamps support (#105) by @archief2910 in https://github.com/cameri/nostream/pull/515
  • fix: Multiple tag selections for dedup key in parameterized evetns by @kushagra0902 in https://github.com/cameri/nostream/pull/525
  • test(nip-11): add integration tests and fix max_filters mapping by @kanishka0411 in https://github.com/cameri/nostream/pull/527
  • refactor: use exact pubkey matching for whitelist/blacklist by @vikashsiwach in https://github.com/cameri/nostream/pull/524
  • feat: queries benchmarking and optimization (#68) by @archief2910 in https://github.com/cameri/nostream/pull/534
  • test: add NIP-17 gift wrap integration tests by @Anshumancanrock in https://github.com/cameri/nostream/pull/529
  • chore: migrate to pino 456 by @Priyanshubhartistm in https://github.com/cameri/nostream/pull/511
  • feat: support compression when importing/exporting events (gzip/xz) by @Anshumancanrock in https://github.com/cameri/nostream/pull/514
  • fix: restore and update CONFIGURATION.md, remove duplicate changesets by @saniddhyaDubey in https://github.com/cameri/nostream/pull/538
  • test(integration): add NIP-62 vanish tests and fix test enviroment by @vikashsiwach in https://github.com/cameri/nostream/pull/537
  • fix(ci): enable automatic Release PR creation in changesets workflow by @phoenix-server in https://github.com/cameri/nostream/pull/543
  • fix: only trust forwarded IP header from configured trusted proxies by @kanishka0411 in https://github.com/cameri/nostream/pull/493
  • docs: add NIP-62 to supported features list by @vikashsiwach in https://github.com/cameri/nostream/pull/544
  • docs: remove Sonarqube badge and fix Coveralls badge by @CKodidela in https://github.com/cameri/nostream/pull/550
  • feat: add NIP-45 Event Count support by @a-khushal in https://github.com/cameri/nostream/pull/522
  • feat: support uppercase tag filters (#A-Z) in filter schema by @CKodidela in https://github.com/cameri/nostream/pull/548
  • test(unit): add InvoiceRepository and UserRepository unit tests by @CKodidela in https://github.com/cameri/nostream/pull/551
  • test(integration): add integration tests for NIP-02 contact lists by @vikashsiwach in https://github.com/cameri/nostream/pull/552
  • test: add NIP-40 standalone expiration integration coverage by @Priyanshubhartistm in https://github.com/cameri/nostream/pull/528
  • fix: add tie-breaker to upsertMany by @Anshumancanrock in https://github.com/cameri/nostream/pull/553
  • docs: deduplicate dev setup from README, revamp CONTRIBUTING with fairness policy and husky guidance by @cameri with @Copilot in https://github.com/cameri/nostream/pull/554
  • feat: complete NIP-11 relay info parity by @a-khushal in https://github.com/cameri/nostream/pull/557
  • test: add NIP-22 created_at integration coverage by @Priyanshubhartistm in https://github.com/cameri/nostream/pull/547
  • fix(ci): version and publish changeset releases by @cameri in https://github.com/cameri/nostream/pull/559
  • chore(ci): set git config and update package lock by @cameri in https://github.com/cameri/nostream/pull/561
  • chore(ci): provide attribution on releases by @cameri in https://github.com/cameri/nostream/pull/563
  • fix: changeset release by @cameri in https://github.com/cameri/nostream/pull/564
  • feat: support subject tags in text notes and add NIP-14 support coverage by @a-khushal in https://github.com/cameri/nostream/pull/566
  • chore: migrate npm to pnpm across CI, Docker, and scripts by @Anshumancanrock in https://github.com/cameri/nostream/pull/555
  • fix: expire stale LNbits pending invoices by @kanishka0411 in https://github.com/cameri/nostream/pull/575
  • fix: mirror limits optional chaining by @tharu-jwd in https://github.com/cameri/nostream/pull/568
  • feat: migrate nostream scripts to unified CLI/TUI by @Mahmoud-s-Khedr in https://github.com/cameri/nostream/pull/574
  • ci: add CodeQL workflow by @cameri in https://github.com/cameri/nostream/pull/558
  • chore(deps-dev): bump uuid from 8.3.2 to 14.0.0 by @dependabot[bot] in https://github.com/cameri/nostream/pull/572
  • fix: allow empty generic tag filter values by @kanishka0411 in https://github.com/cameri/nostream/pull/583
  • fix: close dead connections even if they have active subscriptions by @tharu-jwd in https://github.com/cameri/nostream/pull/438
  • feat: add NWC payments processor (#323) by @Justxd22 in https://github.com/cameri/nostream/pull/539
  • test: add NIP-04 integration coverage for encrypted direct messages by @Priyanshubhartistm in https://github.com/cameri/nostream/pull/562
  • feat: add NIP-65 (Relay List Metadata) support by @CKodidela in https://github.com/cameri/nostream/pull/585
  • fix: use timing-safe HMAC comparison in Nodeless callback controller by @Anshumancanrock in https://github.com/cameri/nostream/pull/584
  • fix: return HTML for browser Accept headers on root route (#532) by @Justxd22 in https://github.com/cameri/nostream/pull/546
  • fix: skip Redis auth when credentials are unset with unit test (#541) by @Justxd22 in https://github.com/cameri/nostream/pull/545
  • feat: support geohash prefix matching for #g filters by @kanishka0411 in https://github.com/cameri/nostream/pull/586
  • feat: Add k6 connection and message rate limiter tests by @saniddhyaDubey in https://github.com/cameri/nostream/pull/556
  • fix: add husky install fallback by @Priyanshubhartistm in https://github.com/cameri/nostream/pull/591
  • feat: add Marmot Protocol relay support (MIPs 00-03) by @CKodidela in https://github.com/cameri/nostream/pull/602
  • feat: add nip-25 support by @CKodidela in https://github.com/cameri/nostream/pull/589
  • fix: maxlimit check to subscription event requests by @saniddhyaDubey in https://github.com/cameri/nostream/pull/600
  • fix: update serialize-javascript to >=7.0.3 by @Anshumancanrock in https://github.com/cameri/nostream/pull/592
  • fix: prevent rate limiter bypass via Lua atomic script by @YashIIT0909 in https://github.com/cameri/nostream/pull/593
  • fix: docker availability precheck by @CKodidela in https://github.com/cameri/nostream/pull/596
  • test: add maintenance-service-factory unit tests by @phoenix-server in https://github.com/cameri/nostream/pull/604
  • refactor: guard callback routes with reusable middleware that checks the payment processor by @Anshumancanrock in https://github.com/cameri/nostream/pull/597
  • test: add maintenance-worker-factory unit tests by @phoenix-server in https://github.com/cameri/nostream/pull/606
  • chore(ci): skip expensive jobs on non-source changes by @cameri in https://github.com/cameri/nostream/pull/565
  • fix: check payments.enabled in callback route middleware by @Anshumancanrock in https://github.com/cameri/nostream/pull/616
  • chore(deps): bump axios from 1.15.1 to 1.15.2 by @dependabot[bot] in https://github.com/cameri/nostream/pull/613
  • feat: add NIP-42 client authentication by @Anshumancanrock in https://github.com/cameri/nostream/pull/622
  • feat: wot#1 config by @saniddhyaDubey in https://github.com/cameri/nostream/pull/623
  • test: optimize NIP-44 unit tests by @Ferryx349 in https://github.com/cameri/nostream/pull/624
  • feat: Add Nip42 handler by @Anshumancanrock in https://github.com/cameri/nostream/pull/629
  • refactor(http): remove deprecated remote_ip_header fallback by @Ferryx349 in https://github.com/cameri/nostream/pull/628
  • refactor: simplify EventRepository query/purge complexity by @Ferryx349 in https://github.com/cameri/nostream/pull/625
  • test(integration): verify response content-types across HTTP routes by @Ferryx349 in https://github.com/cameri/nostream/pull/627