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

Twenty twenty/v2.54.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-10-31.

Breaking-change evidence from the source

  • โš ๏ธ Breaking changes - Remove the IS_MESSAGE_CAMPAIGN_ENABLED feature flag ([#28929](https://github.com/twentyhq/twenty/pull/28929)) by @neo773
Read the original context โ†—
Source flags breaking changes โ€” review applicability
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

Twenty twenty/v2.54.0. Source highlight: Remove the IS_MESSAGE_CAMPAIGN_ENABLED feature flag (#28929)

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 - Remove the IS_MESSAGE_CAMPAIGN_ENABLED feature flag ([#28929](https://github.com/twentyhq/twenty/pull/28929)) by @neo773

โœจ New Features & Capabilities (6)

  • Remove the IS_MESSAGE_CAMPAIGN_ENABLED feature flag (#28929)
  • feat(view): let workspaces declare per-locale view name translations (#29095)
  • feat(ai): collapse long user messages in the chat thread (#29191)
  • feat(cli): pull application dependency files (#29197)
  • feat(billing): show what each seat includes and where workspace credits come from (#29202)
  • feat(cli): pull existing apps or initialize the workspace custom app (#29207)

โšก Performance & Enhancements (6)

  • Compile AI component previews with Workspace app dependencies (#28468)
  • Track unresolved mentions per member (#28719)
  • Show app READMEs on marketplace app pages (#28842)
  • Cover the queue mechanics the fair worker ordering must respect (#28851)
  • Order worker jobs by tenant virtual clocks behind IS_WORKER_FAIRNESS_ENABLED (#28990)
  • Keep priority 1 ahead of the fair tickets for the platform's time-critical jobs (#28991)

๐Ÿ”ง Bug Fixes & Patches (6)

  • Fix front component dropdown dismissal and reopening (#28982)
  • Advance the queue's virtual time when a fair job is dispatched (#28992)
  • Fix avatars overlapping selected chat cards (#29203)
  • fix(rich-text): keep nested task item content out of markdown code blocks (#28821)
  • fix(front): let the task and note rich text body scroll to the bottom (#29134)
  • fix(accounts): trim whitespace in IMAP/SMTP/CalDAV server and username fields (#29091) (#29163)
๐Ÿ“„ View Raw Release Notes (Original Developer Log)
<!-- generated-release-notes v1 --> ## โš ๏ธ Breaking changes - Remove the IS_MESSAGE_CAMPAIGN_ENABLED feature flag ([#28929](https://github.com/twentyhq/twenty/pull/28929)) by @neo773 - Round-trip workflows built in the workflow builder through the manifest ([#29053](https://github.com/twentyhq/twenty/pull/29053)) by @FelixMalfait - [BREAKING_CHANGE] Replace vetted apps with marketplace listing ([#29187](https://github.com/twentyhq/twenty/pull/29187)) by @martmull ## โœจ New features - feat(view): let workspaces declare per-locale view name translations ([#29095](https://github.com/twentyhq/twenty/pull/29095)) by @ijreilly - feat(ai): collapse long user messages in the chat thread ([#29191](https://github.com/twentyhq/twenty/pull/29191)) by @etiennejouan - feat(cli): pull application dependency files ([#29197](https://github.com/twentyhq/twenty/pull/29197)) by @Weiko - feat(billing): show what each seat includes and where workspace credits come from ([#29202](https://github.com/twentyhq/twenty/pull/29202)) by @etiennejouan - feat(cli): pull existing apps or initialize the workspace custom app ([#29207](https://github.com/twentyhq/twenty/pull/29207)) by @Weiko ## ๐Ÿ’… Improvements & UX - Compile AI component previews with Workspace app dependencies ([#28468](https://github.com/twentyhq/twenty/pull/28468)) by @Weiko - Track unresolved mentions per member ([#28719](https://github.com/twentyhq/twenty/pull/28719)) by @bosiraphael - Show app READMEs on marketplace app pages ([#28842](https://github.com/twentyhq/twenty/pull/28842)) by @abdulrahmancodes - Add ordering scenarios for the fair worker queue ([#28848](https://github.com/twentyhq/twenty/pull/28848)) by @martmull - Cover the queue mechanics the fair worker ordering must respect ([#28851](https://github.com/twentyhq/twenty/pull/28851)) by @martmull - Add a Campaigns folder with Campaigns and Lists to the navigation menu ([#28931](https://github.com/twentyhq/twenty/pull/28931)) by @neo773 - Fix front component dropdown dismissal and reopening ([#28982](https://github.com/twentyhq/twenty/pull/28982)) by @bosiraphael - Order worker jobs by tenant virtual clocks behind IS_WORKER_FAIRNESS_ENABLED ([#28990](https://github.com/twentyhq/twenty/pull/28990)) by @martmull - Keep priority 1 ahead of the fair tickets for the platform's time-critical jobs ([#28991](https://github.com/twentyhq/twenty/pull/28991)) by @martmull - Advance the queue's virtual time when a fair job is dispatched ([#28992](https://github.com/twentyhq/twenty/pull/28992)) by @martmull - Rebase the fair tickets in bounded chunks once the virtual time passes 2^20 ([#28994](https://github.com/twentyhq/twenty/pull/28994)) by @martmull - Build frontend shared dependencies from app lockfiles ([#29018](https://github.com/twentyhq/twenty/pull/29018)) by @Weiko - Use existing drivers for AI component preview builds ([#29019](https://github.com/twentyhq/twenty/pull/29019)) by @Weiko - Type every queued job as a workspace job or a system job ([#29025](https://github.com/twentyhq/twenty/pull/29025)) by @martmull - Show the Teams assistant progress while it answers ([#29059](https://github.com/twentyhq/twenty/pull/29059)) by @abdulrahmancodes - Name dependency layers per application and move functions onto them on their next run ([#29085](https://github.com/twentyhq/twenty/pull/29085)) by @prastoin - Let apps attach records to inbox conversations ([#29090](https://github.com/twentyhq/twenty/pull/29090)) by @bosiraphael - Add LinkedIn app (read-only, via Unipile v2) ([#29116](https://github.com/twentyhq/twenty/pull/29116)) by @martmull - Pin the current workspace in admin and unify avatars ([#29117](https://github.com/twentyhq/twenty/pull/29117)) by @Bonapara - Stop using the dead deletedAt column on agent ([#29121](https://github.com/twentyhq/twenty/pull/29121)) by @FelixMalfait - Open record creation forms from relation pickers ([#29129](https://github.com/twentyhq/twenty/pull/29129)) by @Bonapara - Reject server route triggers on ad-hoc logic functions ([#29145](https://github.com/twentyhq/twenty/pull/29145)) by @charlesBochet - Declare the connected account shape for workflow step resolution once ([#29148](https://github.com/twentyhq/twenty/pull/29148)) by @FelixMalfait - Add a Merge with command to record pages ([#29155](https://github.com/twentyhq/twenty/pull/29155)) by @FelixMalfait - Show inbox conversations in record panels ([#29156](https://github.com/twentyhq/twenty/pull/29156)) by @bosiraphael - Teach the crm-hygiene skill to merge duplicates ([#29157](https://github.com/twentyhq/twenty/pull/29157)) by @FelixMalfait - Let applications declare MCP servers in their manifest ([#29158](https://github.com/twentyhq/twenty/pull/29158)) by @martmull - i18n - translations ([#29159](https://github.com/twentyhq/twenty/pull/29159)) by @twenty-pr - i18n - translations ([#29161](https://github.com/twentyhq/twenty/pull/29161)) by @twenty-pr - Scope the upgrade command down rule to instance commands ([#29162](https://github.com/twentyhq/twenty/pull/29162)) by @prastoin - Ignore isSystemSideEffect divergences when syncing manifests ([#29169](https://github.com/twentyhq/twenty/pull/29169)) by @prastoin - Add a Salesfarce parody theme to appearance settings ([#29171](https://github.com/twentyhq/twenty/pull/29171)) by @Bonapara - Show app logo on function options in log console filter ([#29178](https://github.com/twentyhq/twenty/pull/29178)) by @martmull - Make log console table columns resizable ([#29179](https://github.com/twentyhq/twenty/pull/29179)) by @martmull - Make the session cookie opt-in so front components can pass auth proxies ([#29180](https://github.com/twentyhq/twenty/pull/29180)) by @FelixMalfait - Reuse downloadFile for the SAML metadata download ([#29182](https://github.com/twentyhq/twenty/pull/29182)) by @FelixMalfait - i18n - translations ([#29188](https://github.com/twentyhq/twenty/pull/29188)) by @twenty-pr - Hide isCustom from entities once the 2.54 drop command has run ([#29189](https://github.com/twentyhq/twenty/pull/29189)) by @charlesBochet - Show app icon on every function in log console filter ([#29190](https://github.com/twentyhq/twenty/pull/29190)) by @martmull - Move inbox filters into the list header ([#29192](https://github.com/twentyhq/twenty/pull/29192)) by @bosiraphael - Show conversation status in thread details ([#29195](https://github.com/twentyhq/twenty/pull/29195)) by @bosiraphael - Store Cloudflare country, region and city on user sessions ([#29196](https://github.com/twentyhq/twenty/pull/29196)) by @FelixMalfait - i18n - translations ([#29199](https://github.com/twentyhq/twenty/pull/29199)) by @twenty-pr - Fix avatars overlapping selected chat cards ([#29203](https://github.com/twentyhq/twenty/pull/29203)) by @bosiraphael - Route server webhooks by application registration and function universalIdentifier ([#29204](https://github.com/twentyhq/twenty/pull/29204)) by @charlesBochet - Store workspace Ada modes and conversation types ([#29206](https://github.com/twentyhq/twenty/pull/29206)) by @bosiraphael - i18n - website translations ([#29208](https://github.com/twentyhq/twenty/pull/29208)) by @twenty-pr - Reserve the TWENTY_ prefix for app variable names ([#29210](https://github.com/twentyhq/twenty/pull/29210)) by @prastoin - Order chat participant writes ([#29212](https://github.com/twentyhq/twenty/pull/29212)) by @bosiraphael - Deliver app inbox messages without a mention ([#29213](https://github.com/twentyhq/twenty/pull/29213)) by @bosiraphael - i18n - translations ([#29222](https://github.com/twentyhq/twenty/pull/29222)) by @twenty-pr - Extend Salesfarce to workflows, settings, chat and icons ([#29223](https://github.com/twentyhq/twenty/pull/29223)) by @Bonapara - i18n - website translations ([#29224](https://github.com/twentyhq/twenty/pull/29224)) by @twenty-pr - Show app banner and logo on built-in account app preferences ([#29225](https://github.com/twentyhq/twenty/pull/29225)) by @ehconitin - Show a connect card for installed apps without connections ([#29227](https://github.com/twentyhq/twenty/pull/29227)) by @ehconitin - Show app status instead of type on the workspace installed apps table ([#29228](https://github.com/twentyhq/twenty/pull/29228)) by @ehconitin - Add the related record path metadata entity ([#29229](https://github.com/twentyhq/twenty/pull/29229)) by @charlesBochet - Leave reserved variable names out of the app runtime env ([#29230](https://github.com/twentyhq/twenty/pull/29230)) by @prastoin - Cover shared chat boundaries with integration tests ([#29231](https://github.com/twentyhq/twenty/pull/29231)) by @bosiraphael - Forward enterprise licensing routes to twenty-connect ([#29237](https://github.com/twentyhq/twenty/pull/29237)) by @FelixMalfait - Validate updateTimelineActivityType input ([#29238](https://github.com/twentyhq/twenty/pull/29238)) by @ijreilly - Restore light description color on menu items ([#29239](https://github.com/twentyhq/twenty/pull/29239)) by @Bonapara - Retry npm publish when the provenance entry conflicts in Rekor ([#29240](https://github.com/twentyhq/twenty/pull/29240)) by @charlesBochet - Put the workspace app detail page on the shared app detail layout ([#29253](https://github.com/twentyhq/twenty/pull/29253)) by @ehconitin - Move app preferences to /settings/app-preferences behind the flag ([#29255](https://github.com/twentyhq/twenty/pull/29255)) by @ehconitin - Restore an isolated enterprise signing key for development ([#29266](https://github.com/twentyhq/twenty/pull/29266)) by @FelixMalfait - Cap HTML nesting depth before converting email bodies to text ([#29269](https://github.com/twentyhq/twenty/pull/29269)) by @Tanguy-Magnaudet - i18n - translations ([#29270](https://github.com/twentyhq/twenty/pull/29270)) by @twenty-pr - Use disabled object permission actions in the Fathom, Slack and Teams apps ([#29271](https://github.com/twentyhq/twenty/pull/29271)) by @charlesBochet - i18n - translations ([#29272](https://github.com/twentyhq/twenty/pull/29272)) by @twenty-pr - Bound code interpreter output streamed to chat and read from the sandbox ([#29274](https://github.com/twentyhq/twenty/pull/29274)) by @charlesBochet - Restore light join word in keyboard shortcuts ([#29275](https://github.com/twentyhq/twenty/pull/29275)) by @Bonapara - Search the apps table by the name and description each row shows ([#29277](https://github.com/twentyhq/twenty/pull/29277)) by @ehconitin - i18n - translations ([#29282](https://github.com/twentyhq/twenty/pull/29282)) by @twenty-pr - i18n - translations ([#29284](https://github.com/twentyhq/twenty/pull/29284)) by @twenty-pr ## ๐Ÿ› Bug fixes - fix(rich-text): keep nested task item content out of markdown code blocks ([#28821](https://github.com/twentyhq/twenty/pull/28821)) by @UditSinghChauhan - fix(front): let the task and note rich text body scroll to the bottom ([#29134](https://github.com/twentyhq/twenty/pull/29134)) by @etiennejouan - fix(accounts): trim whitespace in IMAP/SMTP/CalDAV server and username fields (#29091) ([#29163](https://github.com/twentyhq/twenty/pull/29163)) by @ghazy2001 - fix(server): refresh app connection access tokens using provider expires_in (#28446) ([#29173](https://github.com/twentyhq/twenty/pull/29173)) by @apoorv-xs - fix(merge): reject non-UUID ids and a missing conflict priority index ([#29183](https://github.com/twentyhq/twenty/pull/29183)) by @etiennejouan - fix(permissions): validate row-level predicate operands against the field type ([#29185](https://github.com/twentyhq/twenty/pull/29185)) by @etiennejouan - fix(server): rebuild ORM table shapes after a field rename ([#29244](https://github.com/twentyhq/twenty/pull/29244)) by @etiennejouan ## โšก Performance - perf(server): scope workspace migration cache invalidation to mutated maps ([#29167](https://github.com/twentyhq/twenty/pull/29167)) by @etiennejouan ## ๐Ÿ”ง Developer & API - Self-host Extra Smart: xAI fallback grok-4.6@high โ†’ grok-4.7 ([#29181](https://github.com/twentyhq/twenty/pull/29181)) by @twenty-pr-author - Name the User Apps and Workspace Apps permission flags USER_APPS and WORKSPACE_APPS in the SDK ([#29194](https://github.com/twentyhq/twenty/pull/29194)) by @ehconitin - Add the related record path metadata API ([#29243](https://github.com/twentyhq/twenty/pull/29243)) by @charlesBochet - Regenerate the SDK metadata client ([#29264](https://github.com/twentyhq/twenty/pull/29264)) by @ehconitin <details> <summary>๐Ÿ—๏ธ Internal changes (1)</summary> - chore(ci): stop publishing retired create-twenty-app ([#29245](https://github.com/twentyhq/twenty/pull/29245)) by @Weiko </details> ## ๐ŸŽ‰ New contributors - @apoorv-xs made their first contribution in https://github.com/twentyhq/twenty/pull/29173 - @Tanguy-Magnaudet made their first contribution in https://github.com/twentyhq/twenty/pull/29269 <details> <summary>Full changelog (97 PRs)</summary> - Compile AI component previews with Workspace app dependencies ([#28468](https://github.com/twentyhq/twenty/pull/28468)) by @Weiko - Track unresolved mentions per member ([#28719](https://github.com/twentyhq/twenty/pull/28719)) by @bosiraphael - fix(rich-text): keep nested task item content out of markdown code blocks ([#28821](https://github.com/twentyhq/twenty/pull/28821)) by @UditSinghChauhan - Show app READMEs on marketplace app pages ([#28842](https://github.com/twentyhq/twenty/pull/28842)) by @abdulrahmancodes - Add ordering scenarios for the fair worker queue ([#28848](https://github.com/twentyhq/twenty/pull/28848)) by @martmull - Cover the queue mechanics the fair worker ordering must respect ([#28851](https://github.com/twentyhq/twenty/pull/28851)) by @martmull - Remove the IS_MESSAGE_CAMPAIGN_ENABLED feature flag ([#28929](https://github.com/twentyhq/twenty/pull/28929)) by @neo773 - Add a Campaigns folder with Campaigns and Lists to the navigation menu ([#28931](https://github.com/twentyhq/twenty/pull/28931)) by @neo773 - Fix front component dropdown dismissal and reopening ([#28982](https://github.com/twentyhq/twenty/pull/28982)) by @bosiraphael - Order worker jobs by tenant virtual clocks behind IS_WORKER_FAIRNESS_ENABLED ([#28990](https://github.com/twentyhq/twenty/pull/28990)) by @martmull - Keep priority 1 ahead of the fair tickets for the platform's time-critical jobs ([#28991](https://github.com/twentyhq/twenty/pull/28991)) by @martmull - Advance the queue's virtual time when a fair job is dispatched ([#28992](https://github.com/twentyhq/twenty/pull/28992)) by @martmull - Rebase the fair tickets in bounded chunks once the virtual time passes 2^20 ([#28994](https://github.com/twentyhq/twenty/pull/28994)) by @martmull - Build frontend shared dependencies from app lockfiles ([#29018](https://github.com/twentyhq/twenty/pull/29018)) by @Weiko - Use existing drivers for AI component preview builds ([#29019](https://github.com/twentyhq/twenty/pull/29019)) by @Weiko - Type every queued job as a workspace job or a system job ([#29025](https://github.com/twentyhq/twenty/pull/29025)) by @martmull - Round-trip workflows built in the workflow builder through the manifest ([#29053](https://github.com/twentyhq/twenty/pull/29053)) by @FelixMalfait - Show the Teams assistant progress while it answers ([#29059](https://github.com/twentyhq/twenty/pull/29059)) by @abdulrahmancodes - Name dependency layers per application and move functions onto them on their next run ([#29085](https://github.com/twentyhq/twenty/pull/29085)) by @prastoin - Let apps attach records to inbox conversations ([#29090](https://github.com/twentyhq/twenty/pull/29090)) by @bosiraphael - feat(view): let workspaces declare per-locale view name translations ([#29095](https://github.com/twentyhq/twenty/pull/29095)) by @ijreilly - Add LinkedIn app (read-only, via Unipile v2) ([#29116](https://github.com/twentyhq/twenty/pull/29116)) by @martmull - Pin the current workspace in admin and unify avatars ([#29117](https://github.com/twentyhq/twenty/pull/29117)) by @Bonapara - Stop using the dead deletedAt column on agent ([#29121](https://github.com/twentyhq/twenty/pull/29121)) by @FelixMalfait - Open record creation forms from relation pickers ([#29129](https://github.com/twentyhq/twenty/pull/29129)) by @Bonapara - fix(front): let the task and note rich text body scroll to the bottom ([#29134](https://github.com/twentyhq/twenty/pull/29134)) by @etiennejouan - Reject server route triggers on ad-hoc logic functions ([#29145](https://github.com/twentyhq/twenty/pull/29145)) by @charlesBochet - Declare the connected account shape for workflow step resolution once ([#29148](https://github.com/twentyhq/twenty/pull/29148)) by @FelixMalfait - Add a Merge with command to record pages ([#29155](https://github.com/twentyhq/twenty/pull/29155)) by @FelixMalfait - Show inbox conversations in record panels ([#29156](https://github.com/twentyhq/twenty/pull/29156)) by @bosiraphael - Teach the crm-hygiene skill to merge duplicates ([#29157](https://github.com/twentyhq/twenty/pull/29157)) by @FelixMalfait - Let applications declare MCP servers in their manifest ([#29158](https://github.com/twentyhq/twenty/pull/29158)) by @martmull - i18n - translations ([#29159](https://github.com/twentyhq/twenty/pull/29159)) by @twenty-pr - i18n - translations ([#29161](https://github.com/twentyhq/twenty/pull/29161)) by @twenty-pr - Scope the upgrade command down rule to instance commands ([#29162](https://github.com/twentyhq/twenty/pull/29162)) by @prastoin - fix(accounts): trim whitespace in IMAP/SMTP/CalDAV server and username fields (#29091) ([#29163](https://github.com/twentyhq/twenty/pull/29163)) by @ghazy2001 - perf(server): scope workspace migration cache invalidation to mutated maps ([#29167](https://github.com/twentyhq/twenty/pull/29167)) by @etiennejouan - Ignore isSystemSideEffect divergences when syncing manifests ([#29169](https://github.com/twentyhq/twenty/pull/29169)) by @prastoin - Add a Salesfarce parody theme to appearance settings ([#29171](https://github.com/twentyhq/twenty/pull/29171)) by @Bonapara - fix(server): refresh app connection access tokens using provider expires_in (#28446) ([#29173](https://github.com/twentyhq/twenty/pull/29173)) by @apoorv-xs - Show app logo on function options in log console filter ([#29178](https://github.com/twentyhq/twenty/pull/29178)) by @martmull - Make log console table columns resizable ([#29179](https://github.com/twentyhq/twenty/pull/29179)) by @martmull - Make the session cookie opt-in so front components can pass auth proxies ([#29180](https://github.com/twentyhq/twenty/pull/29180)) by @FelixMalfait - Self-host Extra Smart: xAI fallback grok-4.6@high โ†’ grok-4.7 ([#29181](https://github.com/twentyhq/twenty/pull/29181)) by @twenty-pr-author - Reuse downloadFile for the SAML metadata download ([#29182](https://github.com/twentyhq/twenty/pull/29182)) by @FelixMalfait - fix(merge): reject non-UUID ids and a missing conflict priority index ([#29183](https://github.com/twentyhq/twenty/pull/29183)) by @etiennejouan - fix(permissions): validate row-level predicate operands against the field type ([#29185](https://github.com/twentyhq/twenty/pull/29185)) by @etiennejouan - chore: bump version to 2.54.0 ([#29186](https://github.com/twentyhq/twenty/pull/29186)) by @twenty-pr - [BREAKING_CHANGE] Replace vetted apps with marketplace listing ([#29187](https://github.com/twentyhq/twenty/pull/29187)) by @martmull - i18n - translations ([#29188](https://github.com/twentyhq/twenty/pull/29188)) by @twenty-pr - Hide isCustom from entities once the 2.54 drop command has run ([#29189](https://github.com/twentyhq/twenty/pull/29189)) by @charlesBochet - Show app icon on every function in log console filter ([#29190](https://github.com/twentyhq/twenty/pull/29190)) by @martmull - feat(ai): collapse long user messages in the chat thread ([#29191](https://github.com/twentyhq/twenty/pull/29191)) by @etiennejouan - Move inbox filters into the list header ([#29192](https://github.com/twentyhq/twenty/pull/29192)) by @bosiraphael - Name the User Apps and Workspace Apps permission flags USER_APPS and WORKSPACE_APPS in the SDK ([#29194](https://github.com/twentyhq/twenty/pull/29194)) by @ehconitin - Show conversation status in thread details ([#29195](https://github.com/twentyhq/twenty/pull/29195)) by @bosiraphael - Store Cloudflare country, region and city on user sessions ([#29196](https://github.com/twentyhq/twenty/pull/29196)) by @FelixMalfait - feat(cli): pull application dependency files ([#29197](https://github.com/twentyhq/twenty/pull/29197)) by @Weiko - i18n - translations ([#29199](https://github.com/twentyhq/twenty/pull/29199)) by @twenty-pr - feat(billing): show what each seat includes and where workspace credits come from ([#29202](https://github.com/twentyhq/twenty/pull/29202)) by @etiennejouan - Fix avatars overlapping selected chat cards ([#29203](https://github.com/twentyhq/twenty/pull/29203)) by @bosiraphael - Route server webhooks by application registration and function universalIdentifier ([#29204](https://github.com/twentyhq/twenty/pull/29204)) by @charlesBochet - Store workspace Ada modes and conversation types ([#29206](https://github.com/twentyhq/twenty/pull/29206)) by @bosiraphael - feat(cli): pull existing apps or initialize the workspace custom app ([#29207](https://github.com/twentyhq/twenty/pull/29207)) by @Weiko - i18n - website translations ([#29208](https://github.com/twentyhq/twenty/pull/29208)) by @twenty-pr - Reserve the TWENTY_ prefix for app variable names ([#29210](https://github.com/twentyhq/twenty/pull/29210)) by @prastoin - Order chat participant writes ([#29212](https://github.com/twentyhq/twenty/pull/29212)) by @bosiraphael - Deliver app inbox messages without a mention ([#29213](https://github.com/twentyhq/twenty/pull/29213)) by @bosiraphael - i18n - translations ([#29222](https://github.com/twentyhq/twenty/pull/29222)) by @twenty-pr - Extend Salesfarce to workflows, settings, chat and icons ([#29223](https://github.com/twentyhq/twenty/pull/29223)) by @Bonapara - i18n - website translations ([#29224](https://github.com/twentyhq/twenty/pull/29224)) by @twenty-pr - Show app banner and logo on built-in account app preferences ([#29225](https://github.com/twentyhq/twenty/pull/29225)) by @ehconitin - Show a connect card for installed apps without connections ([#29227](https://github.com/twentyhq/twenty/pull/29227)) by @ehconitin - Show app status instead of type on the workspace installed apps table ([#29228](https://github.com/twentyhq/twenty/pull/29228)) by @ehconitin - Add the related record path metadata entity ([#29229](https://github.com/twentyhq/twenty/pull/29229)) by @charlesBochet - Leave reserved variable names out of the app runtime env ([#29230](https://github.com/twentyhq/twenty/pull/29230)) by @prastoin - Cover shared chat boundaries with integration tests ([#29231](https://github.com/twentyhq/twenty/pull/29231)) by @bosiraphael - Forward enterprise licensing routes to twenty-connect ([#29237](https://github.com/twentyhq/twenty/pull/29237)) by @FelixMalfait - Validate updateTimelineActivityType input ([#29238](https://github.com/twentyhq/twenty/pull/29238)) by @ijreilly - Restore light description color on menu items ([#29239](https://github.com/twentyhq/twenty/pull/29239)) by @Bonapara - Retry npm publish when the provenance entry conflicts in Rekor ([#29240](https://github.com/twentyhq/twenty/pull/29240)) by @charlesBochet - Add the related record path metadata API ([#29243](https://github.com/twentyhq/twenty/pull/29243)) by @charlesBochet - fix(server): rebuild ORM table shapes after a field rename ([#29244](https://github.com/twentyhq/twenty/pull/29244)) by @etiennejouan - chore(ci): stop publishing retired create-twenty-app ([#29245](https://github.com/twentyhq/twenty/pull/29245)) by @Weiko - Put the workspace app detail page on the shared app detail layout ([#29253](https://github.com/twentyhq/twenty/pull/29253)) by @ehconitin - Move app preferences to /settings/app-preferences behind the flag ([#29255](https://github.com/twentyhq/twenty/pull/29255)) by @ehconitin - Regenerate the SDK metadata client ([#29264](https://github.com/twentyhq/twenty/pull/29264)) by @ehconitin - Restore an isolated enterprise signing key for development ([#29266](https://github.com/twentyhq/twenty/pull/29266)) by @FelixMalfait - Cap HTML nesting depth before converting email bodies to text ([#29269](https://github.com/twentyhq/twenty/pull/29269)) by @Tanguy-Magnaudet - i18n - translations ([#29270](https://github.com/twentyhq/twenty/pull/29270)) by @twenty-pr - Use disabled object permission actions in the Fathom, Slack and Teams apps ([#29271](https://github.com/twentyhq/twenty/pull/29271)) by @charlesBochet - i18n - translations ([#29272](https://github.com/twentyhq/twenty/pull/29272)) by @twenty-pr - Bound code interpreter output streamed to chat and read from the sandbox ([#29274](https://github.com/twentyhq/twenty/pull/29274)) by @charlesBochet - Restore light join word in keyboard shortcuts ([#29275](https://github.com/twentyhq/twenty/pull/29275)) by @Bonapara - Search the apps table by the name and description each row shows ([#29277](https://github.com/twentyhq/twenty/pull/29277)) by @ehconitin - i18n - translations ([#29282](https://github.com/twentyhq/twenty/pull/29282)) by @twenty-pr - i18n - translations ([#29284](https://github.com/twentyhq/twenty/pull/29284)) by @twenty-pr </details> **Full Changelog**: https://github.com/twentyhq/twenty/compare/twenty/v2.53.1...twenty/v2.54.0