twenty/v2.26.0

givanz/Vvvebtwenty/v2.26.0Jul 31, 2026by twenty-pr[bot]

AI Summary

This release introduces a Slack conversational assistant and refines workflow versioning, while also including several breaking changes related to system views and agent execution. It features significant mobile UX improvements and fixes for messaging and record handling.

Key Highlights

  • Centralized system `View` `viewField` side effect
  • fix(server): return runAgent execution failures as result errors
  • Introduced Slack conversational assistant
  • Added workflow features like pinning concrete models
  • Improved mobile UX: Open records on full page instead of side panel

Breaking Changes

  • Centralize system `View` `viewField` side effect
  • fix(server): return runAgent execution failures as result errors

New Features

  • Slack conversational assistant
  • Workflow version content reading from core
  • Preview highlighted record in search command bar
  • Lazy tool loading for open-ended AI agent runs

Full Release Notes

<!-- generated-release-notes v1 -->

## ⚠️ Breaking changes

- [BREAKING-CHANGE] Centralize system `View` `viewField` side effect ([#23081](https://github.com/twentyhq/twenty/pull/23081)) by @prastoin
- [breaking-change] fix(server): return runAgent execution failures as result errors ([#23390](https://github.com/twentyhq/twenty/pull/23390)) by @abdulrahmancodes

## ✨ New features

- feat: Slack conversational assistant ([#22984](https://github.com/twentyhq/twenty/pull/22984)) by @abdulrahmancodes
- feat(workflow): read workflow version content from core in the engine, behind a flag ([#23403](https://github.com/twentyhq/twenty/pull/23403)) by @thomtrp
- feat(front): preview highlighted record in the search command bar ([#23413](https://github.com/twentyhq/twenty/pull/23413)) by @FelixMalfait
- feat(workflow): pin concrete model on AI agent node creation and exclude interactive tools from workflow runs ([#23447](https://github.com/twentyhq/twenty/pull/23447)) by @etiennejouan
- feat(ai-agent): lazy tool loading for the open-ended runAgent path ([#23454](https://github.com/twentyhq/twenty/pull/23454)) by @abdulrahmancodes
- feat(ai-tool): resolve and default icons in AI metadata tools ([#23480](https://github.com/twentyhq/twenty/pull/23480)) by @etiennejouan
- feat(workflow): make the flow atom authoritative for version content, read core behind a flag ([#23499](https://github.com/twentyhq/twenty/pull/23499)) by @thomtrp
- feat(server): attach app attributes to application rate-limited metric ([#23500](https://github.com/twentyhq/twenty/pull/23500)) by @prastoin
- feat(dashboard): extend number format option to bar, line and pie charts ([#23505](https://github.com/twentyhq/twenty/pull/23505)) by @ehconitin
- feat(apps): add enqueueJob to run a logic function on the workers ([#23527](https://github.com/twentyhq/twenty/pull/23527)) by @martmull

## 💅 Improvements & UX

- Mirror host element geometry into front component workers ([#23264](https://github.com/twentyhq/twenty/pull/23264)) by @bosiraphael
- Restore soft-deleted junction record when re-adding a junction relation ([#23371](https://github.com/twentyhq/twenty/pull/23371)) by @thomtrp
- Show call recorders as calendar event participants ([#23380](https://github.com/twentyhq/twenty/pull/23380)) by @martmull
- Include root cause errors in workspace migration runner exception message ([#23416](https://github.com/twentyhq/twenty/pull/23416)) by @prastoin
- Take openRecordIn from the view in scope instead of a global atom ([#23422](https://github.com/twentyhq/twenty/pull/23422)) by @FelixMalfait
- Make record chips open records natively on touch devices ([#23424](https://github.com/twentyhq/twenty/pull/23424)) by @FelixMalfait
- Docs update ([#23429](https://github.com/twentyhq/twenty/pull/23429)) by @BOHEUS
- Auto-start the workspace setup chat with a data model proposal ([#23437](https://github.com/twentyhq/twenty/pull/23437)) by @bosiraphael
- Keep email participant avatar colors consistent ([#23444](https://github.com/twentyhq/twenty/pull/23444)) by @Weiko
- Add calendar date field submenu with grouped field options ([#23445](https://github.com/twentyhq/twenty/pull/23445)) by @Weiko
- Hide the command menu button while the mobile side panel is open ([#23471](https://github.com/twentyhq/twenty/pull/23471)) by @FelixMalfait
- PDF upload fix ([#23473](https://github.com/twentyhq/twenty/pull/23473)) by @BOHEUS
- Open records on a full page instead of a side panel on mobile ([#23474](https://github.com/twentyhq/twenty/pull/23474)) by @FelixMalfait
- Dashboard doc fix ([#23475](https://github.com/twentyhq/twenty/pull/23475)) by @BOHEUS
- Disable double-tap zoom while keeping pinch zoom ([#23476](https://github.com/twentyhq/twenty/pull/23476)) by @FelixMalfait
- `[Upgrade]` Stop command gracefully on SIGINT/SIGTERM ([#23481](https://github.com/twentyhq/twenty/pull/23481)) by @prastoin
- Resolve route-trigger workspace from bearer token on bare hosts ([#23490](https://github.com/twentyhq/twenty/pull/23490)) by @ehconitin
- Stop building the Campaigns navigation menu item ([#23493](https://github.com/twentyhq/twenty/pull/23493)) by @FelixMalfait
- Restore the Figma halftone shapes and calm the welcome animation ([#23495](https://github.com/twentyhq/twenty/pull/23495)) by @bosiraphael
- Align campaign view column positions with the standard layout ([#23496](https://github.com/twentyhq/twenty/pull/23496)) by @FelixMalfait
- `[Upgrade]` Add a detached-run wrapper for the `upgrade` command ([#23497](https://github.com/twentyhq/twenty/pull/23497)) by @prastoin
- System view tooling explicit params key naming ([#23506](https://github.com/twentyhq/twenty/pull/23506)) by @prastoin
- Fix clipped New chat button label in localized navigation drawer ([#23511](https://github.com/twentyhq/twenty/pull/23511)) by @thomtrp
- Make onboarding cards contrast with the page background ([#23516](https://github.com/twentyhq/twenty/pull/23516)) by @bosiraphael
- Install pre-installed apps in a dedicated job after the workspace upgrade cursor is written ([#23517](https://github.com/twentyhq/twenty/pull/23517)) by @martmull
- Move settings tabs below page headers ([#23519](https://github.com/twentyhq/twenty/pull/23519)) by @Bonapara
- Pin last-contact to twenty &gt;=2.26.0 ([#23520](https://github.com/twentyhq/twenty/pull/23520)) by @prastoin
- Prevent overlapping workspace cleanup executions ([#23522](https://github.com/twentyhq/twenty/pull/23522)) by @Weiko
- Switch call recorder post-call transcription to Gladia with code switching ([#23532](https://github.com/twentyhq/twenty/pull/23532)) by @ehconitin
- Refresh billing state after ending trial period ([#23534](https://github.com/twentyhq/twenty/pull/23534)) by @FelixMalfait
- Keep fullWidth buttons at full width while loading ([#23536](https://github.com/twentyhq/twenty/pull/23536)) by @FelixMalfait
- Document current front component limitations ([#23549](https://github.com/twentyhq/twenty/pull/23549)) by @bosiraphael
- Let the instance upgrade version reach releases without instance commands ([#23552](https://github.com/twentyhq/twenty/pull/23552)) by @prastoin
- Add licensing section to legal FAQ ([#23560](https://github.com/twentyhq/twenty/pull/23560)) by @BOHEUS
- Hide app record-selection commands when all records are selected ([#23561](https://github.com/twentyhq/twenty/pull/23561)) by @bosiraphael
- Clarify application licensing and add trademark policy ([#23564](https://github.com/twentyhq/twenty/pull/23564)) by @FelixMalfait
- Revert the external link confirmation popup for front components ([#23567](https://github.com/twentyhq/twenty/pull/23567)) by @bosiraphael
- Compute last contact on relationship changes in last-contact app ([#23569](https://github.com/twentyhq/twenty/pull/23569)) by @martmull
- Add application job enqueue limits guard on all message queue drivers ([#23570](https://github.com/twentyhq/twenty/pull/23570)) by @martmull
- Display object, field and view links as chips in the AI chat ([#23573](https://github.com/twentyhq/twenty/pull/23573)) by @bosiraphael
- Optimize upgrade status gauges with count-only queries ([#23574](https://github.com/twentyhq/twenty/pull/23574)) by @Weiko
- Delete DESIGN.md ([#23576](https://github.com/twentyhq/twenty/pull/23576)) by @FelixMalfait
- Delete PRODUCT.md ([#23577](https://github.com/twentyhq/twenty/pull/23577)) by @FelixMalfait
- Throttle local cache expiration sweeps ([#23579](https://github.com/twentyhq/twenty/pull/23579)) by @Weiko
- Add connected account handle/provider index ([#23580](https://github.com/twentyhq/twenty/pull/23580)) by @Weiko
- Create INDEX view fields visible on field creation ([#23585](https://github.com/twentyhq/twenty/pull/23585)) by @prastoin
- Add Enterprise plan and competitor pricing comparison pages ([#23588](https://github.com/twentyhq/twenty/pull/23588)) by @FelixMalfait
- Maintain INDEX view system side effects on deactivated views ([#23590](https://github.com/twentyhq/twenty/pull/23590)) by @prastoin
- Cache metadata lookups during ORM result formatting ([#23593](https://github.com/twentyhq/twenty/pull/23593)) by @Weiko

## 🐛 Bug fixes

- fix(page-layout): render standalone rich text widget on record pages ([#23435](https://github.com/twentyhq/twenty/pull/23435)) by @thomtrp
- fix(workflow): rename the trigger step through the dedicated mutation ([#23450](https://github.com/twentyhq/twenty/pull/23450)) by @thomtrp
- fix: Decrypt encrypted front component variables ([#23494](https://github.com/twentyhq/twenty/pull/23494)) by @remihuigen
- fix(server): stop the global catch-all filter from shadowing typed GraphQL exception filters ([#23508](https://github.com/twentyhq/twenty/pull/23508)) by @thomtrp
- fix(workflow): use as draft with an existing draft and cross-object record page filters ([#23524](https://github.com/twentyhq/twenty/pull/23524)) by @thomtrp

## 🔧 Developer & API

- Use client SDK /s dispatch for call-recorder own-route posts ([#23558](https://github.com/twentyhq/twenty/pull/23558)) by @ehconitin

<details>
<summary>🏗️ Internal changes (3)</summary>

- test(workflow): cover the workflow core mirror end to end ([#23434](https://github.com/twentyhq/twenty/pull/23434)) by @thomtrp
- ci(pr-review): label-only manual trigger, thin dispatcher ([#23449](https://github.com/twentyhq/twenty/pull/23449)) by @charlesBochet
- docs: state v1.23 as prerequisite for cross-version upgrades ([#23575](https://github.com/twentyhq/twenty/pull/23575)) by @prastoin

</details>

## 🎉 New contributors

- @remihuigen made their first contribution in https://github.com/twentyhq/twenty/pull/23494

<details>
<summary>Full changelog (93 PRs)</summary>

- feat: Slack conversational assistant ([#22984](https://github.com/twentyhq/twenty/pull/22984)) by @abdulrahmancodes
- [BREAKING-CHANGE] Centralize system `View` `viewField` side effect ([#23081](https://github.com/twentyhq/twenty/pull/23081)) by @prastoin
- Mirror host element geometry into front component workers ([#23264](https://github.com/twentyhq/twenty/pull/23264)) by @bosiraphael
- Restore soft-deleted junction record when re-adding a junction relation ([#23371](https://github.com/twentyhq/twenty/pull/23371)) by @thomtrp
- Show call recorders as calendar event participants ([#23380](https://github.com/twentyhq/twenty/pull/23380)) by @martmull
- [breaking-change] fix(server): return runAgent execution failures as result errors ([#23390](https://github.com/twentyhq/twenty/pull/23390)) by @abdulrahmancodes
- feat(workflow): read workflow version content from core in the engine, behind a flag ([#23403](https://github.com/twentyhq/twenty/pull/23403)) by @thomtrp
- feat(front): preview highlighted record in the search command bar ([#23413](https://github.com/twentyhq/twenty/pull/23413)) by @FelixMalfait
- Include root cause errors in workspace migration runner exception message ([#23416](https://github.com/twentyhq/twenty/pull/23416)) by @prastoin
- Take openRecordIn from the view in scope instead of a global atom ([#23422](https://github.com/twentyhq/twenty/pull/23422)) by @FelixMalfait
- Make record chips open records natively on touch devices ([#23424](https://github.com/twentyhq/twenty/pull/23424)) by @FelixMalfait
- Docs update ([#23429](https://github.com/twentyhq/twenty/pull/23429)) by @BOHEUS
- test(workflow): cover the workflow core mirror end to end ([#23434](https://github.com/twentyhq/twenty/pull/23434)) by @thomtrp
- fix(page-layout): render standalone rich text widget on record pages ([#23435](https://github.com/twentyhq/twenty/pull/23435)) by @thomtrp
- Auto-start the workspace setup chat with a data model proposal ([#23437](https://github.com/twentyhq/twenty/pull/23437)) by @bosiraphael
- Keep email participant avatar colors consistent ([#23444](https://github.com/twentyhq/twenty/pull/23444)) by @Weiko
- Add calendar date field submenu with grouped field options ([#23445](https://github.com/twentyhq/twenty/pull/23445)) by @Weiko
- feat(workflow): pin concrete model on AI agent node creation and exclude interactive tools from workflow runs ([#23447](https://github.com/twentyhq/twenty/pull/23447)) by @etiennejouan
- ci(pr-review): label-only manual trigger, thin dispatcher ([#23449](https://github.com/twentyhq/twenty/pull/23449)) by @charlesBochet
- fix(workflow): rename the trigger step through the dedicated mutation ([#23450](https://github.com/twentyhq/twenty/pull/23450)) by @thomtrp
- chore: bump version to 2.26.0 ([#23451](https://github.com/twentyhq/twenty/pull/23451)) by @twenty-pr
- i18n - docs translations ([#23452](https://github.com/twentyhq/twenty/pull/23452)) by @github-actions
- feat(ai-agent): lazy tool loading for the open-ended runAgent path ([#23454](https://github.com/twentyhq/twenty/pull/23454)) by @abdulrahmancodes
- i18n - docs translations ([#23455](https://github.com/twentyhq/twenty/pull/23455)) by @github-actions
- i18n - translations ([#23459](https://github.com/twentyhq/twenty/pull/23459)) by @github-actions
- i18n - docs translations ([#23460](https://github.com/twentyhq/twenty/pull/23460)) by @github-actions
- i18n - translations ([#23463](https://github.com/twentyhq/twenty/pull/23463)) by @github-actions
- i18n - docs translations ([#23466](https://github.com/twentyhq/twenty/pull/23466)) by @github-actions
- Hide the command menu button while the mobile side panel is open ([#23471](https://github.com/twentyhq/twenty/pull/23471)) by @FelixMalfait
- PDF upload fix ([#23473](https://github.com/twentyhq/twenty/pull/23473)) by @BOHEUS
- Open records on a full page instead of a side panel on mobile ([#23474](https://github.com/twentyhq/twenty/pull/23474)) by @FelixMalfait
- Dashboard doc fix ([#23475](https://github.com/twentyhq/twenty/pull/23475)) by @BOHEUS
- Disable double-tap zoom while keeping pinch zoom ([#23476](https://github.com/twentyhq/twenty/pull/23476)) by @FelixMalfait
- [BREAKING-CHANGE] Add NOT_RECORDED call recording status ([#23478](https://github.com/twentyhq/twenty/pull/23478)) by @ehconitin
- feat(ai-tool): resolve and default icons in AI metadata tools ([#23480](https://github.com/twentyhq/twenty/pull/23480)) by @etiennejouan
- `[Upgrade]` Stop command gracefully on SIGINT/SIGTERM ([#23481](https://github.com/twentyhq/twenty/pull/23481)) by @prastoin
- i18n - docs translations ([#23483](https://github.com/twentyhq/twenty/pull/23483)) by @github-actions
- Resolve route-trigger workspace from bearer token on bare hosts ([#23490](https://github.com/twentyhq/twenty/pull/23490)) by @ehconitin
- Stop building the Campaigns navigation menu item ([#23493](https://github.com/twentyhq/twenty/pull/23493)) by @FelixMalfait
- fix: Decrypt encrypted front component variables ([#23494](https://github.com/twentyhq/twenty/pull/23494)) by @remihuigen
- Restore the Figma halftone shapes and calm the welcome animation ([#23495](https://github.com/twentyhq/twenty/pull/23495)) by @bosiraphael
- Align campaign view column positions with the standard layout ([#23496](https://github.com/twentyhq/twenty/pull/23496)) by @FelixMalfait
- `[Upgrade]` Add a detached-run wrapper for the `upgrade` command ([#23497](https://github.com/twentyhq/twenty/pull/23497)) by @prastoin
- feat(workflow): make the flow atom authoritative for version content, read core behind a flag ([#23499](https://github.com/twentyhq/twenty/pull/23499)) by @thomtrp
- feat(server): attach app attributes to application rate-limited metric ([#23500](https://github.com/twentyhq/twenty/pull/23500)) by @prastoin
- feat(dashboard): extend number format option to bar, line and pie charts ([#23505](https://github.com/twentyhq/twenty/pull/23505)) by @ehconitin
- System view tooling explicit params key naming ([#23506](https://github.com/twentyhq/twenty/pull/23506)) by @prastoin
- i18n - translations ([#23507](https://github.com/twentyhq/twenty/pull/23507)) by @github-actions
- fix(server): stop the global catch-all filter from shadowing typed GraphQL exception filters ([#23508](https://github.com/twentyhq/twenty/pull/23508)) by @thomtrp
- i18n - translations ([#23509](https://github.com/twentyhq/twenty/pull/23509)) by @github-actions
- Fix clipped New chat button label in localized navigation drawer ([#23511](https://github.com/twentyhq/twenty/pull/23511)) by @thomtrp
- i18n - translations ([#23513](https://github.com/twentyhq/twenty/pull/23513)) by @github-actions
- i18n - docs translations ([#23515](https://github.com/twentyhq/twenty/pull/23515)) by @github-actions
- Make onboarding cards contrast with the page background ([#23516](https://github.com/twentyhq/twenty/pull/23516)) by @bosiraphael
- Install pre-installed apps in a dedicated job after the workspace upgrade cursor is written ([#23517](https://github.com/twentyhq/twenty/pull/23517)) by @martmull
- Move settings tabs below page headers ([#23519](https://github.com/twentyhq/twenty/pull/23519)) by @Bonapara
- Pin last-contact to twenty &gt;=2.26.0 ([#23520](https://github.com/twentyhq/twenty/pull/23520)) by @prastoin
- Prevent overlapping workspace cleanup executions ([#23522](https://github.com/twentyhq/twenty/pull/23522)) by @Weiko
- i18n - docs translations ([#23523](https://github.com/twentyhq/twenty/pull/23523)) by @github-actions
- fix(workflow): use as draft with an existing draft and cross-object record page filters ([#23524](https://github.com/twentyhq/twenty/pull/23524)) by @thomtrp
- i18n - translations ([#23525](https://github.com/twentyhq/twenty/pull/23525)) by @github-actions
- feat(apps): add enqueueJob to run a logic function on the workers ([#23527](https://github.com/twentyhq/twenty/pull/23527)) by @martmull
- Switch call recorder post-call transcription to Gladia with code switching ([#23532](https://github.com/twentyhq/twenty/pull/23532)) by @ehconitin
- Refresh billing state after ending trial period ([#23534](https://github.com/twentyhq/twenty/pull/23534)) by @FelixMalfait
- Keep fullWidth buttons at full width while loading ([#23536](https://github.com/twentyhq/twenty/pull/23536)) by @FelixMalfait
- i18n - translations ([#23547](https://github.com/twentyhq/twenty/pull/23547)) by @github-actions
- Document current front component limitations ([#23549](https://github.com/twentyhq/twenty/pull/23549)) by @bosiraphael
- Let the instance upgrade version reach releases without instance commands ([#23552](https://github.com/twentyhq/twenty/pull/23552)) by @prastoin
- i18n - docs translations ([#23555](https://github.com/twentyhq/twenty/pull/23555)) by @github-actions
- Use client SDK /s dispatch for call-recorder own-route posts ([#23558](https://github.com/twentyhq/twenty/pull/23558)) by @ehconitin
- i18n - docs translations ([#23559](https://github.com/twentyhq/twenty/pull/23559)) by @github-actions
- Add licensing section to legal FAQ ([#23560](https://github.com/twentyhq/twenty/pull/23560)) by @BOHEUS
- Hide app record-selection commands when all records are selected ([#23561](https://github.com/twentyhq/twenty/pull/23561)) by @bosiraphael
- i18n - translations ([#23563](https://github.com/twentyhq/twenty/pull/23563)) by @github-actions
- Clarify application licensing and add trademark policy ([#23564](https://github.com/twentyhq/twenty/pull/23564)) by @FelixMalfait
- Revert the external link confirmation popup for front components ([#23567](https://github.com/twentyhq/twenty/pull/23567)) by @bosiraphael
- Compute last contact on relationship changes in last-contact app ([#23569](https://github.com/twentyhq/twenty/pull/23569)) by @martmull
- Add application job enqueue limits guard on all message queue drivers ([#23570](https://github.com/twentyhq/twenty/pull/23570)) by @martmull
- i18n - translations ([#23572](https://github.com/twentyhq/twenty/pull/23572)) by @github-actions
- Display object, field and view links as chips in the AI chat ([#23573](https://github.com/twentyhq/twenty/pull/23573)) by @bosiraphael
- Optimize upgrade status gauges with count-only queries ([#23574](https://github.com/twentyhq/twenty/pull/23574)) by @Weiko
- docs: state v1.23 as prerequisite for cross-version upgrades ([#23575](https://github.com/twentyhq/twenty/pull/23575)) by @prastoin
- Delete DESIGN.md ([#23576](https://github.com/twentyhq/twenty/pull/23576)) by @FelixMalfait
- Delete PRODUCT.md ([#23577](https://github.com/twentyhq/twenty/pull/23577)) by @FelixMalfait
- Throttle local cache expiration sweeps ([#23579](https://github.com/twentyhq/twenty/pull/23579)) by @Weiko
- Add connected account handle/provider index ([#23580](https://github.com/twentyhq/twenty/pull/23580)) by @Weiko
- Create INDEX view fields visible on field creation ([#23585](https://github.com/twentyhq/twenty/pull/23585)) by @prastoin
- i18n - translations ([#23587](https://github.com/twentyhq/twenty/pull/23587)) by @github-actions
- Add Enterprise plan and competitor pricing comparison pages ([#23588](https://github.com/twentyhq/twenty/pull/23588)) by @FelixMalfait
- i18n - docs translations ([#23589](https://github.com/twentyhq/twenty/pull/23589)) by @github-actions
- Maintain INDEX view system side effects on deactivated views ([#23590](https://github.com/twentyhq/twenty/pull/23590)) by @prastoin
- Cache metadata lookups during ORM result formatting ([#23593](https://github.com/twentyhq/twenty/pull/23593)) by @Weiko
- i18n - translations ([#23598](https://github.com/twentyhq/twenty/pull/23598)) by @github-actions

</details>

**Full Changelog**: https://github.com/twentyhq/twenty/compare/twenty/v2.25.0...twenty/v2.26.0