โ ๏ธ 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
โก 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