Skip to content

v1.0.0

@Letdown2491 Letdown2491 tagged this 15 Jun 01:09
Graduates the relay from beta. Replaces the always-on Badger backend with a
purpose-built in-memory store as the default, keeping signing latency off the
disk path; Badger remains available via STORAGE_BACKEND=badger.

- In-memory store indexed by recipient #p / author / id, with time-window and
  byte-budget eviction.
- Auto-detects the host/cgroup memory limit and sets GOMEMLIMIT (respecting an
  operator-configured one); MAX_MEMORY_MB overrides the event budget.
- Non-NIP-46 read filters now return an empty EOSE instead of CLOSED so NIP-66
  monitors can measure read latency; NIP-46 reads still require authors/#p/ids
  scoping to prevent firehose harvesting.
- O(1) token-bucket rate limiter, ReadHeaderTimeout, trimpath/-s -w builds,
  periodic store stats log.
- Badger value-log GC now runs; cleanup goroutine no longer leaks on timeout.
- .env auto-loaded via godotenv; docker-compose reads env_file; rewritten
  .env.example; removed unused ADMIN_PUBKEYS.
- Adds tests for the store, filter, and memory config (pass under -race).

See CHANGELOG.md for the full list.
Assets 2
Loading