twenty/v2.27.0

givanz/Vvvebtwenty/v2.27.0Aug 4, 2026by twenty-pr[bot]

AI Summary

This version enhances AI chat capabilities with role management tools, introduces Slack channel welcome messages, and improves workflow variable pickers. It also includes various bug fixes for AI streaming, record handling, and OAuth authorization.

Key Highlights

  • Added role management tools for AI chat
  • Implemented channel welcome message functionality for Slack
  • Added variable pickers for Search Records (limit, offset, date filters)
  • Migrated web auth from localStorage to httpOnly cookie sessions
  • Fixed AI chat streaming activity display

New Features

  • Role management tools for AI chat
  • Slack channel welcome message
  • Variable pickers for Search Records in workflows
  • Route all version content readers through flag-aware sources

Full Release Notes

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

## ✨ New features

- feat(connections): add an onDisconnect lifecycle hook to connection providers ([#23538](https://github.com/twentyhq/twenty/pull/23538)) by @abdulrahmancodes
- feat(workflow): route all version content readers through the flag-aware sources ([#23583](https://github.com/twentyhq/twenty/pull/23583)) by @thomtrp
- feat(server): add role management tools for AI chat ([#23613](https://github.com/twentyhq/twenty/pull/23613)) by @FelixMalfait
- feat(workflow): variable pickers for Search Records limit, offset and date filters ([#23696](https://github.com/twentyhq/twenty/pull/23696)) by @thomtrp
- feat(slack): implement channel welcome message functionality ([#23699](https://github.com/twentyhq/twenty/pull/23699)) by @abdulrahmancodes

## 💅 Improvements & UX

- Add captcha and throttling to the password reset link ([#23372](https://github.com/twentyhq/twenty/pull/23372)) by @bosiraphael
- Keep leading + when filtering phones by calling code ([#23546](https://github.com/twentyhq/twenty/pull/23546)) by @thomtrp
- Fix record title cell reopening on every page refresh ([#23551](https://github.com/twentyhq/twenty/pull/23551)) by @avonian
- Messaging archived account fix ([#23553](https://github.com/twentyhq/twenty/pull/23553)) by @BOHEUS
- Replace last-contact backfill with cursor-paginated per-record backfills ([#23582](https://github.com/twentyhq/twenty/pull/23582)) by @martmull
- Use the fast model for the onboarding setup chat ([#23586](https://github.com/twentyhq/twenty/pull/23586)) by @bosiraphael
- Improve the workspace setup kickoff prompt ([#23594](https://github.com/twentyhq/twenty/pull/23594)) by @bosiraphael
- Fix calendar field picker state handling ([#23595](https://github.com/twentyhq/twenty/pull/23595)) by @Weiko
- Make page layout tab layoutMode diffable and default standalone pages to vertical list ([#23596](https://github.com/twentyhq/twenty/pull/23596)) by @bosiraphael
- v1.6.1 — fix(partners): scope Application RLS to the partner's own partnerUser ([#23597](https://github.com/twentyhq/twenty/pull/23597)) by @rashad
- v1.6.0 — Partners: let partners set the regions they serve on My Profile ([#23605](https://github.com/twentyhq/twenty/pull/23605)) by @rashad
- Harden Fireflies call synchronization lifecycle ([#23610](https://github.com/twentyhq/twenty/pull/23610)) by @ehconitin
- Unwrap settings front components in the front component build ([#23631](https://github.com/twentyhq/twenty/pull/23631)) by @ehconitin
- Fix TOTP validation ignoring the configured tolerance window ([#23632](https://github.com/twentyhq/twenty/pull/23632)) by @FelixMalfait
- Add a roles standard skill for the AI chat agent ([#23636](https://github.com/twentyhq/twenty/pull/23636)) by @bosiraphael
- Keep chart palette colors stable when series order changes ([#23638](https://github.com/twentyhq/twenty/pull/23638)) by @ehconitin
- Remove shouldRunOnVersionUpgrade ([#23641](https://github.com/twentyhq/twenty/pull/23641)) by @martmull
- Migrate web auth from localStorage token pairs to httpOnly cookie sessions ([#23642](https://github.com/twentyhq/twenty/pull/23642)) by @FelixMalfait
- Fix ReconcileIndexViewUniversalIdentifier failing on occupied derived identifiers ([#23647](https://github.com/twentyhq/twenty/pull/23647)) by @prastoin
- Remove noisy actor context injection logs ([#23649](https://github.com/twentyhq/twenty/pull/23649)) by @Weiko
- Update slack app naming ([#23650](https://github.com/twentyhq/twenty/pull/23650)) by @martmull
- Update record page layout card ([#23654](https://github.com/twentyhq/twenty/pull/23654)) by @Bonapara
- Remove outdated index view pitfall from app agent docs ([#23667](https://github.com/twentyhq/twenty/pull/23667)) by @prastoin
- Docs update - Microsoft integration ([#23671](https://github.com/twentyhq/twenty/pull/23671)) by @BOHEUS
- Record and enforce per-user OAuth application authorizations ([#23678](https://github.com/twentyhq/twenty/pull/23678)) by @FelixMalfait
- Bound an application by its own role as well as the user's ([#23680](https://github.com/twentyhq/twenty/pull/23680)) by @FelixMalfait
- Classify Recall no-capture sub codes as NOT_RECORDED in call-recorder app ([#23693](https://github.com/twentyhq/twenty/pull/23693)) by @ehconitin
- Classify OAuth refresh errors by reason instead of status code ([#23705](https://github.com/twentyhq/twenty/pull/23705)) by @neo773
- Default workspaceMember openRecordIn when the workspace is not upgraded yet ([#23723](https://github.com/twentyhq/twenty/pull/23723)) by @FelixMalfait

## 🐛 Bug fixes

- fix(ai-chat): show streaming activity during and between steps ([#23581](https://github.com/twentyhq/twenty/pull/23581)) by @etiennejouan
- fix(front): reload record board groups when view groups change ([#23637](https://github.com/twentyhq/twenty/pull/23637)) by @thomtrp
- fix(server): preserve null values in record update util ([#23639](https://github.com/twentyhq/twenty/pull/23639)) by @thomtrp
- fix(server): stop FIND_RECORDS from silently ignoring its filter ([#23640](https://github.com/twentyhq/twenty/pull/23640)) by @thomtrp
- fix: provision INDEX view fields for relations created in the same batch as their object ([#23665](https://github.com/twentyhq/twenty/pull/23665)) by @prastoin
- fix(twenty-front): Scrolling and Dragging conflict on mobile devices ([#23677](https://github.com/twentyhq/twenty/pull/23677)) by @git-init-priyanshu
- fix(server): catch application job enqueue throttle instead of failing the batch job ([#23684](https://github.com/twentyhq/twenty/pull/23684)) by @thomtrp
- fix(server): scope personal favorite SSE events to their owner ([#23712](https://github.com/twentyhq/twenty/pull/23712)) by @thomtrp
- fix(workflow): clear nextStepIds when converting a step to If/Else ([#23714](https://github.com/twentyhq/twenty/pull/23714)) by @thomtrp

## 🔧 Developer & API

- Filter connected account webhook renewal to exclude accounts with failed authentication errors ([#23694](https://github.com/twentyhq/twenty/pull/23694)) by @neo773
- Track connected account webhook subscription lifecycle metrics ([#23710](https://github.com/twentyhq/twenty/pull/23710)) by @neo773

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

- refactor(navigation-menu-item): validate universal properties instead of ids ([#23566](https://github.com/twentyhq/twenty/pull/23566)) by @prastoin
- docs: fix inaccuracies found auditing the docs against v2.27.0 ([#23616](https://github.com/twentyhq/twenty/pull/23616)) by @FelixMalfait
- test(server): strengthen MCP catalog and gating coverage ([#23630](https://github.com/twentyhq/twenty/pull/23630)) by @FelixMalfait
- refactor(last-contact): drive backfill with enqueued jobs ([#23646](https://github.com/twentyhq/twenty/pull/23646)) by @martmull
- ci(pr-review): dispatch on PR open (standard review only) ([#23708](https://github.com/twentyhq/twenty/pull/23708)) by @charlesBochet

</details>

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

- Add captcha and throttling to the password reset link ([#23372](https://github.com/twentyhq/twenty/pull/23372)) by @bosiraphael
- feat(connections): add an onDisconnect lifecycle hook to connection providers ([#23538](https://github.com/twentyhq/twenty/pull/23538)) by @abdulrahmancodes
- Keep leading + when filtering phones by calling code ([#23546](https://github.com/twentyhq/twenty/pull/23546)) by @thomtrp
- Fix record title cell reopening on every page refresh ([#23551](https://github.com/twentyhq/twenty/pull/23551)) by @avonian
- Messaging archived account fix ([#23553](https://github.com/twentyhq/twenty/pull/23553)) by @BOHEUS
- refactor(navigation-menu-item): validate universal properties instead of ids ([#23566](https://github.com/twentyhq/twenty/pull/23566)) by @prastoin
- fix(ai-chat): show streaming activity during and between steps ([#23581](https://github.com/twentyhq/twenty/pull/23581)) by @etiennejouan
- Replace last-contact backfill with cursor-paginated per-record backfills ([#23582](https://github.com/twentyhq/twenty/pull/23582)) by @martmull
- feat(workflow): route all version content readers through the flag-aware sources ([#23583](https://github.com/twentyhq/twenty/pull/23583)) by @thomtrp
- Use the fast model for the onboarding setup chat ([#23586](https://github.com/twentyhq/twenty/pull/23586)) by @bosiraphael
- Improve the workspace setup kickoff prompt ([#23594](https://github.com/twentyhq/twenty/pull/23594)) by @bosiraphael
- Fix calendar field picker state handling ([#23595](https://github.com/twentyhq/twenty/pull/23595)) by @Weiko
- Make page layout tab layoutMode diffable and default standalone pages to vertical list ([#23596](https://github.com/twentyhq/twenty/pull/23596)) by @bosiraphael
- v1.6.1 — fix(partners): scope Application RLS to the partner's own partnerUser ([#23597](https://github.com/twentyhq/twenty/pull/23597)) by @rashad
- i18n - translations ([#23600](https://github.com/twentyhq/twenty/pull/23600)) by @github-actions
- i18n - docs translations ([#23602](https://github.com/twentyhq/twenty/pull/23602)) by @github-actions
- i18n - translations ([#23603](https://github.com/twentyhq/twenty/pull/23603)) by @github-actions
- chore: bump version to 2.27.0 ([#23604](https://github.com/twentyhq/twenty/pull/23604)) by @twenty-pr
- v1.6.0 — Partners: let partners set the regions they serve on My Profile ([#23605](https://github.com/twentyhq/twenty/pull/23605)) by @rashad
- i18n - docs translations ([#23608](https://github.com/twentyhq/twenty/pull/23608)) by @github-actions
- Harden Fireflies call synchronization lifecycle ([#23610](https://github.com/twentyhq/twenty/pull/23610)) by @ehconitin
- feat(server): add role management tools for AI chat ([#23613](https://github.com/twentyhq/twenty/pull/23613)) by @FelixMalfait
- Move open-record-in to object metadata and member preference ([#23614](https://github.com/twentyhq/twenty/pull/23614)) by @FelixMalfait
- chore: sync AI model catalog from models.dev ([#23615](https://github.com/twentyhq/twenty/pull/23615)) by @github-actions
- docs: fix inaccuracies found auditing the docs against v2.27.0 ([#23616](https://github.com/twentyhq/twenty/pull/23616)) by @FelixMalfait
- i18n - docs translations ([#23618](https://github.com/twentyhq/twenty/pull/23618)) by @github-actions
- i18n - translations ([#23620](https://github.com/twentyhq/twenty/pull/23620)) by @github-actions
- i18n - translations ([#23621](https://github.com/twentyhq/twenty/pull/23621)) by @github-actions
- i18n - docs translations ([#23624](https://github.com/twentyhq/twenty/pull/23624)) by @github-actions
- test(server): strengthen MCP catalog and gating coverage ([#23630](https://github.com/twentyhq/twenty/pull/23630)) by @FelixMalfait
- Unwrap settings front components in the front component build ([#23631](https://github.com/twentyhq/twenty/pull/23631)) by @ehconitin
- Fix TOTP validation ignoring the configured tolerance window ([#23632](https://github.com/twentyhq/twenty/pull/23632)) by @FelixMalfait
- i18n - translations ([#23635](https://github.com/twentyhq/twenty/pull/23635)) by @github-actions
- Add a roles standard skill for the AI chat agent ([#23636](https://github.com/twentyhq/twenty/pull/23636)) by @bosiraphael
- fix(front): reload record board groups when view groups change ([#23637](https://github.com/twentyhq/twenty/pull/23637)) by @thomtrp
- Keep chart palette colors stable when series order changes ([#23638](https://github.com/twentyhq/twenty/pull/23638)) by @ehconitin
- fix(server): preserve null values in record update util ([#23639](https://github.com/twentyhq/twenty/pull/23639)) by @thomtrp
- fix(server): stop FIND_RECORDS from silently ignoring its filter ([#23640](https://github.com/twentyhq/twenty/pull/23640)) by @thomtrp
- Remove shouldRunOnVersionUpgrade ([#23641](https://github.com/twentyhq/twenty/pull/23641)) by @martmull
- Migrate web auth from localStorage token pairs to httpOnly cookie sessions ([#23642](https://github.com/twentyhq/twenty/pull/23642)) by @FelixMalfait
- refactor(last-contact): drive backfill with enqueued jobs ([#23646](https://github.com/twentyhq/twenty/pull/23646)) by @martmull
- Fix ReconcileIndexViewUniversalIdentifier failing on occupied derived identifiers ([#23647](https://github.com/twentyhq/twenty/pull/23647)) by @prastoin
- Remove noisy actor context injection logs ([#23649](https://github.com/twentyhq/twenty/pull/23649)) by @Weiko
- Update slack app naming ([#23650](https://github.com/twentyhq/twenty/pull/23650)) by @martmull
- i18n - docs translations ([#23653](https://github.com/twentyhq/twenty/pull/23653)) by @github-actions
- Update record page layout card ([#23654](https://github.com/twentyhq/twenty/pull/23654)) by @Bonapara
- i18n - translations ([#23659](https://github.com/twentyhq/twenty/pull/23659)) by @github-actions
- i18n - translations ([#23660](https://github.com/twentyhq/twenty/pull/23660)) by @github-actions
- i18n - docs translations ([#23662](https://github.com/twentyhq/twenty/pull/23662)) by @github-actions
- fix: provision INDEX view fields for relations created in the same batch as their object ([#23665](https://github.com/twentyhq/twenty/pull/23665)) by @prastoin
- chore: sync AI model catalog from models.dev ([#23666](https://github.com/twentyhq/twenty/pull/23666)) by @github-actions
- Remove outdated index view pitfall from app agent docs ([#23667](https://github.com/twentyhq/twenty/pull/23667)) by @prastoin
- i18n - docs translations ([#23670](https://github.com/twentyhq/twenty/pull/23670)) by @github-actions
- Docs update - Microsoft integration ([#23671](https://github.com/twentyhq/twenty/pull/23671)) by @BOHEUS
- fix(twenty-front): Scrolling and Dragging conflict on mobile devices ([#23677](https://github.com/twentyhq/twenty/pull/23677)) by @git-init-priyanshu
- Record and enforce per-user OAuth application authorizations ([#23678](https://github.com/twentyhq/twenty/pull/23678)) by @FelixMalfait
- Bound an application by its own role as well as the user's ([#23680](https://github.com/twentyhq/twenty/pull/23680)) by @FelixMalfait
- chore: sync AI model catalog from models.dev ([#23682](https://github.com/twentyhq/twenty/pull/23682)) by @github-actions
- fix(server): catch application job enqueue throttle instead of failing the batch job ([#23684](https://github.com/twentyhq/twenty/pull/23684)) by @thomtrp
- Classify Recall no-capture sub codes as NOT_RECORDED in call-recorder app ([#23693](https://github.com/twentyhq/twenty/pull/23693)) by @ehconitin
- Filter connected account webhook renewal to exclude accounts with failed authentication errors ([#23694](https://github.com/twentyhq/twenty/pull/23694)) by @neo773
- feat(workflow): variable pickers for Search Records limit, offset and date filters ([#23696](https://github.com/twentyhq/twenty/pull/23696)) by @thomtrp
- i18n - translations ([#23698](https://github.com/twentyhq/twenty/pull/23698)) by @github-actions
- feat(slack): implement channel welcome message functionality ([#23699](https://github.com/twentyhq/twenty/pull/23699)) by @abdulrahmancodes
- i18n - translations ([#23700](https://github.com/twentyhq/twenty/pull/23700)) by @github-actions
- i18n - docs translations ([#23701](https://github.com/twentyhq/twenty/pull/23701)) by @github-actions
- Classify OAuth refresh errors by reason instead of status code ([#23705](https://github.com/twentyhq/twenty/pull/23705)) by @neo773
- ci(pr-review): dispatch on PR open (standard review only) ([#23708](https://github.com/twentyhq/twenty/pull/23708)) by @charlesBochet
- Track connected account webhook subscription lifecycle metrics ([#23710](https://github.com/twentyhq/twenty/pull/23710)) by @neo773
- fix(server): scope personal favorite SSE events to their owner ([#23712](https://github.com/twentyhq/twenty/pull/23712)) by @thomtrp
- i18n - translations ([#23713](https://github.com/twentyhq/twenty/pull/23713)) by @github-actions
- fix(workflow): clear nextStepIds when converting a step to If/Else ([#23714](https://github.com/twentyhq/twenty/pull/23714)) by @thomtrp
- i18n - translations ([#23720](https://github.com/twentyhq/twenty/pull/23720)) by @github-actions
- i18n - docs translations ([#23721](https://github.com/twentyhq/twenty/pull/23721)) by @github-actions
- Default workspaceMember openRecordIn when the workspace is not upgraded yet ([#23723](https://github.com/twentyhq/twenty/pull/23723)) by @FelixMalfait
- i18n - translations ([#23728](https://github.com/twentyhq/twenty/pull/23728)) by @github-actions
- i18n - docs translations ([#23729](https://github.com/twentyhq/twenty/pull/23729)) by @github-actions

</details>

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