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