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