twenty/v2.27.0

twentyhq/twentytwenty/v2.27.0Aug 4, 2026by twenty-pr[bot]

AI Summary

A comprehensive update focusing on security enhancements (httpOnly cookies), workflow improvements, and Slack integration features including welcome messages.

Key Highlights

  • Migrate web auth from localStorage token pairs to httpOnly cookie sessions
  • Record and enforce per-user OAuth application authorizations
  • Implement channel welcome message functionality for Slack
  • Workflow variable pickers for Search Records limit, offset, and date filters

New Features

  • AI chat role management tools
  • Slack channel welcome messages
  • Variable pickers for Search Records
  • Fix for TOTP validation ignoring configured tolerance window

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