⚠️ Breaking changes
- chore(security): bump @modelcontextprotocol/sdk to 1.32.2 (#29768) by @mabdullahabaid
- chore(security): bump lodash.omit to 4.18.0 (#29775) by @mabdullahabaid
- Keep access group rows up to date behind a feature flag (#29890) by @charlesBochet
✨ 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
isDefinedin 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 anycasts 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 nevercasts in getWidgetTitle.ts (#29916) by @twenty-pr-author - Remove the
: anyannotations 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 ascasts 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
isDefinedin 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 anycasts 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
isDefinedin 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 anycasts in isCompositeFilterableFieldType.ts (#29958) by @twenty-pr-author - Remove the comparisons to
trueandfalsein 8 files of engine/metadata-modules (#29959) by @twenty-pr-author - Remove the
as nevercasts 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 ascasts 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
: anyannotations in 8 files of engine/api (#29961) by @twenty-pr-author
🎉 New contributors
- @iDhruv03 made their first contribution in #29472
- @Bhumit267 made their first contribution in #29417
- @mayuriphad made their first contribution in #29517
- @khizar925 made their first contribution in #29481
- @jserpapinto made their first contribution in #29193
- @Kulraj69 made their first contribution in #29402
- @sriramadari made their first contribution in #29261
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
isDefinedin 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 anycasts 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 nevercasts in getWidgetTitle.ts (#29916) by @twenty-pr-author - Remove the
: anyannotations 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 ascasts 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
isDefinedin 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 anycasts in ValidationStep.tsx (#29924) by @twenty-pr-author - Remove the
as unknown ascasts 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
isDefinedin 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 anycasts in isCompositeFilterableFieldType.ts (#29958) by @twenty-pr-author - Remove the comparisons to
trueandfalsein 8 files of engine/metadata-modules (#29959) by @twenty-pr-author - Remove the
as nevercasts in event-log-ingestion.module.ts (#29960) by @twenty-pr-author - Remove the
: anyannotations 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