v1.18.0

twentyhq/twentyv1.18.0Feb 19, 2026by etiennejouan

AI Summary

Major release focusing on UI customization with navbar customization, file system v2 migration, and AI chat improvements including @mention support and auto-generated conversation titles. Includes significant backend improvements around metadata events, SSE, and record page layouts.

Key Highlights

  • Navbar customization feature with follow-up improvements
  • File system v2 migration - avatarUrl to avatarFile, attachments in activities, core pictures
  • AI chat improvements - @mention support, auto-generated conversation titles, tool display
  • Record Page Layout improvements - widget drag and drop, field groups, page layout sync
  • Jotai migration for state management and performance improvements

Breaking Changes

  • OBJECT_MANAGEMENT_BREAKING_CHANGE: Sync returns workspace migration
  • Migration from avatarUrl to avatarFile on person (data migration required)

New Features

  • Navbar customization
  • Draft email workflow action
  • Add remove option for object permissions rule
  • Wildcard documentation for like/ilike/containsIlike filters
  • DATE_TIME IS operand to filter on whole day
  • Currency hover tooltip
  • Split multi-value fields setting for charts
  • Postinstall/preinstall function for extensibility

Full Release Notes

## What's Changed
* Lowercase email by @BOHEUS in https://github.com/twentyhq/twenty/pull/17775
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17842
* Fix phone validation performance by using Set/Map instead of Array lookups by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17843
* fix: show user-friendly error message when duplicate invite is sent by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17827
* perf: cache ServerBlockNoteEditor instance in transformRichTextV2Value by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17844
* Runner metadata events by @prastoin in https://github.com/twentyhq/twenty/pull/17841
* Fix merge records page accumulating duplicate morph items by @rdelassus in https://github.com/twentyhq/twenty/pull/17705
* Prevent leak between /metadata and /graphql GQL schemas by @charlesBochet in https://github.com/twentyhq/twenty/pull/17845
* Fix spurious logouts by deduplicating concurrent token renewals by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17858
* Do not throw on corrupted labelFieldMetadataIdentifier by @prastoin in https://github.com/twentyhq/twenty/pull/17859
* Remove guard from find logic functions by @thomtrp in https://github.com/twentyhq/twenty/pull/17862
* File - Migrate avatarUrl > avatarFile on person (data migration + logic) + Attachment data migration by @etiennejouan in https://github.com/twentyhq/twenty/pull/17752
* Fix code step and logic function step in workflows by @thomtrp in https://github.com/twentyhq/twenty/pull/17856
* Add wildcard documentation for like/ilike/containsIlike filters by @bugisthegod in https://github.com/twentyhq/twenty/pull/17825
* Feat: Navbar customization by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/17728
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17869
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17872
* Solo transaction application synchronization service refactor by @prastoin in https://github.com/twentyhq/twenty/pull/17864
* Fix page layout seeding for record page layouts by @Weiko in https://github.com/twentyhq/twenty/pull/17871
* Handle 413 with user friendly message by @etiennejouan in https://github.com/twentyhq/twenty/pull/17870
* Fix hardcoded colors in 2FA verification screen for dark mode by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17868
* Fix redirect to deleted workspace subdomain after workspace deletion by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17865
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17874
* Remove redundant self-build from Nx targets that compile on the fly by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17851
* Generate GQL schema based on applicationId by @charlesBochet in https://github.com/twentyhq/twenty/pull/17860
* Fix event stream does not exists error by @thomtrp in https://github.com/twentyhq/twenty/pull/17873
* Introducing view field group syncable entity by @Weiko in https://github.com/twentyhq/twenty/pull/17867
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17877
* Navbar customization followup by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/17848
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17881
* Reduce leak between gql schema by @charlesBochet in https://github.com/twentyhq/twenty/pull/17878
* Logic function refactorization by @martmull in https://github.com/twentyhq/twenty/pull/17861
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17887
* File v2 - Backfill mimeType and size - command by @etiennejouan in https://github.com/twentyhq/twenty/pull/17875
* Fix widget and front component queries hitting wrong GraphQL endpoint by @ehconitin in https://github.com/twentyhq/twenty/pull/17889
* [FRONT COMPONENTS] Twenty UI elements generation by @bosiraphael in https://github.com/twentyhq/twenty/pull/17866
* Bump @types/bytes from 3.1.4 to 3.1.5 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/17882
* Bump react-loading-skeleton from 3.4.0 to 3.5.0 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/17883
* Workflow bug fixes  by @thomtrp in https://github.com/twentyhq/twenty/pull/17886
* Bump @vitest/browser-playwright from 4.0.17 to 4.0.18 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/17884
* Start Jotai Migration by @charlesBochet in https://github.com/twentyhq/twenty/pull/17893
* Fix index field comparison by @prastoin in https://github.com/twentyhq/twenty/pull/17896
* Migrate twenty ui to jotai by @charlesBochet in https://github.com/twentyhq/twenty/pull/17900
* Fix EMFILE: too many open files, watch on macOS by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17901
* Prefil fields widgets to standard app by @Weiko in https://github.com/twentyhq/twenty/pull/17897
* Migrate more to Jotai by @charlesBochet in https://github.com/twentyhq/twenty/pull/17903
* Scalar and universal flat entity transpilers by @prastoin in https://github.com/twentyhq/twenty/pull/17891
* Fix twenty sdk build by @martmull in https://github.com/twentyhq/twenty/pull/17902
* feat: emit metadata events for schema changes with actor context for webhooks by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/17622
* [Apps] Content + permission tabs for marketplace and installed apps by @ijreilly in https://github.com/twentyhq/twenty/pull/17888
* Files - Migrate attachments in activities by @etiennejouan in https://github.com/twentyhq/twenty/pull/17808
* Feat 17408 : Add remove option for object permissions rule by @LTan-101104 in https://github.com/twentyhq/twenty/pull/17601
* Some fixes by @ijreilly in https://github.com/twentyhq/twenty/pull/17904
* Improve AI agent chat, tool display, and workflow agent management by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17876
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17905
* Refactor metadata events to contain `scalarEntity` by @prastoin in https://github.com/twentyhq/twenty/pull/17908
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17911
* Speed up twenty-emails build by replacing vite-plugin-dts with tsgo by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17857
* Migrate create syncable entity cursor rule to skills by @prastoin in https://github.com/twentyhq/twenty/pull/17912
* Hide delete button for record page layout widgets by @Copilot in https://github.com/twentyhq/twenty/pull/17892
* Drag and drop fields of Fields widgets by @Devessier in https://github.com/twentyhq/twenty/pull/17910
* fix: prevent tab synchronization between different records by @Eruis2579 in https://github.com/twentyhq/twenty/pull/17559
* chore(nx): remove leftover Nx wrapper artifacts by @ehconitin in https://github.com/twentyhq/twenty/pull/17916
* Add mentions feature to objects in notes by @acee3 in https://github.com/twentyhq/twenty/pull/16373
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17915
* [FRONT COMPONENT] Add Front component token generation by @ehconitin in https://github.com/twentyhq/twenty/pull/17855
* Improve building of twenty-sdk by @charlesBochet in https://github.com/twentyhq/twenty/pull/17913
* Fix event stream infinite loops by @thomtrp in https://github.com/twentyhq/twenty/pull/17919
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17920
* Add scripts to publish cli tools by @martmull in https://github.com/twentyhq/twenty/pull/17914
* Enhance stories for front component in sdk by @charlesBochet in https://github.com/twentyhq/twenty/pull/17925
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17930
* fix: replace react-tooltip with AppTooltip and refactor MenuItemAvatar by @kiannidev in https://github.com/twentyhq/twenty/pull/17846
* Create record page layout after custom object creation by @Weiko in https://github.com/twentyhq/twenty/pull/17923
* Revert export twenty UI by @charlesBochet in https://github.com/twentyhq/twenty/pull/17929
* Update cli tool versions by @martmull in https://github.com/twentyhq/twenty/pull/17933
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17932
* feat: add draft email workflow action by @neo773 in https://github.com/twentyhq/twenty/pull/17793
* Respect Gmail retry-after in messaging throttle by @neo773 in https://github.com/twentyhq/twenty/pull/17850
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17939
* fix: add explicit error hint for coverage threshold failures in frontend test step by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/17937
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17935
* Add @mention support in AI Chat input by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17943
* fix: markdown-it is has a regular expression denial of service by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/17946
* fix: qs arrayLimit bypass in comma parsing allows denial of service by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/17947
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17945
* [FRONT COMPONENTS] Allow style librairies in remote dom by @bosiraphael in https://github.com/twentyhq/twenty/pull/17936
* fix: restore customDomain field in getCurrentUser query fragment by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17949
* Support define is tool logic function by @martmull in https://github.com/twentyhq/twenty/pull/17926
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17966
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17967
* feat: configure standard views and migrate attachment seeds to FILES field by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17958
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17972
* `[OBJECT_MANIFEST_BREAKING_CHANGE]` Sync returns workspace migration by @prastoin in https://github.com/twentyhq/twenty/pull/17918
* Add default fields on object manifest by @martmull in https://github.com/twentyhq/twenty/pull/17977
* [DASHBOARDS] Add split multi-value fields setting for charts by @ehconitin in https://github.com/twentyhq/twenty/pull/17907
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17981
* Change condition for multi-workspace check by @manstfu in https://github.com/twentyhq/twenty/pull/17938
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17983
* Fix and refactor all metadata relation by @prastoin in https://github.com/twentyhq/twenty/pull/17978
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17986
* Improve AI chat UX by @Bonapara in https://github.com/twentyhq/twenty/pull/17974
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17987
* fix: use pickMorphGroupSurvivor in relation loader to match field metadata deduplication by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17988
* File - Disable file upload in standalone rich text widget by @etiennejouan in https://github.com/twentyhq/twenty/pull/17934
* Navigation Menu Item - Migration in v1.18 by @etiennejouan in https://github.com/twentyhq/twenty/pull/17991
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17993
* fix: on charts newly added multi split values toggle wasnt being saved by @ehconitin in https://github.com/twentyhq/twenty/pull/17990
* feat: show auto-generated conversation title for AI chat. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/17922
* fix: improve clipboard copy for non-HTTPS self-hosted deployments by @FelixMalfait in https://github.com/twentyhq/twenty/pull/17989
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17995
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/17997
* Fix dashboard new tab creation by @Devessier in https://github.com/twentyhq/twenty/pull/17971
* Page layout various fixes by @Weiko in https://github.com/twentyhq/twenty/pull/17996
* Added relations to SSE events by @lucasbordeau in https://github.com/twentyhq/twenty/pull/17683
* Emitting the correct event based on whether the record is being soft deleted or restored. by @Lakshayyy-m in https://github.com/twentyhq/twenty/pull/17953
* Sync views and navigation items by @thomtrp in https://github.com/twentyhq/twenty/pull/18003
* Fix initial code step functionInput by @martmull in https://github.com/twentyhq/twenty/pull/18002
* File - Migrate core pictures (workspace and member logo) + workflow attachments by @etiennejouan in https://github.com/twentyhq/twenty/pull/17924
* Translate page layout tab title by @Devessier in https://github.com/twentyhq/twenty/pull/17975
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18007
* Fixed group by query order by inside group by @lucasbordeau in https://github.com/twentyhq/twenty/pull/18005
* Move secure HTTP client IP validation to connection level by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18006
* Replace country code by calling code in workflows by @thomtrp in https://github.com/twentyhq/twenty/pull/18008
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18012
* Add Client Api generation by @charlesBochet in https://github.com/twentyhq/twenty/pull/17961
* Load view field groups by @Devessier in https://github.com/twentyhq/twenty/pull/18010
* New onboarding plan by @BOHEUS in https://github.com/twentyhq/twenty/pull/17776
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18013
* Migrate more to Jotai by @charlesBochet in https://github.com/twentyhq/twenty/pull/17968
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18014
* Navbar customization improvements by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/17863
* Fix connected account permissions by @BOHEUS in https://github.com/twentyhq/twenty/pull/17598
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18017
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18020
* Files command - fixes by @etiennejouan in https://github.com/twentyhq/twenty/pull/18016
* Date & DateTime validation fixes / improvements by @etiennejouan in https://github.com/twentyhq/twenty/pull/18009
* fixes: loosen up front validation, add resolveEntityRelationUniversalIdentifiers to update and restore  by @ehconitin in https://github.com/twentyhq/twenty/pull/18015
* New field creates fields widget field by @Weiko in https://github.com/twentyhq/twenty/pull/18022
* App feedbacks by @martmull in https://github.com/twentyhq/twenty/pull/18028
* Add SSE for metadata and plug front components by @bosiraphael in https://github.com/twentyhq/twenty/pull/17998
* Improve API Client usage and add Typescript check by @charlesBochet in https://github.com/twentyhq/twenty/pull/18023
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18029
* v1.18 - Fix command by @etiennejouan in https://github.com/twentyhq/twenty/pull/18032
* Fix Gmail thread awareness for custom labels by @neo773 in https://github.com/twentyhq/twenty/pull/18031
* Allow DATE_TIME IS operand to filter on a whole day by @carbonFibreCode in https://github.com/twentyhq/twenty/pull/17529
* Replace generic "Unknown error" messages with descriptive error details by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18019
* Use proper PostgreSQL identifier/literal escaping in workspace DDL by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18024
* Fixes - Workspace logo migration by @etiennejouan in https://github.com/twentyhq/twenty/pull/18035
* [Chore] : Generate migration for DATE_TIME to DATE for DATE_TIME + IS operand filters by @carbonFibreCode in https://github.com/twentyhq/twenty/pull/17564
* 2094 extensibility define postinstall orand preinstall function to run in application by @martmull in https://github.com/twentyhq/twenty/pull/18037
* Nav Menu Item Migration command fix by @etiennejouan in https://github.com/twentyhq/twenty/pull/18041
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18040
* Sync page Layout by @charlesBochet in https://github.com/twentyhq/twenty/pull/18034
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18048
* Add missing objects to rich app integration tests by @thomtrp in https://github.com/twentyhq/twenty/pull/18039
* Add example in create-twenty-app by @martmull in https://github.com/twentyhq/twenty/pull/18043
* Refactor page layout types by @charlesBochet in https://github.com/twentyhq/twenty/pull/18042
* refactor workflow action messaging with callout by @Bonapara in https://github.com/twentyhq/twenty/pull/18038
* Add currency hover tooltip in CurrencyDisplay by @Bonapara in https://github.com/twentyhq/twenty/pull/18045
* fix: show "Not shared" for junction relation fields when target or intermediate object is not readable by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/18025
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18050
* Restore old favorite design by @etiennejouan in https://github.com/twentyhq/twenty/pull/18049

## New Contributors
* @LTan-101104 made their first contribution in https://github.com/twentyhq/twenty/pull/17601
* @Eruis2579 made their first contribution in https://github.com/twentyhq/twenty/pull/17559
* @acee3 made their first contribution in https://github.com/twentyhq/twenty/pull/16373
* @kiannidev made their first contribution in https://github.com/twentyhq/twenty/pull/17846
* @manstfu made their first contribution in https://github.com/twentyhq/twenty/pull/17938

**Full Changelog**: https://github.com/twentyhq/twenty/compare/v1.17.0...v1.18.0