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

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

Source available โ€” automated, not human-reviewed

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

Analysis updated: 2026-11-01.

Breaking-change evidence from the source

  • โš ๏ธ 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
Read the original context โ†—
Source flags breaking changes โ€” review applicability
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

Twenty twenty/v2.49.0. Source highlight: [BREAKING_CHANGE] feat(usage): spend user credits on AI chat and web search before workspace credits (server) (#27944)

Who Does This Impact? (Role-Based Analysis)

๐Ÿ’ป Software Engineers & Devs

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

๐Ÿ“Š Product & Engineering Leads

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

โš™๏ธ DevOps & Security

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

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

  • โš ๏ธ Breaking changes - [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

โœจ New Features & Capabilities (6)

  • [BREAKING_CHANGE] feat(usage): spend user credits on AI chat and web search before workspace credits (server) (#27944)
  • feat(website): carry ?via= partner attribution to app sign-up links (#28157)
  • feat: simplify app owner installation statistics (1/4) (#28203)
  • feat: add app auto-update installation counts (2/4) (#28204)
  • feat: add application credit usage with ClickHouse query caching (3/4) (#28205)
  • Add Dropdown.SelectionGroup (#27990)

โšก Performance & Enhancements (6)

  • Show import progress on connected accounts (#27491)
  • Compute workflow output schemas at the write boundary and make create_complete_workflow atomic (#27774)
  • Store workflow and chart record filters as field references (#27777)
  • Let connection providers declare a USER or WORKSPACE scope (#27796)
  • Make logic function trigger job fan-out idempotent across retries (#27953)
  • Share calendar events across calendar channels (#28017)

๐Ÿ”ง Bug Fixes & Patches (6)

  • Fix front component layout measurements (#27807)
  • Fix date-sorted pagination skipping or duplicating records (#27977)
  • Fix lost keystrokes in Preact front component text inputs (#28178)
  • Dispatch MCP methods with a typed switch and wrap responses once (#28190)
  • Fix twenty-ui checks after the Base UI 1.9.0 update (#28191)
  • fix(server): rebuild the foreign key when a relation's onDelete changes from unset (#27472)
๐Ÿ“„ View Raw Release Notes (Original Developer Log)
<!-- 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