twenty/v2.49.0
twentyhq/twentytwenty/v2.49.0Oct 19, 2026by twenty-pr[bot]
Upgrading?
AI Summary
This release focuses on enhancing AI capabilities and agent interactions, including a new one-turn engine and emoji reactions. It also introduces significant workflow stability improvements, UI/UX refinements, and exposes new developer tools like defineWorkflow in the SDK.
Key Highlights
- Ada and agents can now react to messages with emojis.
- User credits are now prioritized for AI chat and web search over workspace credits.
- The SDK now exposes defineWorkflow for easier workflow creation.
- Recent chats in the AI inbox drawer are now capped at 5.
- App widgets no longer have a frame border.
Breaking Changes
- User credits are now spent on AI chat and web search before workspace credits.
- Ada and agents can react to messages with an emoji.
- PhoneCountryPicker composition has been unified.
New Features
- Carry partner attribution (?via=) to app sign-up links.
- Simplify app owner installation statistics.
- Add app auto-update installation counts.
- Add application credit usage tracking with ClickHouse query caching.
Full Release Notes
<!-- generated-release-notes v1 --> ## ⚠️ Breaking changes - [BREAKING_CHANGE] feat(usage): spend user credits on AI chat and web search before workspace credits (server) ([#27944](https://github.com/twentyhq/twenty/pull/27944)) by @etiennejouan - [BREAKING_CHANGE] Let Ada and agents react to messages with an emoji ([#28124](https://github.com/twentyhq/twenty/pull/28124)) by @FelixMalfait - Unify PhoneCountryPicker composition ([#28169](https://github.com/twentyhq/twenty/pull/28169)) by @bosiraphael ## ✨ New features - feat(website): carry ?via= partner attribution to app sign-up links ([#28157](https://github.com/twentyhq/twenty/pull/28157)) by @etiennejouan - feat: simplify app owner installation statistics (1/4) ([#28203](https://github.com/twentyhq/twenty/pull/28203)) by @martmull - feat: add app auto-update installation counts (2/4) ([#28204](https://github.com/twentyhq/twenty/pull/28204)) by @martmull - feat: add application credit usage with ClickHouse query caching (3/4) ([#28205](https://github.com/twentyhq/twenty/pull/28205)) by @martmull ## 💅 Improvements & UX - Show import progress on connected accounts ([#27491](https://github.com/twentyhq/twenty/pull/27491)) by @neo773 - Compute workflow output schemas at the write boundary and make create_complete_workflow atomic ([#27774](https://github.com/twentyhq/twenty/pull/27774)) by @FelixMalfait - Store workflow and chart record filters as field references ([#27777](https://github.com/twentyhq/twenty/pull/27777)) by @FelixMalfait - Let connection providers declare a USER or WORKSPACE scope ([#27796](https://github.com/twentyhq/twenty/pull/27796)) by @ehconitin - Fix front component layout measurements ([#27807](https://github.com/twentyhq/twenty/pull/27807)) by @bosiraphael - Make logic function trigger job fan-out idempotent across retries ([#27953](https://github.com/twentyhq/twenty/pull/27953)) by @charlesBochet - Fix date-sorted pagination skipping or duplicating records ([#27977](https://github.com/twentyhq/twenty/pull/27977)) by @Weiko - Add Dropdown.SelectionGroup ([#27990](https://github.com/twentyhq/twenty/pull/27990)) by @bosiraphael - Remove the IS_APPLICATION_WORKFLOWS_ENABLED feature flag ([#28003](https://github.com/twentyhq/twenty/pull/28003)) by @thomtrp - Share calendar events across calendar channels ([#28017](https://github.com/twentyhq/twenty/pull/28017)) by @neo773 - Remove OverflowingList's layout check and document the Slider Base UI issue ([#28025](https://github.com/twentyhq/twenty/pull/28025)) by @bosiraphael - Clean up twenty-ui overrides on lists, icons, navigation and chat ([#28062](https://github.com/twentyhq/twenty/pull/28062)) by @bosiraphael - Agent engine: one turn engine for chat and background agents, background runs in a job ([#28076](https://github.com/twentyhq/twenty/pull/28076)) by @FelixMalfait - Mention Ada in chats and let members turn her off ([#28086](https://github.com/twentyhq/twenty/pull/28086)) by @FelixMalfait - Point the record creation form at blocked fields and keep its shortcuts working ([#28108](https://github.com/twentyhq/twenty/pull/28108)) by @thomtrp - Record published app versions ([#28128](https://github.com/twentyhq/twenty/pull/28128)) by @martmull - Let members send inbox messages when no AI provider is configured ([#28136](https://github.com/twentyhq/twenty/pull/28136)) by @FelixMalfait - Drop the frame border around app widgets ([#28146](https://github.com/twentyhq/twenty/pull/28146)) by @ehconitin - Stop fetching private events ([#28151](https://github.com/twentyhq/twenty/pull/28151)) by @BOHEUS - Unify CurrencyPicker shorthand and parts ([#28156](https://github.com/twentyhq/twenty/pull/28156)) by @bosiraphael - Unify CountrySelect shorthand and parts ([#28160](https://github.com/twentyhq/twenty/pull/28160)) by @bosiraphael - Let keyboard users focus and open relation fields in forms ([#28161](https://github.com/twentyhq/twenty/pull/28161)) by @thomtrp - Replace Lingui skip comments with doNotTranslate() ([#28168](https://github.com/twentyhq/twenty/pull/28168)) by @charlesBochet - Rename connected account visibility to scope ([#28172](https://github.com/twentyhq/twenty/pull/28172)) by @ehconitin - Resolve morph relation fields in row-level permission predicates ([#28175](https://github.com/twentyhq/twenty/pull/28175)) by @charlesBochet - Drain queue jobs before the worker closes its clients ([#28176](https://github.com/twentyhq/twenty/pull/28176)) by @charlesBochet - Fix lost keystrokes in Preact front component text inputs ([#28178](https://github.com/twentyhq/twenty/pull/28178)) by @bosiraphael - Update twenty-ui to Base UI 1.9.0 ([#28180](https://github.com/twentyhq/twenty/pull/28180)) by @bosiraphael - Report unexpected MCP errors to Sentry ([#28181](https://github.com/twentyhq/twenty/pull/28181)) by @prastoin - Use built Twenty UI in companion ([#28184](https://github.com/twentyhq/twenty/pull/28184)) by @bosiraphael - Hide the empty Percent submenu on morph relation table footers ([#28185](https://github.com/twentyhq/twenty/pull/28185)) by @charlesBochet - Record the requesting user as creator of AI-built workflows ([#28186](https://github.com/twentyhq/twenty/pull/28186)) by @thomtrp - Type the MCP tool set and validate tools/call params ([#28187](https://github.com/twentyhq/twenty/pull/28187)) by @prastoin - Show the workflows permission message on the workflows index ([#28189](https://github.com/twentyhq/twenty/pull/28189)) by @thomtrp - Dispatch MCP methods with a typed switch and wrap responses once ([#28190](https://github.com/twentyhq/twenty/pull/28190)) by @prastoin - Fix twenty-ui checks after the Base UI 1.9.0 update ([#28191](https://github.com/twentyhq/twenty/pull/28191)) by @bosiraphael - Document Teams speaker attribution and warn when names are withheld ([#28195](https://github.com/twentyhq/twenty/pull/28195)) by @ehconitin - Prepare UI and renderer CI to be required checks ([#28197](https://github.com/twentyhq/twenty/pull/28197)) by @bosiraphael - Make twenty-ui documentation consistent ([#28198](https://github.com/twentyhq/twenty/pull/28198)) by @bosiraphael - Document application workflows ([#28199](https://github.com/twentyhq/twenty/pull/28199)) by @thomtrp - Remove the IS_MORPH_RELATION_HEAD_ENABLED feature flag ([#28200](https://github.com/twentyhq/twenty/pull/28200)) by @charlesBochet - Validate static tool arguments against their input schema ([#28202](https://github.com/twentyhq/twenty/pull/28202)) by @prastoin - Add Last Contact execution and backfill logging ([#28214](https://github.com/twentyhq/twenty/pull/28214)) by @martmull - Link app owner workspace to admin workspace details ([#28216](https://github.com/twentyhq/twenty/pull/28216)) by @martmull - Require @DefineTool execute input to match the input schema ([#28217](https://github.com/twentyhq/twenty/pull/28217)) by @prastoin - Stabilize submenu and toast story interactions ([#28219](https://github.com/twentyhq/twenty/pull/28219)) by @bosiraphael - Show call participants on call recording pages in the call recorder app ([#28222](https://github.com/twentyhq/twenty/pull/28222)) by @ehconitin - Show call recordings on record pages in the call recorder app ([#28223](https://github.com/twentyhq/twenty/pull/28223)) by @ehconitin - Make app preferences skeleton loaders match what they replace ([#28225](https://github.com/twentyhq/twenty/pull/28225)) by @ehconitin - Cap Recent chats at 5 in the AI chat inbox drawer ([#28231](https://github.com/twentyhq/twenty/pull/28231)) by @FelixMalfait - Let users choose whether to import private calendar events ([#28248](https://github.com/twentyhq/twenty/pull/28248)) by @neo773 - Remove the IS_CALENDAR_SYNC_SKIP_UNCHANGED_RECORDS_ENABLED feature flag ([#28252](https://github.com/twentyhq/twenty/pull/28252)) by @charlesBochet - Merge Gmail and Google Calendar into one Google app in app preferences ([#28257](https://github.com/twentyhq/twenty/pull/28257)) by @ehconitin - Remove no-op tile size from MenuItemIcon ([#28259](https://github.com/twentyhq/twenty/pull/28259)) by @bosiraphael - Clarify per-user prices in the pricing comparison table ([#28266](https://github.com/twentyhq/twenty/pull/28266)) by @Bonapara ## 🐛 Bug fixes - fix(server): rebuild the foreign key when a relation's onDelete changes from unset ([#27472](https://github.com/twentyhq/twenty/pull/27472)) by @devjotaduo - fix(clickhouse): wait for each migration ALTER on all replicas ([#28265](https://github.com/twentyhq/twenty/pull/28265)) by @etiennejouan ## 🔧 Developer & API - Expose defineWorkflow in twenty-sdk ([#27377](https://github.com/twentyhq/twenty/pull/27377)) by @thomtrp - Share the front component JSX runtime between the SDK and the CLI ([#28177](https://github.com/twentyhq/twenty/pull/28177)) by @bosiraphael - Require Roles permission to mint API key tokens ([#28201](https://github.com/twentyhq/twenty/pull/28201)) by @charlesBochet - Declare tools as discovered @DefineTool providers ( only delete webhook first ) ([#28210](https://github.com/twentyhq/twenty/pull/28210)) by @prastoin - Regenerate SDK metadata client after concurrent schema changes ([#28270](https://github.com/twentyhq/twenty/pull/28270)) by @charlesBochet <details> <summary>🏗️ Internal changes (1)</summary> - chore(security): bump sharp to 0.35.5 everywhere ([#28236](https://github.com/twentyhq/twenty/pull/28236)) by @mabdullahabaid </details> ## 🎉 New contributors - @devjotaduo made their first contribution in https://github.com/twentyhq/twenty/pull/27472 <details> <summary>Full changelog (73 PRs)</summary> - Expose defineWorkflow in twenty-sdk ([#27377](https://github.com/twentyhq/twenty/pull/27377)) by @thomtrp - fix(server): rebuild the foreign key when a relation's onDelete changes from unset ([#27472](https://github.com/twentyhq/twenty/pull/27472)) by @devjotaduo - Show import progress on connected accounts ([#27491](https://github.com/twentyhq/twenty/pull/27491)) by @neo773 - Compute workflow output schemas at the write boundary and make create_complete_workflow atomic ([#27774](https://github.com/twentyhq/twenty/pull/27774)) by @FelixMalfait - Store workflow and chart record filters as field references ([#27777](https://github.com/twentyhq/twenty/pull/27777)) by @FelixMalfait - Let connection providers declare a USER or WORKSPACE scope ([#27796](https://github.com/twentyhq/twenty/pull/27796)) by @ehconitin - Fix front component layout measurements ([#27807](https://github.com/twentyhq/twenty/pull/27807)) by @bosiraphael - [BREAKING_CHANGE] feat(usage): spend user credits on AI chat and web search before workspace credits (server) ([#27944](https://github.com/twentyhq/twenty/pull/27944)) by @etiennejouan - Make logic function trigger job fan-out idempotent across retries ([#27953](https://github.com/twentyhq/twenty/pull/27953)) by @charlesBochet - Fix date-sorted pagination skipping or duplicating records ([#27977](https://github.com/twentyhq/twenty/pull/27977)) by @Weiko - Add Dropdown.SelectionGroup ([#27990](https://github.com/twentyhq/twenty/pull/27990)) by @bosiraphael - Remove the IS_APPLICATION_WORKFLOWS_ENABLED feature flag ([#28003](https://github.com/twentyhq/twenty/pull/28003)) by @thomtrp - Share calendar events across calendar channels ([#28017](https://github.com/twentyhq/twenty/pull/28017)) by @neo773 - Remove OverflowingList's layout check and document the Slider Base UI issue ([#28025](https://github.com/twentyhq/twenty/pull/28025)) by @bosiraphael - Clean up twenty-ui overrides on lists, icons, navigation and chat ([#28062](https://github.com/twentyhq/twenty/pull/28062)) by @bosiraphael - Agent engine: one turn engine for chat and background agents, background runs in a job ([#28076](https://github.com/twentyhq/twenty/pull/28076)) by @FelixMalfait - Mention Ada in chats and let members turn her off ([#28086](https://github.com/twentyhq/twenty/pull/28086)) by @FelixMalfait - Point the record creation form at blocked fields and keep its shortcuts working ([#28108](https://github.com/twentyhq/twenty/pull/28108)) by @thomtrp - [BREAKING_CHANGE] Let Ada and agents react to messages with an emoji ([#28124](https://github.com/twentyhq/twenty/pull/28124)) by @FelixMalfait - Record published app versions ([#28128](https://github.com/twentyhq/twenty/pull/28128)) by @martmull - Let members send inbox messages when no AI provider is configured ([#28136](https://github.com/twentyhq/twenty/pull/28136)) by @FelixMalfait - i18n - translations ([#28142](https://github.com/twentyhq/twenty/pull/28142)) by @github-actions - Drop the frame border around app widgets ([#28146](https://github.com/twentyhq/twenty/pull/28146)) by @ehconitin - Stop fetching private events ([#28151](https://github.com/twentyhq/twenty/pull/28151)) by @BOHEUS - Unify CurrencyPicker shorthand and parts ([#28156](https://github.com/twentyhq/twenty/pull/28156)) by @bosiraphael - feat(website): carry ?via= partner attribution to app sign-up links ([#28157](https://github.com/twentyhq/twenty/pull/28157)) by @etiennejouan - Unify CountrySelect shorthand and parts ([#28160](https://github.com/twentyhq/twenty/pull/28160)) by @bosiraphael - Let keyboard users focus and open relation fields in forms ([#28161](https://github.com/twentyhq/twenty/pull/28161)) by @thomtrp - Replace Lingui skip comments with doNotTranslate() ([#28168](https://github.com/twentyhq/twenty/pull/28168)) by @charlesBochet - Unify PhoneCountryPicker composition ([#28169](https://github.com/twentyhq/twenty/pull/28169)) by @bosiraphael - chore: bump version to 2.49.0 ([#28170](https://github.com/twentyhq/twenty/pull/28170)) by @twenty-pr - Rename connected account visibility to scope ([#28172](https://github.com/twentyhq/twenty/pull/28172)) by @ehconitin - i18n - translations ([#28174](https://github.com/twentyhq/twenty/pull/28174)) by @github-actions - Resolve morph relation fields in row-level permission predicates ([#28175](https://github.com/twentyhq/twenty/pull/28175)) by @charlesBochet - Drain queue jobs before the worker closes its clients ([#28176](https://github.com/twentyhq/twenty/pull/28176)) by @charlesBochet - Share the front component JSX runtime between the SDK and the CLI ([#28177](https://github.com/twentyhq/twenty/pull/28177)) by @bosiraphael - Fix lost keystrokes in Preact front component text inputs ([#28178](https://github.com/twentyhq/twenty/pull/28178)) by @bosiraphael - Update twenty-ui to Base UI 1.9.0 ([#28180](https://github.com/twentyhq/twenty/pull/28180)) by @bosiraphael - Report unexpected MCP errors to Sentry ([#28181](https://github.com/twentyhq/twenty/pull/28181)) by @prastoin - Use built Twenty UI in companion ([#28184](https://github.com/twentyhq/twenty/pull/28184)) by @bosiraphael - Hide the empty Percent submenu on morph relation table footers ([#28185](https://github.com/twentyhq/twenty/pull/28185)) by @charlesBochet - Record the requesting user as creator of AI-built workflows ([#28186](https://github.com/twentyhq/twenty/pull/28186)) by @thomtrp - Type the MCP tool set and validate tools/call params ([#28187](https://github.com/twentyhq/twenty/pull/28187)) by @prastoin - Show the workflows permission message on the workflows index ([#28189](https://github.com/twentyhq/twenty/pull/28189)) by @thomtrp - Dispatch MCP methods with a typed switch and wrap responses once ([#28190](https://github.com/twentyhq/twenty/pull/28190)) by @prastoin - Fix twenty-ui checks after the Base UI 1.9.0 update ([#28191](https://github.com/twentyhq/twenty/pull/28191)) by @bosiraphael - Document Teams speaker attribution and warn when names are withheld ([#28195](https://github.com/twentyhq/twenty/pull/28195)) by @ehconitin - Prepare UI and renderer CI to be required checks ([#28197](https://github.com/twentyhq/twenty/pull/28197)) by @bosiraphael - Make twenty-ui documentation consistent ([#28198](https://github.com/twentyhq/twenty/pull/28198)) by @bosiraphael - Document application workflows ([#28199](https://github.com/twentyhq/twenty/pull/28199)) by @thomtrp - Remove the IS_MORPH_RELATION_HEAD_ENABLED feature flag ([#28200](https://github.com/twentyhq/twenty/pull/28200)) by @charlesBochet - Require Roles permission to mint API key tokens ([#28201](https://github.com/twentyhq/twenty/pull/28201)) by @charlesBochet - Validate static tool arguments against their input schema ([#28202](https://github.com/twentyhq/twenty/pull/28202)) by @prastoin - feat: simplify app owner installation statistics (1/4) ([#28203](https://github.com/twentyhq/twenty/pull/28203)) by @martmull - feat: add app auto-update installation counts (2/4) ([#28204](https://github.com/twentyhq/twenty/pull/28204)) by @martmull - feat: add application credit usage with ClickHouse query caching (3/4) ([#28205](https://github.com/twentyhq/twenty/pull/28205)) by @martmull - Declare tools as discovered @DefineTool providers ( only delete webhook first ) ([#28210](https://github.com/twentyhq/twenty/pull/28210)) by @prastoin - Add Last Contact execution and backfill logging ([#28214](https://github.com/twentyhq/twenty/pull/28214)) by @martmull - Link app owner workspace to admin workspace details ([#28216](https://github.com/twentyhq/twenty/pull/28216)) by @martmull - Require @DefineTool execute input to match the input schema ([#28217](https://github.com/twentyhq/twenty/pull/28217)) by @prastoin - Stabilize submenu and toast story interactions ([#28219](https://github.com/twentyhq/twenty/pull/28219)) by @bosiraphael - Show call participants on call recording pages in the call recorder app ([#28222](https://github.com/twentyhq/twenty/pull/28222)) by @ehconitin - Show call recordings on record pages in the call recorder app ([#28223](https://github.com/twentyhq/twenty/pull/28223)) by @ehconitin - Make app preferences skeleton loaders match what they replace ([#28225](https://github.com/twentyhq/twenty/pull/28225)) by @ehconitin - Cap Recent chats at 5 in the AI chat inbox drawer ([#28231](https://github.com/twentyhq/twenty/pull/28231)) by @FelixMalfait - chore(security): bump sharp to 0.35.5 everywhere ([#28236](https://github.com/twentyhq/twenty/pull/28236)) by @mabdullahabaid - Let users choose whether to import private calendar events ([#28248](https://github.com/twentyhq/twenty/pull/28248)) by @neo773 - Remove the IS_CALENDAR_SYNC_SKIP_UNCHANGED_RECORDS_ENABLED feature flag ([#28252](https://github.com/twentyhq/twenty/pull/28252)) by @charlesBochet - Merge Gmail and Google Calendar into one Google app in app preferences ([#28257](https://github.com/twentyhq/twenty/pull/28257)) by @ehconitin - Remove no-op tile size from MenuItemIcon ([#28259](https://github.com/twentyhq/twenty/pull/28259)) by @bosiraphael - fix(clickhouse): wait for each migration ALTER on all replicas ([#28265](https://github.com/twentyhq/twenty/pull/28265)) by @etiennejouan - Clarify per-user prices in the pricing comparison table ([#28266](https://github.com/twentyhq/twenty/pull/28266)) by @Bonapara - Regenerate SDK metadata client after concurrent schema changes ([#28270](https://github.com/twentyhq/twenty/pull/28270)) by @charlesBochet </details> **Full Changelog**: https://github.com/twentyhq/twenty/compare/twenty/v2.48.0...twenty/v2.49.0
Related Repositories
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
Reverse engineer anything with agents, from app behavior down to native binaries.
The open source coding agent.
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.