twenty/v2.22.0

resend/react-emailtwenty/v2.22.0Jul 17, 2026by Weiko

AI Summary

A major release focusing on workflow stability, billing improvements, and enhanced record management features.

Key Highlights

  • Harden call recorder Recall API and workflow run control
  • Add day and weekly layout support to record calendar
  • Improve billing stability and app lifecycle metrics
  • Enhanced i18n support and metadata store resync

New Features

  • Workflow versioning and backfilling
  • Record calendar view updates
  • App lifecycle metrics
  • Metadata store SSE improvements

Full Release Notes

## What's Changed
* chore: bump version to 2.22.0 by @twenty-pr[bot] in https://github.com/twentyhq/twenty/pull/22867
* fix: validation link for access-domains deeplinks to Invite tab by @brahmlower in https://github.com/twentyhq/twenty/pull/22845
* Resolve application registration logo and gallery image urls at query time by @martmull in https://github.com/twentyhq/twenty/pull/22827
* Fix(Twenty-front): Junction field unable to display as table by @git-init-priyanshu in https://github.com/twentyhq/twenty/pull/22844
* fix(front): allow dismissing [Credits limit reached] banner by @dankgarlic1 in https://github.com/twentyhq/twenty/pull/22843
* feat(workflow-tools): add get_logic_function_source tool by @phelix001 in https://github.com/twentyhq/twenty/pull/22835
* chore(twenty-partners): upgrade to twenty-sdk 2.21 by @prastoin in https://github.com/twentyhq/twenty/pull/22869
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/22865
* Align call recorder vocabulary with core dialect by @ehconitin in https://github.com/twentyhq/twenty/pull/22831
* fix(front): constrain 2FA sign-in screens and dedupe their shared shell by @charlesBochet in https://github.com/twentyhq/twenty/pull/22886
* drop nestjs-query IDField from standalone DTOs/entities by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/22881
* Harden call recorder Recall API boundary by @ehconitin in https://github.com/twentyhq/twenty/pull/22832
* `[Slow db query]` Resolve applicationId from cache in FileStorageService by @prastoin in https://github.com/twentyhq/twenty/pull/22870
* Add tab param to open a record side panel page on a specific tab by @martmull in https://github.com/twentyhq/twenty/pull/22905
* fix(front): read fresh metadata in SSE update path to avoid false unknown-field warnings by @thomtrp in https://github.com/twentyhq/twenty/pull/22897
* Route pre-2.19 upgrade commands through a legacy validate-build path by @prastoin in https://github.com/twentyhq/twenty/pull/22884
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/22912
* feat: make record avatar/icon resolution data-driven via a configurable image identifier field by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/22644
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/22913
* Address #22827 review comments and converge application file endpoints by @martmull in https://github.com/twentyhq/twenty/pull/22868
* Add weekly layout to record calendar by @Weiko in https://github.com/twentyhq/twenty/pull/22819
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/22916
* Migrate call-recorder tests off own-code vi.mock by @ehconitin in https://github.com/twentyhq/twenty/pull/22902
* Add CREATED workspace activation status (read path + enum migration) by @charlesBochet in https://github.com/twentyhq/twenty/pull/22904
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/22919
* feat(workflow): soft-ref core workflow/version (backfill + dual-write) by @thomtrp in https://github.com/twentyhq/twenty/pull/22821
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/22923
* fix(server): finalize workflow runs stuck in STOPPING by @thomtrp in https://github.com/twentyhq/twenty/pull/22900
* Allow workflow run control mutations to be called with API key auth by @thomtrp in https://github.com/twentyhq/twenty/pull/22924
* fix(front): keep kanban header columns full-width when board overflows viewport by @thomtrp in https://github.com/twentyhq/twenty/pull/22926
* Add day view support to record calendar by @Weiko in https://github.com/twentyhq/twenty/pull/22922
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/22927
* Unify manifest apply pipeline between application install and dev sync by @martmull in https://github.com/twentyhq/twenty/pull/22921
* Add callAppRoute to RestApiClient by @ehconitin in https://github.com/twentyhq/twenty/pull/22863
* Fix role lookup query by @Weiko in https://github.com/twentyhq/twenty/pull/22928
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/22933
* chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/22939
* perf(server): lower workspace local cache cap to 6,000 entries by @charlesBochet in https://github.com/twentyhq/twenty/pull/22946
* Fix infinite redirect loop when logging out of a suspended workspace by @charlesBochet in https://github.com/twentyhq/twenty/pull/22949
* Decide workspace destiny from live data and all sub by @prastoin in https://github.com/twentyhq/twenty/pull/22943
* Remove calendar week view feature flag from public flags by @Weiko in https://github.com/twentyhq/twenty/pull/22950
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/22951
* fix(metadata): invalidate metadata store on SSE reconnect (#22504) by @Akash5908 in https://github.com/twentyhq/twenty/pull/22562
* fix(workflow): skip core version id write-back when the field is missing by @thomtrp in https://github.com/twentyhq/twenty/pull/22940
* Handle scalar select filter values when recomputing view filters by @Weiko in https://github.com/twentyhq/twenty/pull/22930
* feat(workflow): provision coreWorkflowVersionId on existing workspaces and link them by @thomtrp in https://github.com/twentyhq/twenty/pull/22944
* Block filters on restricted fields by @Weiko in https://github.com/twentyhq/twenty/pull/22873
* feat(server): app lifecycle metrics (install/uninstall/upgrade + marketplace publish) by @prastoin in https://github.com/twentyhq/twenty/pull/22656
* Allow non-compact all-day calendar cards to show full content by @Weiko in https://github.com/twentyhq/twenty/pull/22953
* Fix delete/destroy/restore record commands on pages without a record index by @charlesBochet in https://github.com/twentyhq/twenty/pull/22952
* Propagate record card background to inline hover content by @Weiko in https://github.com/twentyhq/twenty/pull/22957
* fix(billing): guard workspace suspend against concurrent soft-delete by @prastoin in https://github.com/twentyhq/twenty/pull/22955
* fix(metadata): resync metadata store via collection hashes on SSE reconnect by @thomtrp in https://github.com/twentyhq/twenty/pull/22956
* `[Front-comp-renderer]` Host `componentSource` caching by @prastoin in https://github.com/twentyhq/twenty/pull/22958
* fix(workflow): rebuild core workflowVersion rows in the 2-22 backfill by @thomtrp in https://github.com/twentyhq/twenty/pull/22961
* Fix signup visual regression in workspace selection layout by @Weiko in https://github.com/twentyhq/twenty/pull/22965
* fix(server): key connected-account lookup on handle and provider by @neo773 in https://github.com/twentyhq/twenty/pull/22964
* Reuse onboarding container width for workspace selection by @Weiko in https://github.com/twentyhq/twenty/pull/22974

## New Contributors
* @phelix001 made their first contribution in https://github.com/twentyhq/twenty/pull/22835

**Full Changelog**: https://github.com/twentyhq/twenty/compare/twenty/v2.21.0...twenty/v2.22.0