github twentyhq/twenty twenty/v2.58.0

latest release: sdk/v2.58.0
53 minutes ago

⚠️ Breaking changes

✨ New features

  • feat(getting-started): show Keep Twenty in the sidebar card and drop the trial days bar (#30056) by @etiennejouan
  • feat(getting-started): add a Next button to the step header (#30065) by @etiennejouan
  • feat(getting-started): replace snooze options with a single snooze until tomorrow (#30084) by @etiennejouan

💅 Improvements & UX

  • Agents design fixes (#29288) by @Bonapara
  • Remove the legacy CODE step logic-function path (2.57) (#29620) by @FelixMalfait
  • Show the workspace and app logo when connecting OAuth apps (#29640) by @Bonapara
  • Add an MCP tool workflow step backed by the cached server tools (#29668) by @abdulrahmancodes
  • Notify members mentioned in app and workflow inbox messages (#29675) by @bosiraphael
  • Let logic functions call the server through a private URL (#29687) by @prastoin
  • Fix retried first send of a new inbox chat (#29688) by @bosiraphael
  • Let validation rules read a record's previous values (#29718) by @FelixMalfait
  • Add self-service two-factor authentication backup codes (#29833) by @abdulrahmancodes
  • Show grouped table and list views as tabs, behind a feature flag (#29855) by @FelixMalfait
  • Add DESIGN.md with Twenty's product UI rules (#29861) by @Bonapara
  • Complete assistant identity presentation (#29863) by @bosiraphael
  • Import email attachments as remote files streamed from the provider (#29941) by @neo773
  • Evaluate RLS rules through a relation (#29953) by @charlesBochet
  • Keep blank lines and br tags when converting markdown to rich text (#29956) by @BOHEUS
  • Let messaging providers declare a chat or email conversation style (#29963) by @martmull
  • Run applications with their grant (#29965) by @prastoin
  • Validate HTTP tool requests and log their caller and outcome (#29978) by @prastoin
  • Let a member session follow and stop its own ai.generate runs (#29981) by @FelixMalfait
  • Let applications archive the inbox threads they wrote (#29982) by @FelixMalfait
  • Batch attach_conversation_to_record into attach_conversation_to_records (#29984) by @FelixMalfait
  • Run HTTP requests through the logic function driver (#29996) by @prastoin
  • Reject SAML certificates followed by more data (#29999) by @prastoin
  • i18n - translations (#30000) by @twenty-pr
  • Send email-style replies through app messaging providers (#30002) by @martmull
  • Reject replayed SAML assertions (#30004) by @prastoin
  • i18n - translations (#30005) by @twenty-pr
  • Split permission reads and access group computation (#30007) by @charlesBochet
  • Add jobConfig to core workflows and logic functions (#30009) by @martmull
  • Pace workflow and logic function jobs by their jobConfig limiter (#30011) by @martmull
  • LinkedIn app: set missing person avatars from LinkedIn profile pictures (#30012) by @martmull
  • Validate component drafts before requesting publication approval (#30013) by @Weiko
  • i18n - docs translations (#30014) by @twenty-pr
  • Freeze legacy workflow references in released upgrade commands (#30015) by @charlesBochet
  • i18n - translations (#30017) by @twenty-pr
  • Attribute code-step usage to the same workflow id as step billing (#30018) by @charlesBochet
  • Key the legacy workflow object guards on frozen identifiers (#30019) by @charlesBochet
  • Add logo to connection provider (#30022) by @martmull
  • Cover limiter pacing with an integration test on real Redis (#30023) by @martmull
  • i18n - translations (#30026) by @twenty-pr
  • i18n - docs translations (#30028) by @twenty-pr
  • Fix chat thread flash after sending a message (#30029) by @martmull
  • Store LinkedIn message attachments in Twenty (#30031) by @martmull
  • Refresh a message thread when files are attached to its messages (#30032) by @martmull
  • Layer the permissions internal folders (#30033) by @charlesBochet
  • Stop reading and writing the legacy workflow link on runs and versions (#30034) by @charlesBochet
  • Compile RLS rules from role permissions (#30035) by @charlesBochet
  • Add core workflow metadata ahead of dropping the legacy workflow object (#30037) by @charlesBochet
  • Compile the RLS filter once and split field access (#30038) by @charlesBochet
  • Lay out workflow diagrams automatically until a user places a node (#30039) by @FelixMalfait
  • Remove the type-check suppressions in 2 files of modules/workflow (#30040) by @twenty-pr-author
  • Remove the as unknown as casts in 3 files of modules/ai (#30041) by @twenty-pr-author
  • Rename 12 server files to the singular suffix in src/engine/metadata-modules/ai/ai-agent-execution/constants (#30042) by @twenty-pr-author
  • Show recent run health on the workflows index (#30043) by @FelixMalfait
  • Use isDefined in captchaRefreshLink.ts (#30044) by @twenty-pr-author
  • Add Overview and Runs tabs to the workflow page (#30045) by @FelixMalfait
  • Stop using the legacy workflow object in the front (#30046) by @charlesBochet
  • i18n - translations (#30047) by @twenty-pr
  • LinkedIn: sync the profile picture of the account owner's person (#30048) by @martmull
  • i18n - translations (#30050) by @twenty-pr
  • Give callers the global record permission answer (#30051) by @charlesBochet
  • i18n - translations (#30052) by @twenty-pr
  • i18n - translations (#30055) by @twenty-pr
  • Test that an OIDC login only completes in the browser that started it (#30058) by @prastoin
  • Remove SAML strategy unit cases covered by the SSO integration tests (#30059) by @prastoin
  • Show other objects in a relation preview tooltip (#30060) by @Bonapara
  • Give reads and writes their own records access condition (#30061) by @charlesBochet
  • i18n - docs translations (#30062) by @twenty-pr
  • Save chat turns when the model sends malformed tool arguments (#30066) by @neo773
  • i18n - translations (#30067) by @twenty-pr
  • Stop the validation rule lifecycle test from deactivating a seeded company field (#30073) by @charlesBochet
  • Ignore RLS on limiting roles and rename the runtime limiting role (#30074) by @charlesBochet
  • Stop patching the global console in the local logic function driver (#30077) by @charlesBochet
  • i18n - translations (#30079) by @twenty-pr
  • Show labels and following in the AI chat details (#30080) by @martmull
  • Show who is typing in the AI chat (#30081) by @martmull
  • Play Messages voice notes with a compact player (#30082) by @martmull
  • i18n - translations (#30085) by @twenty-pr
  • Add sync toggles for email and calendar channels (#30087) by @BOHEUS
  • Show a disabled checkbox for built-in agents in the Agents list (#30090) by @Bonapara
  • Refuse activating a workflow whose loop never returns to its iterator (#30092) by @prastoin
  • i18n - translations (#30094) by @twenty-pr
  • Add attachments and the new-message view to Messages (#30095) by @martmull
  • i18n - docs translations (#30097) by @twenty-pr
  • i18n - translations (#30098) by @twenty-pr
  • Show reactions and their counts in the Messages reader (#30099) by @martmull
  • Show the time in outgoing Messages bubbles (#30102) by @martmull
  • Show a receipt in outgoing Messages bubbles (#30103) by @martmull
  • i18n - translations (#30106) by @twenty-pr
  • i18n - translations (#30108) by @twenty-pr
  • Add the row level permission rule syncable entity (#30111) by @charlesBochet
  • i18n - docs translations (#30114) by @twenty-pr
  • Add date functions to rule expressions and read database events as conditions (#30115) by @FelixMalfait
  • Match database-event triggers through one shared matcher with conditions (#30116) by @FelixMalfait
  • Link row level permission predicates, groups and field permissions to rules (#30117) by @charlesBochet
  • i18n - translations (#30124) by @twenty-pr
  • Align chat conversation and approval cards with Figma (#30125) by @Bonapara
  • Declare record event triggers as eventTriggerSettings with on: 'recordEvent' (#30126) by @FelixMalfait
  • i18n - translations (#30129) by @twenty-pr
  • Refuse deleting a field still used by a row-level permission rule (#30130) by @charlesBochet
  • Build twenty-shared with one output file per source module (#30131) by @charlesBochet
  • Save role settings on row level permission rules (#30133) by @charlesBochet
  • i18n - translations (#30136) by @twenty-pr
  • Align AI chat composer spacing with Figma (#30138) by @martmull
  • Grant known record ids through related record paths (#30140) by @charlesBochet
  • i18n - translations (#30142) by @twenty-pr
  • Let a full access record share grant delete operations (#30146) by @charlesBochet
  • Deliver events of records reached through related record paths (#30148) by @charlesBochet
  • i18n - translations (#30149) by @twenty-pr
  • Note the paid Slack plan needed for the Slack app's AI agent (#30150) by @abdulrahmancodes
  • Remove the Boolean() casts in 4 files of modules/object-record (#30154) by @twenty-pr-author
  • Remove the comparisons to true and false in 8 files of modules/object-record (#30155) by @twenty-pr-author
  • Remove the : any annotations in 9 files of engine/core-modules (#30157) by @twenty-pr-author
  • Remove the type-check suppressions in compute-system-record-page-layout-to-create.util.ts (#30158) by @twenty-pr-author
  • Bump Playwright to 1.65 to support Ubuntu 26.04 runners (#30167) by @charlesBochet
  • Ignore row level permissions persisted before 2.58 (#30168) by @charlesBochet
  • Space paragraphs inside README blockquotes on app pages (#30171) by @abdulrahmancodes
  • i18n - translations (#30172) by @twenty-pr
  • i18n - translations (#30179) by @twenty-pr
  • i18n - translations (#30180) by @twenty-pr
  • Let the workflow Overview scope its bar chart like other chart callers (#30181) by @FelixMalfait
  • i18n - docs translations (#30184) by @twenty-pr
  • Redirect the bare front domain to the default domain and stop the not-found redirect loop (#30185) by @charlesBochet
  • Let record shares and private record creators grant on their own (#30187) by @charlesBochet
  • Add stopGenerate to stop a followed ai.generate run (#30190) by @FelixMalfait
  • Resolve the custom application of a soft-deleted workspace (#30191) by @prastoin
  • Application can only CUD their owned roles (#30192) by @prastoin
  • Give private records their own service and repository (#30193) by @charlesBochet
  • i18n - translations (#30194) by @twenty-pr
  • Let the permission engine create the record share and access group tables behind a flag (#30195) by @charlesBochet
  • i18n - docs translations (#30199) by @twenty-pr
  • Store the access groups records inherit through related record paths (#30201) by @charlesBochet
  • Let a private record's creator reach it without a role grant and tidy permission sources (#30202) by @charlesBochet
  • Follow related record paths in record listings through access groups (#30206) by @charlesBochet
  • Follow related record paths through shares, creators and writes (#30207) by @charlesBochet
  • i18n - translations (#30208) by @twenty-pr
  • i18n - translations (#30210) by @twenty-pr
  • i18n - translations (#30211) by @twenty-pr
  • Bump stream-json to 3.8.0 (#30213) by @BOHEUS
  • i18n - translations (#30214) by @twenty-pr
  • Link records and frame the request for the Teams assistant (#30215) by @abdulrahmancodes
  • Tell Teams members why the assistant could not answer (#30216) by @abdulrahmancodes
  • Answer a bare mention of the Teams assistant with a hint (#30217) by @abdulrahmancodes
  • Keep Teams assistant answers within the message size limit (#30218) by @abdulrahmancodes
  • Remove the as any casts in StepBar.tsx (#30219) by @twenty-pr-author
  • Remove the as never casts in resolve-effective-universal-flat-entity.util.ts (#30220) by @twenty-pr-author
  • Serve a merged twenty-shared build to dev servers instead of pre-bundling it (#30224) by @FelixMalfait
  • Fix a listing table scan with shared path sources and a rule matching all on an empty member list (#30225) by @charlesBochet
  • Retry hovers in the gallery tooltip tests until the tooltip opens (#30226) by @FelixMalfait
  • Bump Node to 26.13.1 (#30229) by @prastoin
  • i18n - translations (#30236) by @twenty-pr

🐛 Bug fixes

  • fix(getting-started): stop the page from scrolling and hide the trial snooze once paid (#30006) by @etiennejouan
  • fix(ai): stop the assistant from introducing itself by name (#30010) by @etiennejouan
  • fix(getting-started): stop counting SSO sign-in accounts as mailboxes (#30021) by @etiennejouan
  • fix(getting-started): keep completed steps in the step sequence (#30053) by @etiennejouan
  • fix(getting-started): slide stack cards between depths when the step changes (#30054) by @etiennejouan
  • fix(cli): keep workflow code steps out of definition discovery (#30088) by @Weiko
  • fix(getting-started): fit the book a call step on short screens (#30100) by @etiennejouan
  • fix(inbox): stop the assistant pending indicators from flickering (#30112) by @etiennejouan
  • fix(inbox): keep reopened chats open, show a text cursor in the composer and the circled Done icon (#30123) by @etiennejouan

🔧 Developer & API

  • Fix SDK metadata client index for senderApplicationId (#30001) by @charlesBochet
  • Fix order-dependent integration tests and stale SDK metadata client (#30068) by @charlesBochet
  • Export workflow filter enums from the SDK and report unconfigured widgets (#30118) by @FelixMalfait
  • Bump @aws-sdk/xml-builder to drop vulnerable fast-xml-parser (#30212) by @BOHEUS
  • Rename 3 server files to the singular suffix in src/engine/core-modules/open-api/utils (#30222) by @twenty-pr-author
🏗️ Internal changes (1)
  • docs(skills): document activity target objects in workflow-building skill (#30020) by @ijreilly
Full changelog (173 PRs)
  • Agents design fixes (#29288) by @Bonapara
  • Remove the legacy CODE step logic-function path (2.57) (#29620) by @FelixMalfait
  • Show the workspace and app logo when connecting OAuth apps (#29640) by @Bonapara
  • Add an MCP tool workflow step backed by the cached server tools (#29668) by @abdulrahmancodes
  • Notify members mentioned in app and workflow inbox messages (#29675) by @bosiraphael
  • Let logic functions call the server through a private URL (#29687) by @prastoin
  • Fix retried first send of a new inbox chat (#29688) by @bosiraphael
  • Let validation rules read a record's previous values (#29718) by @FelixMalfait
  • Add self-service two-factor authentication backup codes (#29833) by @abdulrahmancodes
  • Show grouped table and list views as tabs, behind a feature flag (#29855) by @FelixMalfait
  • Add DESIGN.md with Twenty's product UI rules (#29861) by @Bonapara
  • Complete assistant identity presentation (#29863) by @bosiraphael
  • Import email attachments as remote files streamed from the provider (#29941) by @neo773
  • Evaluate RLS rules through a relation (#29953) by @charlesBochet
  • Keep blank lines and br tags when converting markdown to rich text (#29956) by @BOHEUS
  • Let messaging providers declare a chat or email conversation style (#29963) by @martmull
  • Run applications with their grant (#29965) by @prastoin
  • Validate HTTP tool requests and log their caller and outcome (#29978) by @prastoin
  • Let a member session follow and stop its own ai.generate runs (#29981) by @FelixMalfait
  • Let applications archive the inbox threads they wrote (#29982) by @FelixMalfait
  • Batch attach_conversation_to_record into attach_conversation_to_records (#29984) by @FelixMalfait
  • Run HTTP requests through the logic function driver (#29996) by @prastoin
  • Reject SAML certificates followed by more data (#29999) by @prastoin
  • i18n - translations (#30000) by @twenty-pr
  • Fix SDK metadata client index for senderApplicationId (#30001) by @charlesBochet
  • Send email-style replies through app messaging providers (#30002) by @martmull
  • Reject replayed SAML assertions (#30004) by @prastoin
  • i18n - translations (#30005) by @twenty-pr
  • fix(getting-started): stop the page from scrolling and hide the trial snooze once paid (#30006) by @etiennejouan
  • Split permission reads and access group computation (#30007) by @charlesBochet
  • Add jobConfig to core workflows and logic functions (#30009) by @martmull
  • fix(ai): stop the assistant from introducing itself by name (#30010) by @etiennejouan
  • Pace workflow and logic function jobs by their jobConfig limiter (#30011) by @martmull
  • LinkedIn app: set missing person avatars from LinkedIn profile pictures (#30012) by @martmull
  • Validate component drafts before requesting publication approval (#30013) by @Weiko
  • i18n - docs translations (#30014) by @twenty-pr
  • Freeze legacy workflow references in released upgrade commands (#30015) by @charlesBochet
  • i18n - translations (#30017) by @twenty-pr
  • Attribute code-step usage to the same workflow id as step billing (#30018) by @charlesBochet
  • Key the legacy workflow object guards on frozen identifiers (#30019) by @charlesBochet
  • docs(skills): document activity target objects in workflow-building skill (#30020) by @ijreilly
  • fix(getting-started): stop counting SSO sign-in accounts as mailboxes (#30021) by @etiennejouan
  • Add logo to connection provider (#30022) by @martmull
  • Cover limiter pacing with an integration test on real Redis (#30023) by @martmull
  • i18n - translations (#30026) by @twenty-pr
  • i18n - docs translations (#30028) by @twenty-pr
  • Fix chat thread flash after sending a message (#30029) by @martmull
  • Store LinkedIn message attachments in Twenty (#30031) by @martmull
  • Refresh a message thread when files are attached to its messages (#30032) by @martmull
  • Layer the permissions internal folders (#30033) by @charlesBochet
  • Stop reading and writing the legacy workflow link on runs and versions (#30034) by @charlesBochet
  • Compile RLS rules from role permissions (#30035) by @charlesBochet
  • [BREAKING_CHANGE] Drop the legacy workspace workflow object (#30036) by @charlesBochet
  • Add core workflow metadata ahead of dropping the legacy workflow object (#30037) by @charlesBochet
  • Compile the RLS filter once and split field access (#30038) by @charlesBochet
  • Lay out workflow diagrams automatically until a user places a node (#30039) by @FelixMalfait
  • Remove the type-check suppressions in 2 files of modules/workflow (#30040) by @twenty-pr-author
  • Remove the as unknown as casts in 3 files of modules/ai (#30041) by @twenty-pr-author
  • Rename 12 server files to the singular suffix in src/engine/metadata-modules/ai/ai-agent-execution/constants (#30042) by @twenty-pr-author
  • Show recent run health on the workflows index (#30043) by @FelixMalfait
  • Use isDefined in captchaRefreshLink.ts (#30044) by @twenty-pr-author
  • Add Overview and Runs tabs to the workflow page (#30045) by @FelixMalfait
  • Stop using the legacy workflow object in the front (#30046) by @charlesBochet
  • i18n - translations (#30047) by @twenty-pr
  • LinkedIn: sync the profile picture of the account owner's person (#30048) by @martmull
  • i18n - translations (#30050) by @twenty-pr
  • Give callers the global record permission answer (#30051) by @charlesBochet
  • i18n - translations (#30052) by @twenty-pr
  • fix(getting-started): keep completed steps in the step sequence (#30053) by @etiennejouan
  • fix(getting-started): slide stack cards between depths when the step changes (#30054) by @etiennejouan
  • i18n - translations (#30055) by @twenty-pr
  • feat(getting-started): show Keep Twenty in the sidebar card and drop the trial days bar (#30056) by @etiennejouan
  • Test that an OIDC login only completes in the browser that started it (#30058) by @prastoin
  • Remove SAML strategy unit cases covered by the SSO integration tests (#30059) by @prastoin
  • Show other objects in a relation preview tooltip (#30060) by @Bonapara
  • Give reads and writes their own records access condition (#30061) by @charlesBochet
  • i18n - docs translations (#30062) by @twenty-pr
  • feat(getting-started): add a Next button to the step header (#30065) by @etiennejouan
  • Save chat turns when the model sends malformed tool arguments (#30066) by @neo773
  • i18n - translations (#30067) by @twenty-pr
  • Fix order-dependent integration tests and stale SDK metadata client (#30068) by @charlesBochet
  • Stop the validation rule lifecycle test from deactivating a seeded company field (#30073) by @charlesBochet
  • Ignore RLS on limiting roles and rename the runtime limiting role (#30074) by @charlesBochet
  • Stop patching the global console in the local logic function driver (#30077) by @charlesBochet
  • i18n - translations (#30079) by @twenty-pr
  • Show labels and following in the AI chat details (#30080) by @martmull
  • Show who is typing in the AI chat (#30081) by @martmull
  • Play Messages voice notes with a compact player (#30082) by @martmull
  • feat(getting-started): replace snooze options with a single snooze until tomorrow (#30084) by @etiennejouan
  • i18n - translations (#30085) by @twenty-pr
  • Add sync toggles for email and calendar channels (#30087) by @BOHEUS
  • fix(cli): keep workflow code steps out of definition discovery (#30088) by @Weiko
  • Show a disabled checkbox for built-in agents in the Agents list (#30090) by @Bonapara
  • Refuse activating a workflow whose loop never returns to its iterator (#30092) by @prastoin
  • i18n - translations (#30094) by @twenty-pr
  • Add attachments and the new-message view to Messages (#30095) by @martmull
  • i18n - docs translations (#30097) by @twenty-pr
  • i18n - translations (#30098) by @twenty-pr
  • Show reactions and their counts in the Messages reader (#30099) by @martmull
  • fix(getting-started): fit the book a call step on short screens (#30100) by @etiennejouan
  • Show the time in outgoing Messages bubbles (#30102) by @martmull
  • Show a receipt in outgoing Messages bubbles (#30103) by @martmull
  • i18n - translations (#30106) by @twenty-pr
  • i18n - translations (#30108) by @twenty-pr
  • Add the row level permission rule syncable entity (#30111) by @charlesBochet
  • fix(inbox): stop the assistant pending indicators from flickering (#30112) by @etiennejouan
  • i18n - docs translations (#30114) by @twenty-pr
  • Add date functions to rule expressions and read database events as conditions (#30115) by @FelixMalfait
  • Match database-event triggers through one shared matcher with conditions (#30116) by @FelixMalfait
  • Link row level permission predicates, groups and field permissions to rules (#30117) by @charlesBochet
  • Export workflow filter enums from the SDK and report unconfigured widgets (#30118) by @FelixMalfait
  • fix(inbox): keep reopened chats open, show a text cursor in the composer and the circled Done icon (#30123) by @etiennejouan
  • i18n - translations (#30124) by @twenty-pr
  • Align chat conversation and approval cards with Figma (#30125) by @Bonapara
  • Declare record event triggers as eventTriggerSettings with on: 'recordEvent' (#30126) by @FelixMalfait
  • i18n - translations (#30129) by @twenty-pr
  • Refuse deleting a field still used by a row-level permission rule (#30130) by @charlesBochet
  • Build twenty-shared with one output file per source module (#30131) by @charlesBochet
  • [BREAKING_CHANGE] Read row level permission rules in the permission compiler (#30132) by @charlesBochet
  • Save role settings on row level permission rules (#30133) by @charlesBochet
  • i18n - translations (#30136) by @twenty-pr
  • Align AI chat composer spacing with Figma (#30138) by @martmull
  • Grant known record ids through related record paths (#30140) by @charlesBochet
  • i18n - translations (#30142) by @twenty-pr
  • [BREAKING_CHANGE] Mask record grants with limiting roles and drop legacy current user permissions (#30145) by @charlesBochet
  • Let a full access record share grant delete operations (#30146) by @charlesBochet
  • Deliver events of records reached through related record paths (#30148) by @charlesBochet
  • i18n - translations (#30149) by @twenty-pr
  • Note the paid Slack plan needed for the Slack app's AI agent (#30150) by @abdulrahmancodes
  • Remove the Boolean() casts in 4 files of modules/object-record (#30154) by @twenty-pr-author
  • Remove the comparisons to true and false in 8 files of modules/object-record (#30155) by @twenty-pr-author
  • Remove the : any annotations in 9 files of engine/core-modules (#30157) by @twenty-pr-author
  • Remove the type-check suppressions in compute-system-record-page-layout-to-create.util.ts (#30158) by @twenty-pr-author
  • Bump Playwright to 1.65 to support Ubuntu 26.04 runners (#30167) by @charlesBochet
  • Ignore row level permissions persisted before 2.58 (#30168) by @charlesBochet
  • Space paragraphs inside README blockquotes on app pages (#30171) by @abdulrahmancodes
  • i18n - translations (#30172) by @twenty-pr
  • i18n - translations (#30179) by @twenty-pr
  • i18n - translations (#30180) by @twenty-pr
  • Let the workflow Overview scope its bar chart like other chart callers (#30181) by @FelixMalfait
  • i18n - docs translations (#30184) by @twenty-pr
  • Redirect the bare front domain to the default domain and stop the not-found redirect loop (#30185) by @charlesBochet
  • Let record shares and private record creators grant on their own (#30187) by @charlesBochet
  • chore(security): bump exa-js to 2.28.0 in the exa app (#30188) by @mabdullahabaid
  • Add stopGenerate to stop a followed ai.generate run (#30190) by @FelixMalfait
  • Resolve the custom application of a soft-deleted workspace (#30191) by @prastoin
  • Application can only CUD their owned roles (#30192) by @prastoin
  • Give private records their own service and repository (#30193) by @charlesBochet
  • i18n - translations (#30194) by @twenty-pr
  • Let the permission engine create the record share and access group tables behind a flag (#30195) by @charlesBochet
  • i18n - docs translations (#30199) by @twenty-pr
  • Store the access groups records inherit through related record paths (#30201) by @charlesBochet
  • Let a private record's creator reach it without a role grant and tidy permission sources (#30202) by @charlesBochet
  • Follow related record paths in record listings through access groups (#30206) by @charlesBochet
  • Follow related record paths through shares, creators and writes (#30207) by @charlesBochet
  • i18n - translations (#30208) by @twenty-pr
  • i18n - translations (#30210) by @twenty-pr
  • i18n - translations (#30211) by @twenty-pr
  • Bump @aws-sdk/xml-builder to drop vulnerable fast-xml-parser (#30212) by @BOHEUS
  • Bump stream-json to 3.8.0 (#30213) by @BOHEUS
  • i18n - translations (#30214) by @twenty-pr
  • Link records and frame the request for the Teams assistant (#30215) by @abdulrahmancodes
  • Tell Teams members why the assistant could not answer (#30216) by @abdulrahmancodes
  • Answer a bare mention of the Teams assistant with a hint (#30217) by @abdulrahmancodes
  • Keep Teams assistant answers within the message size limit (#30218) by @abdulrahmancodes
  • Remove the as any casts in StepBar.tsx (#30219) by @twenty-pr-author
  • Remove the as never casts in resolve-effective-universal-flat-entity.util.ts (#30220) by @twenty-pr-author
  • Rename 3 server files to the singular suffix in src/engine/core-modules/open-api/utils (#30222) by @twenty-pr-author
  • Serve a merged twenty-shared build to dev servers instead of pre-bundling it (#30224) by @FelixMalfait
  • Fix a listing table scan with shared path sources and a rule matching all on an empty member list (#30225) by @charlesBochet
  • Retry hovers in the gallery tooltip tests until the tooltip opens (#30226) by @FelixMalfait
  • Bump Node to 26.13.1 (#30229) by @prastoin
  • i18n - translations (#30236) by @twenty-pr

Full Changelog: twenty/v2.57.1...twenty/v2.58.0

Don't miss a new twenty release

NewReleases is sending notifications on new releases.