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