twenty/v2.26.0
yangshun/tech-interview-handbooktwenty/v2.26.0Jul 31, 2026by twenty-pr[bot]
AI Summary
Major release featuring a Slack conversational assistant, AI agent enhancements, workflow versioning, and extensive UI/UX improvements including mobile navigation and billing.
Key Highlights
- Slack conversational assistant
- AI agent lazy tool loading for open-ended runs
- Workflow versioning behind a flag
- Mobile navigation and UX improvements
- Enterprise plan and competitor pricing comparison pages
Breaking Changes
- Centralize system `View` `viewField` side effect
- Return runAgent execution failures as result errors
New Features
- Slack conversational assistant
- Workflow versioning behind a flag
- Preview highlighted record in the search command bar
- Pin concrete model on AI agent node creation
- Lazy tool loading for the open-ended runAgent path
- Resolve and default icons in AI metadata tools
- Make the flow atom authoritative for version content
- Attach app attributes to application rate-limited metric
- Extend number format option to bar, line and pie charts
- Add enqueueJob to run a logic function on the workers
- Mirror host element geometry into front component workers
- Restore soft-deleted junction record when re-adding a junction relation
- Show call recorders as calendar event participants
- Include root cause errors in workspace migration runner exception message
- Take openRecordIn from the view in scope instead of a global atom
- Make record chips open records natively on touch devices
- Open records on a full page instead of a side panel on mobile
- Disable double-tap zoom while keeping pinch zoom
- Stop command gracefully on SIGINT/SIGTERM
- Resolve route-trigger workspace from bearer token on bare hosts
- Stop building the Campaigns navigation menu item
- Restore the Figma halftone shapes and calm the welcome animation
- Align campaign view column positions with the standard layout
- Add a detached-run wrapper for the `upgrade` command
- Hide the command menu button while the mobile side panel is open
- PDF upload fix
- Install pre-installed apps in a dedicated job after the workspace upgrade cursor is written
- Move settings tabs below page headers
- Pin last-contact to twenty >= 2.26.0
- Prevent overlapping workspace cleanup executions
- Switch call recorder post-call transcription to Gladia with code switching
- Keep fullWidth buttons at full width while loading
- Document current front component limitations
- Let the instance upgrade version reach releases without instance commands
- Add licensing section to legal FAQ
- Hide app record-selection commands when all records are selected
- Clarify application licensing and add trademark policy
- Revert the external link confirmation popup for front components
- Compute last contact on relationship changes in last-contact app
- Add application job enqueue limits guard on all message queue drivers
- Display object, field and view links as chips in the AI chat
- Optimize upgrade status gauges with count-only queries
- Throttle local cache expiration sweeps
- Add connected account handle/provider index
- Create INDEX view fields visible on field creation
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 >=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 >=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