v0.42.0
twentyhq/twentyv0.42.0Feb 14, 2025by prastoin
AI Summary
This release focuses on major workflow enhancements including cron triggers and a visualizer, expanded internationalization with Japanese language support, and a new roles/permissions system with a settings page. Additional improvements include custom domain support, command menu navigation enhancements, and continued REST API to TwentyORM migration.
Key Highlights
- Workflow system major upgrade with cron triggers backend/frontend implementation and new workflow run visualizer
- Internationalization expansion - Japanese language added, extensive translation improvements, and localization CI optimizations
- New Roles & Permissions system - settings roles page, role assignment page, and permission gates on API/Webhooks
- Custom domain support - enable custom domain usage with UI and status toggle
- Command menu improvements - navigation stack, context chips compact version, and navigation hotkeys
New Features
- Japanese language support
- Workflow cron triggers (scheduled workflows)
- Workflow run visualizer
- Settings roles page and role assignment page
- Custom domain support with UI
- Command menu navigation stack and context chips
- Add object name inside search
- Search records as fallback when no results
- Environment variables in admin panel (read-only)
- RICH_TEXT_V2 frontend and upgrade command
- Destroy many record actions
- Microsoft signup sync
- Folders organization feature
- Permission gates on API & Webhooks + Security settings
Full Release Notes
## What's Changed * clean code and normalize billing eventNames by @anamarn in https://github.com/twentyhq/twenty/pull/9928 * Implement parallel code path for fieldMetadataItem instead of filterDefinition by @lucasbordeau in https://github.com/twentyhq/twenty/pull/9931 * Add settings roles page by @Weiko in https://github.com/twentyhq/twenty/pull/9940 * Fix refetch on workflow status update by @thomtrp in https://github.com/twentyhq/twenty/pull/9946 * Disable the fields of all CRUD workflow actions on readonly mode by @Devessier in https://github.com/twentyhq/twenty/pull/9939 * fix slow search resolver without searchTerm input by @etiennejouan in https://github.com/twentyhq/twenty/pull/9947 * Remove demo from readme as users can create free trial on production by @charlesBochet in https://github.com/twentyhq/twenty/pull/9952 * refacto(auth): improve type + remove complexity by @AMoreaux in https://github.com/twentyhq/twenty/pull/9949 * More progress on translations by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9951 * [1/n]: Migrate `deleteOne` Rest API to use TwentyORM directly by @pacyL2K19 in https://github.com/twentyhq/twenty/pull/9784 * fix(icon): update Microsoft Outlook icon import by @AMoreaux in https://github.com/twentyhq/twenty/pull/9953 * Serverless function follow up by @martmull in https://github.com/twentyhq/twenty/pull/9924 * Fix composite type update migration builder by @charlesBochet in https://github.com/twentyhq/twenty/pull/9959 * Make variable nodes undeletable in a readonly tiptap editor by @Devessier in https://github.com/twentyhq/twenty/pull/9950 * [Permissions] Add userWorkspaceId to JWT token by @ijreilly in https://github.com/twentyhq/twenty/pull/9954 * 323 add object name inside the search by @bosiraphael in https://github.com/twentyhq/twenty/pull/9962 * [CHORE] Avoid `isDefined` duplicated reference, move it to `twenty-shared` by @prastoin in https://github.com/twentyhq/twenty/pull/9967 * Add instructions to upgrade to 0.41 in docs by @guillim in https://github.com/twentyhq/twenty/pull/9964 * Add Japanese language by @yhayano-ponotech in https://github.com/twentyhq/twenty/pull/9956 * setup localization for twenty-emails by @DeepaPrasanna in https://github.com/twentyhq/twenty/pull/9806 * preparing version 0.42-caanry by @guillim in https://github.com/twentyhq/twenty/pull/9938 * Sort active workspaces by @guillim in https://github.com/twentyhq/twenty/pull/9973 * refactor(auth): update SSO provider selection logic by @AMoreaux in https://github.com/twentyhq/twenty/pull/9975 * 324 add search records as a fallback action in case of no results by @bosiraphael in https://github.com/twentyhq/twenty/pull/9976 * Environment variables in admin panel (read only) - backend by @ehconitin in https://github.com/twentyhq/twenty/pull/9943 * Removed availableFilterDefinitions as a state but kept its usage as a derived state of objectMetadataItems by @lucasbordeau in https://github.com/twentyhq/twenty/pull/9972 * fix: prevent updating isCustom on object and field metadata by @chandraguptgosavi in https://github.com/twentyhq/twenty/pull/9968 * feat(sso): fix saml + allow to use public invite with sso + fix invite page with multiple sso provider by @AMoreaux in https://github.com/twentyhq/twenty/pull/9963 * allow people to connect their mailbox by @guillim in https://github.com/twentyhq/twenty/pull/9982 * [Permissions] Implement getRoles by @ijreilly in https://github.com/twentyhq/twenty/pull/9955 * Add logged out translations by @FelixMalfait in https://github.com/twentyhq/twenty/pull/9983 * hotfix for lab by @ehconitin in https://github.com/twentyhq/twenty/pull/9981 * optimize feature flag query in Lab by @ehconitin in https://github.com/twentyhq/twenty/pull/9987 * add createMany fields to fieldMetadataService to batch field creation by @Weiko in https://github.com/twentyhq/twenty/pull/9957 * [2/n]: Rest API -> TwentyORM migration `POST rest/*` by @pacyL2K19 in https://github.com/twentyhq/twenty/pull/9986 * Improve translations with gpt by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10000 * Fix-issue-370 by @guillim in https://github.com/twentyhq/twenty/pull/9996 * Enable workflow in lab by @thomtrp in https://github.com/twentyhq/twenty/pull/9997 * Fixed cannot close record table cell header filter by @lucasbordeau in https://github.com/twentyhq/twenty/pull/9998 * 361 create a navigation stack for the command menu by @bosiraphael in https://github.com/twentyhq/twenty/pull/9995 * Update cleaning suspended workspace job by @etiennejouan in https://github.com/twentyhq/twenty/pull/9999 * 0.41 release note -> Introducing Lab Tab by @Bonapara in https://github.com/twentyhq/twenty/pull/9989 * Fix:Empty link in record details isn't deleted by default by @Lucifer4255 in https://github.com/twentyhq/twenty/pull/9840 * Dockerfile update by @guillim in https://github.com/twentyhq/twenty/pull/10007 * Fix send email error when empty connected account by @thomtrp in https://github.com/twentyhq/twenty/pull/10005 * [3/n]: Migrate the `PUT rest/*` and `PATCH rest/*` to use TwentyORM by @pacyL2K19 in https://github.com/twentyhq/twenty/pull/10002 * Create variants for workflow visualizer nodes by @Devessier in https://github.com/twentyhq/twenty/pull/10006 * [FIX] Nx project's scope build dependency management by @prastoin in https://github.com/twentyhq/twenty/pull/10010 * [CHORE] Twenty emails deps to twenty-shared lockfile update by @prastoin in https://github.com/twentyhq/twenty/pull/10013 * [FEAT] RecordAction destroy many record by @prastoin in https://github.com/twentyhq/twenty/pull/9991 * Implement query variables in useCombinedFindManyRecords by @lucasbordeau in https://github.com/twentyhq/twenty/pull/10015 * 335 workflow implement workflow cron triggers backend by @martmull in https://github.com/twentyhq/twenty/pull/9988 * [BUG][PROD] Fix `ViewGroup` creation optimistic cache by @prastoin in https://github.com/twentyhq/twenty/pull/10014 * Fetch roles in roles settings page by @Weiko in https://github.com/twentyhq/twenty/pull/10001 * 320 new command menu navigation bar buttons by @bosiraphael in https://github.com/twentyhq/twenty/pull/10018 * Post #10014 merged nitpicks followup by @prastoin in https://github.com/twentyhq/twenty/pull/10021 * `BaseObjectRecord` and`__typename` naming updates by @prastoin in https://github.com/twentyhq/twenty/pull/10024 * [FEAT] Destroy many Workflow actions by @prastoin in https://github.com/twentyhq/twenty/pull/10028 * [NITPICK] Avoid duplicated action position index in `DefaultActionsConfigV2` by @prastoin in https://github.com/twentyhq/twenty/pull/10031 * Lab image cover by @Bonapara in https://github.com/twentyhq/twenty/pull/10027 * Implement updateRole by @ijreilly in https://github.com/twentyhq/twenty/pull/10009 * 10004 tasks will not delete in people view by @bosiraphael in https://github.com/twentyhq/twenty/pull/10039 * Add the new workflow `not executed` node type by @Devessier in https://github.com/twentyhq/twenty/pull/10030 * refactor(security): extend SAML prefix handling by @AMoreaux in https://github.com/twentyhq/twenty/pull/10047 * 259 add navigation hotkeys for command menu level 2 by @bosiraphael in https://github.com/twentyhq/twenty/pull/10043 * Simplify the component layers for workflow nodes by @Devessier in https://github.com/twentyhq/twenty/pull/10042 * Record filters - Introduced fieldMetadataItemUsedInDropdown instead of filterDefinitionUsedInDropdown by @lucasbordeau in https://github.com/twentyhq/twenty/pull/10044 * [permissions] Avoid N+1 on roles by @ijreilly in https://github.com/twentyhq/twenty/pull/10041 * Add role edit page container by @Weiko in https://github.com/twentyhq/twenty/pull/10037 * fix(signin): allow to signin in pending creation workspace by @AMoreaux in https://github.com/twentyhq/twenty/pull/10052 * signup sync with microsoft by @guillim in https://github.com/twentyhq/twenty/pull/10008 * Deprecate message queue type by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10040 * fix(auth): update error message in sign-in-up service test by @AMoreaux in https://github.com/twentyhq/twenty/pull/10056 * fix(settings routing): handle trailing slashes in base paths by @AMoreaux in https://github.com/twentyhq/twenty/pull/10055 * Environment variables in admin panel (read only) - front by @ehconitin in https://github.com/twentyhq/twenty/pull/10011 * Make the e2e ci pass by @Devessier in https://github.com/twentyhq/twenty/pull/10059 * fix(auth): reset signInUp state when email change by @AMoreaux in https://github.com/twentyhq/twenty/pull/9990 * Update billing to EE by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10060 * Lingui working with NODE ENV=production again by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10067 * fix(auth): prevent infinite redirect by @AMoreaux in https://github.com/twentyhq/twenty/pull/10065 * refactor(auth): simplify continueWithEmail and remove useCallback by @AMoreaux in https://github.com/twentyhq/twenty/pull/10068 * Refactor duplication of hard coded soft delete filter logic by @lucasbordeau in https://github.com/twentyhq/twenty/pull/10058 * Remove the source handle for leaf nodes by @Devessier in https://github.com/twentyhq/twenty/pull/10057 * feat(): enable custom domain usage by @AMoreaux in https://github.com/twentyhq/twenty/pull/9911 * 321 command menu context chips compact version by @bosiraphael in https://github.com/twentyhq/twenty/pull/10072 * Remove session store secret by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10074 * [BUG] Avoid backfilling record position on update one by @prastoin in https://github.com/twentyhq/twenty/pull/10069 * Do not display back button at the root level of the command menu by @bosiraphael in https://github.com/twentyhq/twenty/pull/10073 * [permissions] Add settingsPermissions to getCurrentUser by @ijreilly in https://github.com/twentyhq/twenty/pull/10054 * [permissions] Add SettingsPermissionGuard on data model and roles features by @ijreilly in https://github.com/twentyhq/twenty/pull/10063 * Command menu list design updates by @bosiraphael in https://github.com/twentyhq/twenty/pull/10075 * 360 workflow implement workflow cron triggers frontend 2 by @martmull in https://github.com/twentyhq/twenty/pull/10051 * Fix soft delete filter hook bug with actions by @lucasbordeau in https://github.com/twentyhq/twenty/pull/10077 * Updates in the workflow actions config by @bosiraphael in https://github.com/twentyhq/twenty/pull/10080 * Reset search bar when clicking on search action by @bosiraphael in https://github.com/twentyhq/twenty/pull/10076 * Focus on the input on command menu page change by @bosiraphael in https://github.com/twentyhq/twenty/pull/10082 * Translations - Crowdin, Set workspace member locale on signup, and optimizations by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10091 * I18n CI and small type improvement by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10092 * Iterations on i18n CI by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10093 * feat(custom-domain): enable UI for custom domain by @AMoreaux in https://github.com/twentyhq/twenty/pull/10062 * chore: add translations by @github-actions in https://github.com/twentyhq/twenty/pull/10098 * Fix doc by @martmull in https://github.com/twentyhq/twenty/pull/10102 * Store output step by step by @thomtrp in https://github.com/twentyhq/twenty/pull/10101 * add invalid captcha and messageChannel sync status health monitoring by @etiennejouan in https://github.com/twentyhq/twenty/pull/10029 * hide inactive objects by @mdrazak2001 in https://github.com/twentyhq/twenty/pull/10099 * Fix issue with pr-PT and pt-BR casing by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10106 * Hide inactive objects and fields by @akakiplimo in https://github.com/twentyhq/twenty/pull/10104 * refacto(*): rename hostname to custom domain by @AMoreaux in https://github.com/twentyhq/twenty/pull/10100 * Simplify webhook creation flow by @martmull in https://github.com/twentyhq/twenty/pull/10107 * Fix: Get rid of subgroups in admin/env-variables by @ehconitin in https://github.com/twentyhq/twenty/pull/10105 * chore: add translations by @github-actions in https://github.com/twentyhq/twenty/pull/10112 * we don't create companies for personal domain emails anylonger by @guillim in https://github.com/twentyhq/twenty/pull/10110 * Fix workflow activation optimistic rendering in Cmd+K by @thomtrp in https://github.com/twentyhq/twenty/pull/10109 * fix log + add 3 indexes on fielMetadata and indexFieldMetadata by @etiennejouan in https://github.com/twentyhq/twenty/pull/10113 * Update docker-compose.mdx by @titouan13 in https://github.com/twentyhq/twenty/pull/10118 * chore(twenty-server): remove eslint warn + add maxWarning 0 by @AMoreaux in https://github.com/twentyhq/twenty/pull/10103 * RICH_TEXT_V2 frontend by @eliasylonen in https://github.com/twentyhq/twenty/pull/10083 * Add workflow success edge by @Devessier in https://github.com/twentyhq/twenty/pull/10120 * add role assignment page by @Weiko in https://github.com/twentyhq/twenty/pull/10115 * Fix readonly in some steps by @thomtrp in https://github.com/twentyhq/twenty/pull/10121 * Translations cleaning / workflows by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10125 * Update i18n-push.yaml by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10127 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10126 * I18n CI by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10129 * [REFACTOR][BUG] Dynamically compute field to write in cache `UPDATE` & `DELETE` by @prastoin in https://github.com/twentyhq/twenty/pull/10079 * fix: many fields in an object by @magrinj in https://github.com/twentyhq/twenty/pull/10061 * Update i18n-compile.yaml by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10132 * folders by @guillim in https://github.com/twentyhq/twenty/pull/10081 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10131 * Webhook follow up by @martmull in https://github.com/twentyhq/twenty/pull/10124 * Admin panel refactor by @ehconitin in https://github.com/twentyhq/twenty/pull/10119 * Fix bug where aggregate resets record filters by @lucasbordeau in https://github.com/twentyhq/twenty/pull/10136 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10137 * minor env tab description font color fix by @ehconitin in https://github.com/twentyhq/twenty/pull/10139 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10140 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10141 * Prevent data visualizer from fetching workflows when not enabled by @thomtrp in https://github.com/twentyhq/twenty/pull/10116 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10143 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10144 * Progress on translations by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10142 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10145 * [permissions] Add permission gates on API & Webhooks + Security settings by @ijreilly in https://github.com/twentyhq/twenty/pull/10133 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10149 * Create base search record action by @thomtrp in https://github.com/twentyhq/twenty/pull/10135 * RICH_TEXT_V2 upgrade command by @eliasylonen in https://github.com/twentyhq/twenty/pull/10094 * consistent background color in notes by @mdrazak2001 in https://github.com/twentyhq/twenty/pull/10097 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10157 * HandleAlias by @guillim in https://github.com/twentyhq/twenty/pull/10156 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10160 * Add log by @martmull in https://github.com/twentyhq/twenty/pull/10162 * Remove log to fix serverless function by @martmull in https://github.com/twentyhq/twenty/pull/10166 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10168 * replace log by throw by @martmull in https://github.com/twentyhq/twenty/pull/10167 * add WorkspaceDuplicateCriteria decorator + update duplicate resolver logic by @etiennejouan in https://github.com/twentyhq/twenty/pull/10128 * Fix relation creation by @Weiko in https://github.com/twentyhq/twenty/pull/10171 * add object settings permission tab by @Weiko in https://github.com/twentyhq/twenty/pull/10159 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10172 * i18n - translations by @github-actions in https://github.com/twentyhq/twenty/pull/10174 * Fix latest visited view by @charlesBochet in https://github.com/twentyhq/twenty/pull/10158 * Feature flag IS_MICROSOFT_SYNC_ENABLED removal by @guillim in https://github.com/twentyhq/twenty/pull/10170 * Remove filterDefinition.type usage by @lucasbordeau in https://github.com/twentyhq/twenty/pull/10164 * withDelete option to TypeOrm by @guillim in https://github.com/twentyhq/twenty/pull/10161 * Fix CI after SettingsFeature enum update by @Weiko in https://github.com/twentyhq/twenty/pull/10178 * refactor(auth/sso): rename GetAuthorizationUrl for clarity by @AMoreaux in https://github.com/twentyhq/twenty/pull/10173 * Fixed context menu bug with new record filters refactor by @lucasbordeau in https://github.com/twentyhq/twenty/pull/10181 * chore: update eslint configuration and clean up index file by @AMoreaux in https://github.com/twentyhq/twenty/pull/10185 * Add sync metadata to migrate command by @charlesBochet in https://github.com/twentyhq/twenty/pull/10182 * Fix table content missing when navigating to previously browsed page by @charlesBochet in https://github.com/twentyhq/twenty/pull/10188 * feat(workspace): add support for custom domain status toggle by @AMoreaux in https://github.com/twentyhq/twenty/pull/10114 * [settings/security] Prevent toggle if only 1 authentication option by @guillim in https://github.com/twentyhq/twenty/pull/10169 * [REFACTOR][BUG] Dynamically compute field to write in cache CREATE by @prastoin in https://github.com/twentyhq/twenty/pull/10130 * Fix bug with table aggregate footer when switching object by @lucasbordeau in https://github.com/twentyhq/twenty/pull/10198 * Add workflow run visualizer by @Devessier in https://github.com/twentyhq/twenty/pull/10146 * Fix number null value forced to 0 by @lucasbordeau in https://github.com/twentyhq/twenty/pull/10202 * Poc lambda subhosting by @martmull in https://github.com/twentyhq/twenty/pull/10192 * Remove localization feature flag and improve CI workflow by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10208 * Improve i18n ci by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10209 * refactor(server): rename PORT to NODE_PORT by @AMoreaux in https://github.com/twentyhq/twenty/pull/10193 * refactor(ui/settings): update styles and improve structure by @AMoreaux in https://github.com/twentyhq/twenty/pull/10201 * Fix custom exceptions not propagating error code by @Weiko in https://github.com/twentyhq/twenty/pull/10210 * Fix bug visibility table by @charlesBochet in https://github.com/twentyhq/twenty/pull/10214 * refactor(domain-manager): simplify frontend URL configuration by @AMoreaux in https://github.com/twentyhq/twenty/pull/10194 * fix(auth): Invite with public url and social sso. by @AMoreaux in https://github.com/twentyhq/twenty/pull/10216 * 384 update the input of the record show page inside the command menu by @bosiraphael in https://github.com/twentyhq/twenty/pull/10213 * Imrove I18n ci by @FelixMalfait in https://github.com/twentyhq/twenty/pull/10219 * Fix upgrade-0-42 command to migrate RICH_TEXT field metadata to RICH_TEXT_V2 by @charlesBochet in https://github.com/twentyhq/twenty/pull/10218 ## New Contributors * @yhayano-ponotech made their first contribution in https://github.com/twentyhq/twenty/pull/9956 * @github-actions made their first contribution in https://github.com/twentyhq/twenty/pull/10098 * @akakiplimo made their first contribution in https://github.com/twentyhq/twenty/pull/10104 * @titouan13 made their first contribution in https://github.com/twentyhq/twenty/pull/10118 **Full Changelog**: https://github.com/twentyhq/twenty/compare/v0.41.0...v0.42.0