github twentyhq/twenty twenty/v2.57.0

latest releases: twenty/v2.57.1, sdk/v2.57.1
one hour ago

⚠️ Breaking changes

✨ New features

  • feat(cli): pull frontend component source (#29470) by @Weiko
  • feat(getting-started): turn the import step into a drop zone (#29765) by @etiennejouan
  • feat(getting-started): pin the step rail and auto-advance after a completed step (#29774) by @etiennejouan
  • feat(getting-started): fit the sidebar card to Figma and walk the rail in stack order (#29832) by @etiennejouan
  • feat(getting-started): add step previews for import, data model and follow-up (#29858) by @etiennejouan
  • feat(getting-started): show completed steps as a compact card (#29860) by @etiennejouan

💅 Improvements & UX

  • Replace the withdrawn ANG currency with XCG (#28454) by @BOHEUS
  • Fix sent Outlook drafts staying as drafts (#29395) by @neo773
  • Send the reasoning effort to OpenAI-compatible providers (#29472) by @iDhruv03
  • Send private messages between workspace members (#29477) by @bosiraphael
  • Start direct messages from the inbox (#29478) by @bosiraphael
  • Write application grants and backfill them (#29480) by @prastoin
  • Show real record counts in the Data model Records column (#29481) by @khizar925
  • Keep a usable grouping when switching a view's layout to Kanban (#29517) by @mayuriphad
  • Link message attachments through the attachment object (#29577) by @martmull
  • Accept and upload attachments when apps ingest messages (#29578) by @martmull
  • Let applications without a user read and triage inbox channels (#29583) by @bosiraphael
  • Expose cached MCP server tools to AI chat through a tool provider (#29667) by @abdulrahmancodes
  • Refuse new chats that remove Ada when no picked person can reply (#29699) by @bosiraphael
  • Keep field metadata option rows in sync with field options (#29715) by @FelixMalfait
  • Job queue memory (1/3): limit job size (#29724) by @martmull
  • Save assistant mentions with a stable ID (#29727) by @bosiraphael
  • Job queue memory (2/3): per-tenant share of free memory (#29729) by @martmull
  • Use query builders in DM integration tests (#29740) by @bosiraphael
  • Add a workspace AI data policy and stop sending personal data to Sentry (#29752) by @charlesBochet
  • Make the field option value uniqueness a deferred constraint (#29759) by @FelixMalfait
  • Read permissions through PermissionsService and split sharing and role writes (#29770) by @charlesBochet
  • i18n - translations (#29771) by @twenty-pr
  • Gate message attachments behind a feature flag until the upgrade runs (#29773) by @martmull
  • Expose the current view to command menu expressions (#29776) by @FelixMalfait
  • i18n - translations (#29778) by @twenty-pr
  • i18n - docs translations (#29779) by @twenty-pr
  • Upload message attachments without copying the bytes (#29780) by @neo773
  • Narrow assistant props and move preset matching (#29781) by @bosiraphael
  • Email iMIP invitations when the CalDAV server does not schedule (#29782) by @neo773
  • Preview assistant avatar animation in settings (#29783) by @bosiraphael
  • Remove WorkspaceOrmManager from permissions and move ApiKeyRoleService out (#29784) by @charlesBochet
  • Expose workspace assistant profile settings (#29785) by @bosiraphael
  • i18n - translations (#29786) by @twenty-pr
  • Replace PermissionsService with focused read services and an internal folder (#29787) by @charlesBochet
  • Deny record access checks when a role cannot read the id field (#29789) by @charlesBochet
  • i18n - translations (#29792) by @twenty-pr
  • Stop subscriptions, timeline and the 2-43 command importing permission internals (#29793) by @charlesBochet
  • i18n - docs translations (#29794) by @twenty-pr
  • Move WorkspaceRepository permission checks onto RecordPermissionsService (#29795) by @charlesBochet
  • Move view guards to the view module and ViewAccessService to metadata-permissions (#29797) by @charlesBochet
  • Stop exporting PermissionsMetadataMapsService from PermissionsModule (#29798) by @charlesBochet
  • Replace recordsPermissions reads with narrower read restriction questions (#29799) by @charlesBochet
  • Move repository access questions onto the permissions read services (#29800) by @charlesBochet
  • Retry emailing domain verification on check after the provider marks it failed (#29801) by @neo773
  • Retry failed emailing domains in the hourly sweep (#29802) by @neo773
  • Skip code step sources containing NUL in the inline command (#29803) by @charlesBochet
  • Move query errors, filter SQL and the access gate to the right layers (#29804) by @charlesBochet
  • Cover NUL sources in the inline command integration spec (#29808) by @charlesBochet
  • Remove twenty-orm dependencies from permission internals (#29809) by @charlesBochet
  • Add the Privacy settings tab behind the AI data policy flag (#29810) by @charlesBochet
  • Ask SettingPermissionsService about the caller or a named subject (#29811) by @charlesBochet
  • Move every settings check onto SettingPermissionsService questions (#29812) by @charlesBochet
  • Keep ui-documentation.json in sync during version bump (#29813) by @charlesBochet
  • Add RoleAssignmentService as the single door for role assignment (#29814) by @charlesBochet
  • Fold record sharing writes into RecordSharingWriteService (#29815) by @charlesBochet
  • Test record access against a real dedicated workspace (#29816) by @charlesBochet
  • i18n - translations (#29817) by @twenty-pr
  • Store find records sorts only as record sorts (#29819) by @FelixMalfait
  • Let the AI and MCP run a workflow version (#29822) by @FelixMalfait
  • Ignore draft emails in last-contact app (#29823) by @martmull
  • Dissolve RecordAccessDecisionService into the public record permission services (#29824) by @charlesBochet
  • Make fieldsToUpdate an update-record-only setting (#29825) by @FelixMalfait
  • Document validation rules in the user guide (#29830) by @Bonapara
  • i18n - docs translations (#29834) by @twenty-pr
  • Fix settings table footer spacing (#29835) by @Bonapara
  • Refresh illustrations across the documentation (#29836) by @Bonapara
  • Hide the Logs tab when the log console is available (#29837) by @charlesBochet
  • Explain the AI data policy in the legal FAQ (#29838) by @charlesBochet
  • Own the permission test workspace lifecycle in a wrapper (#29839) by @charlesBochet
  • Use the configured assistant name at runtime (#29840) by @bosiraphael
  • i18n - translations (#29842) by @twenty-pr
  • Connect assistant personalization settings (#29843) by @bosiraphael
  • i18n - docs translations (#29844) by @twenty-pr
  • Fix undefined assistantParticipationInput in chat message sender (#29846) by @FelixMalfait
  • Fix undefined assistantParticipationInput in member message sender (#29847) by @bosiraphael
  • i18n - translations (#29850) by @twenty-pr
  • Add executeTransactionInWorkspaceContext to WorkspaceOrmManager (#29851) by @prastoin
  • Save sent email attachments as message attachment files (#29852) by @martmull
  • Refresh message thread widget in real time on new messages (#29853) by @martmull
  • Display attachments in email threads (#29854) by @martmull
  • Add a command to reconcile orphaned job memory charges (#29856) by @martmull
  • i18n - translations (#29859) by @twenty-pr
  • Rename record event permission methods to filter* (#29862) by @charlesBochet
  • SSO integration testing basis (#29864) by @prastoin
  • i18n - docs translations (#29866) by @twenty-pr
  • Show message time at the bottom right of chat bubbles (#29870) by @martmull
  • Apply the remaining record permission renames and split system writes (#29877) by @charlesBochet
  • Rename record operation values and fold repository permissions into RecordPermissionsService (#29878) by @charlesBochet
  • Add canCreate permissions to roles, object permissions and RLS groups (#29881) by @charlesBochet
  • Check the create permission behind a feature flag (#29882) by @charlesBochet
  • i18n - docs translations (#29883) by @twenty-pr
  • Merge the repository permission checks into assertCanRunOperationOrThrow (#29884) by @charlesBochet
  • i18n - translations (#29885) by @twenty-pr
  • Read the create permission where code checks create, and finish the interface cleanup (#29888) by @charlesBochet
  • Run CI on every i18n push with a Twenty PR app commit (#29891) by @charlesBochet
  • Move email thread reply buttons to the record page header (#29893) by @neo773
  • Fix email thread widget spacing and composer border (#29894) by @neo773
  • Skip private record and share conditions behind a feature flag (#29896) by @charlesBochet
  • i18n - translations (#29897) by @twenty-pr
  • Require braces on every if in twenty-front (#29898) by @charlesBochet
  • Require braces on every if in twenty-server (#29899) by @charlesBochet
  • Forbid else after return in twenty-front and twenty-server (#29900) by @charlesBochet
  • Require const where a variable never changes in twenty-front and twenty-server (#29901) by @charlesBochet
  • Use isDefined in 4 files of modules/settings (#29902) by @twenty-pr-author
  • i18n - translations (#29904) by @twenty-pr
  • Remove the Boolean() casts in dataMutations.ts (#29905) by @twenty-pr-author
  • Remove the as any casts in 3 files of modules/object-record (#29906) by @twenty-pr-author
  • Include rule content in the access group hash (#29907) by @charlesBochet
  • i18n - translations (#29908) by @twenty-pr
  • Fill access group ids on records in background batches (#29911) by @charlesBochet
  • Keep record access groups current and list records through them (#29913) by @charlesBochet
  • Remove the as never casts in getWidgetTitle.ts (#29916) by @twenty-pr-author
  • Remove the : any annotations in castToString.ts (#29917) by @twenty-pr-author
  • Remove the type-check suppressions in 3 files of engine/core-modules (#29918) by @twenty-pr-author
  • Remove the as unknown as casts in 3 files of engine/permissions (#29919) by @twenty-pr-author
  • Mask fields an RLS rule makes unreadable on the records it matches (#29920) by @charlesBochet
  • Rename 8 server files to the singular suffix in src/engine/core-modules/file/utils (#29921) by @twenty-pr-author
  • Use isDefined in 3 files of modules/navigation-menu-item (#29922) by @twenty-pr-author
  • Remove the Boolean() casts in 3 files of modules/workflow (#29923) by @twenty-pr-author
  • Remove the as any casts in ValidationStep.tsx (#29924) by @twenty-pr-author
  • Rename 8 server files to the singular suffix in src/engine/metadata-modules/ai/ai-models/constants (#29930) by @twenty-pr-author
  • Use isDefined in 3 files of engine/core-modules (#29931) by @twenty-pr-author
  • Remove the Boolean() casts in 3 files of engine/core-modules (#29932) by @twenty-pr-author
  • i18n - translations (#29933) by @twenty-pr
  • i18n - translations (#29934) by @twenty-pr
  • i18n - translations (#29935) by @twenty-pr
  • Add SSO identity provider management integration tests (#29936) by @prastoin
  • Add successful SSO login integration tests (#29937) by @prastoin
  • i18n - translations (#29938) by @twenty-pr
  • Add failing SSO login integration tests (#29939) by @prastoin
  • i18n - translations (#29940) by @twenty-pr
  • Add SSO login tests for existing users at the edge of membership (#29942) by @prastoin
  • Reject app agents using roles the app does not own ( except custom app ofc ) (#29943) by @prastoin
  • i18n - translations (#29945) by @twenty-pr
  • Stop restoring node_modules under the booting worker in app install CI (#29946) by @charlesBochet
  • i18n - translations (#29948) by @twenty-pr
  • Replace restrictedFields with unreadableFields and uneditableFields (#29949) by @charlesBochet
  • Fix assistant settings swallowing clicks and showing the default name (#29951) by @charlesBochet
  • i18n - translations (#29952) by @twenty-pr
  • Fix server typecheck on main for application grant field permissions (#29954) by @charlesBochet
  • i18n - translations (#29955) by @twenty-pr
  • Remove the as any casts in isCompositeFilterableFieldType.ts (#29958) by @twenty-pr-author
  • Remove the comparisons to true and false in 8 files of engine/metadata-modules (#29959) by @twenty-pr-author
  • Remove the as never casts in event-log-ingestion.module.ts (#29960) by @twenty-pr-author
  • Add successful SSO sign-up integration tests (#29962) by @prastoin
  • i18n - translations (#29967) by @twenty-pr
  • Export Redis job memory of the top group keys as a gauge (#29968) by @martmull
  • Fall back to restrictedFields for permissions persisted by an older bundle (#29970) by @charlesBochet
  • i18n - translations (#29972) by @twenty-pr

🐛 Bug fixes

  • fix(server): report unknown names in learn_tools under notFound (#29193) by @jserpapinto
  • fix(timeline): prevent diff value hard-truncation and enable tooltip on long field values (#28834) (#29198) by @ghazy2001
  • fix(workflow): describe both day of month and day of week in cron descriptions (#29261) by @sriramadari
  • fix(auth): prevent infinite loader on sign-in page when public workspace data is available (#29254) (#29316) by @ghazy2001
  • fix(twenty-sdk): prevent infinite re-renders in useFrontComponentExecutionContext for object selectors (#29032) (#29349) by @apoorv-xs
  • fix(fields-widget): hide No Access fields on the record page (#29402) by @Kulraj69
  • fix(docs): localize section root links without trailing slashes (#28858) (#29417) by @Bhumit267
  • fix(getting-started): remove the goal pill and align the sidebar card header (#29769) by @etiennejouan
  • fix(billing): keep the partner code through email verification (#29831) by @etiennejouan
  • fix(cli): explain stdin input for misplaced API keys (#29969) by @Weiko
  • fix(getting-started): save the step list on the first read (#29971) by @etiennejouan

🔧 Developer & API

  • Drop unreadable fields from webhook payloads (#29150) by @charlesBochet
  • Lead Extra Smart with Claude Opus 5.5 on dev, staging and self-host (#29639) by @twenty-pr-author
  • Remove the as unknown as casts in 6 files of engine/api (#29929) by @twenty-pr-author
  • Build the Twenty CLI before starting the worker in app install CI (#29947) by @charlesBochet
  • Remove the : any annotations in 8 files of engine/api (#29961) by @twenty-pr-author

🎉 New contributors

Full changelog (175 PRs)
  • Replace the withdrawn ANG currency with XCG (#28454) by @BOHEUS
  • Drop unreadable fields from webhook payloads (#29150) by @charlesBochet
  • fix(server): report unknown names in learn_tools under notFound (#29193) by @jserpapinto
  • fix(timeline): prevent diff value hard-truncation and enable tooltip on long field values (#28834) (#29198) by @ghazy2001
  • fix(workflow): describe both day of month and day of week in cron descriptions (#29261) by @sriramadari
  • fix(auth): prevent infinite loader on sign-in page when public workspace data is available (#29254) (#29316) by @ghazy2001
  • fix(twenty-sdk): prevent infinite re-renders in useFrontComponentExecutionContext for object selectors (#29032) (#29349) by @apoorv-xs
  • Fix sent Outlook drafts staying as drafts (#29395) by @neo773
  • fix(fields-widget): hide No Access fields on the record page (#29402) by @Kulraj69
  • fix(docs): localize section root links without trailing slashes (#28858) (#29417) by @Bhumit267
  • feat(cli): pull frontend component source (#29470) by @Weiko
  • Send the reasoning effort to OpenAI-compatible providers (#29472) by @iDhruv03
  • Send private messages between workspace members (#29477) by @bosiraphael
  • Start direct messages from the inbox (#29478) by @bosiraphael
  • Write application grants and backfill them (#29480) by @prastoin
  • Show real record counts in the Data model Records column (#29481) by @khizar925
  • Keep a usable grouping when switching a view's layout to Kanban (#29517) by @mayuriphad
  • Link message attachments through the attachment object (#29577) by @martmull
  • Accept and upload attachments when apps ingest messages (#29578) by @martmull
  • Let applications without a user read and triage inbox channels (#29583) by @bosiraphael
  • Lead Extra Smart with Claude Opus 5.5 on dev, staging and self-host (#29639) by @twenty-pr-author
  • Expose cached MCP server tools to AI chat through a tool provider (#29667) by @abdulrahmancodes
  • Refuse new chats that remove Ada when no picked person can reply (#29699) by @bosiraphael
  • Keep field metadata option rows in sync with field options (#29715) by @FelixMalfait
  • Job queue memory (1/3): limit job size (#29724) by @martmull
  • Save assistant mentions with a stable ID (#29727) by @bosiraphael
  • Job queue memory (2/3): per-tenant share of free memory (#29729) by @martmull
  • Use query builders in DM integration tests (#29740) by @bosiraphael
  • Add a workspace AI data policy and stop sending personal data to Sentry (#29752) by @charlesBochet
  • Make the field option value uniqueness a deferred constraint (#29759) by @FelixMalfait
  • feat(getting-started): turn the import step into a drop zone (#29765) by @etiennejouan
  • chore(security): bump @modelcontextprotocol/sdk to 1.32.2 (#29768) by @mabdullahabaid
  • fix(getting-started): remove the goal pill and align the sidebar card header (#29769) by @etiennejouan
  • Read permissions through PermissionsService and split sharing and role writes (#29770) by @charlesBochet
  • i18n - translations (#29771) by @twenty-pr
  • Gate message attachments behind a feature flag until the upgrade runs (#29773) by @martmull
  • feat(getting-started): pin the step rail and auto-advance after a completed step (#29774) by @etiennejouan
  • chore(security): bump lodash.omit to 4.18.0 (#29775) by @mabdullahabaid
  • Expose the current view to command menu expressions (#29776) by @FelixMalfait
  • chore: bump version to 2.57.0 (#29777) by @twenty-pr
  • i18n - translations (#29778) by @twenty-pr
  • i18n - docs translations (#29779) by @twenty-pr
  • Upload message attachments without copying the bytes (#29780) by @neo773
  • Narrow assistant props and move preset matching (#29781) by @bosiraphael
  • Email iMIP invitations when the CalDAV server does not schedule (#29782) by @neo773
  • Preview assistant avatar animation in settings (#29783) by @bosiraphael
  • Remove WorkspaceOrmManager from permissions and move ApiKeyRoleService out (#29784) by @charlesBochet
  • Expose workspace assistant profile settings (#29785) by @bosiraphael
  • i18n - translations (#29786) by @twenty-pr
  • Replace PermissionsService with focused read services and an internal folder (#29787) by @charlesBochet
  • Deny record access checks when a role cannot read the id field (#29789) by @charlesBochet
  • i18n - translations (#29792) by @twenty-pr
  • Stop subscriptions, timeline and the 2-43 command importing permission internals (#29793) by @charlesBochet
  • i18n - docs translations (#29794) by @twenty-pr
  • Move WorkspaceRepository permission checks onto RecordPermissionsService (#29795) by @charlesBochet
  • Move view guards to the view module and ViewAccessService to metadata-permissions (#29797) by @charlesBochet
  • Stop exporting PermissionsMetadataMapsService from PermissionsModule (#29798) by @charlesBochet
  • Replace recordsPermissions reads with narrower read restriction questions (#29799) by @charlesBochet
  • Move repository access questions onto the permissions read services (#29800) by @charlesBochet
  • Retry emailing domain verification on check after the provider marks it failed (#29801) by @neo773
  • Retry failed emailing domains in the hourly sweep (#29802) by @neo773
  • Skip code step sources containing NUL in the inline command (#29803) by @charlesBochet
  • Move query errors, filter SQL and the access gate to the right layers (#29804) by @charlesBochet
  • Cover NUL sources in the inline command integration spec (#29808) by @charlesBochet
  • Remove twenty-orm dependencies from permission internals (#29809) by @charlesBochet
  • Add the Privacy settings tab behind the AI data policy flag (#29810) by @charlesBochet
  • Ask SettingPermissionsService about the caller or a named subject (#29811) by @charlesBochet
  • Move every settings check onto SettingPermissionsService questions (#29812) by @charlesBochet
  • Keep ui-documentation.json in sync during version bump (#29813) by @charlesBochet
  • Add RoleAssignmentService as the single door for role assignment (#29814) by @charlesBochet
  • Fold record sharing writes into RecordSharingWriteService (#29815) by @charlesBochet
  • Test record access against a real dedicated workspace (#29816) by @charlesBochet
  • i18n - translations (#29817) by @twenty-pr
  • Store find records sorts only as record sorts (#29819) by @FelixMalfait
  • Let the AI and MCP run a workflow version (#29822) by @FelixMalfait
  • Ignore draft emails in last-contact app (#29823) by @martmull
  • Dissolve RecordAccessDecisionService into the public record permission services (#29824) by @charlesBochet
  • Make fieldsToUpdate an update-record-only setting (#29825) by @FelixMalfait
  • Document validation rules in the user guide (#29830) by @Bonapara
  • fix(billing): keep the partner code through email verification (#29831) by @etiennejouan
  • feat(getting-started): fit the sidebar card to Figma and walk the rail in stack order (#29832) by @etiennejouan
  • i18n - docs translations (#29834) by @twenty-pr
  • Fix settings table footer spacing (#29835) by @Bonapara
  • Refresh illustrations across the documentation (#29836) by @Bonapara
  • Hide the Logs tab when the log console is available (#29837) by @charlesBochet
  • Explain the AI data policy in the legal FAQ (#29838) by @charlesBochet
  • Own the permission test workspace lifecycle in a wrapper (#29839) by @charlesBochet
  • Use the configured assistant name at runtime (#29840) by @bosiraphael
  • i18n - translations (#29842) by @twenty-pr
  • Connect assistant personalization settings (#29843) by @bosiraphael
  • i18n - docs translations (#29844) by @twenty-pr
  • Fix undefined assistantParticipationInput in chat message sender (#29846) by @FelixMalfait
  • Fix undefined assistantParticipationInput in member message sender (#29847) by @bosiraphael
  • i18n - translations (#29850) by @twenty-pr
  • Add executeTransactionInWorkspaceContext to WorkspaceOrmManager (#29851) by @prastoin
  • Save sent email attachments as message attachment files (#29852) by @martmull
  • Refresh message thread widget in real time on new messages (#29853) by @martmull
  • Display attachments in email threads (#29854) by @martmull
  • Add a command to reconcile orphaned job memory charges (#29856) by @martmull
  • feat(getting-started): add step previews for import, data model and follow-up (#29858) by @etiennejouan
  • i18n - translations (#29859) by @twenty-pr
  • feat(getting-started): show completed steps as a compact card (#29860) by @etiennejouan
  • Rename record event permission methods to filter* (#29862) by @charlesBochet
  • SSO integration testing basis (#29864) by @prastoin
  • i18n - docs translations (#29866) by @twenty-pr
  • Show message time at the bottom right of chat bubbles (#29870) by @martmull
  • Apply the remaining record permission renames and split system writes (#29877) by @charlesBochet
  • Rename record operation values and fold repository permissions into RecordPermissionsService (#29878) by @charlesBochet
  • Add canCreate permissions to roles, object permissions and RLS groups (#29881) by @charlesBochet
  • Check the create permission behind a feature flag (#29882) by @charlesBochet
  • i18n - docs translations (#29883) by @twenty-pr
  • Merge the repository permission checks into assertCanRunOperationOrThrow (#29884) by @charlesBochet
  • i18n - translations (#29885) by @twenty-pr
  • Read the create permission where code checks create, and finish the interface cleanup (#29888) by @charlesBochet
  • Keep access group rows up to date behind a feature flag (#29890) by @charlesBochet
  • Run CI on every i18n push with a Twenty PR app commit (#29891) by @charlesBochet
  • Move email thread reply buttons to the record page header (#29893) by @neo773
  • Fix email thread widget spacing and composer border (#29894) by @neo773
  • Skip private record and share conditions behind a feature flag (#29896) by @charlesBochet
  • i18n - translations (#29897) by @twenty-pr
  • Require braces on every if in twenty-front (#29898) by @charlesBochet
  • Require braces on every if in twenty-server (#29899) by @charlesBochet
  • Forbid else after return in twenty-front and twenty-server (#29900) by @charlesBochet
  • Require const where a variable never changes in twenty-front and twenty-server (#29901) by @charlesBochet
  • Use isDefined in 4 files of modules/settings (#29902) by @twenty-pr-author
  • i18n - translations (#29904) by @twenty-pr
  • Remove the Boolean() casts in dataMutations.ts (#29905) by @twenty-pr-author
  • Remove the as any casts in 3 files of modules/object-record (#29906) by @twenty-pr-author
  • Include rule content in the access group hash (#29907) by @charlesBochet
  • i18n - translations (#29908) by @twenty-pr
  • Fill access group ids on records in background batches (#29911) by @charlesBochet
  • Keep record access groups current and list records through them (#29913) by @charlesBochet
  • Remove the as never casts in getWidgetTitle.ts (#29916) by @twenty-pr-author
  • Remove the : any annotations in castToString.ts (#29917) by @twenty-pr-author
  • Remove the type-check suppressions in 3 files of engine/core-modules (#29918) by @twenty-pr-author
  • Remove the as unknown as casts in 3 files of engine/permissions (#29919) by @twenty-pr-author
  • Mask fields an RLS rule makes unreadable on the records it matches (#29920) by @charlesBochet
  • Rename 8 server files to the singular suffix in src/engine/core-modules/file/utils (#29921) by @twenty-pr-author
  • Use isDefined in 3 files of modules/navigation-menu-item (#29922) by @twenty-pr-author
  • Remove the Boolean() casts in 3 files of modules/workflow (#29923) by @twenty-pr-author
  • Remove the as any casts in ValidationStep.tsx (#29924) by @twenty-pr-author
  • Remove the as unknown as casts in 6 files of engine/api (#29929) by @twenty-pr-author
  • Rename 8 server files to the singular suffix in src/engine/metadata-modules/ai/ai-models/constants (#29930) by @twenty-pr-author
  • Use isDefined in 3 files of engine/core-modules (#29931) by @twenty-pr-author
  • Remove the Boolean() casts in 3 files of engine/core-modules (#29932) by @twenty-pr-author
  • i18n - translations (#29933) by @twenty-pr
  • i18n - translations (#29934) by @twenty-pr
  • i18n - translations (#29935) by @twenty-pr
  • Add SSO identity provider management integration tests (#29936) by @prastoin
  • Add successful SSO login integration tests (#29937) by @prastoin
  • i18n - translations (#29938) by @twenty-pr
  • Add failing SSO login integration tests (#29939) by @prastoin
  • i18n - translations (#29940) by @twenty-pr
  • Add SSO login tests for existing users at the edge of membership (#29942) by @prastoin
  • Reject app agents using roles the app does not own ( except custom app ofc ) (#29943) by @prastoin
  • i18n - translations (#29945) by @twenty-pr
  • Stop restoring node_modules under the booting worker in app install CI (#29946) by @charlesBochet
  • Build the Twenty CLI before starting the worker in app install CI (#29947) by @charlesBochet
  • i18n - translations (#29948) by @twenty-pr
  • Replace restrictedFields with unreadableFields and uneditableFields (#29949) by @charlesBochet
  • Fix assistant settings swallowing clicks and showing the default name (#29951) by @charlesBochet
  • i18n - translations (#29952) by @twenty-pr
  • Fix server typecheck on main for application grant field permissions (#29954) by @charlesBochet
  • i18n - translations (#29955) by @twenty-pr
  • Remove the as any casts in isCompositeFilterableFieldType.ts (#29958) by @twenty-pr-author
  • Remove the comparisons to true and false in 8 files of engine/metadata-modules (#29959) by @twenty-pr-author
  • Remove the as never casts in event-log-ingestion.module.ts (#29960) by @twenty-pr-author
  • Remove the : any annotations in 8 files of engine/api (#29961) by @twenty-pr-author
  • Add successful SSO sign-up integration tests (#29962) by @prastoin
  • i18n - translations (#29967) by @twenty-pr
  • Export Redis job memory of the top group keys as a gauge (#29968) by @martmull
  • fix(cli): explain stdin input for misplaced API keys (#29969) by @Weiko
  • Fall back to restrictedFields for permissions persisted by an older bundle (#29970) by @charlesBochet
  • fix(getting-started): save the step list on the first read (#29971) by @etiennejouan
  • i18n - translations (#29972) by @twenty-pr

Full Changelog: twenty/v2.56.1...twenty/v2.57.0

Don't miss a new twenty release

NewReleases is sending notifications on new releases.