Twenty logo

Twenty

The open alternative to Salesforce, designed for AI

Alternative to: salesforce, hubspot, pipedrive, zoho crm

Twenty screenshot

About Versions (125)

twenty/v2.44.0

2026-10-01

⚠️ Breaking changes

  • feat(workflow): record each agent step execution as a conversation (#26765) by @FelixMalfait
  • feat(workflow): let an agent step pause on a question until someone answers (#26766) by @FelixMalfait
  • [BREAKING_CHANGE] Declare application registration variables through the manifest only (#26856) by @prastoin
  • Start a record’s conversation from the record, and show a conversation’s records in its header (#26873) by @FelixMalfait
  • Move product URLs out of twenty-ui (#26908) by @bosiraphael

✨ New features

  • feat: knip (#26351) by @BOHEUS
  • feat(slack): report a broken connection through the app health check (#26414) by @abdulrahmancodes
  • feat(ui): no unchecked indexed access twenty UI (#26493) by @BOHEUS
  • feat(shared): no unchecked indexed access twenty-shared (#26495) by @BOHEUS
  • feat(ai): add the Ask object for work waiting on a person (#26767) by @FelixMalfait
  • feat(workflow): a form step opens an Ask that its submission answers (#26768) by @FelixMalfait
  • feat(server): make the OTLP metrics temporality configurable (#26857) by @etiennejouan
  • feat(sdk): expose programmatic application client generation (#26889) by @Weiko
  • feat(mcp): add opt-in direct tool mode (?mode=direct) (#26892) by @UditSinghChauhan
  • feat(ai): let chat conversations be managed through the record API (#26894) by @FelixMalfait
  • feat(ai): answer every Ask through answerAsk, let agents propose emails and wait on several Asks at once (#26930) by @FelixMalfait

💅 Improvements & UX

  • Support matchMedia in front components (#24160) by @bosiraphael
  • Add List My Teams Transcripts action backed by a Microsoft Graph client (#26315) by @ehconitin
  • Migrate existing recording tab defaults to Transcript (#26319) by @ehconitin
  • [4/5] Show a record’s AI conversations in a Conversations tab behind IS_CONVERSATIONS_TAB_ENABLED (#26332) by @FelixMalfait
  • Standardize twenty-shared page-layout type filenames (#26370) by @BOHEUS
  • Require the application role to cover every agent role (#26413) by @abdulrahmancodes
  • [rich-text] Keep formatting in rich text written by workflows (#26445) by @Bonapara
  • Polyfill matches, closest and querySelector in the front component worker (#26516) by @bosiraphael
  • Reflect remote element properties in getAttribute (#26517) by @bosiraphael
  • Polyfill Node.contains, compareDocumentPosition and getRootNode in the front component worker (#26518) by @bosiraphael
  • Support form state and focus in front components (#26519) by @bosiraphael
  • Respect account sync permissions in onboarding (#26594) by @bosiraphael
  • Run the call recorder calendar event reconcile in batch mode (#26609) by @ehconitin
  • Reconcile call recorder meetings from batched reads (#26621) by @ehconitin
  • Add email campaign guides (#26629) by @neo773
  • Add the schema for campaign click tracking (#26636) by @neo773
  • Rewrite campaign links through Twenty and serve the redirect (#26637) by @neo773
  • Record campaign clicks (#26638) by @neo773
  • Let recipients opt out of click tracking (#26639) by @neo773
  • Delete indexes on deleted fields and clean up field-less index metadata (#26714) by @FelixMalfait
  • Fix e2e tests hidden behind the revoked shared session (#26719) by @FelixMalfait
  • Type the e2e window env and assert on workflow creation errors (#26730) by @FelixMalfait
  • Skip workspaces deleted during long-running upgrades (#26741) by @FelixMalfait
  • Remove legacy record sharing rollout policy (#26756) by @FelixMalfait
  • Use native workspace records throughout chat history (#26760) by @FelixMalfait
  • Use workspace members for live chat ownership (#26763) by @FelixMalfait
  • [Onboarding 1/10] Track credit rewards (#26778) by @Bonapara
  • [Onboarding 2/10] Raise trial credits (#26779) by @Bonapara
  • [Onboarding 3/10] Add credits pill (#26780) by @Bonapara
  • [Onboarding 6/10] Add skip dialogs (#26781) by @Bonapara
  • [Onboarding 7/10] Count credits live (#26782) by @Bonapara
  • [Onboarding 8/10] Redesign plan step (#26783) by @Bonapara
  • [Onboarding 8/8] Stabilize avatar colors (#26785) by @Bonapara
  • Serve the core workflow show page at /workflow/:id (#26788) by @thomtrp
  • Let workflows update custom fields on email and calendar records (#26789) by @Bonapara
  • Complete UI documentation and presentational previews (#26791) by @bosiraphael
  • Size auto-width Select dropdowns to the trigger (#26792) by @bosiraphael
  • Docs update (#26793) by @BOHEUS
  • Migrate settings filters, menus and pickers (#26794) by @bosiraphael
  • Add files, records and skills from the AI chat + menu (#26797) by @Bonapara
  • Anonymize workspace names and IDs in upgrade:status output by default (#26799) by @prastoin
  • Make UI utilities safe without browser globals (#26802) by @bosiraphael
  • Make retained UI strings overridable (#26804) by @bosiraphael
  • Complete RTL behavior in retained UI components (#26805) by @bosiraphael
  • Migrate anchored command and widget menus (#26806) by @bosiraphael
  • Fix CI Knip on main: delete unused agent history storage state re-exports (#26807) by @FelixMalfait
  • Add status check to ci-knip (#26810) by @prastoin
  • Drag and drop blocks in the campaign editor (#26812) by @neo773
  • Call recorder: cancel the bot of a meeting whose calendar event was destroyed (#26815) by @vladbisceanu
  • Call recorder: reschedule a re-requested bot at once after a confirmed cancel (#26818) by @vladbisceanu
  • Fix core workflow QA feedback on actions, versions, runs and index (#26820) by @thomtrp
  • Allow duplicating application-owned core workflows (#26828) by @thomtrp
  • Fetch the latest S3 frontend HTML for each document request (#26835) by @FelixMalfait
  • Show Untitled, plain visibility and a page skeleton on core workflow pages (#26836) by @thomtrp
  • merge queue ci knip (#26837) by @prastoin
  • [rich-text] Compact record creation rich-text input, keeping BlockNote (#26842) by @thomtrp
  • Stop enabling IMAP4rev2 on IMAP connections (#26843) by @neo773
  • Fix call recorder integration test token after generateApplicationToken removal (#26855) by @ehconitin
  • Align on-demand logic function runs with the workflow action rule (#26860) by @prastoin
  • [5/5] Let the AI chat attach its conversation to the records it is about (#26862) by @FelixMalfait
  • [Onboarding 4/10] Add credits popover (#26871) by @Bonapara
  • [Onboarding 5/10] Fit credits pill on phones (#26872) by @Bonapara
  • Animate the first AI chat message out of the composer (#26890) by @Bonapara
  • Restrict forwarded request headers on logic function route triggers (#26891) by @prastoin
  • Refresh twenty-ui README (#26896) by @bosiraphael
  • Migrate date pickers and field overlays (#26897) by @bosiraphael
  • Serve unsubscribe links from the server host when Cloudflare is not configured (#26898) by @neo773
  • Rename AI Chat and AI Workflow usage to Chats and Agents (#26899) by @Bonapara
  • Keep UI implementation exports private (#26900) by @bosiraphael
  • Validation rules (1/2): define and store rules (#26902) by @thomtrp
  • Validation rules (2/2): enforce rules on record writes (#26903) by @thomtrp
  • Animate the sidebar when switching between Home, AI and Settings (#26905) by @Bonapara
  • Rename expandable container to Collapsible (#26906) by @bosiraphael
  • Call recorder: stop recovery from creating twin Recall bots (#26909) by @ehconitin
  • Deny settings access to applications without a default role instead of throwing a 500 (#26910) by @thomtrp
  • Keep notification countdowns in Toast (#26912) by @bosiraphael
  • Replace CircularProgressBar with Loader (#26916) by @bosiraphael
  • Keep where objects built in another realm, and refuse a where condition the builder cannot read (#26919) by @FelixMalfait
  • Replace ClickToActionLink with link-style Button (#26921) by @bosiraphael
  • Require registration ownership when exporting applications (#26928) by @Weiko
  • Clean up the conversations, Ask and 2.44 chat-thread code (#26931) by @FelixMalfait
  • Replace the principal-type auth guards with AuthPrincipalGuard (#26936) by @prastoin
  • Move coming-soon labels out of Button (#26951) by @bosiraphael
  • Move the chat page onto the record model (#26956) by @FelixMalfait
  • Stop the core workflow index from swapping its empty state for a bare table (#26959) by @thomtrp
  • Render the chat page as the chat record page (#26960) by @FelixMalfait
  • Consolidate card choices in Radio (#26966) by @bosiraphael
  • Replace Info with InlineBanner (#26967) by @bosiraphael
  • Enforce intentional Twenty UI exports (#26971) by @bosiraphael
  • Stop global shortcuts firing while typing a campaign subject (#26975) by @neo773
  • Page running workflow runs in the 2.44 open-asks-for-pending-input command (#26984) by @FelixMalfait
  • Compose SearchInput with input primitives (#26986) by @bosiraphael
  • Move appearance choices into profile settings (#26987) by @bosiraphael
  • Replace inputAsk with pending tool calls on the conversation (#26988) by @FelixMalfait
  • Remap step variable references when duplicating a workflow (#26990) by @thomtrp
  • Move RoundedLink to the frontend (#26991) by @bosiraphael
  • Remove twenty-ui changelog (#26993) by @bosiraphael
  • Open record sharing in the side panel (#26995) by @FelixMalfait
  • Use native buttons for JSON and avatar actions (#26997) by @bosiraphael
  • Keep notes and tasks attached to nothing readable by every member (#27002) by @FelixMalfait

🐛 Bug fixes

  • fix(front): record page pagination on views sorted by a boolean field (#26500) by @BOHEUS
  • fix(twenty-orm): capture all deleted records in batch delete event payload (#26502) by @Mateidslx
  • fix(billing): identify subscription items by product key, not by quantity (#26635) by @etiennejouan
  • fix: limit record export concurrency across workers (#26665) by @Weiko
  • fix(ai-chat): show workspace-scoped AI limits and warn before the composer (#26674) by @etiennejouan
  • fix(upgrade): stop dry runs from executing instance commands (#26693) by @Weiko
  • fix(twenty-ui): keep IconButton tooltips on hover after loading or disabled changes (#26710) by @martmull
  • fix(ci): gate the secure integration suite with nx affected (#26717) by @FelixMalfait
  • fix(workflow): ignore empty-name normalization in drift checks (#26724) by @FelixMalfait
  • fix(workflow): make a private workflow’s runs private too (#26761) by @FelixMalfait
  • fix(mcp): support per-option grouping for multi-select fields (#26787) by @waelantar
  • fix: fall back to unconditional copy when S3 backend rejects CopySourceIfMatch (#26830) by @FelixMalfait
  • fix(ai): price multi-step turns step by step (#26882) by @etiennejouan
  • fix(billing): hide all operations option when a usage has a single operation (#26888) by @etiennejouan
  • fix(billing): skip the Stripe update when prices and seats are unchanged (#26907) by @etiennejouan
  • fix(workspace-cleaner): serialize workspace destruction on a dedicated queue (#26911) by @etiennejouan
  • fix(search): restrict ILIKE fallback to CJK input (#26926) by @Weiko
  • fix(ai): pass the thread record event service in the pending-question spec (#26927) by @FelixMalfait
  • fix(upgrade): reapply the usageLimit period reshape skipped by 2.38.x instances (#26958) by @etiennejouan
  • fix(ai-chat): stop failing replies on recovered tool errors and group AI SDK errors in Sentry (#26989) by @etiennejouan
  • fix(usage-limit): key quota counters on their limit value (#26996) by @etiennejouan
  • fix: keep chats and forms usable during workspace upgrades (#27005) by @FelixMalfait
  • fix(front): keep the timeline group bar behind the icons in RTL (#27007) by @almoghazaz-cell

🔧 Developer & API

  • Expose programmatic SDK build and typecheck APIs (#26824) by @Weiko
  • Load the chat list through the record API (#26957) by @FelixMalfait
🏗️ Internal changes (6)
  • refactor(ai): isolate agent history migration state from runtime (#26752) by @FelixMalfait
  • refactor(ai): remove transitional sender insert preparation (#26753) by @FelixMalfait
  • refactor(ai): retire runtime history routing and lifecycle state (#26754) by @FelixMalfait
  • test(ai): replay the archivedAt writability upgrade after the agent history spec rebuilds the chat objects (#26934) by @FelixMalfait
  • chore(front): remove Effect component tests (#26963) by @charlesBochet
  • test(apps): remove the unsupported icon from the function-execute fixture (#27008) by @Weiko

🎉 New contributors

Full changelog (165 PRs)
  • Support matchMedia in front components (#24160) by @bosiraphael
  • Add List My Teams Transcripts action backed by a Microsoft Graph client (#26315) by @ehconitin
  • Migrate existing recording tab defaults to Transcript (#26319) by @ehconitin
  • [4/5] Show a record’s AI conversations in a Conversations tab behind IS_CONVERSATIONS_TAB_ENABLED (#26332) by @FelixMalfait
  • feat: knip (#26351) by @BOHEUS
  • Standardize twenty-shared page-layout type filenames (#26370) by @BOHEUS
  • Require the application role to cover every agent role (#26413) by @abdulrahmancodes
  • feat(slack): report a broken connection through the app health check (#26414) by @abdulrahmancodes
  • [rich-text] Keep formatting in rich text written by workflows (#26445) by @Bonapara
  • feat(ui): no unchecked indexed access twenty UI (#26493) by @BOHEUS
  • feat(shared): no unchecked indexed access twenty-shared (#26495) by @BOHEUS
  • fix(front): record page pagination on views sorted by a boolean field (#26500) by @BOHEUS
  • fix(twenty-orm): capture all deleted records in batch delete event payload (#26502) by @Mateidslx
  • Polyfill matches, closest and querySelector in the front component worker (#26516) by @bosiraphael
  • Reflect remote element properties in getAttribute (#26517) by @bosiraphael
  • Polyfill Node.contains, compareDocumentPosition and getRootNode in the front component worker (#26518) by @bosiraphael
  • Support form state and focus in front components (#26519) by @bosiraphael
  • Respect account sync permissions in onboarding (#26594) by @bosiraphael
  • Run the call recorder calendar event reconcile in batch mode (#26609) by @ehconitin
  • Reconcile call recorder meetings from batched reads (#26621) by @ehconitin
  • Add email campaign guides (#26629) by @neo773
  • fix(billing): identify subscription items by product key, not by quantity (#26635) by @etiennejouan
  • Add the schema for campaign click tracking (#26636) by @neo773
  • Rewrite campaign links through Twenty and serve the redirect (#26637) by @neo773
  • Record campaign clicks (#26638) by @neo773
  • Let recipients opt out of click tracking (#26639) by @neo773
  • fix: limit record export concurrency across workers (#26665) by @Weiko
  • fix(ai-chat): show workspace-scoped AI limits and warn before the composer (#26674) by @etiennejouan
  • fix(upgrade): stop dry runs from executing instance commands (#26693) by @Weiko
  • fix(twenty-ui): keep IconButton tooltips on hover after loading or disabled changes (#26710) by @martmull
  • i18n - translations (#26713) by @github-actions
  • Delete indexes on deleted fields and clean up field-less index metadata (#26714) by @FelixMalfait
  • fix(ci): gate the secure integration suite with nx affected (#26717) by @FelixMalfait
  • Fix e2e tests hidden behind the revoked shared session (#26719) by @FelixMalfait
  • chore: bump version to 2.44.0 (#26720) by @twenty-pr
  • fix(workflow): ignore empty-name normalization in drift checks (#26724) by @FelixMalfait
  • Type the e2e window env and assert on workflow creation errors (#26730) by @FelixMalfait
  • chore: sync AI model catalog (#26739) by @github-actions
  • Skip workspaces deleted during long-running upgrades (#26741) by @FelixMalfait
  • i18n - docs translations (#26747) by @github-actions
  • refactor(ai): isolate agent history migration state from runtime (#26752) by @FelixMalfait
  • refactor(ai): remove transitional sender insert preparation (#26753) by @FelixMalfait
  • refactor(ai): retire runtime history routing and lifecycle state (#26754) by @FelixMalfait
  • Remove legacy record sharing rollout policy (#26756) by @FelixMalfait
  • Use native workspace records throughout chat history (#26760) by @FelixMalfait
  • fix(workflow): make a private workflow’s runs private too (#26761) by @FelixMalfait
  • Use workspace members for live chat ownership (#26763) by @FelixMalfait
  • feat(workflow): record each agent step execution as a conversation (#26765) by @FelixMalfait
  • feat(workflow): let an agent step pause on a question until someone answers (#26766) by @FelixMalfait
  • feat(ai): add the Ask object for work waiting on a person (#26767) by @FelixMalfait
  • feat(workflow): a form step opens an Ask that its submission answers (#26768) by @FelixMalfait
  • chore: sync AI model catalog (#26771) by @github-actions
  • [Onboarding 1/10] Track credit rewards (#26778) by @Bonapara
  • [Onboarding 2/10] Raise trial credits (#26779) by @Bonapara
  • [Onboarding 3/10] Add credits pill (#26780) by @Bonapara
  • [Onboarding 6/10] Add skip dialogs (#26781) by @Bonapara
  • [Onboarding 7/10] Count credits live (#26782) by @Bonapara
  • [Onboarding 8/10] Redesign plan step (#26783) by @Bonapara
  • [Onboarding 8/8] Stabilize avatar colors (#26785) by @Bonapara
  • fix(mcp): support per-option grouping for multi-select fields (#26787) by @waelantar
  • Serve the core workflow show page at /workflow/:id (#26788) by @thomtrp
  • Let workflows update custom fields on email and calendar records (#26789) by @Bonapara
  • i18n - translations (#26790) by @github-actions
  • Complete UI documentation and presentational previews (#26791) by @bosiraphael
  • Size auto-width Select dropdowns to the trigger (#26792) by @bosiraphael
  • Docs update (#26793) by @BOHEUS
  • Migrate settings filters, menus and pickers (#26794) by @bosiraphael
  • Add files, records and skills from the AI chat + menu (#26797) by @Bonapara
  • Anonymize workspace names and IDs in upgrade:status output by default (#26799) by @prastoin
  • i18n - translations (#26801) by @github-actions
  • Make UI utilities safe without browser globals (#26802) by @bosiraphael
  • Make retained UI strings overridable (#26804) by @bosiraphael
  • Complete RTL behavior in retained UI components (#26805) by @bosiraphael
  • Migrate anchored command and widget menus (#26806) by @bosiraphael
  • Fix CI Knip on main: delete unused agent history storage state re-exports (#26807) by @FelixMalfait
  • Add status check to ci-knip (#26810) by @prastoin
  • Drag and drop blocks in the campaign editor (#26812) by @neo773
  • Call recorder: cancel the bot of a meeting whose calendar event was destroyed (#26815) by @vladbisceanu
  • Call recorder: reschedule a re-requested bot at once after a confirmed cancel (#26818) by @vladbisceanu
  • Fix core workflow QA feedback on actions, versions, runs and index (#26820) by @thomtrp
  • Expose programmatic SDK build and typecheck APIs (#26824) by @Weiko
  • i18n - translations (#26825) by @github-actions
  • i18n - translations (#26826) by @github-actions
  • Allow duplicating application-owned core workflows (#26828) by @thomtrp
  • fix: fall back to unconditional copy when S3 backend rejects CopySourceIfMatch (#26830) by @FelixMalfait
  • i18n - translations (#26833) by @github-actions
  • Fetch the latest S3 frontend HTML for each document request (#26835) by @FelixMalfait
  • Show Untitled, plain visibility and a page skeleton on core workflow pages (#26836) by @thomtrp
  • merge queue ci knip (#26837) by @prastoin
  • i18n - translations (#26839) by @github-actions
  • i18n - translations (#26840) by @github-actions
  • i18n - translations (#26841) by @github-actions
  • [rich-text] Compact record creation rich-text input, keeping BlockNote (#26842) by @thomtrp
  • Stop enabling IMAP4rev2 on IMAP connections (#26843) by @neo773
  • Fix call recorder integration test token after generateApplicationToken removal (#26855) by @ehconitin
  • [BREAKING_CHANGE] Declare application registration variables through the manifest only (#26856) by @prastoin
  • feat(server): make the OTLP metrics temporality configurable (#26857) by @etiennejouan
  • i18n - translations (#26858) by @github-actions
  • Align on-demand logic function runs with the workflow action rule (#26860) by @prastoin
  • i18n - translations (#26861) by @github-actions
  • [5/5] Let the AI chat attach its conversation to the records it is about (#26862) by @FelixMalfait
  • i18n - translations (#26863) by @github-actions
  • [Onboarding 4/10] Add credits popover (#26871) by @Bonapara
  • [Onboarding 5/10] Fit credits pill on phones (#26872) by @Bonapara
  • Start a record’s conversation from the record, and show a conversation’s records in its header (#26873) by @FelixMalfait
  • chore: sync AI model catalog (#26878) by @github-actions
  • fix(ai): price multi-step turns step by step (#26882) by @etiennejouan
  • fix(billing): hide all operations option when a usage has a single operation (#26888) by @etiennejouan
  • feat(sdk): expose programmatic application client generation (#26889) by @Weiko
  • Animate the first AI chat message out of the composer (#26890) by @Bonapara
  • Restrict forwarded request headers on logic function route triggers (#26891) by @prastoin
  • feat(mcp): add opt-in direct tool mode (?mode=direct) (#26892) by @UditSinghChauhan
  • feat(ai): let chat conversations be managed through the record API (#26894) by @FelixMalfait
  • Refresh twenty-ui README (#26896) by @bosiraphael
  • Migrate date pickers and field overlays (#26897) by @bosiraphael
  • Serve unsubscribe links from the server host when Cloudflare is not configured (#26898) by @neo773
  • Rename AI Chat and AI Workflow usage to Chats and Agents (#26899) by @Bonapara
  • Keep UI implementation exports private (#26900) by @bosiraphael
  • Validation rules (1/2): define and store rules (#26902) by @thomtrp
  • Validation rules (2/2): enforce rules on record writes (#26903) by @thomtrp
  • Animate the sidebar when switching between Home, AI and Settings (#26905) by @Bonapara
  • Rename expandable container to Collapsible (#26906) by @bosiraphael
  • fix(billing): skip the Stripe update when prices and seats are unchanged (#26907) by @etiennejouan
  • Move product URLs out of twenty-ui (#26908) by @bosiraphael
  • Call recorder: stop recovery from creating twin Recall bots (#26909) by @ehconitin
  • Deny settings access to applications without a default role instead of throwing a 500 (#26910) by @thomtrp
  • fix(workspace-cleaner): serialize workspace destruction on a dedicated queue (#26911) by @etiennejouan
  • Keep notification countdowns in Toast (#26912) by @bosiraphael
  • Replace CircularProgressBar with Loader (#26916) by @bosiraphael
  • Keep where objects built in another realm, and refuse a where condition the builder cannot read (#26919) by @FelixMalfait
  • Replace ClickToActionLink with link-style Button (#26921) by @bosiraphael
  • fix(search): restrict ILIKE fallback to CJK input (#26926) by @Weiko
  • fix(ai): pass the thread record event service in the pending-question spec (#26927) by @FelixMalfait
  • Require registration ownership when exporting applications (#26928) by @Weiko
  • feat(ai): answer every Ask through answerAsk, let agents propose emails and wait on several Asks at once (#26930) by @FelixMalfait
  • Clean up the conversations, Ask and 2.44 chat-thread code (#26931) by @FelixMalfait
  • test(ai): replay the archivedAt writability upgrade after the agent history spec rebuilds the chat objects (#26934) by @FelixMalfait
  • Replace the principal-type auth guards with AuthPrincipalGuard (#26936) by @prastoin
  • chore: sync AI model catalog (#26950) by @github-actions
  • Move coming-soon labels out of Button (#26951) by @bosiraphael
  • Move the chat page onto the record model (#26956) by @FelixMalfait
  • Load the chat list through the record API (#26957) by @FelixMalfait
  • fix(upgrade): reapply the usageLimit period reshape skipped by 2.38.x instances (#26958) by @etiennejouan
  • Stop the core workflow index from swapping its empty state for a bare table (#26959) by @thomtrp
  • Render the chat page as the chat record page (#26960) by @FelixMalfait
  • chore(front): remove Effect component tests (#26963) by @charlesBochet
  • Consolidate card choices in Radio (#26966) by @bosiraphael
  • Replace Info with InlineBanner (#26967) by @bosiraphael
  • Enforce intentional Twenty UI exports (#26971) by @bosiraphael
  • Stop global shortcuts firing while typing a campaign subject (#26975) by @neo773
  • Page running workflow runs in the 2.44 open-asks-for-pending-input command (#26984) by @FelixMalfait
  • Compose SearchInput with input primitives (#26986) by @bosiraphael
  • Move appearance choices into profile settings (#26987) by @bosiraphael
  • Replace inputAsk with pending tool calls on the conversation (#26988) by @FelixMalfait
  • fix(ai-chat): stop failing replies on recovered tool errors and group AI SDK errors in Sentry (#26989) by @etiennejouan
  • Remap step variable references when duplicating a workflow (#26990) by @thomtrp
  • Move RoundedLink to the frontend (#26991) by @bosiraphael
  • Remove twenty-ui changelog (#26993) by @bosiraphael
  • Open record sharing in the side panel (#26995) by @FelixMalfait
  • fix(usage-limit): key quota counters on their limit value (#26996) by @etiennejouan
  • Use native buttons for JSON and avatar actions (#26997) by @bosiraphael
  • Keep notes and tasks attached to nothing readable by every member (#27002) by @FelixMalfait
  • fix: keep chats and forms usable during workspace upgrades (#27005) by @FelixMalfait
  • fix(front): keep the timeline group bar behind the icons in RTL (#27007) by @almoghazaz-cell
  • test(apps): remove the unsupported icon from the function-execute fixture (#27008) by @Weiko

Full Changelog: https://github.com/twentyhq/twenty/compare/twenty/v2.43.0…twenty/v2.44.0