Skip to content

v1.12.0

Choose a tag to compare

@realcodesiman realcodesiman released this 08 Oct 20:38
· 61 commits to main since this release
8f76c8e

📋 Upgrade Notes

Connections

v1.12.0 introduces the new Connection / ConnectSession model behind all channel and integration connects (#1404, #1411, #1415). Existing channels and integrations keep working, and nothing changes for end users. Self-hosted deployments should complete these steps after upgrading:

  1. Run database migrations (adds the Connection and ConnectSession tables):
    pnpm --filter @chatbotx.io/database db:migrate
  2. Backfill Connection rows for existing inboxes and integrations. Preview with a dry run first, then apply:
    pnpm --filter @chatbotx.io/database db:backfill-connections -- --dry-run
    pnpm --filter @chatbotx.io/database db:backfill-connections
    Optional flags: --provider=<integrationType> and --workspace=<id> limit the run to one provider or one workspace.
  3. Verify the backfill. The first three counters must all be 0:
    pnpm --filter @chatbotx.io/database db:backfill-connections -- --verify

Environment

  • REALTIME_BROADCAST_SECRET must be at least 32 characters. Generate one with openssl rand -base64 32.
  • New optional variables:
    • REDIS_QUEUE_URL and REDIS_QUEUE_BULK_URL split queue Redis by role. Both fall back to REDIS_URL. Drain bulk jobs and restart every producer and consumer before the cutover.
    • PROFILE_SNAPSHOT_JOBS_PER_SECOND
    • FACEBOOK_BUSINESS_AI_APP_ID enables Messenger "return to bot" in conversation routing.

What's Changed

✨ New Features

  • Connections 1 foundation by @realcodesiman in #1404
  • feat(connections): complete connection engine by @realcodesiman in #1411
  • Connections 3 builder api by @realcodesiman in #1415
  • feat(builder): add bot simulator tool by @sung17 in #1380
  • feat(message-templates): raise messenger body variable limit to 15 by @viethung0o0 in #1381
  • feat(threads-comments): add post picker for threads comment automation by @sung17 in #1382
  • feat(flows): enforce channel step support by @realcodesiman in #1379
  • feat(conversation-routing): add WhatsApp and Messenger conversation routing by @viethung0o0 in #1378
  • feat(ai-handover): per-page AI hand-over settings and apply to all customers by @viethung0o0 in #1391
  • feat(contact-filter): add Instagram profile and commented-on-post filters by @viethung0o0 in #1384
  • feat(flows): configure quick reply settings by @hoangle398 in #1406
  • feat(comment-automation): add facebook and instagram live comment automation by @sung17 in #1407
  • feat(api): expose coupons and booking URLs by @nguyenvantruc92 in #1414
  • feat(public-api): add missing endpoints and fix gaps against the builder by @viethung0o0 in #1410
  • feat(public-api): expose remaining tools endpoints for cli and mcp by @sung17 in #1418
  • feat(public-api): add product import, audience preview, bulk tagging and CAPI routes by @viethung0o0 in #1417
  • feat(media): improve attachment loading in the inbox by @viethung0o0 in #1420
  • perf(media): optimize attachment loading with per-channel storage by @viethung0o0 in #1426
  • perf(inbox): optimize attachment loading in conversations by @viethung0o0 in #1425
  • feat(public-api): open workspace advanced settings and channel disconnects by @viethung0o0 in #1429
  • feat(reflinks): add embeddable chat widget for ref links by @sung17 in #1434
  • feat(public-api): fill broadcast templates with flat templateParams by @viethung0o0 in #1439
  • feat(public-api): simpler inputs for templates, imports and channel settings by @viethung0o0 in #1440
  • feat(reflinks): let ref link chat widgets use their own logo and brand by @sung17 in #1444
  • feat(reflinks): read and update the chat widget through the public api by @sung17 in #1454

🐛 Bug Fixes

  • fix(threads-comments): use thumbnail for video posts in post picker by @sung17 in #1385
  • fix(broadcasts): show unknown for audience filter values that no longer exist by @viethung0o0 in #1366
  • fix(conversation-routing): fix Types check broken on main by #1378 by @viethung0o0 in #1389
  • fix(bot-simulator): hide support chat bubble on simulator page by @sung17 in #1390
  • fix(comment-automation): validate flowId exists before saving a reply by @rawdaymx in #1235
  • fix: surface expired Meta connect sessions by @baokimho in #1183
  • fix(triggers): let the five WhatsApp call conditions match their events by @rawdaymx in #1402
  • fix(i18n): repair the Spanish trigger.* strings mangled by a word-fragment replace by @rawdaymx in #1400
  • fix(tools): remove beta badge from tiktok comment automation by @sung17 in #1408
  • fix(tools): update tools list test for removed tiktok beta badge by @sung17 in #1409
  • fix(env): ship a schema-valid REALTIME_BROADCAST_SECRET example by @rawdaymx in #1396
  • fix(instagram-facebook): reject unaccepted thread handovers by @realcodesiman in #1413
  • fix(connections): restore dropped behaviors and fix engine regressions by @realcodesiman in #1419
  • fix(public-api): validate flow ids on write and give colliding CLI commands distinct names by @viethung0o0 in #1421
  • fix(connections): rebuild oauth redirect_uri from credential on connect-session callback by @viethung0o0 in #1428
  • fix(connections): write jsonb columns without db default on channel insert by @viethung0o0 in #1431
  • fix(connections): wire token refresh, teardown, and backfill into engine writes by @realcodesiman in #1422
  • fix(public-api): declare the error codes public routes really throw by @viethung0o0 in #1423
  • fix(messenger): stop dropping page labels during tag sync by @viethung0o0 in #1441
  • fix(quota): write workspace usage through the caller's transaction by @viethung0o0 in #1442
  • fix(quota): hand quota back when a connect or workspace-create transaction rolls back by @viethung0o0 in #1445
  • fix(error-logs): close the delete dialog after a successful delete by @sung17 in #1451
  • fix(messenger): tag contacts with the ad on referral-only webhooks by @viethung0o0 in #1452

⚡ Improvements

  • refactor(error-logs): delete error logs through the business service by @sung17 in #1447
  • refactor(whatsapp): load and verify manual webhooks through the business service by @sung17 in #1448
  • refactor(workspaces): store channel profile logos through the workspace service by @sung17 in #1449
  • refactor(workspace-members): create invitations through the invitation service by @sung17 in #1450

🔧 Internal / Chore

  • chore: remove unused kafka package, split queue redis, add scaling ADRs by @realcodesiman in #1201
  • test(database): update retention interval SQL assertion by @realcodesiman in #1412
  • docs(public-api): make route descriptions match what the code does by @viethung0o0 in #1424

Full Changelog: v1.11.0...v1.12.0