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)