v1.22.4
twentyhq/twentyv1.22.4Apr 17, 2026by prastoin
AI Summary
This release introduces cross-version upgrade capability, adds ClickHouse-backed metered credit cap enforcement, and includes a rich text field widget. It also adds SSE streaming on POST /mcp and email attachment support.
Key Highlights
- Cross version upgrade implementation
- ClickHouse-backed metered credit cap
- Rich text field widget
- SSE streaming on POST /mcp
- Email attachments and open-in-app click action
Breaking Changes
- Favorite and FavoriteFolder removed from workspace schema
New Features
- Cross-version upgrade
- ClickHouse billing
- Rich text widget
- SSE streaming
- Email attachments
- Full tab widget frontend
- Group by database tools
Full Release Notes
## What's Changed * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19510 * Fix AI chat threads query firing for users without AI permissions by @thomtrp in https://github.com/twentyhq/twenty/pull/19507 * Fix rolesPermissions cache query cartesian product (62k → 162 rows) by @charlesBochet in https://github.com/twentyhq/twenty/pull/19511 * Replace typeorm binary by `database:migrate:generate` by @prastoin in https://github.com/twentyhq/twenty/pull/19515 * Build lambda error - catch user code compilation errors by @thomtrp in https://github.com/twentyhq/twenty/pull/19516 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19520 * Fix system objects not appearing in sidebar View picker due to filtering mismatch by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19502 * Fix/align microsoft calendar error handling by @neo773 in https://github.com/twentyhq/twenty/pull/19519 * Add rich-text field widget by @Weiko in https://github.com/twentyhq/twenty/pull/19512 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19521 * Add standard skills backfill and improve skill availability messaging by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19523 * add workspaceId to indirect entities by @neo773 in https://github.com/twentyhq/twenty/pull/19522 * Edit visibility restriction by @Devessier in https://github.com/twentyhq/twenty/pull/19499 * Flatten AI tool call output structure by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19524 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19525 * Fix pre post logic function not executed by @martmull in https://github.com/twentyhq/twenty/pull/19462 * Add file attachment support to agent chat messaging by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19517 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19527 * fix mcp streamable-http method handling by @channi23 in https://github.com/twentyhq/twenty/pull/19496 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19529 * chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19533 * Remove DataSourceService and clean up datasource migration logic by @charlesBochet in https://github.com/twentyhq/twenty/pull/19532 * Add SSE streaming support on POST /mcp (Phase 2) by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19528 * feat: email attachments and open-in-app click action by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19485 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19537 * Pre-sync only pre-install-logic-function by @martmull in https://github.com/twentyhq/twenty/pull/19534 * Upgrade cli tool version by @martmull in https://github.com/twentyhq/twenty/pull/19538 * [AI] Add `group_by_*` database tools and centralize groupBy validation by @ehconitin in https://github.com/twentyhq/twenty/pull/19406 * Refactor command menu items deprecated code by @bosiraphael in https://github.com/twentyhq/twenty/pull/19508 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19548 * halftone generator v1 + new 3d shapes effect start by @Bonapara in https://github.com/twentyhq/twenty/pull/19539 * Skip email/calendar tab creation for custom object record page layouts by @Weiko in https://github.com/twentyhq/twenty/pull/19544 * Upgrade command internal doc by @prastoin in https://github.com/twentyhq/twenty/pull/19541 * Upgrade cli tool version in technical apps by @martmull in https://github.com/twentyhq/twenty/pull/19542 * Object icon visual parity by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19374 * Remove Favorite and FavoriteFolder from workspace schema by @charlesBochet in https://github.com/twentyhq/twenty/pull/19536 * Workspace export command follow-up by @neo773 in https://github.com/twentyhq/twenty/pull/19549 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19551 * Support junction relations in Field widget by @Devessier in https://github.com/twentyhq/twenty/pull/19518 * Fix error handling in stream agent chat job by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19550 * Optim - Increase connection idle timeout by @etiennejouan in https://github.com/twentyhq/twenty/pull/19553 * Workflow - Avoid billing skipped steps by @thomtrp in https://github.com/twentyhq/twenty/pull/19547 * fix: expand kanban column drop zone to full height by @JASSBR in https://github.com/twentyhq/twenty/pull/18897 * Lambda build update instead of delete existing logic function while building by @prastoin in https://github.com/twentyhq/twenty/pull/19116 * `database:init:prod` triggers instance slow command too by @prastoin in https://github.com/twentyhq/twenty/pull/19555 * `database:reset` depends on `database:init` that runs slow instance commands by @prastoin in https://github.com/twentyhq/twenty/pull/19557 * Fix server-validation ci pending instance command detection by @prastoin in https://github.com/twentyhq/twenty/pull/19558 * Fix merge command being available in exclusion mode by @bosiraphael in https://github.com/twentyhq/twenty/pull/19546 * Replace AGENT_CHAT_UNKNOWN_THREAD_ID with null for thread state by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19552 * fix: side panel close animation cleanup not firing due to invalid CSS transition by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19556 * Fix: Select next sidebar menu item after removing current item by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19505 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19569 * Remove IS_USAGE_ANALYTICS_ENABLED feature flag by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19566 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19570 * Use app's own OAuth credentials for CoreApiClient generation by @charlesBochet in https://github.com/twentyhq/twenty/pull/19563 * Bump twenty-sdk, twenty-client-sdk, create-twenty-app to 1.22.0-canary.1 by @charlesBochet in https://github.com/twentyhq/twenty/pull/19580 * halftone v2 by @Bonapara in https://github.com/twentyhq/twenty/pull/19573 * Exchange clientSecret for tokens after app registration + bump canary by @charlesBochet in https://github.com/twentyhq/twenty/pull/19582 * Improve NullCheckEnum filter descriptions with usage examples by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19581 * Fix sdk-e2e-test: ensure DB is ready before server starts by @charlesBochet in https://github.com/twentyhq/twenty/pull/19583 * Bump twenty-sdk, twenty-client-sdk, create-twenty-app to 1.22.0-canary.3 by @charlesBochet in https://github.com/twentyhq/twenty/pull/19587 * Add app-path input to deploy and install composite actions by @charlesBochet in https://github.com/twentyhq/twenty/pull/19589 * Improve sensitive config variable masking and editing UX by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19578 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19591 * Convert AI chat state atoms to component family states by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19585 * Add APPLICATION_LOG_DRIVER=CONSOLE to twenty-app-dev container by @charlesBochet in https://github.com/twentyhq/twenty/pull/19600 * Fix syncApplication failing when navigation menu item child is listed before folder in manifest by @charlesBochet in https://github.com/twentyhq/twenty/pull/19599 * Inline twenty-shared types in SDK declarations by @charlesBochet in https://github.com/twentyhq/twenty/pull/19605 * Clear stale SDK config on uninstall and invalid client by @charlesBochet in https://github.com/twentyhq/twenty/pull/19608 * small fixes on pricing by @Bonapara in https://github.com/twentyhq/twenty/pull/19603 * Halftone studio v3 (glass effect) by @Bonapara in https://github.com/twentyhq/twenty/pull/19598 * Add isUnique support for application-defined fields by @charlesBochet in https://github.com/twentyhq/twenty/pull/19609 * Re-export missing types from SDK public API by @charlesBochet in https://github.com/twentyhq/twenty/pull/19610 * Export field settings types from SDK public API by @charlesBochet in https://github.com/twentyhq/twenty/pull/19611 * Fields widget draft view by @Weiko in https://github.com/twentyhq/twenty/pull/19562 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19612 * fix: prevent image upload panel from being clipped in side panel by @bugisthegod in https://github.com/twentyhq/twenty/pull/19572 * fix: prevent image upload panel from being clipped in side panel by @sanskar0627 in https://github.com/twentyhq/twenty/pull/19613 * Add admin panel workspace detail page with chat viewer by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19579 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19621 * Fix command `FixMessageThreadViewAndLabelIdentifierCommand` by @prastoin in https://github.com/twentyhq/twenty/pull/19622 * Implement cross version upgrade by @prastoin in https://github.com/twentyhq/twenty/pull/19559 * Fix e2e by @Devessier in https://github.com/twentyhq/twenty/pull/19639 * Switch app test infra to globalSetup with appDevOnce by @charlesBochet in https://github.com/twentyhq/twenty/pull/19623 * Fix design by @martmull in https://github.com/twentyhq/twenty/pull/19628 * Fix installed app setting tab by @martmull in https://github.com/twentyhq/twenty/pull/19629 * Rename standard and custom apps by @martmull in https://github.com/twentyhq/twenty/pull/19631 * Disable permission tab when empty by @martmull in https://github.com/twentyhq/twenty/pull/19630 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19643 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19645 * Implement full tab widget frontend by @Devessier in https://github.com/twentyhq/twenty/pull/19568 * Document isAuthRequired: true instead of false by @martmull in https://github.com/twentyhq/twenty/pull/19641 * Colliding `subject` field fix on `messageThread` command by @prastoin in https://github.com/twentyhq/twenty/pull/19637 * Fix side panel close button title by @bosiraphael in https://github.com/twentyhq/twenty/pull/19638 * Fix permission flag deletion validator by @martmull in https://github.com/twentyhq/twenty/pull/19636 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19646 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19647 * Fixes on website by @Bonapara in https://github.com/twentyhq/twenty/pull/19625 * Add per-workspace error handling to CronTriggerCronJob by @neo773 in https://github.com/twentyhq/twenty/pull/19640 * More website updates. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19624 * few fixes by @Bonapara in https://github.com/twentyhq/twenty/pull/19648 * Move view field label identifier deletion validation into the cross entity validation by @prastoin in https://github.com/twentyhq/twenty/pull/19642 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19651 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19652 * refactor messaging jobs by @neo773 in https://github.com/twentyhq/twenty/pull/19626 * Prevent cross version upgrade mismatch in `1.22` by @prastoin in https://github.com/twentyhq/twenty/pull/19627 * Fix merge with null value + reset data virtualization before init load by @thomtrp in https://github.com/twentyhq/twenty/pull/19633 * Fix navbar folder not opening on page refresh when it has an active child item by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19619 * Fix: Filter out deactivated objects from navigation sidebar by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19620 * Fix VariablePicker and Fullscreen Icon overlap in FormAdvancedTextFieldInput by @neo773 in https://github.com/twentyhq/twenty/pull/19614 * Fix `AddPermissionFlagRoleIdIndexFastInstanceCommand` by @prastoin in https://github.com/twentyhq/twenty/pull/19654 * Sync command menu with main context store by @bosiraphael in https://github.com/twentyhq/twenty/pull/19650 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19656 * Add banner for not vetted apps by @martmull in https://github.com/twentyhq/twenty/pull/19655 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19661 * Remove app record if first install fails by @martmull in https://github.com/twentyhq/twenty/pull/19659 * Remove orphaned workspaceId column from BillingSubscriptionItemEntity by @charlesBochet in https://github.com/twentyhq/twenty/pull/19660 * Add ClickHouse-backed metered credit cap enforcement by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19586 * Deprecate IS_RECORD_TABLE_WIDGET_ENABLED feature flag by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19662 * Fix testimonials background, faq clickability and some case-studies page edits. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19657 * Clean event creation exception by @thomtrp in https://github.com/twentyhq/twenty/pull/19561 * fix: return 404 for deleted workspace webhook race by @hussainarslan in https://github.com/twentyhq/twenty/pull/19439 * few website updates by @Bonapara in https://github.com/twentyhq/twenty/pull/19663 * test: fix failing useColorScheme test and remove FIXME by @srijita2506 in https://github.com/twentyhq/twenty/pull/19593 * Remove 'twenty-app' keyword by default by @martmull in https://github.com/twentyhq/twenty/pull/19669 * Move backfill page layout to `1.23` by @prastoin in https://github.com/twentyhq/twenty/pull/19670 * fix(api-key): batch role resolution with DataLoader to fix N+1 by @oniani1 in https://github.com/twentyhq/twenty/pull/19590 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19672 * fix: edit button not coming up on avatar right after image upload by @amlannandy in https://github.com/twentyhq/twenty/pull/19596 * Add gql operationName metadata in sentry by @etiennejouan in https://github.com/twentyhq/twenty/pull/19564 * Fix upgrade commands discovery outside of cli by @prastoin in https://github.com/twentyhq/twenty/pull/19671 * Fix Quick Lead command menu item not appearing by @bosiraphael in https://github.com/twentyhq/twenty/pull/19635 * Fix view filter/sort deletion by @etiennejouan in https://github.com/twentyhq/twenty/pull/19567 * Rpl various fixes by @Devessier in https://github.com/twentyhq/twenty/pull/19668 * Move is active to fe by @Weiko in https://github.com/twentyhq/twenty/pull/19649 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19677 ## New Contributors * @JASSBR made their first contribution in https://github.com/twentyhq/twenty/pull/18897 * @sanskar0627 made their first contribution in https://github.com/twentyhq/twenty/pull/19613 * @hussainarslan made their first contribution in https://github.com/twentyhq/twenty/pull/19439 * @srijita2506 made their first contribution in https://github.com/twentyhq/twenty/pull/19593 * @amlannandy made their first contribution in https://github.com/twentyhq/twenty/pull/19596 **Full Changelog**: https://github.com/twentyhq/twenty/compare/v1.21.0...v1.22.4