Skip to content

v0.1.11

Choose a tag to compare

@coo1estguy coo1estguy released this 06 Oct 11:59
· 9 commits to main since this release

馃摝 npm package: https://www.npmjs.com/package/notifkit/v/0.1.11

What's New in v0.1.11

  • Workflow Cancellation: Cancel running workflow instances. A run already in progress stops at the next step boundary. Requires the new 0007_workflow_status_canceled migration.
  • Send Gating at Release: Scheduled, quiet-hours-deferred and retried sends are checked again against suppressions, opt-outs and contacts when they're released. Users who unsubscribe or bounce while a send is waiting no longer receive it.
  • Delivery Idempotency: Two-phase idempotency leases prevent duplicate sends when workers collide or a provider responds slowly. Set IDEMPOTENCY_TTL_SECONDS (default 1h) to control how long internal deduplication lasts. X-Idempotency-Key values are still kept for 24h.
  • Redis Recovery: After Redis data loss, scheduled queues are rebuilt from PostgreSQL and consumer groups are re-created. Stale pending messages are reclaimed when a worker starts.
  • Security Fix: TRUST_PROXY now only accepts true or 1. Previously, TRUST_PROXY=false enabled proxy trust, which let spoofed X-Forwarded-For headers get around login and unsubscribe rate limits.
  • Performance: Batched stream ACKs and publishes, Redis auto-pipelining, pre-compiled Lua scripts, an O(1) sliding-window rate limiter with in-memory token leasing, faster auth and routing, and bulk SQL inserts. New DELIVERY_CONCURRENCY and PIPELINE_FUSED options.
  • Queue Defaults: QUEUE_MAX_LEN now defaults to 100,000 (was 10,000,000), and acked stream entries are deleted to keep Redis memory bounded.
  • Fixes: Graceful shutdown ordering, profile attributes merging instead of being replaced, dashboard queue depth based on consumer-group lag, and the SDK client handling non-JSON error responses.
  • Transports: Resend escapes HTML in text-only emails. Telegram and Discord no longer send undefined for subject-only templates. Console transport gains a latencyMs option for simulating latency. MCP bulk sends now reach chat channels.

Packages

Install

npm install notifkit@0.1.11