v0.41.0
twentyhq/twentyv0.41.0Jan 30, 2025by guillim
AI Summary
Twenty v0.41.0 is a major release featuring Two-Factor Authentication (2FA), significant Microsoft integration improvements (multi-tenant support, SAML, auth enabled by default), enhanced workflow capabilities with better visualizer design and node management, and expanded localization support for fields, labels, and actions.
Key Highlights
- Added Two-Factor Authentication (2FA) support
- Microsoft authentication now enabled by default with multi-tenant and SAML support
- Introduced userWorkspaceRoles and Roles system with standard admin role seeding
- Enhanced localization - server translation, field/label translations, and action localization
- Workflow improvements - better node design, empty states, and prevent node/edge deletions
Breaking Changes
- Removed freeAccess user logic - may affect existing user permission flows
- Billing products now fetched from database tables instead of environment variables
- Removed isGmailSendEmailScopeEnabled and isServerlessFunctionSettingsEnabled feature flags
New Features
- Two-Factor Authentication (2FA)
- Microsoft multi-tenant and SAML authentication
- New relation resolver and schema generation
- Workflow visualizer with improved node alignment and design
- Command menu with top bar chips and restore context button
- Billing meter event service and metered products in checkout
- Field and label translation system (i18n)
- User roles system with admin role seeding
- Docker-Compose install experience improvements
Full Release Notes
## What's Changed * adding the microsoft publisher domain by @guillim in https://github.com/twentyhq/twenty/pull/9739 * fix: soft delete user when removing last userWorkspace by @etiennejouan in https://github.com/twentyhq/twenty/pull/9741 * [SERVER] Typecheck the `twenty-server` by @prastoin in https://github.com/twentyhq/twenty/pull/9736 * fix(auth): improve query to find invitation by @AMoreaux in https://github.com/twentyhq/twenty/pull/9743 * Fix action selection design by @thomtrp in https://github.com/twentyhq/twenty/pull/9748 * Add aggregate on view groups headers by @ijreilly in https://github.com/twentyhq/twenty/pull/9749 * Fix import twenty-shared by @charlesBochet in https://github.com/twentyhq/twenty/pull/9754 * fix: skeleton not using theme variables by @magrinj in https://github.com/twentyhq/twenty/pull/9712 * chore: update codegen config for enum naming convention by @etiennejouan in https://github.com/twentyhq/twenty/pull/9751 * Workflow E2E tests – batch 2 by @Devessier in https://github.com/twentyhq/twenty/pull/9747 * Fix API key not displayed by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9766 * Lab by @ehconitin in https://github.com/twentyhq/twenty/pull/9667 * doc by @guillim in https://github.com/twentyhq/twenty/pull/9737 * Add GraphQL Generation Check to CI Workflow by @yadavshubham01 in https://github.com/twentyhq/twenty/pull/9742 * fix: prevent billingPortal creation if no active subscription by @etiennejouan in https://github.com/twentyhq/twenty/pull/9701 * Fix use as draft by @martmull in https://github.com/twentyhq/twenty/pull/9718 * Document Google OAuth scopes required by @curiousercreative in https://github.com/twentyhq/twenty/pull/9657 * Hide workflows + remove feature flag from entities by @thomtrp in https://github.com/twentyhq/twenty/pull/9768 * refacto(invite|signin): remove unused code + fix signin on invite page. by @AMoreaux in https://github.com/twentyhq/twenty/pull/9745 * fix: handle billingSubscriptions gql field if billing is disabled by @etiennejouan in https://github.com/twentyhq/twenty/pull/9767 * fix(workspace): ensure proper handling of updates and errors by @AMoreaux in https://github.com/twentyhq/twenty/pull/9752 * fix(recaptcha|sso): recaptcha not generated issue by @AMoreaux in https://github.com/twentyhq/twenty/pull/9764 * microsoft domain publisher by @guillim in https://github.com/twentyhq/twenty/pull/9771 * add fetch billing products from tables instead of env variables by @anamarn in https://github.com/twentyhq/twenty/pull/9601 * Align the workflow visualizer's nodes on the left by @Devessier in https://github.com/twentyhq/twenty/pull/9776 * Seed workflow views and favorites in upgrade to 0.41 by @thomtrp in https://github.com/twentyhq/twenty/pull/9785 * Open showpage on workflow creation by @bosiraphael in https://github.com/twentyhq/twenty/pull/9714 * Fix COUNT operation on view group aggregate header by @ijreilly in https://github.com/twentyhq/twenty/pull/9789 * Remove isGmailSendEmailScopeEnabled featureFlag by @martmull in https://github.com/twentyhq/twenty/pull/9787 * [BUG] Record settings not saved by @prastoin in https://github.com/twentyhq/twenty/pull/9762 * [MISC] Twenty-emails as package by @prastoin in https://github.com/twentyhq/twenty/pull/9770 * feat: add targetFieldMetadataId and migration script for relations by @magrinj in https://github.com/twentyhq/twenty/pull/9793 * Fix View Picker broken by @charlesBochet in https://github.com/twentyhq/twenty/pull/9798 * Fix signup submit disabled when waiting for captcha without provider by @Weiko in https://github.com/twentyhq/twenty/pull/9796 * Fix captcha token not being loaded early enough by @charlesBochet in https://github.com/twentyhq/twenty/pull/9800 * Remove isServerlessFunctionSettingsEnabled feature flag by @martmull in https://github.com/twentyhq/twenty/pull/9797 * Refactored table filters to consume new currentRecordFilters component state by @lucasbordeau in https://github.com/twentyhq/twenty/pull/9652 * Microsoft-multi-tenant by @guillim in https://github.com/twentyhq/twenty/pull/9801 * isMicrosoftAuthEnabled = true by @guillim in https://github.com/twentyhq/twenty/pull/9812 * Add metered product to checkout session by @anamarn in https://github.com/twentyhq/twenty/pull/9788 * 251 create top bar chips inside the command menu by @bosiraphael in https://github.com/twentyhq/twenty/pull/9809 * Improve the design of workflow nodes by @Devessier in https://github.com/twentyhq/twenty/pull/9810 * bugfix: escape destroyed objects on workers by @pacyL2K19 in https://github.com/twentyhq/twenty/pull/9719 * fix: scrolling inside the table with scrollbar by @chandraguptgosavi in https://github.com/twentyhq/twenty/pull/9753 * fix: board hide button not working by @magrinj in https://github.com/twentyhq/twenty/pull/9818 * Fix left menu highlight by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9821 * 148 cant access note without title from kanban board by @martmull in https://github.com/twentyhq/twenty/pull/9817 * Normalize the spacing between nodes by @Devessier in https://github.com/twentyhq/twenty/pull/9820 * Fix: Remove default value for name field in CustomWorkspaceEntity (#9805) by @yadavshubham01 in https://github.com/twentyhq/twenty/pull/9824 * fixed ellipsis for calendar events by @Lucifer4255 in https://github.com/twentyhq/twenty/pull/9823 * fix(auth): Improve error management with sso + fix microsoft saml by @AMoreaux in https://github.com/twentyhq/twenty/pull/9799 * feat: new relation resolver by @magrinj in https://github.com/twentyhq/twenty/pull/9794 * Fix missing events during account connection by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9825 * feat: add clean suspended workspaces command by @etiennejouan in https://github.com/twentyhq/twenty/pull/9808 * chore(auth): update SAML strategy configuration by @AMoreaux in https://github.com/twentyhq/twenty/pull/9829 * Fix wrong label formatting by @martmull in https://github.com/twentyhq/twenty/pull/9830 * Fix icon matching + small other fixes on workflows by @thomtrp in https://github.com/twentyhq/twenty/pull/9814 * 250 implement restore context button on command menu by @bosiraphael in https://github.com/twentyhq/twenty/pull/9836 * Improve Docker-Compose Install Experience by @john-s4d in https://github.com/twentyhq/twenty/pull/9781 * Fix Typo in Filename by @kimanikevin254 in https://github.com/twentyhq/twenty/pull/9835 * Refactor `triggerUpdateRelationsOptimisticEffect` to compute relationship from Metadatas by @prastoin in https://github.com/twentyhq/twenty/pull/9815 * Fix Cmd enter to test code step by @martmull in https://github.com/twentyhq/twenty/pull/9841 * [MISC] Twenty-shared build `declaration` and `declarationMap` tsconfig by @prastoin in https://github.com/twentyhq/twenty/pull/9838 * update subscription interval and quantity for hybrid susbscription by @anamarn in https://github.com/twentyhq/twenty/pull/9822 * Feat/2fa by @nicolasrouanne in https://github.com/twentyhq/twenty/pull/9634 * Tt fast follows 24/01 by @thomtrp in https://github.com/twentyhq/twenty/pull/9843 * add new emails in suspended workspace cleaning job by @etiennejouan in https://github.com/twentyhq/twenty/pull/9834 * Add e2e tests for the Use as Draft feature by @Devessier in https://github.com/twentyhq/twenty/pull/9845 * Refactored record filter saving to view filters by @lucasbordeau in https://github.com/twentyhq/twenty/pull/9844 * Rename Unintuitive Function Names in Authentication Flow by @samyakpiya in https://github.com/twentyhq/twenty/pull/9706 * Create a reusable Label component by @Devessier in https://github.com/twentyhq/twenty/pull/9833 * bug fix urgent by @guillim in https://github.com/twentyhq/twenty/pull/9851 * decoupling isMicrosoftAuthEnabled and IsMicrosoftSyncEnabled (which has no reason to be used here) by @guillim in https://github.com/twentyhq/twenty/pull/9854 * Fix background color in code step right drawer by @martmull in https://github.com/twentyhq/twenty/pull/9856 * Fix design for select action by @martmull in https://github.com/twentyhq/twenty/pull/9857 * fix the bug "require approval" by @guillim in https://github.com/twentyhq/twenty/pull/9859 * Bug fix microsoft require approval by @guillim in https://github.com/twentyhq/twenty/pull/9863 * updating SettingsAccountsListEmptyStateCard by @guillim in https://github.com/twentyhq/twenty/pull/9868 * Fix design to match figma by @martmull in https://github.com/twentyhq/twenty/pull/9864 * Fix rightDrawer padding by @martmull in https://github.com/twentyhq/twenty/pull/9869 * Reset selectedStep with proper step by @martmull in https://github.com/twentyhq/twenty/pull/9867 * remove freeAccess user logic by @etiennejouan in https://github.com/twentyhq/twenty/pull/9866 * feat(auth): centralize SSO error handling logic by @AMoreaux in https://github.com/twentyhq/twenty/pull/9832 * Add server translation by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9847 * Fix object metadata view creation issue by @charlesBochet in https://github.com/twentyhq/twenty/pull/9875 * Translate label and descriptions for objects by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9876 * Fix ObjectType casing and conflict between Relation and RelationMetadata by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9849 * Add link on snack bar by @thomtrp in https://github.com/twentyhq/twenty/pull/9873 * Fix Messaging sync upsert in messageChannel association by @charlesBochet in https://github.com/twentyhq/twenty/pull/9880 * RICH_TEXT_V2 backend by @eliasylonen in https://github.com/twentyhq/twenty/pull/9848 * docs: add Lingui to the Readme by @andrii-bodnar in https://github.com/twentyhq/twenty/pull/9884 * Fix the design of the Variable chip by @Devessier in https://github.com/twentyhq/twenty/pull/9871 * Add command to remove duplicate messageChannelMessageAssociations by @charlesBochet in https://github.com/twentyhq/twenty/pull/9886 * Fix workflows empty states by @thomtrp in https://github.com/twentyhq/twenty/pull/9878 * feat(custom-domain): remove domainName + add migration for custom dom… by @AMoreaux in https://github.com/twentyhq/twenty/pull/9872 * fix link validation and matching during csv import by @etiennejouan in https://github.com/twentyhq/twenty/pull/9890 * adding the predicate in the UPSERT function by @guillim in https://github.com/twentyhq/twenty/pull/9891 * Update bullmq queue option for job failure strategy by @Weiko in https://github.com/twentyhq/twenty/pull/9887 * Aggregates - Update Date label by @ijreilly in https://github.com/twentyhq/twenty/pull/9862 * Add history (undo/redo) to text variable editors by @Devessier in https://github.com/twentyhq/twenty/pull/9889 * Disable variable picker when no available variables by @martmull in https://github.com/twentyhq/twenty/pull/9894 * Fix Icon Padding and Size in Select Item by @yadavshubham01 in https://github.com/twentyhq/twenty/pull/9888 * Add POC for Field translation by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9898 * Add field description+label translations by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9899 * feat: new relation schema generation by @magrinj in https://github.com/twentyhq/twenty/pull/9882 * fix: broken schema generation by @magrinj in https://github.com/twentyhq/twenty/pull/9905 * Add missing fields in update action by @thomtrp in https://github.com/twentyhq/twenty/pull/9908 * Disable variables for the country code in the form phone field by @Devessier in https://github.com/twentyhq/twenty/pull/9897 * Add event when creating draft from previous version by @thomtrp in https://github.com/twentyhq/twenty/pull/9910 * [BUG] Fix record relation optimistic mutation by @prastoin in https://github.com/twentyhq/twenty/pull/9881 * feat: new relation in graphql-query-runner by @magrinj in https://github.com/twentyhq/twenty/pull/9883 * [FiX] Optimistic cache useUpdateOneRecord by @prastoin in https://github.com/twentyhq/twenty/pull/9913 * Fix empty trigger on readonly + fix cache apollo on deactivation by @thomtrp in https://github.com/twentyhq/twenty/pull/9912 * Continue Frontend localization by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9909 * Improve command menu chip design by @bosiraphael in https://github.com/twentyhq/twenty/pull/9915 * fix: correct typo in property name from "Entreprise" to "Enterprise" by @AMoreaux in https://github.com/twentyhq/twenty/pull/9916 * Fix workflow edges color by @Devessier in https://github.com/twentyhq/twenty/pull/9917 * Add search records actions to the command menu by @bosiraphael in https://github.com/twentyhq/twenty/pull/9892 * Prevent all workflow node and edge deletions made through the UI by @Devessier in https://github.com/twentyhq/twenty/pull/9918 * feat(auth): enhance SSO handling and workspace auth logic by @AMoreaux in https://github.com/twentyhq/twenty/pull/9858 * add command to run cleaning suspended workspaces job by @etiennejouan in https://github.com/twentyhq/twenty/pull/9895 * Add billing meter event service by @anamarn in https://github.com/twentyhq/twenty/pull/9865 * Fix - Input box shadow, left icon focus and new size variant by @ehconitin in https://github.com/twentyhq/twenty/pull/9902 * Fix E2E tests by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9919 * feat: MenuItem disabled color by @magrinj in https://github.com/twentyhq/twenty/pull/9923 * [BUG] Handle optimistic cache deletion operation by @prastoin in https://github.com/twentyhq/twenty/pull/9914 * quick fix for microsoft : removing feature flag for microsoft by @guillim in https://github.com/twentyhq/twenty/pull/9926 * Fix tooltip performances by @charlesBochet in https://github.com/twentyhq/twenty/pull/9930 * feat(custom-domains): allow to register a custom domain (without UI) by @AMoreaux in https://github.com/twentyhq/twenty/pull/9879 * Introduce userWorkspaceRoles and Roles + seed standard admin role at workspace creation by @ijreilly in https://github.com/twentyhq/twenty/pull/9929 * creating the messagefolder entity by @guillim in https://github.com/twentyhq/twenty/pull/9933 * [FIX] Storybook race condition by @prastoin in https://github.com/twentyhq/twenty/pull/9936 * Localization of actions by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9934 * Icon microsoft by @guillim in https://github.com/twentyhq/twenty/pull/9907 * Remove before-after + fix header label by @thomtrp in https://github.com/twentyhq/twenty/pull/9932 * Use refetch instead of cache modify when activating/deactivating a workflow by @thomtrp in https://github.com/twentyhq/twenty/pull/9937 * Fix optimistic effect for implicit and filters by @bosiraphael in https://github.com/twentyhq/twenty/pull/9935 ## New Contributors * @chandraguptgosavi made their first contribution in https://github.com/twentyhq/twenty/pull/9753 * @john-s4d made their first contribution in https://github.com/twentyhq/twenty/pull/9781 * @kimanikevin254 made their first contribution in https://github.com/twentyhq/twenty/pull/9835 * @andrii-bodnar made their first contribution in https://github.com/twentyhq/twenty/pull/9884 **Full Changelog**: https://github.com/twentyhq/twenty/compare/v0.40.0...v0.41.0