v1.14.0

twentyhq/twentyv1.14.0Dec 23, 2025by Weiko

AI Summary

Major AI-focused release introducing skills system, code interpreter for AI, and dashboard tools for AI chat. Includes significant workflow improvements and UI enhancements.

Key Highlights

  • Skills system replacing agent search
  • AI code interpreter for data analysis
  • Dashboard tools for AI chat
  • Context usage display in AI chat
  • Application tokens for extensibility
  • Resizable navigation drawer and command menu panels

Breaking Changes

  • BREAKING: deploy server before frontend for AI model refresh
  • BREAKING: deploy server first for context usage display

New Features

  • Custom onClick behavior for phone, email and links
  • Rich text editor for dashboards
  • Higher resolution options in dateTime filter
  • Secondary action button feature
  • Add pattern for variable tag in tiptap
  • Support links moved to workspace switcher
  • POC Real-Time updates

Full Release Notes

## What's Changed
* Fix dashboard duplication by @bosiraphael in https://github.com/twentyhq/twenty/pull/16505
* Deprecate workspace datasoure by @Weiko in https://github.com/twentyhq/twenty/pull/16507
* fix(server): Favortites, attachments, timeline... by @guillim in https://github.com/twentyhq/twenty/pull/16509
* feat(ai): refresh AI models with deprecation support and multi-provider defaults (BREAKING: deploy server before frontend please) by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16503
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16514
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16515
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16516
* feat(ai): replace agent search with skills system by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16513
* feat(ai): add dashboard tools for AI chat by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16517
* fix: Display locked UI for restricted email thread messages by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/16512
* Filter BAD_USER_INPUT errors from Sentry by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/16511
* Add TTL eviction to local data cache by @Weiko in https://github.com/twentyhq/twenty/pull/16510
* Fix raw json field display in read only by @etiennejouan in https://github.com/twentyhq/twenty/pull/16502
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16522
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16524
* feat(ai): add context usage display to AI chat (BREAKING: deploy server first) by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16518
* feat: add feature to customize onClick behaviour for phone, email and links data type by @abk404 in https://github.com/twentyhq/twenty/pull/16265
* Fix fetch more notes by @etiennejouan in https://github.com/twentyhq/twenty/pull/16442
* [DASHBOARDS] Fix date order by by @bosiraphael in https://github.com/twentyhq/twenty/pull/16521
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16527
* fix(server): non blocking CleanEmptyStringNullInTextFieldsCommand error by @prastoin in https://github.com/twentyhq/twenty/pull/16529
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16537
* Fix rest metadata version missing by @Weiko in https://github.com/twentyhq/twenty/pull/16536
* [RenameIndexCommand] Fix orphaned index edge case by @prastoin in https://github.com/twentyhq/twenty/pull/16539
* Fixed Apollo cache bug by @lucasbordeau in https://github.com/twentyhq/twenty/pull/16523
* Fix APIKey in search resolver for get role by @Weiko in https://github.com/twentyhq/twenty/pull/16540
* Prevent table columns to be too narrow by @charlesBochet in https://github.com/twentyhq/twenty/pull/16542
* [Dashboards] Rich text editor frontend by @ehconitin in https://github.com/twentyhq/twenty/pull/16437
* Investigate - Slow transformRichTextV2 function by @etiennejouan in https://github.com/twentyhq/twenty/pull/16535
* Facebook links: display profile instead of full url by @Bonapara in https://github.com/twentyhq/twenty/pull/16414
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16545
* Fix rename index command error code edge case by @prastoin in https://github.com/twentyhq/twenty/pull/16556
* fix(twenty-shared): preserve special characters in URLs by @asasin235 in https://github.com/twentyhq/twenty/pull/16312
* Bump @types/unzipper from 0.10.10 to 0.10.11 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/16554
* fix: ensure deactivated object records do not appear in search by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16532
* Fix rename index collides with existing v2 index by @prastoin in https://github.com/twentyhq/twenty/pull/16560
* feat(workflow): improve Add node discovery by @adityashirsatrao007 in https://github.com/twentyhq/twenty/pull/16547
* fix(workflow): line break not supported by Send Email Nodes by @abk404 in https://github.com/twentyhq/twenty/pull/16561
* fix messaging error parsing by @neo773 in https://github.com/twentyhq/twenty/pull/16448
* Update null command by @etiennejouan in https://github.com/twentyhq/twenty/pull/16567
* Increase bundle size to 6.9MB by @charlesBochet in https://github.com/twentyhq/twenty/pull/16568
* feat(ai): add code interpreter for AI data analysis by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16559
* Compute output schema on frontend by @thomtrp in https://github.com/twentyhq/twenty/pull/16530
* lazy load rich text widget  by @ehconitin in https://github.com/twentyhq/twenty/pull/16569
* [Dashboards] add hide empty category option for pie charts by @ehconitin in https://github.com/twentyhq/twenty/pull/16550
* Fix APIKey typing by @Weiko in https://github.com/twentyhq/twenty/pull/16541
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16574
* 1895 extensibility v1 application tokens 3 by @martmull in https://github.com/twentyhq/twenty/pull/16504
* prevent filtering out messages sent by user when their handle resembes group email by @neo773 in https://github.com/twentyhq/twenty/pull/16508
* Remove viewGroup.fieldMetadataId by @ijreilly in https://github.com/twentyhq/twenty/pull/16571
* revert bundle size increase by @ehconitin in https://github.com/twentyhq/twenty/pull/16575
* E2B var env fix by @etiennejouan in https://github.com/twentyhq/twenty/pull/16576
* fix: ensure unique GraphQL schema caching per API key by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/16411
* [Dashboards] add legend hover highlight for graph widgets by @ehconitin in https://github.com/twentyhq/twenty/pull/16551
* Fix action menu modals rendering inside dropdown containers by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/16478
* Added relative date filter to dashboards by @lucasbordeau in https://github.com/twentyhq/twenty/pull/16292
* Update hello-world twenty-sdk version by @martmull in https://github.com/twentyhq/twenty/pull/16579
* fix: incomplete URL substring sanitization in linkedin-browser-extension. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16586
* Standard Agent, Role, Role target by @prastoin in https://github.com/twentyhq/twenty/pull/16499
* Display a CTA to view the existing duplicate when adding a duplicate email/domain. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16483
* Update migration command by @martmull in https://github.com/twentyhq/twenty/pull/16578
* feat(server): enforce userFriendlyMessage on all exceptions by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16589
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16596
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16600
* Vendor twenty-shared into twenty-sdk by @martmull in https://github.com/twentyhq/twenty/pull/16592
* Update dashboard Icons by @bosiraphael in https://github.com/twentyhq/twenty/pull/16605
* [DASHBOARDS] Rotate ticks on bar and line charts by @bosiraphael in https://github.com/twentyhq/twenty/pull/16528
* Fix bug on Links, Array, Emails, Phones Field inputs by @charlesBochet in https://github.com/twentyhq/twenty/pull/16603
* Function trigger updates 2 by @martmull in https://github.com/twentyhq/twenty/pull/16608
* e2e tests by @ijreilly in https://github.com/twentyhq/twenty/pull/16533
* Feature 15797 add secondary action button by @Lakshayyy-m in https://github.com/twentyhq/twenty/pull/16582
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16614
* feat: add full path label tooltip for workflow filter field by @LuckyGoyal039 in https://github.com/twentyhq/twenty/pull/16580
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16620
* handle localization and property parameters in CalDAV iCal parsing by @neo773 in https://github.com/twentyhq/twenty/pull/16519
* Second Action Button - fix by @etiennejouan in https://github.com/twentyhq/twenty/pull/16613
* Follow up on FieldInput fix by @charlesBochet in https://github.com/twentyhq/twenty/pull/16611
* Remove position input from zapier by @martmull in https://github.com/twentyhq/twenty/pull/16616
* Fix drag and drop in dropdown by @bosiraphael in https://github.com/twentyhq/twenty/pull/16622
* Async validators and additional cache maps in v2 Builder by @prastoin in https://github.com/twentyhq/twenty/pull/16618
* Common API - Add tests on position field validation at creation by @etiennejouan in https://github.com/twentyhq/twenty/pull/16630
* fix(workflows): align variable regex with validation and prevent ReDoS by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16607
* [DASHBOARDS] Hide tab menu items instead of disabling them by @bosiraphael in https://github.com/twentyhq/twenty/pull/16629
* feat: 🎸 added higher resoulution options in the dateTime Filter by @Bhoomaahamso in https://github.com/twentyhq/twenty/pull/16548
* Create typeguards for widget configurations by @bosiraphael in https://github.com/twentyhq/twenty/pull/16627
* fix: hide GraphQL stack traces and messages in production by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16593
* feat: add lingui/no-unlocalized-strings ESLint rule and fix translations by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16610
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16644
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16646
* feat: soft disable LOCAL code interpreter driver in production by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16647
* fix: ensure QueryRunner is released in workspace schema operations by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16649
* Use parameterized query in getRemoteTableLocalName by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16651
* fix: bill all events in BillingUsageService.billUsage() instead of only the first one by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16650
* feat: add resizable navigation drawer and command menu panels by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16612
* feat: move support links to workspace switcher by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16653
* I18n Translations by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16656
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16657
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16660
* fix: prevent text overflow in view picker and record table action row by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16658
* Fix command menu input text color by @bosiraphael in https://github.com/twentyhq/twenty/pull/16661
* Metadata modules for `PageLayoutTab` `PageLayoutWidget` by @prastoin in https://github.com/twentyhq/twenty/pull/16662
* Always enable drag selection when side panel is opened by @bosiraphael in https://github.com/twentyhq/twenty/pull/16664
* Fixed command menu and main container layout by @lucasbordeau in https://github.com/twentyhq/twenty/pull/16665
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16666
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16667
* Fix subscription cross tenant issue by @martmull in https://github.com/twentyhq/twenty/pull/16670
* Fix/close filter by enter by @ManikanthMartha in https://github.com/twentyhq/twenty/pull/16643
* [DASHBOARDS] Add the ability to click to create a widget by @bosiraphael in https://github.com/twentyhq/twenty/pull/16673
* Billing - Fix subscription_schedule release by @etiennejouan in https://github.com/twentyhq/twenty/pull/16669
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16678
* Billing - fix duplicate key value violates unique constraint "IndexOnActiveSubscriptionPerWorkspace" by @etiennejouan in https://github.com/twentyhq/twenty/pull/16676
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16682
* Refactor seed to use twenty-standard application by @prastoin in https://github.com/twentyhq/twenty/pull/16598
* [DASHBOARDS] Fix settings color palette by @bosiraphael in https://github.com/twentyhq/twenty/pull/16681
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16685
* Add pattern for variable tag in tiptap by @thomtrp in https://github.com/twentyhq/twenty/pull/16652
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16687
* Fix ts error resolve rich text by @thomtrp in https://github.com/twentyhq/twenty/pull/16688
* Add field widget by @Devessier in https://github.com/twentyhq/twenty/pull/16609
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16690
* Fix standard agent and roles deletion command by @prastoin in https://github.com/twentyhq/twenty/pull/16686
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16692
* Make view bar filter dropdown field select scrollable by @lucasbordeau in https://github.com/twentyhq/twenty/pull/16684
* Read some endpoints on replica db (behind feature flag) by @ijreilly in https://github.com/twentyhq/twenty/pull/16677
* fix: mdast-util-to-hast has unsanitized class attribute by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16699
* changing location of lint rule by @guillim in https://github.com/twentyhq/twenty/pull/16703
* Refactor workspace creation by @prastoin in https://github.com/twentyhq/twenty/pull/16689
* fix: resolve react warning when updating state during render in SettingsPublicDomainsListCard by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/16700
* Implement new version of the side panel sub header by @bosiraphael in https://github.com/twentyhq/twenty/pull/16683
* fix: nodemailer is vulnerable to DoS through uncontrolled recursion. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16698
* Refactor upsertRecordsInStore to accept an object with partialRecords by @charlesBochet in https://github.com/twentyhq/twenty/pull/16707
* Filter expected errors from sentry by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/16642
* fix: Next has a denial of service with server components by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16702
* feat: rename Releases settings page to Updates by @Bonapara in https://github.com/twentyhq/twenty/pull/16634
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16711
* fix: next has a denial of service with server components by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16710
* fix: auth0/node-jws improperly verifies HMAC signature by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16712
* Fix create twenty app template by @martmull in https://github.com/twentyhq/twenty/pull/16708
* Message folders optimization by @neo773 in https://github.com/twentyhq/twenty/pull/16479
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16717
* Add useUpdateManyRecords hook and message folders sync status mutation by @neo773 in https://github.com/twentyhq/twenty/pull/16694
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16720
* [POC] Real-Time by @thomtrp in https://github.com/twentyhq/twenty/pull/16633
* remove IMAP_SMTP_CALDAV feature flag by @neo773 in https://github.com/twentyhq/twenty/pull/16695
* Gmail error handling fixes by @neo773 in https://github.com/twentyhq/twenty/pull/16719
* Fix composite upsert by @thomtrp in https://github.com/twentyhq/twenty/pull/16718
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16721
* Field widget edit relations by @Devessier in https://github.com/twentyhq/twenty/pull/16714
* Fix Global workflows not pinned by @charlesBochet in https://github.com/twentyhq/twenty/pull/16728
* User guide structure update by @StephanieJoly4 in https://github.com/twentyhq/twenty/pull/16705
* Restore docs.json user guide structure from PR #16705 by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16741
* fix(docs): only download translations for supported languages by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16744
* Restore navigation structure from PR #16705 by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16742
* I18n Docs by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16746
* fix(docs): configure target languages in crowdin.yml by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16745
* feat: validator is vulnerable to incomplete filtering of one or more instances of special elements by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16748
* Enable read on replica for all  by @ijreilly in https://github.com/twentyhq/twenty/pull/16740
* 1774 extensibility v1 create an exhaustive documentation readme or dedicated section in twenty contributing doc by @martmull in https://github.com/twentyhq/twenty/pull/16751
* Edit simple values in Field widget by @Devessier in https://github.com/twentyhq/twenty/pull/16749
* fix: storybook manager bundle may expose environment variables during build by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16747
* feat(i18n): fix translation QA issues and add automation by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16756
* Bump ts-loader from 9.5.1 to 9.5.4 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/16737
* Bump tsx from 4.20.5 to 4.21.0 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/16738
* docs: add IS_MULTIWORKSPACE_ENABLED documentation by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16758
* Adding one How To article to the workflow section by @StephanieJoly4 in https://github.com/twentyhq/twenty/pull/16760
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16761
* Allow custom fields to be editable for system objects and prevent the error for timeline activity on system object pages. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/16268
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/16767
* Allow creation date import by @BOHEUS in https://github.com/twentyhq/twenty/pull/16764
* fix: enable API key management of workspace views + fix permission bypass vulnerability by @eeeggg in https://github.com/twentyhq/twenty/pull/16768
* Fix: Record label identifier setting not saving on first attempt by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/16769
* fix: prevent API keys from creating UNLISTED views by @FelixMalfait in https://github.com/twentyhq/twenty/pull/16770
* fix: prevent workflow step title from transferring between steps. by @LuckyGoyal039 in https://github.com/twentyhq/twenty/pull/16762

## New Contributors
* @asasin235 made their first contribution in https://github.com/twentyhq/twenty/pull/16312
* @adityashirsatrao007 made their first contribution in https://github.com/twentyhq/twenty/pull/16547
* @Lakshayyy-m made their first contribution in https://github.com/twentyhq/twenty/pull/16582
* @Bhoomaahamso made their first contribution in https://github.com/twentyhq/twenty/pull/16548
* @eeeggg made their first contribution in https://github.com/twentyhq/twenty/pull/16768

**Full Changelog**: https://github.com/twentyhq/twenty/compare/v1.13.0...v1.14.0