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