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