Twenty twenty/v2.52.0stable Released Oct 27, 2026
โš ๏ธ Breaking Change Impact Score: 7/10

Twenty twenty/v2.52.0 โ€” Release Notes & Engineering Impact

Source available โ€” automated, not human-reviewed

Component: twenty ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-10-31.

Breaking-change evidence from the source

  • โš ๏ธ Breaking changes - Let apps connect accounts through their own authorization flow ([#28672](https://github.com/twentyhq/twenty/pull/28672)) by @FelixMalfait
Read the original context โ†—
Source flags breaking changes โ€” review applicability
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

Twenty twenty/v2.52.0. Source highlight: Let apps connect accounts through their own authorization flow (#28672)

Who Does This Impact? (Role-Based Analysis)

๐Ÿ’ป Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

๐Ÿ“Š Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

โš™๏ธ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

โš ๏ธ Breaking Changes & Deprecations (1)

  • โš ๏ธ Breaking changes - Let apps connect accounts through their own authorization flow ([#28672](https://github.com/twentyhq/twenty/pull/28672)) by @FelixMalfait

โœจ New Features & Capabilities (6)

  • feat(billing): lead the Plans page comparison with plan essentials (#28843)
  • Add global chat commands (#28567)
  • Add batch approval review components (#28684)
  • Remove IS_APPLICATION_MONITORING_ENABLED feature flag (#28688)
  • Add email approval review (#28691)
  • Remove async CSV export feature flag (#28717)

โšก Performance & Enhancements (6)

  • Let members manage personal app connections from App preferences (#28418)
  • Keep code step outputs when the code is saved and remove the link output schema (#28432)
  • Pass fieldMetadataId in if/else workflow node (#28443)
  • Report a superseded session as superseded when its revocation races the request (#28462)
  • Link a sent email to the record it was sent from (#28554)
  • Show only workspace-shared connections in app settings (#28556)

๐Ÿ”ง Bug Fixes & Patches (6)

  • Fix app sync recreating search rows that already exist (#28494)
  • Fix workspace data export S3 upload and show exports on the admin user page (#28706)
  • Fix bulk update of emptied list fields, full name pasting and address separators (#28752)
  • Fix follow-redirects in the Workspace upgrade snapshot (#28852)
  • Fix orphaned case study card on partner profiles (#28913)
  • Fix integration specs that break on suites run before them in the same shard (#28921)
๐Ÿ“„ View Raw Release Notes (Original Developer Log)
<!-- generated-release-notes v1 --> ## โš ๏ธ Breaking changes - Let apps connect accounts through their own authorization flow ([#28672](https://github.com/twentyhq/twenty/pull/28672)) by @FelixMalfait - chore(security): bump vite to 8.3.5 in the app lockfiles ([#28798](https://github.com/twentyhq/twenty/pull/28798)) by @mabdullahabaid - chore(security): bump twenty-companion vite to 7.3.7 ([#28801](https://github.com/twentyhq/twenty/pull/28801)) by @mabdullahabaid - chore(security): bump undici in the app lockfiles ([#28802](https://github.com/twentyhq/twenty/pull/28802)) by @mabdullahabaid - chore(security): bump undici in the root lockfile ([#28805](https://github.com/twentyhq/twenty/pull/28805)) by @mabdullahabaid - chore(security): bump zod to 4.6.7 in the fathom, fireflies and granola apps ([#28807](https://github.com/twentyhq/twenty/pull/28807)) by @mabdullahabaid ## ๐Ÿ’… Improvements & UX - feat(billing): lead the Plans page comparison with plan essentials ([#28843](https://github.com/twentyhq/twenty/pull/28843)) by @etiennejouan - Let members manage personal app connections from App preferences ([#28418](https://github.com/twentyhq/twenty/pull/28418)) by @ehconitin - Keep code step outputs when the code is saved and remove the link output schema ([#28432](https://github.com/twentyhq/twenty/pull/28432)) by @ghazy2001 - Pass fieldMetadataId in if/else workflow node ([#28443](https://github.com/twentyhq/twenty/pull/28443)) by @BOHEUS - Report a superseded session as superseded when its revocation races the request ([#28462](https://github.com/twentyhq/twenty/pull/28462)) by @DamienFoulon - Fix app sync recreating search rows that already exist ([#28494](https://github.com/twentyhq/twenty/pull/28494)) by @jackeddisciple - Link a sent email to the record it was sent from ([#28554](https://github.com/twentyhq/twenty/pull/28554)) by @FelixMalfait - Show only workspace-shared connections in app settings ([#28556](https://github.com/twentyhq/twenty/pull/28556)) by @ehconitin - Build inbox thread details and sharing ([#28565](https://github.com/twentyhq/twenty/pull/28565)) by @bosiraphael - Add global chat commands ([#28567](https://github.com/twentyhq/twenty/pull/28567)) by @bosiraphael - Move the Slack app to twenty-ui 2.x and use its Skeleton ([#28604](https://github.com/twentyhq/twenty/pull/28604)) by @abdulrahmancodes - Migrate the metadata tools to @DefineTool ([#28631](https://github.com/twentyhq/twenty/pull/28631)) by @prastoin - Clarify DPA, AI and access answers in the Legal FAQ and pricing page ([#28640](https://github.com/twentyhq/twenty/pull/28640)) by @ijreilly - Migrate multiple record pickers ([#28643](https://github.com/twentyhq/twenty/pull/28643)) by @bosiraphael - Use twenty-ui date picker in the frontend ([#28649](https://github.com/twentyhq/twenty/pull/28649)) by @bosiraphael - Allow npm publishing from protected release branches ([#28677](https://github.com/twentyhq/twenty/pull/28677)) by @FelixMalfait - Mask restricted calendar events and messages in nested relations and groupBy ([#28679](https://github.com/twentyhq/twenty/pull/28679)) by @charlesBochet - Add batch approval review components ([#28684](https://github.com/twentyhq/twenty/pull/28684)) by @bosiraphael - Bring back toggles, nested blocks, deeper headings and table controls in rich text notes ([#28687](https://github.com/twentyhq/twenty/pull/28687)) by @neo773 - Remove IS_APPLICATION_MONITORING_ENABLED feature flag ([#28688](https://github.com/twentyhq/twenty/pull/28688)) by @martmull - Remove the main sources of server integration shard flakiness ([#28689](https://github.com/twentyhq/twenty/pull/28689)) by @martmull - Add email approval review ([#28691](https://github.com/twentyhq/twenty/pull/28691)) by @bosiraphael - Give the rebuilt user auth context its full workspace ([#28692](https://github.com/twentyhq/twenty/pull/28692)) by @prastoin - Stabilize frontend Storybook interactions ([#28693](https://github.com/twentyhq/twenty/pull/28693)) by @bosiraphael - Keep non-email participant links when a person's emails change ([#28694](https://github.com/twentyhq/twenty/pull/28694)) by @FelixMalfait - Match app channel participants on a declared person field ([#28696](https://github.com/twentyhq/twenty/pull/28696)) by @FelixMalfait - Backfill frontend dependencies for existing Workspace apps ([#28698](https://github.com/twentyhq/twenty/pull/28698)) by @Weiko - Show weekly AI user credits in AI chat ([#28700](https://github.com/twentyhq/twenty/pull/28700)) by @etiennejouan - Balance server integration shards by recorded duration ([#28702](https://github.com/twentyhq/twenty/pull/28702)) by @neo773 - Let usage limit defaults override the plan while trialing ([#28703](https://github.com/twentyhq/twenty/pull/28703)) by @etiennejouan - Bring back row and column controls in rich text tables ([#28704](https://github.com/twentyhq/twenty/pull/28704)) by @neo773 - Keep app uninstall hook failures out of Sentry ([#28705](https://github.com/twentyhq/twenty/pull/28705)) by @charlesBochet - Fix workspace data export S3 upload and show exports on the admin user page ([#28706](https://github.com/twentyhq/twenty/pull/28706)) by @charlesBochet - Keep sensitive-path maintainer approvals valid after pushes ([#28707](https://github.com/twentyhq/twenty/pull/28707)) by @FelixMalfait - Replace the generic multi-item field inputs with composable bricks ([#28708](https://github.com/twentyhq/twenty/pull/28708)) by @charlesBochet - Keep the front metadata store consistent across out-of-order updates ([#28711](https://github.com/twentyhq/twenty/pull/28711)) by @charlesBochet - Refresh Resources menu previews and the homepage logo row ([#28713](https://github.com/twentyhq/twenty/pull/28713)) by @Bonapara - Close the inbox conversation pane ([#28716](https://github.com/twentyhq/twenty/pull/28716)) by @bosiraphael - Remove async CSV export feature flag ([#28717](https://github.com/twentyhq/twenty/pull/28717)) by @Weiko - Hide app settings tab bar when General is the only tab ([#28720](https://github.com/twentyhq/twenty/pull/28720)) by @martmull - Redesign the docs to match the website ([#28733](https://github.com/twentyhq/twenty/pull/28733)) by @Bonapara - Edit list values and link labels in place in multi-item cell editors ([#28734](https://github.com/twentyhq/twenty/pull/28734)) by @charlesBochet - Show the app error fallback for errors React Router catches ([#28747](https://github.com/twentyhq/twenty/pull/28747)) by @charlesBochet - Restore JSX attributes Crowdin translated in docs pages ([#28749](https://github.com/twentyhq/twenty/pull/28749)) by @Bonapara - Apply workflow step edits to the draft's own logic function or agent ([#28750](https://github.com/twentyhq/twenty/pull/28750)) by @charlesBochet - Split the multi-item draft hook into focused bricks ([#28751](https://github.com/twentyhq/twenty/pull/28751)) by @charlesBochet - Fix bulk update of emptied list fields, full name pasting and address separators ([#28752](https://github.com/twentyhq/twenty/pull/28752)) by @charlesBochet - Edit emails and array values as lists in the record form ([#28753](https://github.com/twentyhq/twenty/pull/28753)) by @charlesBochet - Show partial domain setup on the email channel list ([#28754](https://github.com/twentyhq/twenty/pull/28754)) by @neo773 - Add an Email Channels docs page ([#28755](https://github.com/twentyhq/twenty/pull/28755)) by @neo773 - Edit phones, links, files and full name in the record form ([#28757](https://github.com/twentyhq/twenty/pull/28757)) by @charlesBochet - Show address details on demand in the record form ([#28765](https://github.com/twentyhq/twenty/pull/28765)) by @charlesBochet - Infer the code step input schema in the debounced save so keystrokes can't be saved out of order ([#28766](https://github.com/twentyhq/twenty/pull/28766)) by @charlesBochet - Edit wrapping text in a text area and show the domain favicon in link inputs ([#28767](https://github.com/twentyhq/twenty/pull/28767)) by @charlesBochet - Show a blue border on keyboard focus in form inputs, pickers and selects ([#28769](https://github.com/twentyhq/twenty/pull/28769)) by @charlesBochet - Edit the full name in one input and show address details on demand in cell editors ([#28773](https://github.com/twentyhq/twenty/pull/28773)) by @charlesBochet - Route any casing of host-sanitized props to their canonical key in front component host elements ([#28774](https://github.com/twentyhq/twenty/pull/28774)) by @charlesBochet - Suggest addresses as you type in the record form address ([#28775](https://github.com/twentyhq/twenty/pull/28775)) by @charlesBochet - Upload files by dropping them on the files field input ([#28777](https://github.com/twentyhq/twenty/pull/28777)) by @charlesBochet - Require a first-person session for admin panel actions ([#28779](https://github.com/twentyhq/twenty/pull/28779)) by @charlesBochet - Backfill record form widgets for files fields ([#28780](https://github.com/twentyhq/twenty/pull/28780)) by @charlesBochet - Apply field read permissions to timeline activity properties ([#28782](https://github.com/twentyhq/twenty/pull/28782)) by @charlesBochet - Block bulk update while a field input is in error ([#28783](https://github.com/twentyhq/twenty/pull/28783)) by @charlesBochet - Resend requests rejected because a sign-in superseded their session ([#28784](https://github.com/twentyhq/twenty/pull/28784)) by @charlesBochet - Make the True/False control full width in record forms ([#28787](https://github.com/twentyhq/twenty/pull/28787)) by @charlesBochet - Ignore isSecret changes on existing application and server variables ([#28800](https://github.com/twentyhq/twenty/pull/28800)) by @prastoin - Reject changes to non-comparable flat entity properties ([#28803](https://github.com/twentyhq/twenty/pull/28803)) by @prastoin - Initialize application variable value at creation instead of in the manifest ([#28808](https://github.com/twentyhq/twenty/pull/28808)) by @prastoin - Add configurable tags when creating Lambda functions ([#28810](https://github.com/twentyhq/twenty/pull/28810)) by @FelixMalfait - Document that app development is only supported on Unix systems ([#28817](https://github.com/twentyhq/twenty/pull/28817)) by @prastoin - Let the Teams assistant work with CRM records ([#28832](https://github.com/twentyhq/twenty/pull/28832)) by @abdulrahmancodes - Give the Teams assistant the earlier turns of the conversation ([#28833](https://github.com/twentyhq/twenty/pull/28833)) by @abdulrahmancodes - Remove the `as any` casts in 2 files of modules/ui/input/components/internal/date/components ([#28838](https://github.com/twentyhq/twenty/pull/28838)) by @twenty-pr-author - Application monitoring: legend totals and credits by operation type ([#28847](https://github.com/twentyhq/twenty/pull/28847)) by @martmull - Fix follow-redirects in the Workspace upgrade snapshot ([#28852](https://github.com/twentyhq/twenty/pull/28852)) by @Weiko - Seed Workspace applications with frontend dependencies ([#28853](https://github.com/twentyhq/twenty/pull/28853)) by @Weiko - Remove the free trial for users already in 2 trial workspaces ([#28859](https://github.com/twentyhq/twenty/pull/28859)) by @etiennejouan - Prebundle rich text editor extensions for Storybook ([#28862](https://github.com/twentyhq/twenty/pull/28862)) by @bosiraphael - Add merge proposal review ([#28863](https://github.com/twentyhq/twenty/pull/28863)) by @bosiraphael - Add scheduling and time-picker UI ([#28865](https://github.com/twentyhq/twenty/pull/28865)) by @bosiraphael - Fix orphaned case study card on partner profiles ([#28913](https://github.com/twentyhq/twenty/pull/28913)) by @ijreilly - Stop deleting provider domains Twenty did not create ([#28914](https://github.com/twentyhq/twenty/pull/28914)) by @neo773 - Serve campaign unsubscribe and tracked links on links.domain ([#28915](https://github.com/twentyhq/twenty/pull/28915)) by @neo773 - Add glass and metal materials to the halftone studio ([#28918](https://github.com/twentyhq/twenty/pull/28918)) by @Bonapara - Let application workflows send email and create calendar events ([#28920](https://github.com/twentyhq/twenty/pull/28920)) by @FelixMalfait - Fix integration specs that break on suites run before them in the same shard ([#28921](https://github.com/twentyhq/twenty/pull/28921)) by @etiennejouan - Skip morph relation targets the role cannot read ([#28922](https://github.com/twentyhq/twenty/pull/28922)) by @neo773 - Skip application lifecycle scripts when building dependency layers ([#28926](https://github.com/twentyhq/twenty/pull/28926)) by @prastoin - Let the workspace custom application's workflows call other apps' actions ([#28927](https://github.com/twentyhq/twenty/pull/28927)) by @FelixMalfait - Fill the single full name input in the create record e2e test ([#28928](https://github.com/twentyhq/twenty/pull/28928)) by @charlesBochet - Show the Admin role in the roles list again ([#28946](https://github.com/twentyhq/twenty/pull/28946)) by @prastoin - Only offer junction targets the role can update in relation pickers ([#28947](https://github.com/twentyhq/twenty/pull/28947)) by @charlesBochet - Fit the AI chat user credits banner on one line ([#28949](https://github.com/twentyhq/twenty/pull/28949)) by @etiennejouan - Keep Avatar fallback icons within small avatars ([#28973](https://github.com/twentyhq/twenty/pull/28973)) by @bosiraphael - Add admin status indicator to workspace users in admin panel ([#28974](https://github.com/twentyhq/twenty/pull/28974)) by @martmull - Reject object names that are not stable under camelCase ([#28978](https://github.com/twentyhq/twenty/pull/28978)) by @FelixMalfait - Restore native blur in front component menus ([#28980](https://github.com/twentyhq/twenty/pull/28980)) by @bosiraphael - Add Teams app to Microsoft publisher domain association ([#28983](https://github.com/twentyhq/twenty/pull/28983)) by @neo773 - Match AI chat user bubbles to the design ([#28984](https://github.com/twentyhq/twenty/pull/28984)) by @bosiraphael ## ๐Ÿ› Bug fixes - fix(front): pin record table columns with logical insets so they work in RTL ([#28379](https://github.com/twentyhq/twenty/pull/28379)) by @almoghazaz-cell - fix(metadata-store): adopt new collection hash on replaceDraft when data is unchanged ([#28412](https://github.com/twentyhq/twenty/pull/28412)) by @ghazy2001 - fix(record-form): block submission when field input has validation error ([#28425](https://github.com/twentyhq/twenty/pull/28425)) by @ghazy2001 - fix(front): keep cached relation picker results clickable while Search refreshes ([#28458](https://github.com/twentyhq/twenty/pull/28458)) by @lineico - fix(slack): show one content-shaped skeleton while the settings tab loads ([#28493](https://github.com/twentyhq/twenty/pull/28493)) by @abdulrahmancodes - fix(twenty-shared): promote formatBytes to the next unit when rounding reaches 1024 ([#28502](https://github.com/twentyhq/twenty/pull/28502)) by @RaphaelFakhri - fix(onboarding): add aria-labels to invite team email inputs ([#28748](https://github.com/twentyhq/twenty/pull/28748)) by @zacyungblut ## ๐Ÿ”ง Developer & API - Move app tooling consumers to the standalone CLI ([#28182](https://github.com/twentyhq/twenty/pull/28182)) by @Weiko - Remove the legacy SDK CLI and retire create-twenty-app ([#28183](https://github.com/twentyhq/twenty/pull/28183)) by @Weiko - Let Granola uninstall when no API key was saved ([#28680](https://github.com/twentyhq/twenty/pull/28680)) by @charlesBochet - Clean up remaining legacy SDK CLI references ([#28721](https://github.com/twentyhq/twenty/pull/28721)) by @Weiko - Fix docs translations for Crowdin CLI 5 ([#28725](https://github.com/twentyhq/twenty/pull/28725)) by @Weiko - Delete logic function Lambdas and SDK layers on workspace deletion ([#28813](https://github.com/twentyhq/twenty/pull/28813)) by @prastoin - Ignore the CLI patch version in the scaffolded engines.twenty range ([#28814](https://github.com/twentyhq/twenty/pull/28814)) by @prastoin - Rename 9 server files to the singular suffix in src/engine/core-modules/open-api/utils ([#28839](https://github.com/twentyhq/twenty/pull/28839)) by @twenty-pr-author - Bump graphql to 16.14.2 and graphql-yoga to 5 ([#28976](https://github.com/twentyhq/twenty/pull/28976)) by @charlesBochet <details> <summary>๐Ÿ—๏ธ Internal changes (14)</summary> - docs: Introduce third-party marketplace vetting criteria ([#28457](https://github.com/twentyhq/twenty/pull/28457)) by @martmull - chore(security): bump dompurify to 3.4.17 ([#28772](https://github.com/twentyhq/twenty/pull/28772)) by @mabdullahabaid - chore(security): bump next to 16.4.1 ([#28778](https://github.com/twentyhq/twenty/pull/28778)) by @mabdullahabaid - chore(security): bump storybook to 10.6.3 ([#28790](https://github.com/twentyhq/twenty/pull/28790)) by @mabdullahabaid - chore(security): bump follow-redirects to 1.16.1 everywhere ([#28792](https://github.com/twentyhq/twenty/pull/28792)) by @mabdullahabaid - chore(security): bump verdaccio to 6.10.7 and drop its two resolutions ([#28809](https://github.com/twentyhq/twenty/pull/28809)) by @mabdullahabaid - chore(security): bump fast-uri to 3.1.9 ([#28952](https://github.com/twentyhq/twenty/pull/28952)) by @BOHEUS - chore(security): bump @graphql-tools/executor-legacy-ws to 1.1.39 ([#28953](https://github.com/twentyhq/twenty/pull/28953)) by @BOHEUS - chore(security): bump markdown-it to 14.3.3 ([#28954](https://github.com/twentyhq/twenty/pull/28954)) by @BOHEUS - chore(security): bump postcss-selector-parser to 6.1.5 ([#28955](https://github.com/twentyhq/twenty/pull/28955)) by @BOHEUS - chore(security): bump body-parser to 1.20.9 and 2.4.0 ([#28958](https://github.com/twentyhq/twenty/pull/28958)) by @BOHEUS - chore(security): bump vitest to 4.1.12 ([#28960](https://github.com/twentyhq/twenty/pull/28960)) by @BOHEUS - chore(security): bump electron to 44.9.1 ([#28967](https://github.com/twentyhq/twenty/pull/28967)) by @BOHEUS - chore(security): bump nodemailer to 10.2.1 ([#28968](https://github.com/twentyhq/twenty/pull/28968)) by @BOHEUS </details> ## ๐ŸŽ‰ New contributors - @ghazy2001 made their first contribution in https://github.com/twentyhq/twenty/pull/28412 - @zacyungblut made their first contribution in https://github.com/twentyhq/twenty/pull/28748 - @lineico made their first contribution in https://github.com/twentyhq/twenty/pull/28458 - @DamienFoulon made their first contribution in https://github.com/twentyhq/twenty/pull/28462 - @RaphaelFakhri made their first contribution in https://github.com/twentyhq/twenty/pull/28502 - @jackeddisciple made their first contribution in https://github.com/twentyhq/twenty/pull/28494 <details> <summary>Full changelog (136 PRs)</summary> - Move app tooling consumers to the standalone CLI ([#28182](https://github.com/twentyhq/twenty/pull/28182)) by @Weiko - Remove the legacy SDK CLI and retire create-twenty-app ([#28183](https://github.com/twentyhq/twenty/pull/28183)) by @Weiko - fix(front): pin record table columns with logical insets so they work in RTL ([#28379](https://github.com/twentyhq/twenty/pull/28379)) by @almoghazaz-cell - fix(metadata-store): adopt new collection hash on replaceDraft when data is unchanged ([#28412](https://github.com/twentyhq/twenty/pull/28412)) by @ghazy2001 - Let members manage personal app connections from App preferences ([#28418](https://github.com/twentyhq/twenty/pull/28418)) by @ehconitin - fix(record-form): block submission when field input has validation error ([#28425](https://github.com/twentyhq/twenty/pull/28425)) by @ghazy2001 - Keep code step outputs when the code is saved and remove the link output schema ([#28432](https://github.com/twentyhq/twenty/pull/28432)) by @ghazy2001 - Pass fieldMetadataId in if/else workflow node ([#28443](https://github.com/twentyhq/twenty/pull/28443)) by @BOHEUS - docs: Introduce third-party marketplace vetting criteria ([#28457](https://github.com/twentyhq/twenty/pull/28457)) by @martmull - fix(front): keep cached relation picker results clickable while Search refreshes ([#28458](https://github.com/twentyhq/twenty/pull/28458)) by @lineico - Report a superseded session as superseded when its revocation races the request ([#28462](https://github.com/twentyhq/twenty/pull/28462)) by @DamienFoulon - fix(slack): show one content-shaped skeleton while the settings tab loads ([#28493](https://github.com/twentyhq/twenty/pull/28493)) by @abdulrahmancodes - Fix app sync recreating search rows that already exist ([#28494](https://github.com/twentyhq/twenty/pull/28494)) by @jackeddisciple - fix(twenty-shared): promote formatBytes to the next unit when rounding reaches 1024 ([#28502](https://github.com/twentyhq/twenty/pull/28502)) by @RaphaelFakhri - Link a sent email to the record it was sent from ([#28554](https://github.com/twentyhq/twenty/pull/28554)) by @FelixMalfait - Show only workspace-shared connections in app settings ([#28556](https://github.com/twentyhq/twenty/pull/28556)) by @ehconitin - Build inbox thread details and sharing ([#28565](https://github.com/twentyhq/twenty/pull/28565)) by @bosiraphael - Add global chat commands ([#28567](https://github.com/twentyhq/twenty/pull/28567)) by @bosiraphael - Move the Slack app to twenty-ui 2.x and use its Skeleton ([#28604](https://github.com/twentyhq/twenty/pull/28604)) by @abdulrahmancodes - Migrate the metadata tools to @DefineTool ([#28631](https://github.com/twentyhq/twenty/pull/28631)) by @prastoin - Clarify DPA, AI and access answers in the Legal FAQ and pricing page ([#28640](https://github.com/twentyhq/twenty/pull/28640)) by @ijreilly - Migrate multiple record pickers ([#28643](https://github.com/twentyhq/twenty/pull/28643)) by @bosiraphael - Use twenty-ui date picker in the frontend ([#28649](https://github.com/twentyhq/twenty/pull/28649)) by @bosiraphael - Let apps connect accounts through their own authorization flow ([#28672](https://github.com/twentyhq/twenty/pull/28672)) by @FelixMalfait - Allow npm publishing from protected release branches ([#28677](https://github.com/twentyhq/twenty/pull/28677)) by @FelixMalfait - Mask restricted calendar events and messages in nested relations and groupBy ([#28679](https://github.com/twentyhq/twenty/pull/28679)) by @charlesBochet - Let Granola uninstall when no API key was saved ([#28680](https://github.com/twentyhq/twenty/pull/28680)) by @charlesBochet - Add batch approval review components ([#28684](https://github.com/twentyhq/twenty/pull/28684)) by @bosiraphael - Bring back toggles, nested blocks, deeper headings and table controls in rich text notes ([#28687](https://github.com/twentyhq/twenty/pull/28687)) by @neo773 - Remove IS_APPLICATION_MONITORING_ENABLED feature flag ([#28688](https://github.com/twentyhq/twenty/pull/28688)) by @martmull - Remove the main sources of server integration shard flakiness ([#28689](https://github.com/twentyhq/twenty/pull/28689)) by @martmull - Add email approval review ([#28691](https://github.com/twentyhq/twenty/pull/28691)) by @bosiraphael - Give the rebuilt user auth context its full workspace ([#28692](https://github.com/twentyhq/twenty/pull/28692)) by @prastoin - Stabilize frontend Storybook interactions ([#28693](https://github.com/twentyhq/twenty/pull/28693)) by @bosiraphael - Keep non-email participant links when a person's emails change ([#28694](https://github.com/twentyhq/twenty/pull/28694)) by @FelixMalfait - Match app channel participants on a declared person field ([#28696](https://github.com/twentyhq/twenty/pull/28696)) by @FelixMalfait - chore: bump version to 2.52.0 ([#28697](https://github.com/twentyhq/twenty/pull/28697)) by @twenty-pr - Backfill frontend dependencies for existing Workspace apps ([#28698](https://github.com/twentyhq/twenty/pull/28698)) by @Weiko - Show weekly AI user credits in AI chat ([#28700](https://github.com/twentyhq/twenty/pull/28700)) by @etiennejouan - Balance server integration shards by recorded duration ([#28702](https://github.com/twentyhq/twenty/pull/28702)) by @neo773 - Let usage limit defaults override the plan while trialing ([#28703](https://github.com/twentyhq/twenty/pull/28703)) by @etiennejouan - Bring back row and column controls in rich text tables ([#28704](https://github.com/twentyhq/twenty/pull/28704)) by @neo773 - Keep app uninstall hook failures out of Sentry ([#28705](https://github.com/twentyhq/twenty/pull/28705)) by @charlesBochet - Fix workspace data export S3 upload and show exports on the admin user page ([#28706](https://github.com/twentyhq/twenty/pull/28706)) by @charlesBochet - Keep sensitive-path maintainer approvals valid after pushes ([#28707](https://github.com/twentyhq/twenty/pull/28707)) by @FelixMalfait - Replace the generic multi-item field inputs with composable bricks ([#28708](https://github.com/twentyhq/twenty/pull/28708)) by @charlesBochet - Keep the front metadata store consistent across out-of-order updates ([#28711](https://github.com/twentyhq/twenty/pull/28711)) by @charlesBochet - Refresh Resources menu previews and the homepage logo row ([#28713](https://github.com/twentyhq/twenty/pull/28713)) by @Bonapara - Close the inbox conversation pane ([#28716](https://github.com/twentyhq/twenty/pull/28716)) by @bosiraphael - Remove async CSV export feature flag ([#28717](https://github.com/twentyhq/twenty/pull/28717)) by @Weiko - Hide app settings tab bar when General is the only tab ([#28720](https://github.com/twentyhq/twenty/pull/28720)) by @martmull - Clean up remaining legacy SDK CLI references ([#28721](https://github.com/twentyhq/twenty/pull/28721)) by @Weiko - Fix docs translations for Crowdin CLI 5 ([#28725](https://github.com/twentyhq/twenty/pull/28725)) by @Weiko - Redesign the docs to match the website ([#28733](https://github.com/twentyhq/twenty/pull/28733)) by @Bonapara - Edit list values and link labels in place in multi-item cell editors ([#28734](https://github.com/twentyhq/twenty/pull/28734)) by @charlesBochet - Show the app error fallback for errors React Router catches ([#28747](https://github.com/twentyhq/twenty/pull/28747)) by @charlesBochet - fix(onboarding): add aria-labels to invite team email inputs ([#28748](https://github.com/twentyhq/twenty/pull/28748)) by @zacyungblut - Restore JSX attributes Crowdin translated in docs pages ([#28749](https://github.com/twentyhq/twenty/pull/28749)) by @Bonapara - Apply workflow step edits to the draft's own logic function or agent ([#28750](https://github.com/twentyhq/twenty/pull/28750)) by @charlesBochet - Split the multi-item draft hook into focused bricks ([#28751](https://github.com/twentyhq/twenty/pull/28751)) by @charlesBochet - Fix bulk update of emptied list fields, full name pasting and address separators ([#28752](https://github.com/twentyhq/twenty/pull/28752)) by @charlesBochet - Edit emails and array values as lists in the record form ([#28753](https://github.com/twentyhq/twenty/pull/28753)) by @charlesBochet - Show partial domain setup on the email channel list ([#28754](https://github.com/twentyhq/twenty/pull/28754)) by @neo773 - Add an Email Channels docs page ([#28755](https://github.com/twentyhq/twenty/pull/28755)) by @neo773 - Edit phones, links, files and full name in the record form ([#28757](https://github.com/twentyhq/twenty/pull/28757)) by @charlesBochet - Show address details on demand in the record form ([#28765](https://github.com/twentyhq/twenty/pull/28765)) by @charlesBochet - Infer the code step input schema in the debounced save so keystrokes can't be saved out of order ([#28766](https://github.com/twentyhq/twenty/pull/28766)) by @charlesBochet - Edit wrapping text in a text area and show the domain favicon in link inputs ([#28767](https://github.com/twentyhq/twenty/pull/28767)) by @charlesBochet - Show a blue border on keyboard focus in form inputs, pickers and selects ([#28769](https://github.com/twentyhq/twenty/pull/28769)) by @charlesBochet - chore(security): bump dompurify to 3.4.17 ([#28772](https://github.com/twentyhq/twenty/pull/28772)) by @mabdullahabaid - Edit the full name in one input and show address details on demand in cell editors ([#28773](https://github.com/twentyhq/twenty/pull/28773)) by @charlesBochet - Route any casing of host-sanitized props to their canonical key in front component host elements ([#28774](https://github.com/twentyhq/twenty/pull/28774)) by @charlesBochet - Suggest addresses as you type in the record form address ([#28775](https://github.com/twentyhq/twenty/pull/28775)) by @charlesBochet - Upload files by dropping them on the files field input ([#28777](https://github.com/twentyhq/twenty/pull/28777)) by @charlesBochet - chore(security): bump next to 16.4.1 ([#28778](https://github.com/twentyhq/twenty/pull/28778)) by @mabdullahabaid - Require a first-person session for admin panel actions ([#28779](https://github.com/twentyhq/twenty/pull/28779)) by @charlesBochet - Backfill record form widgets for files fields ([#28780](https://github.com/twentyhq/twenty/pull/28780)) by @charlesBochet - Apply field read permissions to timeline activity properties ([#28782](https://github.com/twentyhq/twenty/pull/28782)) by @charlesBochet - Block bulk update while a field input is in error ([#28783](https://github.com/twentyhq/twenty/pull/28783)) by @charlesBochet - Resend requests rejected because a sign-in superseded their session ([#28784](https://github.com/twentyhq/twenty/pull/28784)) by @charlesBochet - Make the True/False control full width in record forms ([#28787](https://github.com/twentyhq/twenty/pull/28787)) by @charlesBochet - chore(security): bump storybook to 10.6.3 ([#28790](https://github.com/twentyhq/twenty/pull/28790)) by @mabdullahabaid - chore(security): bump follow-redirects to 1.16.1 everywhere ([#28792](https://github.com/twentyhq/twenty/pull/28792)) by @mabdullahabaid - chore(security): bump vite to 8.3.5 in the app lockfiles ([#28798](https://github.com/twentyhq/twenty/pull/28798)) by @mabdullahabaid - Ignore isSecret changes on existing application and server variables ([#28800](https://github.com/twentyhq/twenty/pull/28800)) by @prastoin - chore(security): bump twenty-companion vite to 7.3.7 ([#28801](https://github.com/twentyhq/twenty/pull/28801)) by @mabdullahabaid - chore(security): bump undici in the app lockfiles ([#28802](https://github.com/twentyhq/twenty/pull/28802)) by @mabdullahabaid - Reject changes to non-comparable flat entity properties ([#28803](https://github.com/twentyhq/twenty/pull/28803)) by @prastoin - chore(security): bump undici in the root lockfile ([#28805](https://github.com/twentyhq/twenty/pull/28805)) by @mabdullahabaid - chore(security): bump zod to 4.6.7 in the fathom, fireflies and granola apps ([#28807](https://github.com/twentyhq/twenty/pull/28807)) by @mabdullahabaid - Initialize application variable value at creation instead of in the manifest ([#28808](https://github.com/twentyhq/twenty/pull/28808)) by @prastoin - chore(security): bump verdaccio to 6.10.7 and drop its two resolutions ([#28809](https://github.com/twentyhq/twenty/pull/28809)) by @mabdullahabaid - Add configurable tags when creating Lambda functions ([#28810](https://github.com/twentyhq/twenty/pull/28810)) by @FelixMalfait - Delete logic function Lambdas and SDK layers on workspace deletion ([#28813](https://github.com/twentyhq/twenty/pull/28813)) by @prastoin - Ignore the CLI patch version in the scaffolded engines.twenty range ([#28814](https://github.com/twentyhq/twenty/pull/28814)) by @prastoin - Document that app development is only supported on Unix systems ([#28817](https://github.com/twentyhq/twenty/pull/28817)) by @prastoin - Let the Teams assistant work with CRM records ([#28832](https://github.com/twentyhq/twenty/pull/28832)) by @abdulrahmancodes - Give the Teams assistant the earlier turns of the conversation ([#28833](https://github.com/twentyhq/twenty/pull/28833)) by @abdulrahmancodes - Remove the `as any` casts in 2 files of modules/ui/input/components/internal/date/components ([#28838](https://github.com/twentyhq/twenty/pull/28838)) by @twenty-pr-author - Rename 9 server files to the singular suffix in src/engine/core-modules/open-api/utils ([#28839](https://github.com/twentyhq/twenty/pull/28839)) by @twenty-pr-author - feat(billing): lead the Plans page comparison with plan essentials ([#28843](https://github.com/twentyhq/twenty/pull/28843)) by @etiennejouan - Application monitoring: legend totals and credits by operation type ([#28847](https://github.com/twentyhq/twenty/pull/28847)) by @martmull - Fix follow-redirects in the Workspace upgrade snapshot ([#28852](https://github.com/twentyhq/twenty/pull/28852)) by @Weiko - Seed Workspace applications with frontend dependencies ([#28853](https://github.com/twentyhq/twenty/pull/28853)) by @Weiko - Remove the free trial for users already in 2 trial workspaces ([#28859](https://github.com/twentyhq/twenty/pull/28859)) by @etiennejouan - Prebundle rich text editor extensions for Storybook ([#28862](https://github.com/twentyhq/twenty/pull/28862)) by @bosiraphael - Add merge proposal review ([#28863](https://github.com/twentyhq/twenty/pull/28863)) by @bosiraphael - Add scheduling and time-picker UI ([#28865](https://github.com/twentyhq/twenty/pull/28865)) by @bosiraphael - Fix orphaned case study card on partner profiles ([#28913](https://github.com/twentyhq/twenty/pull/28913)) by @ijreilly - Stop deleting provider domains Twenty did not create ([#28914](https://github.com/twentyhq/twenty/pull/28914)) by @neo773 - Serve campaign unsubscribe and tracked links on links.domain ([#28915](https://github.com/twentyhq/twenty/pull/28915)) by @neo773 - Add glass and metal materials to the halftone studio ([#28918](https://github.com/twentyhq/twenty/pull/28918)) by @Bonapara - Let application workflows send email and create calendar events ([#28920](https://github.com/twentyhq/twenty/pull/28920)) by @FelixMalfait - Fix integration specs that break on suites run before them in the same shard ([#28921](https://github.com/twentyhq/twenty/pull/28921)) by @etiennejouan - Skip morph relation targets the role cannot read ([#28922](https://github.com/twentyhq/twenty/pull/28922)) by @neo773 - Skip application lifecycle scripts when building dependency layers ([#28926](https://github.com/twentyhq/twenty/pull/28926)) by @prastoin - Let the workspace custom application's workflows call other apps' actions ([#28927](https://github.com/twentyhq/twenty/pull/28927)) by @FelixMalfait - Fill the single full name input in the create record e2e test ([#28928](https://github.com/twentyhq/twenty/pull/28928)) by @charlesBochet - Show the Admin role in the roles list again ([#28946](https://github.com/twentyhq/twenty/pull/28946)) by @prastoin - Only offer junction targets the role can update in relation pickers ([#28947](https://github.com/twentyhq/twenty/pull/28947)) by @charlesBochet - Fit the AI chat user credits banner on one line ([#28949](https://github.com/twentyhq/twenty/pull/28949)) by @etiennejouan - chore(security): bump fast-uri to 3.1.9 ([#28952](https://github.com/twentyhq/twenty/pull/28952)) by @BOHEUS - chore(security): bump @graphql-tools/executor-legacy-ws to 1.1.39 ([#28953](https://github.com/twentyhq/twenty/pull/28953)) by @BOHEUS - chore(security): bump markdown-it to 14.3.3 ([#28954](https://github.com/twentyhq/twenty/pull/28954)) by @BOHEUS - chore(security): bump postcss-selector-parser to 6.1.5 ([#28955](https://github.com/twentyhq/twenty/pull/28955)) by @BOHEUS - chore(security): bump body-parser to 1.20.9 and 2.4.0 ([#28958](https://github.com/twentyhq/twenty/pull/28958)) by @BOHEUS - chore(security): bump vitest to 4.1.12 ([#28960](https://github.com/twentyhq/twenty/pull/28960)) by @BOHEUS - chore(security): bump electron to 44.9.1 ([#28967](https://github.com/twentyhq/twenty/pull/28967)) by @BOHEUS - chore(security): bump nodemailer to 10.2.1 ([#28968](https://github.com/twentyhq/twenty/pull/28968)) by @BOHEUS - Keep Avatar fallback icons within small avatars ([#28973](https://github.com/twentyhq/twenty/pull/28973)) by @bosiraphael - Add admin status indicator to workspace users in admin panel ([#28974](https://github.com/twentyhq/twenty/pull/28974)) by @martmull - Bump graphql to 16.14.2 and graphql-yoga to 5 ([#28976](https://github.com/twentyhq/twenty/pull/28976)) by @charlesBochet - Reject object names that are not stable under camelCase ([#28978](https://github.com/twentyhq/twenty/pull/28978)) by @FelixMalfait - Restore native blur in front component menus ([#28980](https://github.com/twentyhq/twenty/pull/28980)) by @bosiraphael - Add Teams app to Microsoft publisher domain association ([#28983](https://github.com/twentyhq/twenty/pull/28983)) by @neo773 - Match AI chat user bubbles to the design ([#28984](https://github.com/twentyhq/twenty/pull/28984)) by @bosiraphael </details> **Full Changelog**: https://github.com/twentyhq/twenty/compare/twenty/v2.51.0...twenty/v2.52.0