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