Non-NIP new features and changes in v3:

Cameri🐦‍🔥

npub1qqqqqqyz0la2jjl752yv8h7wgs3v098mh9nztd4nr6gynaef6uqqt0n47m

hex

000029836aa2ac9c2046a48628d597760528d27ff9e001c2525d6de0f9e171de

nevent

nevent1qqsqqqpfsd429tyuypr2fp3g6kthvpfg6fllncqpcff96m0ql8shrhsprpmhxue69uhhyetvv9ujuem4d36kwatvw5hx6mm9qgsqqqqqqzp8l74ff0l29zxrml8yggk8jnamje39k6e3ayzf7u5awqq39c7q2

Kind-1 (TextNote)

2026-06-21T14:40:17Z

↳ 回复 Cameri🐦‍🔥 (npub1qqqqqqyz0la2jjl752yv8h7wgs3v098mh9nztd4nr6gynaef6uqqt0n47m)

Nostream v3.0.0 released! 🚀✊ https://github.com/cameri/nostream/releases/tag/v3.0.0 Thanks to each of the following students from the Summer of Bitc...

Non-NIP new features and changes in v3:

DEPLOYMENT

  • Unified nostream CLI/TUI replaces all scripts/* shell wrappers (start, stop, update, clean, info, dev)
  • nginx reverse proxy option added to docker-compose (nostream start --nginx)
  • I2P support added (nostream start --i2p)
  • New docker-compose variants: i2p, nginx, Windows
  • Docker DNS pre-flight check before startup
  • Dockerfile now auto-runs migrations on container start
  • Railway.app deployment template included

PERFORMANCE

  • New hot-path PostgreSQL indexes for subscription, vanish, retention, and invoice queries
  • User admission check converted to a PostgreSQL stored function
  • User admission check result cached in Redis
  • EWMA rate limiter with configurable strategy support
  • Vanish (NIP-62) query optimized
  • db:benchmark and db:verify-index-impact tooling added

IMPORT / EXPORT

  • Export events to JSON Lines (.jsonl) or JSON array (.json)
  • Import events from .jsonl or .json files
  • Gzip and XZ compression for both import and export

PAYMENTS

  • NWC (Nostr Wallet Connect) added as a payment processor
  • Callback routes now only registered when the matching processor is active
  • LNbits: stale pending invoices now expired automatically
  • Nodeless: timing-safe HMAC comparison for webhook verification

RELIABILITY & SECURITY

  • X-Forwarded-For no longer unconditionally trusted — trusted proxies must be configured
  • Dead WebSocket connections closed even when they have active subscriptions
  • Rate limiter TOCTOU race condition fixed via Lua atomic script
  • Mirroring: silent event drops fixed when mirror has no limits configured
  • Redis: AUTH skipped automatically when credentials are unset
  • CSP hardened: removed unsafe-inline, added script nonces
  • serialize-javascript updated to fix RCE CVE (GHSA-5c6j-r48x-rmvq)

NEW SETTINGS

  • nip05.domainWhitelist / nip05.domainBlacklist
  • limits.event.retention.kind.whitelist
  • limits.event.retention.pubkey.whitelist
  • limits.admissionCheck.ipWhitelist
  • limits.message.ipWhitelist
  • info.self (relay pubkey for NIP-11 relay info)
  • Opt-in event retention purge (limits.event.retention)

TOOLING (developer-facing)

  • pnpm replaces npm
  • Biome replaces ESLint + Prettier
  • Zod replaces Joi for validation
  • Changesets replaces semantic-release
  • Knip added for dead code detection
  • Pino replaces custom logging across adapters and services
  • CodeQL security analysis workflow added

原始 JSON

{
  "kind": 1,
  "id": "000029836aa2ac9c2046a48628d597760528d27ff9e001c2525d6de0f9e171de",
  "pubkey": "00000000827ffaa94bfea288c3dfce4422c794fbb96625b6b31e9049f729d700",
  "created_at": 1782052817,
  "tags": [
    [
      "e",
      "0000098f1d09b2d06b17a96b1617760ccdb8590f8a0abd36f2f68f6f8c9eaa5f",
      "",
      "root"
    ],
    [
      "p",
      "00000000827ffaa94bfea288c3dfce4422c794fbb96625b6b31e9049f729d700"
    ],
    [
      "client",
      "Wisp"
    ],
    [
      "nonce",
      "310678",
      "18"
    ]
  ],
  "content": "Non-NIP new features and changes in v3:\n\nDEPLOYMENT\n- Unified nostream CLI/TUI replaces all scripts/* shell wrappers (start, stop, update, clean, info, dev)\n- nginx reverse proxy option added to docker-compose (nostream start --nginx)\n- I2P support added (nostream start --i2p)\n- New docker-compose variants: i2p, nginx, Windows\n- Docker DNS pre-flight check before startup\n- Dockerfile now auto-runs migrations on container start\n- Railway.app deployment template included\n\nPERFORMANCE\n- New hot-path PostgreSQL indexes for subscription, vanish, retention, and invoice queries\n- User admission check converted to a PostgreSQL stored function\n- User admission check result cached in Redis\n- EWMA rate limiter with configurable strategy support\n- Vanish (NIP-62) query optimized\n- db:benchmark and db:verify-index-impact tooling added\n\nIMPORT / EXPORT\n- Export events to JSON Lines (.jsonl) or JSON array (.json)\n- Import events from .jsonl or .json files\n- Gzip and XZ compression for both import and export\n\nPAYMENTS\n- NWC (Nostr Wallet Connect) added as a payment processor\n- Callback routes now only registered when the matching processor is active\n- LNbits: stale pending invoices now expired automatically\n- Nodeless: timing-safe HMAC comparison for webhook verification\n\nRELIABILITY \u0026 SECURITY\n- X-Forwarded-For no longer unconditionally trusted — trusted proxies must be configured\n- Dead WebSocket connections closed even when they have active subscriptions\n- Rate limiter TOCTOU race condition fixed via Lua atomic script\n- Mirroring: silent event drops fixed when mirror has no limits configured\n- Redis: AUTH skipped automatically when credentials are unset\n- CSP hardened: removed unsafe-inline, added script nonces\n- serialize-javascript updated to fix RCE CVE (GHSA-5c6j-r48x-rmvq)\n\nNEW SETTINGS\n- nip05.domainWhitelist / nip05.domainBlacklist\n- limits.event.retention.kind.whitelist\n- limits.event.retention.pubkey.whitelist\n- limits.admissionCheck.ipWhitelist\n- limits.message.ipWhitelist\n- info.self (relay pubkey for NIP-11 relay info)\n- Opt-in event retention purge (limits.event.retention)\n\nTOOLING (developer-facing)\n- pnpm replaces npm\n- Biome replaces ESLint + Prettier\n- Zod replaces Joi for validation\n- Changesets replaces semantic-release\n- Knip added for dead code detection\n- Pino replaces custom logging across adapters and services\n- CodeQL security analysis workflow added",
  "sig": "31b23f0d6e0de02c9c9c58d351d57ab8a3ad2022556ba46e4cfb85fa3a67c8c0944ec75c632588bc187173f8a0f5f0472ae0aa27c28ef498fbb43c34b577a955"
}