github postalsys/emailengine v2.64.0

6 hours ago

2.64.0 (2026-03-16)

Features

  • add configurable Gmail Pub/Sub subscription TTL setting (ca33e7f)
  • add Gmail Subscriptions tab to OAuth config page (3bd30bf)

Bug Fixes

  • add .catch() to fire-and-forget setMeta and track error fingerprints (672a03e)
  • add lock to del() to prevent race with ensurePubsub, fix pubSubApp cleanup (27f2bdd)
  • always notify webhook workers when Pub/Sub app config changes (e9f276a)
  • auto-recover expired Gmail Pub/Sub subscriptions and expose status via API (7961ceb)
  • avoid redundant Redis call and concurrent backfill races in Pub/Sub setup (05b02af)
  • broaden Pub/Sub notification condition in oauth-routes.js (cbe1380)
  • clean up Pub/Sub Redis keys on deletion, refresh stale instances, and localize UI labels (3b35fa1)
  • clear stale pubSubFlag after restart and consolidate backfill push (f67961f)
  • correct pubSubApp property name in del() and add cleanup tests (016ae0a)
  • correct typo in Pub/Sub schema version log message (2cc8e08)
  • eliminate redundant Redis ops in Pub/Sub pull loop and backfill (c8ebe39)
  • fix lifecycle event races, lock TTL, and stale clearExisting in MS Graph subscriptions (3f3cbac)
  • fix missing renewal retry, clock-skew gap, and incomplete pipeline error check (8a8b5b6)
  • fix off-by-one retry cap and simplify MS Graph subscription code (aa9afbc)
  • fix Pub/Sub deletion race, add 429 handling, batch ACKs, and lock ensurePubsub (744c354)
  • fix retry boundary, lock races, and dropped lifecycle events in MS Graph subscriptions (d62741d)
  • fix silent 401/403 error suppression, floating promise, and recovery loop in Pub/Sub (406211c)
  • fix stale subscription state blocking recovery and retry count persisting across reconnects (60b77d5)
  • fix subscription loss on subscriptionRemoved, lifecycle webhook timeout, and retry gaps (62988ab)
  • guard fire-and-forget setMeta calls and add Pub/Sub graceful shutdown (45f7b64)
  • guard releaseLock against undefined, add 429 handling to Pub/Sub deletion (d67ebe1)
  • handle TimeoutError from AbortSignal.timeout in Pub/Sub pull loop (c0e3036)
  • harden MS Graph subscription lifecycle, locking, cleanup, and error recovery (8210056)
  • harden Pub/Sub deletion, IAM policy, and worker timeout cleanup (0be7c3e)
  • harden Pub/Sub pull loop resilience and fix projectId typo (8124328)
  • harden Pub/Sub pull loop, message ACK, list pairing, and shutdown cleanup (9e9775f)
  • harden Pub/Sub pull loop, worker coordination, and OAuth app lifecycle (529b705)
  • harden Pub/Sub shutdown, loop scheduling, and abort lifecycle (71b3ab4)
  • harden Pub/Sub shutdown, transient error handling, and input validation (cfc6e0b)
  • localize error page strings using translation helper (609ebb9)
  • move pubsub status from unauthenticated /health to GET /v1/pubsub/status (f6597ad)
  • prevent oscillating recovery loop for Pub/Sub apps missing googleProjectId (8bdbc39)
  • reduce Pub/Sub recovery log noise and respect backoff delay (63cd78f)
  • remove dead circuit breaker code from IMAP and webhooks workers (da9295b)
  • remove Pub/Sub circuit breaker, fix 401/403 recovery handling (b7017f3)
  • reorder OAuth app deletion to prevent pull-loop gap, add startLoop tests (129f96c)
  • replace custom Redis locks with ioredfour in Outlook subscription code (019eaa1)
  • resolve lint errors, fix TTL null guard, and extract Pub/Sub constants (4949431)
  • resolve livelock, timeout, and state corruption in MS Graph subscription lifecycle (745334e)
  • retry transient errors during Pub/Sub resource deletion and log dropped messages (b9d9de5)
  • show OAuth apps with failed Pub/Sub setup in subscriptions list (14124cd)
  • stop Pub/Sub instances on OAuth2 app deletion and harden lifecycle (bc0ff75)
  • surface TTL reconciliation failures to operators via ttlWarning meta flag (6e5d5c5)
  • update imapflow to 1.2.15 to fix unhandled rejection crashes (494a3f8)

Don't miss a new emailengine release

NewReleases is sending notifications on new releases.