v1.4.0

ChatbotXIO/ChatbotXv1.4.0Aug 24, 2026by realcodesiman

Upgrading?

AI Summary

This release introduces dynamic image templates, WhatsApp username support, default reply frequency enforcement, and a new Minigame tool with Jackpot management.

Key Highlights

  • Added dynamic image template feature for marketing content.
  • Enabled support for WhatsApp usernames and business-scoped user IDs.
  • Enforced activation frequency per contact for default replies.
  • Added a Minigame tool featuring Jackpot management and gameplay.
  • Renamed contacts permission to contacts/inbox and gated all sidebar menus.

New Features

  • feat(coexist): keep synced history out of AI context by default
  • feat(whatsapp): support usernames and business-scoped user ids
  • feat(default-reply): enforce activation frequency per contact
  • feat(builder): add 404 not-found page
  • feat(dynamic-images): add dynamic image template feature
  • feat(whatsapp): replace technical template inputs with product and date pickers
  • feat(permissions): rename contacts permission to contacts / inbox and gate all sidebar menus
  • feat(flows): add date/datetime picker webview for get user data step
  • feat(flows): allow custom field variables in media step urls
  • feat(channels): add generic API channel for custom integrations
  • feat(minigames): add Minigame tool with Jackpot management and gameplay

Full Release Notes

<!-- Release notes generated using configuration in .github/release.yml at main -->

## What's Changed
### ✨ New Features
* feat(coexist): keep synced history out of AI context by default by @viethung0o0 in https://github.com/ChatbotXIO/ChatbotX/pull/967
* feat(whatsapp): support usernames and business-scoped user ids by @viethung0o0 in https://github.com/ChatbotXIO/ChatbotX/pull/965
* feat(default-reply): enforce activation frequency per contact by @viethung0o0 in https://github.com/ChatbotXIO/ChatbotX/pull/984
* feat(builder): add 404 not-found page by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/986
* feat(dynamic-images): add dynamic image template feature by @sung17 in https://github.com/ChatbotXIO/ChatbotX/pull/990
* feat: improve conversions api dataset setup and support variables in flow links by @viethung0o0 in https://github.com/ChatbotXIO/ChatbotX/pull/995
* feat(whatsapp): replace technical template inputs with product and date pickers by @viethung0o0 in https://github.com/ChatbotXIO/ChatbotX/pull/1008
* feat(permissions): rename contacts permission to contacts / inbox and gate all sidebar menus by @sung17 in https://github.com/ChatbotXIO/ChatbotX/pull/1011
* feat(flows): add date/datetime picker webview for get user data step by @viethung0o0 in https://github.com/ChatbotXIO/ChatbotX/pull/1009
* feat(flows): allow custom field variables in media step urls by @sung17 in https://github.com/ChatbotXIO/ChatbotX/pull/1013
* feat(channels): add generic API channel for custom integrations by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/993
* feat(builder): replace zalo refresh-permissions with oauth reconnect by @sung17 in https://github.com/ChatbotXIO/ChatbotX/pull/1017
* feat(minigames): add Minigame tool with Jackpot management and gameplay by @sung17 in https://github.com/ChatbotXIO/ChatbotX/pull/1023
### 🐛 Bug Fixes
* fix(appointment-scheduling): fix bug worker handle step error by @nguyenvantruc92 in https://github.com/ChatbotXIO/ChatbotX/pull/966
* fix(auth): preserve and validate callbackURL through sign-in flows by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/985
* fix(ci): remove invalid matrix context from release.yml job-level if by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/987
* fix(contacts): stop prefetching inbox links from the contacts list by @viethung0o0 in https://github.com/ChatbotXIO/ChatbotX/pull/988
* fix(builder): render non-coupon variable mentions with their raw id by @nguyenvantruc92 in https://github.com/ChatbotXIO/ChatbotX/pull/991
* fix(variables): rewrite JS placeholders as property access, not spliced values by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/992
* fix(tiktok): surface silent send failures and enforce TikTok's 40-char card title limit by @sung17 in https://github.com/ChatbotXIO/ChatbotX/pull/994
* fix(dynamic-images): make orphaned background cleanup best-effort by @sung17 in https://github.com/ChatbotXIO/ChatbotX/pull/996
* fix(ui): stop forcing command item icons to white by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/998
* fix(ci): restore image publishing on merge to main and version tags by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/999
* fix(flow): validate and coerce Execute JavaScript step values against custom field types by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/997
* fix(i18n): add missing simplified chinese translations by @AlanSyue in https://github.com/ChatbotXIO/ChatbotX/pull/956
* fix(whatsapp): send quick reply templates and route button taps in flows by @viethung0o0 in https://github.com/ChatbotXIO/ChatbotX/pull/1006
* fix(meta): avoid duplicate logs for expected Graph API errors by @AlanSyue in https://github.com/ChatbotXIO/ChatbotX/pull/869
* fix(zalo): stop duplicating inbox-sent messages and handle postback/receipt webhooks by @sung17 in https://github.com/ChatbotXIO/ChatbotX/pull/1012
* fix(builder): use absolute link for google sheets manage button by @viethung0o0 in https://github.com/ChatbotXIO/ChatbotX/pull/1015
* fix(comment-automation): send private reply flows on instagram channels by @sung17 in https://github.com/ChatbotXIO/ChatbotX/pull/1018
* fix(zalo): surface real OAuth errors and harden daily token refresh by @sung17 in https://github.com/ChatbotXIO/ChatbotX/pull/1019
* fix(auth): white-label sign-in — root-tenant SSO fallback and per-credential OAuth origins by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/1022
* fix(appointment): fix appointment handle booking page picker by @nguyenvantruc92 in https://github.com/ChatbotXIO/ChatbotX/pull/1024
* fix(builder): make zodBigintAsString test mocks fully chainable by @sung17 in https://github.com/ChatbotXIO/ChatbotX/pull/1025
* fix(webchat): fail closed when no authorized domains are configured by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/1026
* fix(minigames): show live jackpot machine preview in type picker by @sung17 in https://github.com/ChatbotXIO/ChatbotX/pull/1027
### 🔧 Internal / Chore
* ci: split the quality gate into parallel jobs and cut test import cost by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/964
* chore(utils): reorder CHANNEL_CAPABILITIES by product priority by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/973
* chore(ci): ignore node docker major bumps to stay on LTS by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/1000
* docs(comment-automation): correct instagram support status by @AlanSyue in https://github.com/ChatbotXIO/ChatbotX/pull/1021
* docs(readme): sync banner, links, and G2 removal with ahalead by @realcodesiman in https://github.com/ChatbotXIO/ChatbotX/pull/1029


**Full Changelog**: https://github.com/ChatbotXIO/ChatbotX/compare/v1.3.1...v1.4.0

Related Repositories