Notes look like they did before the TipTap migration. Extra padding is gone, and block styles match what BlockNote rendered. The inbox gets two visible upgrades: the sidebar expands each channel into Open, Assigned, Snoozed, and Done views with counts, and an unread badge appears on the inbox navigation item.
Record merging now works on any object, not just Company and Person. The AI chat can merge duplicates directly. Workspace member records have a proper page layout for the first time. A failed spreadsheet import no longer discards your progress β confirmed rows are kept, and invalid ones stay editable.
One upgrade step is required. The @azure/msal-node package moves to 7.x; if your workspace uses Microsoft authentication, verify token refresh after upgrading. The isCustom column is removed from agents, skills, views, and indexes β a migration runs automatically.
β οΈ Breaking changes
- @azure/msal-node was upgraded to 7.x. If your workspace uses Microsoft authentication, verify that token refresh works after upgrading. (#28969) by @BOHEUS
- The isCustom field has been removed from agents, skills, views, indexes, and agent chat channels. A database migration runs automatically on upgrade. (#29052) by @FelixMalfait
π Highlights
- Note editor padding is back to the tighter BlockNote look; the extra whitespace added in the TipTap migration is gone. (#29109)
- The inbox sidebar now shows Open, Assigned, Snoozed, and Done views per channel, each with its own count. (#28868)
- Unread conversation count now appears as a badge on the inbox navigation item. (#29133)
- Any object's records can now be merged, not just Company and Person. (#29042)
- A spreadsheet import that hits errors no longer discards your progress; confirmed rows are kept and you can fix the rest. (#28709)
- Workspace member record pages now show a proper layout instead of a blank page. (#28975)
β¨ New features
- SELECT and MULTI_SELECT form fields in application workflows now resolve correctly across workspaces. (#28658) by @arnavsingh0418
- The inbox sidebar now expands each channel into Open, Assigned, Snoozed, and Done views, each with its own unread count. (#28868) by @bosiraphael
- twenty app pull now exports workflows; the CLI writes them as defineWorkflow source files. (#28936) by @FelixMalfait
- twenty app pull now exports agents and skills; the CLI writes them as defineAgent and defineSkill source files. (#28971) by @FelixMalfait
- Workspace creation now requires passing a CAPTCHA challenge. (#28977) by @etiennejouan
- Applications can now mark specific object actions (read, update, delete, destroy) as permanently disabled for all roles. (#28985) by @charlesBochet
- The Apps preferences page now has separate Apps and Accounts tabs. (#28987) by @ehconitin
- Creating a custom role now requires the Custom Roles plan entitlement; the paywall applies at creation, not only at assignment. (#29014) by @etiennejouan
- When a command menu search has no matches, Ask AI is now the first and default fallback option. (#29023) by @Bonapara
- Records on any object can now be merged, not just Company and Person. (#29042) by @FelixMalfait
- Email and calendar workflow steps can now be pulled and applied across workspaces using a portable account handle instead of a workspace-specific ID. (#29048) by @FelixMalfait
- Workflows built in the visual workflow builder can now be pulled and re-applied with twenty app pull / twenty app apply. (#29050) by @FelixMalfait
- Workspace edits to an app's agents or skills are now kept as overrides and survive the app's next sync. (#29051) by @FelixMalfait
- AI agents can now preview campaign audience counts, send test emails, and schedule or trigger campaigns directly. (#29072) by @neo773
- Applications can now mark specific field actions (read, update) as permanently disabled for all roles. (#29084) by @charlesBochet
- The AI chat can now merge duplicate records, using the same logic as the Merge action in the app. (#29115) by @etiennejouan
- The inbox navigation badge now shows the count of unread open conversations, displayed as 99+ for large numbers. (#29133) by @bosiraphael
- Specific email domains can now be exempted from the per-user trial workspace limit. (#29147) by @etiennejouan
π Improvements & UX
- Logic functions running locally now start with the same environment as Lambda, so local test runs behave like deployed ones. (#28599) by @FelixMalfait
- Per-queue job priorities are replaced by a single shared default, simplifying queue management. (#28924) by @martmull
- FormFieldRow now accepts a custom content padding value; the existing 8px default is unchanged. (#28934) by @bosiraphael
- Workspace member record pages now show a full layout with details, tasks, companies, and opportunities instead of a blank page. (#28975) by @Weiko
- Account rows in App preferences now show the import progress percentage while a first sync is running. (#28997) by @ehconitin
- The per-member AI allowance in billing settings is now labeled 'Personal AI usage' everywhere. (#29009) by @etiennejouan
- Object-level disabled permission actions are now enforced when permissions are resolved, not just when grants are written. (#29011) by @charlesBochet
- Disconnecting or deleting an account now removes all linked app connections in the same account group. (#29015) by @ehconitin
- The log console Object filter no longer lists objects that never produce audit events. (#29016) by @martmull
- The CLI OAuth callback page is restored to its original styled card and now waits for the token exchange before reporting success. (#29022) by @Weiko
- Account sync status badges now appear next to the row menu, matching the legacy list layout. (#29026) by @ehconitin
- Emails and Calendar tabs on a built-in app page are hidden until the member has at least one account for that provider. (#29027) by @ehconitin
- Merging records no longer carries over the conflict priority from a previous merge, and hidden field values are no longer lost. (#29029) by @FelixMalfait
- Legacy plan columns on the billing page now show an 'Early' badge in purple with a tooltip explaining the grandfathered price. (#29030) by @etiennejouan
- Vetted applications now have auto-upgrade enabled by default on new installs. (#29031) by @martmull
- The admin user page now has consistent section spacing and a cleaner data export table. (#29041) by @Bonapara
- Agent model configuration (web search, X search) and the isSystem flag now round-trip correctly through twenty app pull and apply. (#29045) by @FelixMalfait
- Account and connection list sections now use the standard skeleton loader while loading. (#29057) by @ehconitin
- The Apps tab no longer shows a red status badge for apps the member has simply not connected. (#29060) by @ehconitin
- The Apps tab now shows a skeleton loader while installed apps are loading for the first time. (#29064) by @ehconitin
- xAI web and X search calls are now charged against AI credits, the same as other built-in search tools. (#29082) by @charlesBochet
- The Accounts tab shows a connect card for each available app when no accounts have been added yet. (#29086) by @ehconitin
- Removing a blocklisted address now re-imports messages and restarts calendar sync on idle channels. (#29104) by @neo773
- Note and rich text editor padding is back to what BlockNote had before the TipTap migration. (#29109) by @neo773
- The per-app preferences page now uses the same header, tab bar, and overview card layout as the workspace apps page. (#29111) by @ehconitin
- The Apps tab under Apps preferences now uses the same table, search, and ordering as the workspace Installed apps page. (#29112) by @ehconitin
- Note and rich text editor block styles now match what BlockNote showed before the TipTap migration. (#29113) by @neo773
π Bug fixes
- Sync no longer updates the timestamp on live companies when restoring soft-deleted ones during contact auto-creation. (#28579) by @Adithya9605
- Activity link options are disabled while existing links are loading, preventing duplicate links from being created. (#28592) by @saltcoffee
- Safari no longer shows an error toast when a network request is aborted by rapid keystrokes in composer fields. (#28664) by @siddiqueirshad
- Spreadsheet imports now survive partial failures: confirmed rows are kept and invalid ones remain editable for correction. (#28709) by @grootbro
- HTTP workflow requests now read the Content-Type header case-insensitively, and bodies with a value of false or 0 are no longer dropped. (#28738) by @grootbro
- Records inserted or updated in the optimistic cache now respect all declared sort fields, not just the first one. (#28741) by @grootbro
- Workflow version sync no longer stops when a workspace's version map is stale and missing a version that already exists. (#28743) by @grootbro
- Phone numbers with letters or impossible country lengths are now rejected instead of being silently truncated. (#28770) by @Prashaxt
- Pressing Enter on the focused Continue button during onboarding now advances to the next step. (#28795) by @ahmed-aneem
- Each app in the log console App filter now shows its own logo instead of a generic icon. (#29005) by @martmull
- Organization plan fallback prices on the billing page now correctly show $49/month and $39/month instead of $25/$19. (#29024) by @etiennejouan
- Installing an app that grants a recently added permission flag no longer fails on older workspaces that predate that flag. (#29046) by @FelixMalfait
- AI campaign drafts now use correct variable names such as {{name.firstName}} that the server actually accepts. (#29070) by @neo773
- Long campaign email bodies can now be scrolled; they were previously clipped and lower blocks were unreachable. (#29074) by @neo773
- The CLI now prints per-entity validation error details when twenty app apply fails, instead of a generic message. (#29078) by @etiennejouan
- Changing your profile email address now applies the same one-minute cooldown as the verification email resend flow. (#29093) by @charlesBochet
- Members holding an application's default role no longer get full permissions on objects where certain actions are disabled. (#29103) by @charlesBochet
- OAuth authorization state values up to 4096 characters are now accepted; long MCP client state strings were previously rejected. (#29108) by @ehconitin
- Unknown currency codes and lowercase codes (e.g. 'XYZ', 'usd') are now rejected on write instead of being stored silently. (#29126) by @etiennejouan
π§ Developer & API
- Workspaces can now register external MCP servers as metadata (name, URL, connection provider, isActive) for use by AI tools. (#28597) by @abdulrahmancodes
- App message channels can now declare folders (e.g. Front inboxes, Slack channels) that members choose to import in Settings. (#28986) by @FelixMalfait
- A new billingPlans GraphQL query is available. listPlans is deprecated; use billingPlans instead. (#29003) by @FelixMalfait
- twenty app apply no longer deletes workspace Custom application entities (UI-built agents, workflows) unless --prune is passed explicitly. (#29047) by @FelixMalfait
- IS_DEFERRED_WORKSPACE_MIGRATION_ACTIONS_ENABLED has been removed; deferred workspace migration actions are now always on. (#29081) by @charlesBochet
- Share the inbox SDK helpers with front components (#29088) by @bosiraphael
- A new feature-flag:update workspace command lets admins set a feature flag value on one, many, or all workspaces. (#29098) by @martmull
- Worker job logs now include workspace ID, application ID, and queue wait time per job, enabling per-tenant queue monitoring. (#29131) by @martmull
ποΈ Internal changes (73)
- Refresh pricing plans, comparison table and compare pages (#28629) by @etiennejouan
- Give integration waits a generous budget and retry cold installs (#28729) by @martmull
- Share Lambda connection options (#28854) by @Weiko
- Share frontend vendor and shim build helpers (#28855) by @Weiko
- Add conversation assistant participation field (#28933) by @bosiraphael
- Attribute evaluation usage to its caller (#28935) by @bosiraphael
- Batch chat recipient permission checks (#28937) by @bosiraphael
- chore(security): bump vite 8 to 8.3.5 (#28956) by @BOHEUS
- chore(security): bump ip-address to 10.7.4 (#28957) by @BOHEUS
- chore(security): bump zod 4 to 4.6.7 (#28959) by @BOHEUS
- chore(security): refresh Scalar to drop @ai-sdk/provider-utils 4.0.5 (#28965) by @BOHEUS
- chore(security): bump sanitize-html to 2.18.0 (#28966) by @BOHEUS
- chore(security): bump @graphql-tools/utils to 12.1.0 (#28970) by @BOHEUS
- Rename seed dependencies to standard application dependencies (#28981) by @Weiko
- Bump NestJS to 12 (#28988) by @charlesBochet
- fix(server): drop twenty-server import from version bump script (#28989) by @etiennejouan
- Fix two integration test flakes: msw passthrough EINVAL and orphaned messages (#28993) by @martmull
- Name the local dependency folder after a hash of the yarn.lock checksum (#28995) by @prastoin
- Ship the yarn.lock in published app packages and store it at install (#28998) by @prastoin
- fix(server): pin workspace app twenty-ui to the release already on npm (#29000) by @etiennejouan
- Validate application dependency checksums against the stored files (#29001) by @prastoin
- Bump Teams app to 1.0.0 (#29004) by @ehconitin
- Fix twenty-ui version expectation in default application package spec (#29010) by @prastoin
- fix(sdk): regenerate metadata client for billingPlans (#29013) by @etiennejouan
- Compile one frontend component with bounded resources (#29017) by @Weiko
- Run mintlify through npx and drop its resolutions (#29020) by @charlesBochet
- Open i18n pull requests with the Twenty PR app (#29028) by @prastoin
- Stop integration tests from depending on seed companies other suites delete (#29033) by @charlesBochet
- Stop using writability, sharing reach and non-private readability in favor of disabled object permission actions (#29034) by @charlesBochet
- Read the Twenty PR app key from repo secrets (#29036) by @prastoin
- i18n - website translations (#29037) by @twenty-pr
- i18n - translations (#29038) by @twenty-pr
- i18n - website translations (#29039) by @twenty-pr
- i18n - translations (#29040) by @twenty-pr
- i18n - docs translations (#29043) by @twenty-pr
- Resolve src imports in example app tests on vite 8.1 (#29044) by @FelixMalfait
- i18n - translations (#29049) by @twenty-pr
- Bump nx to 23.3.1 and drop its resolutions (#29054) by @charlesBochet
- i18n - translations (#29055) by @twenty-pr
- i18n - docs translations (#29058) by @twenty-pr
- Remove the
as anycasts in file-upload.controller.ts (#29061) by @twenty-pr-author - Rename twenty-mcp-helper.const.ts to twenty-mcp-helper.constant.ts (#29062) by @twenty-pr-author
- i18n - translations (#29063) by @twenty-pr
- Let callers run deferred workspace migration actions in process (#29066) by @charlesBochet
- i18n - docs translations (#29068) by @twenty-pr
- i18n - translations (#29069) by @twenty-pr
- i18n - translations (#29071) by @twenty-pr
- Bump sanitize-html to 2.18.1 and @graphql-tools/schema to 10.1.5 (#29073) by @charlesBochet
- Clear zod and react-router advisories in twenty-apps lockfiles (#29075) by @charlesBochet
- i18n - translations (#29076) by @twenty-pr
- Bump googleapis to 188 and drop the googleapis-common resolution (#29077) by @charlesBochet
- i18n - translations (#29079) by @twenty-pr
- Bump @nestjs/cli and @nestjs/schematics to 12 and drop the @angular-devkit/core resolution (#29080) by @charlesBochet
- i18n - translations (#29087) by @twenty-pr
- i18n - docs translations (#29092) by @twenty-pr
- i18n - translations (#29094) by @twenty-pr
- Bump graphql-codegen to 7 and drop @graphql-tools/utils 11 (#29096) by @charlesBochet
- Move call-recorder to twenty-ui 2.x (#29100) by @charlesBochet
- Export agent modelConfiguration and isSystem for twenty app pull (#29102) by @charlesBochet
- Move fireflies to twenty-ui 2.x (#29105) by @charlesBochet
- Move companion to twenty-ui 2.x (#29106) by @charlesBochet
- Drop the @types/qs resolution (#29107) by @charlesBochet
- Move granola to twenty-ui 2.x (#29110) by @charlesBochet
- Add website release notes for 2.41 to 2.52 (#29120) by @Bonapara
- i18n - website translations (#29122) by @twenty-pr
- chore(security): refresh http-cache-semantics to 4.3.0 and qs to 6.16.1 in lockfiles (#29123) by @charlesBochet
- Fix the Dropdown gallery story Shift+Tab race (#29125) by @bosiraphael
- i18n - docs translations (#29130) by @twenty-pr
- Move the validation error formatter next to its exception (#29135) by @FelixMalfait
- i18n - translations (#29136) by @twenty-pr
- i18n - translations (#29146) by @twenty-pr
- i18n - translations (#29153) by @twenty-pr
- i18n - docs translations (#29154) by @twenty-pr
π New contributors
- @Adithya9605 made their first contribution in #28579
- @siddiqueirshad made their first contribution in #28664
- @saltcoffee made their first contribution in #28592
- @arnavsingh0418 made their first contribution in #28658
- @ahmed-aneem made their first contribution in #28795
Full changelog (148 PRs)
- Only restore soft-deleted companies on contact auto-creation (#28579) by @Adithya9605
- fix: activity link toggling before existing links finish loading (#28592) by @saltcoffee
- Add mcpServer syncable metadata entity with GraphQL CRUD (#28597) by @abdulrahmancodes
- Align local logic function runtime with Lambda (#28599) by @FelixMalfait
- Refresh pricing plans, comparison table and compare pages (#28629) by @etiennejouan
- Resolve select form fields of application workflows by universal iden⦠(#28658) by @arnavsingh0418
- fix(front): match both cancel spellings and suppress aborted network errors in promise rejection toast (#28664) by @siddiqueirshad
- fix(front): preserve spreadsheet imports after submission errors (#28709) by @grootbro
- Give integration waits a generous budget and retry cold installs (#28729) by @martmull
- fix(server): honor Content-Type and preserve falsy HTTP bodies (#28738) by @grootbro
- fix(front): honor all sort fields in optimistic record updates (#28741) by @grootbro
- fix(server): refresh stale workflow version maps before sync (#28743) by @grootbro
- Fix phone number validation (#28764) (#28770) by @Prashaxt
- fix(onboarding): enable Enter key on focused Continue button (closes #28794) (#28795) by @ahmed-aneem
- Share Lambda connection options (#28854) by @Weiko
- Share frontend vendor and shim build helpers (#28855) by @Weiko
- Match inbox channel navigation (#28868) by @bosiraphael
- Replace per-queue job priorities with a shared default (#28924) by @martmull
- Add conversation assistant participation field (#28933) by @bosiraphael
- Allow custom FormFieldRow content padding (#28934) by @bosiraphael
- Attribute evaluation usage to its caller (#28935) by @bosiraphael
- Export application workflows for twenty app pull (#28936) by @FelixMalfait
- Batch chat recipient permission checks (#28937) by @bosiraphael
- chore(security): bump vite 8 to 8.3.5 (#28956) by @BOHEUS
- chore(security): bump ip-address to 10.7.4 (#28957) by @BOHEUS
- chore(security): bump zod 4 to 4.6.7 (#28959) by @BOHEUS
- chore(security): refresh Scalar to drop @ai-sdk/provider-utils 4.0.5 (#28965) by @BOHEUS
- chore(security): bump sanitize-html to 2.18.0 (#28966) by @BOHEUS
- chore(security): bump @azure/msal-node to 7.1.0 (#28969) by @BOHEUS
- chore(security): bump @graphql-tools/utils to 12.1.0 (#28970) by @BOHEUS
- Export application agents and skills for twenty app pull (#28971) by @FelixMalfait
- fix: add workspace member record page and backfill relations (#28975) by @Weiko
- feat(captcha): require captcha on workspace creation and enforce a minimum score (#28977) by @etiennejouan
- Rename seed dependencies to standard application dependencies (#28981) by @Weiko
- Let applications disable object permission actions on their objects (#28985) by @charlesBochet
- Let apps declare message folders on their channels (#28986) by @FelixMalfait
- Split Apps preferences into Apps and Accounts tabs (#28987) by @ehconitin
- Bump NestJS to 12 (#28988) by @charlesBochet
- fix(server): drop twenty-server import from version bump script (#28989) by @etiennejouan
- Fix two integration test flakes: msw passthrough EINVAL and orphaned messages (#28993) by @martmull
- Name the local dependency folder after a hash of the yarn.lock checksum (#28995) by @prastoin
- Show the import progress of an account on the App preferences rows (#28997) by @ehconitin
- Ship the yarn.lock in published app packages and store it at install (#28998) by @prastoin
- fix(server): pin workspace app twenty-ui to the release already on npm (#29000) by @etiennejouan
- Validate application dependency checksums against the stored files (#29001) by @prastoin
- chore: bump version to 2.53.0 (#29002) by @etiennejouan
- Add a billingPlans query and deprecate listPlans (#29003) by @FelixMalfait
- Bump Teams app to 1.0.0 (#29004) by @ehconitin
- fix(front): show application logo in log console app filter (#29005) by @martmull
- chore(billing): rename user credits to Personal AI usage (#29009) by @etiennejouan
- Fix twenty-ui version expectation in default application package spec (#29010) by @prastoin
- Enforce disabled object permission actions per principal (#29011) by @charlesBochet
- fix(sdk): regenerate metadata client for billingPlans (#29013) by @etiennejouan
- feat(roles): gate custom role creation behind the CUSTOM_ROLES entitlement (#29014) by @etiennejouan
- Make Disconnect and Delete act on the whole account group (#29015) by @ehconitin
- Hide non-audit-logged objects from the log console object filter (#29016) by @martmull
- Compile one frontend component with bounded resources (#29017) by @Weiko
- Run mintlify through npx and drop its resolutions (#29020) by @charlesBochet
- Restore CLI OAuth completion page and wait for token exchange (#29022) by @Weiko
- Make Ask AI the default command menu fallback (#29023) by @Bonapara
- fix(billing): set Organization fallback prices to $49 monthly and $39 yearly (#29024) by @etiennejouan
- Place the account sync status next to the row menu (#29026) by @ehconitin
- Show the Emails and Calendar tabs of a built-in app only once a channel exists (#29027) by @ehconitin
- Open i18n pull requests with the Twenty PR app (#29028) by @prastoin
- Fix merge bugs: stale priority, hidden-field data loss, permission gating (#29029) by @FelixMalfait
- feat(billing): show Early tag with tooltip on legacy plan column (#29030) by @etiennejouan
- Default application autoUpgrade to true for vetted applications (#29031) by @martmull
- Stop integration tests from depending on seed companies other suites delete (#29033) by @charlesBochet
- Stop using writability, sharing reach and non-private readability in favor of disabled object permission actions (#29034) by @charlesBochet
- Read the Twenty PR app key from repo secrets (#29036) by @prastoin
- i18n - website translations (#29037) by @twenty-pr
- i18n - translations (#29038) by @twenty-pr
- i18n - website translations (#29039) by @twenty-pr
- i18n - translations (#29040) by @twenty-pr
- Fix admin user page spacing and simplify the data export table (#29041) by @Bonapara
- Allow merging records on objects without duplicate criteria (#29042) by @FelixMalfait
- i18n - docs translations (#29043) by @twenty-pr
- Resolve src imports in example app tests on vite 8.1 (#29044) by @FelixMalfait
- Sync agent modelConfiguration and make isSystem display only (#29045) by @FelixMalfait
- Backfill standard permission flags in existing workspaces (#29046) by @FelixMalfait
- Only delete workspace Custom application entities on an explicit --prune (#29047) by @FelixMalfait
- Pull and apply email and calendar workflow steps (#29048) by @FelixMalfait
- i18n - translations (#29049) by @twenty-pr
- Pull and apply workflows built in the workflow builder (#29050) by @FelixMalfait
- Give agents and skills the override and archive model of objects (#29051) by @FelixMalfait
- Drop isCustom from agent, skill, view, index and agentChatChannel (#29052) by @FelixMalfait
- Bump nx to 23.3.1 and drop its resolutions (#29054) by @charlesBochet
- i18n - translations (#29055) by @twenty-pr
- Use the standard section skeleton for the account and connection tables (#29057) by @ehconitin
- i18n - docs translations (#29058) by @twenty-pr
- Show an Apps tab status only when a connection is broken (#29060) by @ehconitin
- Remove the
as anycasts in file-upload.controller.ts (#29061) by @twenty-pr-author - Rename twenty-mcp-helper.const.ts to twenty-mcp-helper.constant.ts (#29062) by @twenty-pr-author
- i18n - translations (#29063) by @twenty-pr
- Show the section skeleton while the Apps tab loads installed apps (#29064) by @ehconitin
- Let callers run deferred workspace migration actions in process (#29066) by @charlesBochet
- i18n - docs translations (#29068) by @twenty-pr
- i18n - translations (#29069) by @twenty-pr
- Only advertise campaign variables the resolver accepts (#29070) by @neo773
- i18n - translations (#29071) by @twenty-pr
- Add campaign preview, test send, send and suppression tools for AI and MCP (#29072) by @neo773
- Bump sanitize-html to 2.18.1 and @graphql-tools/schema to 10.1.5 (#29073) by @charlesBochet
- Let long campaign email bodies scroll (#29074) by @neo773
- Clear zod and react-router advisories in twenty-apps lockfiles (#29075) by @charlesBochet
- i18n - translations (#29076) by @twenty-pr
- Bump googleapis to 188 and drop the googleapis-common resolution (#29077) by @charlesBochet
- fix(cli): surface metadata validation errors in command output (#29078) by @etiennejouan
- i18n - translations (#29079) by @twenty-pr
- Bump @nestjs/cli and @nestjs/schematics to 12 and drop the @angular-devkit/core resolution (#29080) by @charlesBochet
- Remove the IS_DEFERRED_WORKSPACE_MIGRATION_ACTIONS_ENABLED feature flag (#29081) by @charlesBochet
- Bill xAI x_search calls against AI credits (#29082) by @charlesBochet
- Let applications disable field permission actions on their fields (#29084) by @charlesBochet
- Offer one connect card per app when the Accounts tab is empty (#29086) by @ehconitin
- i18n - translations (#29087) by @twenty-pr
- Share the inbox SDK helpers with front components (#29088) by @bosiraphael
- i18n - docs translations (#29092) by @twenty-pr
- Apply the verification email cooldown to email updates (#29093) by @charlesBochet
- i18n - translations (#29094) by @twenty-pr
- Bump graphql-codegen to 7 and drop @graphql-tools/utils 11 (#29096) by @charlesBochet
- Add feature-flag:update workspace command (#29098) by @martmull
- Move call-recorder to twenty-ui 2.x (#29100) by @charlesBochet
- Export agent modelConfiguration and isSystem for twenty app pull (#29102) by @charlesBochet
- Keep disabled actions off for members holding an application's default role (#29103) by @charlesBochet
- Re-import messages and events on idle channels when a handle is unblocked (#29104) by @neo773
- Move fireflies to twenty-ui 2.x (#29105) by @charlesBochet
- Move companion to twenty-ui 2.x (#29106) by @charlesBochet
- Drop the @types/qs resolution (#29107) by @charlesBochet
- fix(oauth): raise authorizeApp state max length to 4096 (#29108) by @ehconitin
- Restore pre-TipTap note editor spacing (#29109) by @neo773
- Move granola to twenty-ui 2.x (#29110) by @charlesBochet
- Put the member app preferences page on a shared app detail layout (#29111) by @ehconitin
- Render the member Apps tab with the shared installed applications table (#29112) by @ehconitin
- Restore pre-TipTap note editor block styles (#29113) by @neo773
- feat(ai): add merge_many database tool for duplicate records (#29115) by @etiennejouan
- Add website release notes for 2.41 to 2.52 (#29120) by @Bonapara
- i18n - website translations (#29122) by @twenty-pr
- chore(security): refresh http-cache-semantics to 4.3.0 and qs to 6.16.1 in lockfiles (#29123) by @charlesBochet
- Fix the Dropdown gallery story Shift+Tab race (#29125) by @bosiraphael
- fix(currency-field): reject unknown currency codes on currency fields (#29126) by @etiennejouan
- i18n - docs translations (#29130) by @twenty-pr
- feat(worker): log queue wait per tenant and record job duration (#29131) by @martmull
- Show the unread inbox count in the blue badge (#29133) by @bosiraphael
- Move the validation error formatter next to its exception (#29135) by @FelixMalfait
- i18n - translations (#29136) by @twenty-pr
- i18n - translations (#29146) by @twenty-pr
- feat(billing): exempt email domains from the trial workspace limit (#29147) by @etiennejouan
- i18n - translations (#29153) by @twenty-pr
- i18n - docs translations (#29154) by @twenty-pr
Full Changelog: twenty/v2.52.0...twenty/v2.53.1