v2.3.0

twentyhq/twentyv2.3.0May 14, 2026by charlesBochet

AI Summary

This release adds significant AI improvements including Azure Foundry provider support, thread actions/filters, and archive support. It also introduces OTLP metrics export, removes gauge chart support, and adds viewSorts support in app manifests.

Key Highlights

  • Azure Foundry AI provider support
  • AI thread actions, filters, and archive support
  • OTLP metrics export for troubleshooting
  • ViewSorts support in app manifests
  • Dedicated REST controllers for object and field metadata

Breaking Changes

  • Gauge chart support removed - existing widgets deleted

New Features

  • Azure Foundry provider
  • AI thread management
  • OTLP metrics and heartbeat
  • ViewSorts in manifests
  • REST API for metadata
  • CalDAV refactor

Full Release Notes

## What's Changed
* [AI] Add thread actions, filters, and archive support by @ehconitin in https://github.com/twentyhq/twenty/pull/20068
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20164
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20166
* Dispatch root package.json hoisted deps and devDeps by @prastoin in https://github.com/twentyhq/twenty/pull/20140
* Bump 2.3.0 by @Weiko in https://github.com/twentyhq/twenty/pull/20169
* fix: register all cron jobs in twenty-app-dev image by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20167
* fix: disable sync on seeded message and calendar channels by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20168
* chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20178
* [AI] Prefer batch tools in system prompts by @ehconitin in https://github.com/twentyhq/twenty/pull/20173
* fix(code-interpreter): three correctness fixes for the TwentyMCP helper + tool output shape by @krzysztof7363 in https://github.com/twentyhq/twenty/pull/20103
* test(upgrade): assert sequence-runner error structurally instead of snapshot by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20213
* fix(shared): @types/lodash.camelcase for Docker CD by @charlesBochet in https://github.com/twentyhq/twenty/pull/20219
* fix(shared): add uuid, @types/uuid, @types/qs for Docker CD by @charlesBochet in https://github.com/twentyhq/twenty/pull/20222
* Twenty email deps by @prastoin in https://github.com/twentyhq/twenty/pull/20223
* revert: Sentry #20064 + @sentry 10.27 (prod bisect) by @charlesBochet in https://github.com/twentyhq/twenty/pull/20221
* feat(apps): generic OAuth provider support for app SDK by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20181
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20226
* feat(server): OTLP metrics export logs for troubleshooting by @charlesBochet in https://github.com/twentyhq/twenty/pull/20228
* Fix record table dashboard save by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/20202
* feat(server): add heartbeat gauge + first-export-attempt log for OTLP by @charlesBochet in https://github.com/twentyhq/twenty/pull/20230
* [Website] Implement translations. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20171
* Fix front unit test on main by @prastoin in https://github.com/twentyhq/twenty/pull/20233
* fix(server): deduplicate @opentelemetry/api to fix NoopMeterProvider by @charlesBochet in https://github.com/twentyhq/twenty/pull/20231
* Fix empty record page on system objects for non-English workspace members by @Weiko in https://github.com/twentyhq/twenty/pull/20235
* Add twenty version validation by @martmull in https://github.com/twentyhq/twenty/pull/20227
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20236
* `[DockerFile]` Optimize `twenty-server` deps and build by @prastoin in https://github.com/twentyhq/twenty/pull/20132
* AI - Add azure foundry provider by @etiennejouan in https://github.com/twentyhq/twenty/pull/20170
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20238
* Add server upgrade status on admin panel  by @ijreilly in https://github.com/twentyhq/twenty/pull/20107
* fix: handle missing file entity in avatar deletion listener by @aayushbaluni in https://github.com/twentyhq/twenty/pull/20192
* Return false instead of throwing when event stream does not exist by @thomtrp in https://github.com/twentyhq/twenty/pull/20165
* fix: show active advanced filter count badge in dropdown button by @wadeKeith in https://github.com/twentyhq/twenty/pull/20229
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20240
* Improve twenty deploy cli logs by @martmull in https://github.com/twentyhq/twenty/pull/20237
* Add check for manifest uuid version by @martmull in https://github.com/twentyhq/twenty/pull/20239
* fix rest filter default conjunction detection by @channi23 in https://github.com/twentyhq/twenty/pull/20133
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20243
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20248
* Fix/workspace member avatars 20193 by @Pantkartik in https://github.com/twentyhq/twenty/pull/20200
* New name not appearing when renaming "Stages" in data-model settings by @Bonapara in https://github.com/twentyhq/twenty/pull/20246
* fix: Invalid configuration instead of related notes  by @LuckyPigDev in https://github.com/twentyhq/twenty/pull/20251
* feat: expose upgrade status as Prometheus gauge metrics by @charlesBochet in https://github.com/twentyhq/twenty/pull/20262
* fix: show empty cell instead of 'Not shared' for soft-deleted related records by @charlesBochet in https://github.com/twentyhq/twenty/pull/20260
* Remove twenty-website package. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20270
* Make ConnectionProvider a true SyncableEntity by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20232
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20278
* fix: show AI chat filter button only on hover in navigation drawer by @ehconitin in https://github.com/twentyhq/twenty/pull/20274
* fix smtp outbound persist message by @neo773 in https://github.com/twentyhq/twenty/pull/20276
* fix: don't mark IMAP channel as failed on transient server errors by @neo773 in https://github.com/twentyhq/twenty/pull/20273
* docs: align example name to my-twenty-app across quickstarts by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20279
* `[Headless Front component]` Support multiple selected record  by @prastoin in https://github.com/twentyhq/twenty/pull/20268
* ci: add ci-website workflow for twenty-website-new by @charlesBochet in https://github.com/twentyhq/twenty/pull/20281
* fix: show 'Not shared' for RLS-hidden morph relation records by @charlesBochet in https://github.com/twentyhq/twenty/pull/20272
* feat(apps): split AI tool and workflow action triggers in LogicFunction manifest by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20208
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20284
* fix: show pinned commands in side panel search results by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/20265
* Bump twenty current version by @prastoin in https://github.com/twentyhq/twenty/pull/20241
* feat(sdk): move catalog-sync under server group by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20282
* docs: restructure Getting Started around three explicit phases by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20283
* feat(sdk): give Docker-not-running error an actionable next step by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20280
* remove direction from messages by @neo773 in https://github.com/twentyhq/twenty/pull/20026
* fix(website-new): inherit test target so twenty-shared builds in CI by @charlesBochet in https://github.com/twentyhq/twenty/pull/20285
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20286
* CalDAV refactor by @neo773 in https://github.com/twentyhq/twenty/pull/20180
* feat(sdk): add defineCommandMenuItem  by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20256
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20289
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20290
* Fix stale address coordinates after clearing autofill by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/20264
* Fix root monorepo package json focused installation by @prastoin in https://github.com/twentyhq/twenty/pull/20292
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20297
* feat: improve SEO foundations and canonicalise locale URLs while adding language-switcher in Footer as planned by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20294
* Improve app gallery image sizing (no cropping) by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/20287
* i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20301
* Fix unreliable SSE event stream updates during workflow form transitions by @thomtrp in https://github.com/twentyhq/twenty/pull/20242
* Fix unclear metadata validation errors by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/20234
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20302
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20303
* [Dashboards] [Warning] Remove gauge chart support and delete existing widgets by @ehconitin in https://github.com/twentyhq/twenty/pull/20172
* fix(server): handle Redis idle disconnects in session-store client by @sibelius in https://github.com/twentyhq/twenty/pull/20143
* 20215 convert application variable to a syncable entity by @martmull in https://github.com/twentyhq/twenty/pull/20269
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20313
* fix(front): resolve labelIdentifier per target for morph relation depth=1 by @charlesBochet in https://github.com/twentyhq/twenty/pull/20305
* Nest command unhandled error process exit 1 by @prastoin in https://github.com/twentyhq/twenty/pull/20312
* Replace sign-in mocked metadata with hardcoded BackgroundMock by @charlesBochet in https://github.com/twentyhq/twenty/pull/20308
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20317
* Fix migration by @martmull in https://github.com/twentyhq/twenty/pull/20321
* fix: server.fs.deny bypassed with queries by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20323
* fix(server): bypass workspace cache in onboardingStatus resolver by @charlesBochet in https://github.com/twentyhq/twenty/pull/20322
* fix(front): defer default home redirect when object metadata is not loaded by @charlesBochet in https://github.com/twentyhq/twenty/pull/20330
* chore(deps): bump papaparse from 5.5.2 to 5.5.3 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/20335
* chore(deps-dev): bump verdaccio from 6.3.1 to 6.5.2 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/20334
* refactor: stop reading joinColumnName from relation field settings by @charlesBochet in https://github.com/twentyhq/twenty/pull/20304
* [Website] Add articles section with index and article pages, matching customers page design by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20315
* Fix NestJS CLI pin chokidar to v3 by @neo773 in https://github.com/twentyhq/twenty/pull/20316
* Remove broken total count from workflow version by @thomtrp in https://github.com/twentyhq/twenty/pull/20324
* Add Workspace Created and Payment Received ClickHouse events by @thomtrp in https://github.com/twentyhq/twenty/pull/20277
* Add isConfigured to application registration in App admin panel by @martmull in https://github.com/twentyhq/twenty/pull/20326
* i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20337
* Ai provider - fix by @etiennejouan in https://github.com/twentyhq/twenty/pull/20318
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20338
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20340

## New Contributors
* @krzysztof7363 made their first contribution in https://github.com/twentyhq/twenty/pull/20103
* @aayushbaluni made their first contribution in https://github.com/twentyhq/twenty/pull/20192
* @wadeKeith made their first contribution in https://github.com/twentyhq/twenty/pull/20229
* @Pantkartik made their first contribution in https://github.com/twentyhq/twenty/pull/20200
* @LuckyPigDev made their first contribution in https://github.com/twentyhq/twenty/pull/20251
* @sibelius made their first contribution in https://github.com/twentyhq/twenty/pull/20143

**Full Changelog**: https://github.com/twentyhq/twenty/compare/v2.2.0...v2.3.0