twenty/v2.50.0
twentyhq/twentytwenty/v2.50.0Oct 21, 2026by twenty-pr[bot]
Upgrading?
Full Release Notes
<!-- generated-release-notes v1 --> ## ⚠️ Breaking changes - Relabel the app permissions as Workspace Apps and User Apps and enforce User Apps on the server ([#28083](https://github.com/twentyhq/twenty/pull/28083)) by @ehconitin ## 💅 Improvements & UX - feat(billing): add workspace credits per seat ([#28207](https://github.com/twentyhq/twenty/pull/28207)) by @etiennejouan - feat(roles): prepare custom roles gating (Member identity, self-host grant, atomic role deletion) ([#28291](https://github.com/twentyhq/twenty/pull/28291)) by @etiennejouan - Show installed apps' user settings on App preferences ([#27753](https://github.com/twentyhq/twenty/pull/27753)) by @ehconitin - Let lone widgets fill standalone pages ([#27863](https://github.com/twentyhq/twenty/pull/27863)) by @Bonapara - Add fallback values to campaign variables ([#27915](https://github.com/twentyhq/twenty/pull/27915)) by @neo773 - Edit campaign variable fallbacks from the chip ([#27916](https://github.com/twentyhq/twenty/pull/27916)) by @neo773 - Add the Teams activities route ([#28000](https://github.com/twentyhq/twenty/pull/28000)) by @abdulrahmancodes - Regroup Communication settings under channel tabs ([#28001](https://github.com/twentyhq/twenty/pull/28001)) by @neo773 - Capture Slider drags on the host in front components ([#28061](https://github.com/twentyhq/twenty/pull/28061)) by @bosiraphael - Keep workspace-shared app connections off App preferences ([#28088](https://github.com/twentyhq/twenty/pull/28088)) by @ehconitin - Require CONNECTED_ACCOUNTS to add or reconnect a personal app connection ([#28089](https://github.com/twentyhq/twenty/pull/28089)) by @ehconitin - Stop radio labels shifting when the selection changes ([#28090](https://github.com/twentyhq/twenty/pull/28090)) by @Bonapara - App preferences: reset on empty value, error state, missing configuration warning ([#28091](https://github.com/twentyhq/twenty/pull/28091)) by @ehconitin - Show the sender and clearer choices on the unsubscribe page ([#28135](https://github.com/twentyhq/twenty/pull/28135)) by @Bonapara - Write an AI summary on Call Recordings imported from Microsoft Teams ([#28226](https://github.com/twentyhq/twenty/pull/28226)) by @ehconitin - Make transcript summaries the only Teams setting for V1 ([#28227](https://github.com/twentyhq/twenty/pull/28227)) by @ehconitin - Add a Generate call summary command for Teams Call Recordings and calendar events ([#28228](https://github.com/twentyhq/twenty/pull/28228)) by @ehconitin - Keep the native account app tab bar stable while accounts load ([#28244](https://github.com/twentyhq/twenty/pull/28244)) by @ehconitin - Make twenty-ui Skeleton a block clamped to its container ([#28260](https://github.com/twentyhq/twenty/pull/28260)) by @bosiraphael - Let render-composed Autocomplete inputs own their look ([#28261](https://github.com/twentyhq/twenty/pull/28261)) by @bosiraphael - Remove the no-op rounded prop from Card.Root ([#28263](https://github.com/twentyhq/twenty/pull/28263)) by @bosiraphael - Give the gray soft Banner a visible tint ([#28264](https://github.com/twentyhq/twenty/pull/28264)) by @bosiraphael - Stack SkeletonLine placeholders in a flex column ([#28268](https://github.com/twentyhq/twenty/pull/28268)) by @bosiraphael - Remove the IS_RECORD_SHARE_VISIBILITY_GATING_ENABLED feature flag ([#28271](https://github.com/twentyhq/twenty/pull/28271)) by @charlesBochet - Load the global reset in the twenty-ui Storybook ([#28272](https://github.com/twentyhq/twenty/pull/28272)) by @bosiraphael - Narrow the call recorder summary parser to the fields it reads ([#28273](https://github.com/twentyhq/twenty/pull/28273)) by @ehconitin - Make Cmd+J toggle the logs mode instead of collapsing the console ([#28274](https://github.com/twentyhq/twenty/pull/28274)) by @martmull - Align Dropdown search activation ([#28275](https://github.com/twentyhq/twenty/pull/28275)) by @bosiraphael - Only sweep workspaces with an emailing domain for stale campaigns ([#28276](https://github.com/twentyhq/twenty/pull/28276)) by @charlesBochet - Index timeline activity linked record id and skip unchanged happensAt updates ([#28277](https://github.com/twentyhq/twenty/pull/28277)) by @neo773 - Fix the call recorder custom hex input border ([#28279](https://github.com/twentyhq/twenty/pull/28279)) by @ehconitin - Fix core client JSON scalar types ([#28281](https://github.com/twentyhq/twenty/pull/28281)) by @Weiko - Retire MenuItem and MenuItemAvatar ([#28285](https://github.com/twentyhq/twenty/pull/28285)) by @bosiraphael - Stop reporting revoked accounts to Sentry ([#28287](https://github.com/twentyhq/twenty/pull/28287)) by @neo773 - Retire specialized menu rows ([#28290](https://github.com/twentyhq/twenty/pull/28290)) by @bosiraphael - Render the virtualized record table from row slots ([#28294](https://github.com/twentyhq/twenty/pull/28294)) by @charlesBochet - Give Breadcrumb a consistent medium weight ([#28297](https://github.com/twentyhq/twenty/pull/28297)) by @bosiraphael - Unify Tooltip width defaults ([#28298](https://github.com/twentyhq/twenty/pull/28298)) by @bosiraphael - Keep Skeleton corners round ([#28299](https://github.com/twentyhq/twenty/pull/28299)) by @bosiraphael - Keep full Tag labels at their natural width ([#28300](https://github.com/twentyhq/twenty/pull/28300)) by @bosiraphael - Add plain Chips with exact width limits ([#28301](https://github.com/twentyhq/twenty/pull/28301)) by @bosiraphael - Remove the IS_JSON_FILTER_ENABLED feature flag ([#28302](https://github.com/twentyhq/twenty/pull/28302)) by @charlesBochet - Stabilize frontend and twenty-ui stories ([#28303](https://github.com/twentyhq/twenty/pull/28303)) by @bosiraphael - Stop requiring workspace SECURITY permission on admin panel resolvers ([#28305](https://github.com/twentyhq/twenty/pull/28305)) by @charlesBochet - Agent engine: release a conversation's claim in one place ([#28306](https://github.com/twentyhq/twenty/pull/28306)) by @FelixMalfait - Skip istanbul and cache the Vite optimizer in Storybook test runs ([#28307](https://github.com/twentyhq/twenty/pull/28307)) by @bosiraphael - Agent engine: read a conversation's wait in one query ([#28308](https://github.com/twentyhq/twenty/pull/28308)) by @FelixMalfait - Fix inert edit button on field widgets in editor mode ([#28310](https://github.com/twentyhq/twenty/pull/28310)) by @Weiko - Expose Tooltip body composition ([#28311](https://github.com/twentyhq/twenty/pull/28311)) by @bosiraphael - Style Button popup triggers while open ([#28312](https://github.com/twentyhq/twenty/pull/28312)) by @bosiraphael - Add soft accent badges ([#28313](https://github.com/twentyhq/twenty/pull/28313)) by @bosiraphael - Add larger Heading sizes ([#28314](https://github.com/twentyhq/twenty/pull/28314)) by @bosiraphael - Let InlineBanner fill its container ([#28315](https://github.com/twentyhq/twenty/pull/28315)) by @bosiraphael - Replace gray dropdown section bands with quiet labels ([#28320](https://github.com/twentyhq/twenty/pull/28320)) by @Bonapara - Match additional emails, phones and secondary links in optimistic filters ([#28327](https://github.com/twentyhq/twenty/pull/28327)) by @charlesBochet - Agent engine: never drop a run outcome its caller is not ready for ([#28328](https://github.com/twentyhq/twenty/pull/28328)) by @FelixMalfait - Remove FelixMalfait from CODEOWNERS ([#28330](https://github.com/twentyhq/twenty/pull/28330)) by @FelixMalfait - Cover SVG shape sizes in the worker ResizeObserver ([#28331](https://github.com/twentyhq/twenty/pull/28331)) by @bosiraphael - Share the remote element command queue ([#28332](https://github.com/twentyhq/twenty/pull/28332)) by @bosiraphael - Bump the call recorder app to Twenty 2.49 ([#28336](https://github.com/twentyhq/twenty/pull/28336)) by @ehconitin - Agent engine: park a run behind a busy conversation instead of polling ([#28338](https://github.com/twentyhq/twenty/pull/28338)) by @FelixMalfait - Reject bare select filter values and rewrite stored ones ([#28339](https://github.com/twentyhq/twenty/pull/28339)) by @charlesBochet - Run prebuilt warm-ups on a rate-limited lambda-management-queue ([#28343](https://github.com/twentyhq/twenty/pull/28343)) by @charlesBochet - Rename transient-postgres-error-codes.constants.ts to transient-postgres-error-codes.constant.ts ([#28345](https://github.com/twentyhq/twenty/pull/28345)) by @twenty-pr-author - Rename the Teams feature flags to release flags ([#28347](https://github.com/twentyhq/twenty/pull/28347)) by @ehconitin - Give every field a default icon ([#28349](https://github.com/twentyhq/twenty/pull/28349)) by @Bonapara - Save nested new filter groups on dashboard widgets in one call ([#28353](https://github.com/twentyhq/twenty/pull/28353)) by @ehconitin - Split the campaign send checks from the send preparation ([#28357](https://github.com/twentyhq/twenty/pull/28357)) by @neo773 - Add a query that previews a campaign send with its blocker ([#28358](https://github.com/twentyhq/twenty/pull/28358)) by @neo773 - Cover the campaign send preview with integration tests ([#28359](https://github.com/twentyhq/twenty/pull/28359)) by @neo773 - Show the server's send blocker in the campaign send panel ([#28360](https://github.com/twentyhq/twenty/pull/28360)) by @neo773 - Remove the `as any` casts in 2 files of modules/object-record/record-filter/utils ([#28363](https://github.com/twentyhq/twenty/pull/28363)) by @twenty-pr-author - Keep grouped table rows from re-rendering when their group changes ([#28365](https://github.com/twentyhq/twenty/pull/28365)) by @charlesBochet - Fix grouped table rows disappearing after a relation edit ([#28367](https://github.com/twentyhq/twenty/pull/28367)) by @charlesBochet - Subscribe grouped table views to SSE record events ([#28369](https://github.com/twentyhq/twenty/pull/28369)) by @charlesBochet - Fix currency display crash on a code missing from the currency labels ([#28370](https://github.com/twentyhq/twenty/pull/28370)) by @charlesBochet - Fix stale selectors in create-record and create-kanban-view e2e tests ([#28380](https://github.com/twentyhq/twenty/pull/28380)) by @charlesBochet - Remove the `as any` casts in cache-storage.service.ts ([#28382](https://github.com/twentyhq/twenty/pull/28382)) by @twenty-pr-author - Offer pending invitations in the workspace picker only once the email is verified ([#28383](https://github.com/twentyhq/twenty/pull/28383)) by @charlesBochet - Rename 2 server files to the singular suffix in src/engine/core-modules/admin-panel/constants ([#28384](https://github.com/twentyhq/twenty/pull/28384)) by @twenty-pr-author - Improve Standard and Custom app marketplace pages ([#28387](https://github.com/twentyhq/twenty/pull/28387)) by @martmull - Show built-in account apps in the Installed tab ([#28388](https://github.com/twentyhq/twenty/pull/28388)) by @ehconitin - Add visual RadioGroup orientation ([#28392](https://github.com/twentyhq/twenty/pull/28392)) by @bosiraphael - Add outlined Chips for rounded links ([#28393](https://github.com/twentyhq/twenty/pull/28393)) by @bosiraphael - Add 32px Avatars and move 40px to xxl ([#28394](https://github.com/twentyhq/twenty/pull/28394)) by @bosiraphael - Add compact Tabs for tool call details ([#28395](https://github.com/twentyhq/twenty/pull/28395)) by @bosiraphael - Open the calendar event from the Call Recordings widget ([#28398](https://github.com/twentyhq/twenty/pull/28398)) by @ehconitin - Fix transcript status placement in the call recording transcript widget ([#28401](https://github.com/twentyhq/twenty/pull/28401)) by @ehconitin - Drop db spans from AI agent transactions sent to Sentry ([#28402](https://github.com/twentyhq/twenty/pull/28402)) by @etiennejouan - Rename native account apps to built-in account apps ([#28403](https://github.com/twentyhq/twenty/pull/28403)) by @ehconitin - Search help center through the docs.twenty.com MCP server ([#28405](https://github.com/twentyhq/twenty/pull/28405)) by @etiennejouan - Wait for the signed-in app in the postcard e2e auth setup ([#28406](https://github.com/twentyhq/twenty/pull/28406)) by @charlesBochet - Remove IS_TRANSCRIPT_IMPORT_RELEASED feature flag ([#28409](https://github.com/twentyhq/twenty/pull/28409)) by @ehconitin - Remove the remaining placeholders from the call recorder widgets ([#28410](https://github.com/twentyhq/twenty/pull/28410)) by @ehconitin - Add inherited Button colors ([#28413](https://github.com/twentyhq/twenty/pull/28413)) by @bosiraphael - Use Twenty UI by default in app agent guidance ([#28419](https://github.com/twentyhq/twenty/pull/28419)) by @bosiraphael - Fix flaky SavedSecretCanBeCleared story ([#28423](https://github.com/twentyhq/twenty/pull/28423)) by @ehconitin - Cover the empty currency code in getCurrencyLabel tests ([#28424](https://github.com/twentyhq/twenty/pull/28424)) by @charlesBochet - Wait for the auth UI before choosing email login in e2e tests ([#28426](https://github.com/twentyhq/twenty/pull/28426)) by @charlesBochet - Clean up call recordings left behind by call recorder integration tests ([#28428](https://github.com/twentyhq/twenty/pull/28428)) by @ehconitin - Apply loaded metadata when one stale query fails ([#28429](https://github.com/twentyhq/twenty/pull/28429)) by @charlesBochet - Accept the self-signed local TLS proxy in the postcard e2e config ([#28431](https://github.com/twentyhq/twenty/pull/28431)) by @charlesBochet - Use shared settings dialog layouts ([#28436](https://github.com/twentyhq/twenty/pull/28436)) by @bosiraphael - Use shared confirmation dialog layouts ([#28437](https://github.com/twentyhq/twenty/pull/28437)) by @bosiraphael - Always show unmatched attendees in the call participants widget ([#28438](https://github.com/twentyhq/twenty/pull/28438)) by @ehconitin - Remove the main CI failure ping to a route that does not exist ([#28440](https://github.com/twentyhq/twenty/pull/28440)) by @charlesBochet - Expose host location to front components ([#28444](https://github.com/twentyhq/twenty/pull/28444)) by @bosiraphael ## 🐛 Bug fixes - fix(server): reject oversized app tarballs without crashing the process ([#27471](https://github.com/twentyhq/twenty/pull/27471)) by @devjotaduo - fix(roles): explain a role deletion refused because the default role cannot take its API keys or agents ([#28348](https://github.com/twentyhq/twenty/pull/28348)) by @etiennejouan - fix(front): resize record table columns in the right direction in RTL ([#28378](https://github.com/twentyhq/twenty/pull/28378)) by @almoghazaz-cell - fix(shared): keep trailing slashes inside the query or hash in normalizeUrlOrigin ([#28421](https://github.com/twentyhq/twenty/pull/28421)) by @charlesBochet - fix(billing): drop billingPrice.stripeMeterId before dropping billingMeter ([#28435](https://github.com/twentyhq/twenty/pull/28435)) by @etiennejouan ## 🔧 Developer & API - Self-host Extra Smart: replace dominated grok-4.6@xhigh with grok-4.7 ([#28053](https://github.com/twentyhq/twenty/pull/28053)) by @twenty-pr-author - Let workspace admins switch to the new REST metadata API format from the Lab ([#28282](https://github.com/twentyhq/twenty/pull/28282)) by @charlesBochet - Rename 5 server files to the singular suffix in src/engine/api/mcp/constants ([#28346](https://github.com/twentyhq/twenty/pull/28346)) by @twenty-pr-author - Give SDK runtime values their own twenty-shared entry ([#28351](https://github.com/twentyhq/twenty/pull/28351)) by @ehconitin - Rename 7 server files to the singular suffix in src/engine/api/utils ([#28364](https://github.com/twentyhq/twenty/pull/28364)) by @twenty-pr-author - Parse quoted REST filter values and sibling root groups correctly ([#28368](https://github.com/twentyhq/twenty/pull/28368)) by @charlesBochet <details> <summary>🏗️ Internal changes (1)</summary> - chore(billing): remove unused billingMeter table ([#28381](https://github.com/twentyhq/twenty/pull/28381)) by @etiennejouan </details> <details> <summary>Full changelog (131 PRs)</summary> - fix(server): reject oversized app tarballs without crashing the process ([#27471](https://github.com/twentyhq/twenty/pull/27471)) by @devjotaduo - Show installed apps' user settings on App preferences ([#27753](https://github.com/twentyhq/twenty/pull/27753)) by @ehconitin - i18n - website translations ([#27821](https://github.com/twentyhq/twenty/pull/27821)) by @github-actions - Let lone widgets fill standalone pages ([#27863](https://github.com/twentyhq/twenty/pull/27863)) by @Bonapara - chore: sync AI model catalog ([#27887](https://github.com/twentyhq/twenty/pull/27887)) by @github-actions - Add fallback values to campaign variables ([#27915](https://github.com/twentyhq/twenty/pull/27915)) by @neo773 - Edit campaign variable fallbacks from the chip ([#27916](https://github.com/twentyhq/twenty/pull/27916)) by @neo773 - Add the Teams activities route ([#28000](https://github.com/twentyhq/twenty/pull/28000)) by @abdulrahmancodes - Regroup Communication settings under channel tabs ([#28001](https://github.com/twentyhq/twenty/pull/28001)) by @neo773 - Self-host Extra Smart: replace dominated grok-4.6@xhigh with grok-4.7 ([#28053](https://github.com/twentyhq/twenty/pull/28053)) by @twenty-pr-author - Capture Slider drags on the host in front components ([#28061](https://github.com/twentyhq/twenty/pull/28061)) by @bosiraphael - Relabel the app permissions as Workspace Apps and User Apps and enforce User Apps on the server ([#28083](https://github.com/twentyhq/twenty/pull/28083)) by @ehconitin - Keep workspace-shared app connections off App preferences ([#28088](https://github.com/twentyhq/twenty/pull/28088)) by @ehconitin - Require CONNECTED_ACCOUNTS to add or reconnect a personal app connection ([#28089](https://github.com/twentyhq/twenty/pull/28089)) by @ehconitin - Stop radio labels shifting when the selection changes ([#28090](https://github.com/twentyhq/twenty/pull/28090)) by @Bonapara - App preferences: reset on empty value, error state, missing configuration warning ([#28091](https://github.com/twentyhq/twenty/pull/28091)) by @ehconitin - Show the sender and clearer choices on the unsubscribe page ([#28135](https://github.com/twentyhq/twenty/pull/28135)) by @Bonapara - feat(billing): add workspace credits per seat ([#28207](https://github.com/twentyhq/twenty/pull/28207)) by @etiennejouan - Write an AI summary on Call Recordings imported from Microsoft Teams ([#28226](https://github.com/twentyhq/twenty/pull/28226)) by @ehconitin - Make transcript summaries the only Teams setting for V1 ([#28227](https://github.com/twentyhq/twenty/pull/28227)) by @ehconitin - Add a Generate call summary command for Teams Call Recordings and calendar events ([#28228](https://github.com/twentyhq/twenty/pull/28228)) by @ehconitin - i18n - translations ([#28239](https://github.com/twentyhq/twenty/pull/28239)) by @github-actions - Keep the native account app tab bar stable while accounts load ([#28244](https://github.com/twentyhq/twenty/pull/28244)) by @ehconitin - chore: sync DPA sub-processors from trust center ([#28253](https://github.com/twentyhq/twenty/pull/28253)) by @github-actions - Make twenty-ui Skeleton a block clamped to its container ([#28260](https://github.com/twentyhq/twenty/pull/28260)) by @bosiraphael - Let render-composed Autocomplete inputs own their look ([#28261](https://github.com/twentyhq/twenty/pull/28261)) by @bosiraphael - Remove the no-op rounded prop from Card.Root ([#28263](https://github.com/twentyhq/twenty/pull/28263)) by @bosiraphael - Give the gray soft Banner a visible tint ([#28264](https://github.com/twentyhq/twenty/pull/28264)) by @bosiraphael - chore: bump version to 2.50.0 ([#28267](https://github.com/twentyhq/twenty/pull/28267)) by @twenty-pr - Stack SkeletonLine placeholders in a flex column ([#28268](https://github.com/twentyhq/twenty/pull/28268)) by @bosiraphael - Remove the IS_RECORD_SHARE_VISIBILITY_GATING_ENABLED feature flag ([#28271](https://github.com/twentyhq/twenty/pull/28271)) by @charlesBochet - Load the global reset in the twenty-ui Storybook ([#28272](https://github.com/twentyhq/twenty/pull/28272)) by @bosiraphael - Narrow the call recorder summary parser to the fields it reads ([#28273](https://github.com/twentyhq/twenty/pull/28273)) by @ehconitin - Make Cmd+J toggle the logs mode instead of collapsing the console ([#28274](https://github.com/twentyhq/twenty/pull/28274)) by @martmull - Align Dropdown search activation ([#28275](https://github.com/twentyhq/twenty/pull/28275)) by @bosiraphael - Only sweep workspaces with an emailing domain for stale campaigns ([#28276](https://github.com/twentyhq/twenty/pull/28276)) by @charlesBochet - Index timeline activity linked record id and skip unchanged happensAt updates ([#28277](https://github.com/twentyhq/twenty/pull/28277)) by @neo773 - Fix the call recorder custom hex input border ([#28279](https://github.com/twentyhq/twenty/pull/28279)) by @ehconitin - Fix core client JSON scalar types ([#28281](https://github.com/twentyhq/twenty/pull/28281)) by @Weiko - Let workspace admins switch to the new REST metadata API format from the Lab ([#28282](https://github.com/twentyhq/twenty/pull/28282)) by @charlesBochet - Retire MenuItem and MenuItemAvatar ([#28285](https://github.com/twentyhq/twenty/pull/28285)) by @bosiraphael - Stop reporting revoked accounts to Sentry ([#28287](https://github.com/twentyhq/twenty/pull/28287)) by @neo773 - Retire specialized menu rows ([#28290](https://github.com/twentyhq/twenty/pull/28290)) by @bosiraphael - feat(roles): prepare custom roles gating (Member identity, self-host grant, atomic role deletion) ([#28291](https://github.com/twentyhq/twenty/pull/28291)) by @etiennejouan - Render the virtualized record table from row slots ([#28294](https://github.com/twentyhq/twenty/pull/28294)) by @charlesBochet - Give Breadcrumb a consistent medium weight ([#28297](https://github.com/twentyhq/twenty/pull/28297)) by @bosiraphael - Unify Tooltip width defaults ([#28298](https://github.com/twentyhq/twenty/pull/28298)) by @bosiraphael - Keep Skeleton corners round ([#28299](https://github.com/twentyhq/twenty/pull/28299)) by @bosiraphael - Keep full Tag labels at their natural width ([#28300](https://github.com/twentyhq/twenty/pull/28300)) by @bosiraphael - Add plain Chips with exact width limits ([#28301](https://github.com/twentyhq/twenty/pull/28301)) by @bosiraphael - Remove the IS_JSON_FILTER_ENABLED feature flag ([#28302](https://github.com/twentyhq/twenty/pull/28302)) by @charlesBochet - Stabilize frontend and twenty-ui stories ([#28303](https://github.com/twentyhq/twenty/pull/28303)) by @bosiraphael - Stop requiring workspace SECURITY permission on admin panel resolvers ([#28305](https://github.com/twentyhq/twenty/pull/28305)) by @charlesBochet - Agent engine: release a conversation's claim in one place ([#28306](https://github.com/twentyhq/twenty/pull/28306)) by @FelixMalfait - Skip istanbul and cache the Vite optimizer in Storybook test runs ([#28307](https://github.com/twentyhq/twenty/pull/28307)) by @bosiraphael - Agent engine: read a conversation's wait in one query ([#28308](https://github.com/twentyhq/twenty/pull/28308)) by @FelixMalfait - Fix inert edit button on field widgets in editor mode ([#28310](https://github.com/twentyhq/twenty/pull/28310)) by @Weiko - Expose Tooltip body composition ([#28311](https://github.com/twentyhq/twenty/pull/28311)) by @bosiraphael - Style Button popup triggers while open ([#28312](https://github.com/twentyhq/twenty/pull/28312)) by @bosiraphael - Add soft accent badges ([#28313](https://github.com/twentyhq/twenty/pull/28313)) by @bosiraphael - Add larger Heading sizes ([#28314](https://github.com/twentyhq/twenty/pull/28314)) by @bosiraphael - Let InlineBanner fill its container ([#28315](https://github.com/twentyhq/twenty/pull/28315)) by @bosiraphael - Replace gray dropdown section bands with quiet labels ([#28320](https://github.com/twentyhq/twenty/pull/28320)) by @Bonapara - Match additional emails, phones and secondary links in optimistic filters ([#28327](https://github.com/twentyhq/twenty/pull/28327)) by @charlesBochet - Agent engine: never drop a run outcome its caller is not ready for ([#28328](https://github.com/twentyhq/twenty/pull/28328)) by @FelixMalfait - Remove FelixMalfait from CODEOWNERS ([#28330](https://github.com/twentyhq/twenty/pull/28330)) by @FelixMalfait - Cover SVG shape sizes in the worker ResizeObserver ([#28331](https://github.com/twentyhq/twenty/pull/28331)) by @bosiraphael - Share the remote element command queue ([#28332](https://github.com/twentyhq/twenty/pull/28332)) by @bosiraphael - Bump the call recorder app to Twenty 2.49 ([#28336](https://github.com/twentyhq/twenty/pull/28336)) by @ehconitin - Agent engine: park a run behind a busy conversation instead of polling ([#28338](https://github.com/twentyhq/twenty/pull/28338)) by @FelixMalfait - Reject bare select filter values and rewrite stored ones ([#28339](https://github.com/twentyhq/twenty/pull/28339)) by @charlesBochet - Run prebuilt warm-ups on a rate-limited lambda-management-queue ([#28343](https://github.com/twentyhq/twenty/pull/28343)) by @charlesBochet - Rename transient-postgres-error-codes.constants.ts to transient-postgres-error-codes.constant.ts ([#28345](https://github.com/twentyhq/twenty/pull/28345)) by @twenty-pr-author - Rename 5 server files to the singular suffix in src/engine/api/mcp/constants ([#28346](https://github.com/twentyhq/twenty/pull/28346)) by @twenty-pr-author - Rename the Teams feature flags to release flags ([#28347](https://github.com/twentyhq/twenty/pull/28347)) by @ehconitin - fix(roles): explain a role deletion refused because the default role cannot take its API keys or agents ([#28348](https://github.com/twentyhq/twenty/pull/28348)) by @etiennejouan - Give every field a default icon ([#28349](https://github.com/twentyhq/twenty/pull/28349)) by @Bonapara - i18n - translations ([#28350](https://github.com/twentyhq/twenty/pull/28350)) by @github-actions - Give SDK runtime values their own twenty-shared entry ([#28351](https://github.com/twentyhq/twenty/pull/28351)) by @ehconitin - Save nested new filter groups on dashboard widgets in one call ([#28353](https://github.com/twentyhq/twenty/pull/28353)) by @ehconitin - i18n - translations ([#28354](https://github.com/twentyhq/twenty/pull/28354)) by @github-actions - i18n - website translations ([#28355](https://github.com/twentyhq/twenty/pull/28355)) by @github-actions - Split the campaign send checks from the send preparation ([#28357](https://github.com/twentyhq/twenty/pull/28357)) by @neo773 - Add a query that previews a campaign send with its blocker ([#28358](https://github.com/twentyhq/twenty/pull/28358)) by @neo773 - Cover the campaign send preview with integration tests ([#28359](https://github.com/twentyhq/twenty/pull/28359)) by @neo773 - Show the server's send blocker in the campaign send panel ([#28360](https://github.com/twentyhq/twenty/pull/28360)) by @neo773 - Remove the `as any` casts in 2 files of modules/object-record/record-filter/utils ([#28363](https://github.com/twentyhq/twenty/pull/28363)) by @twenty-pr-author - Rename 7 server files to the singular suffix in src/engine/api/utils ([#28364](https://github.com/twentyhq/twenty/pull/28364)) by @twenty-pr-author - Keep grouped table rows from re-rendering when their group changes ([#28365](https://github.com/twentyhq/twenty/pull/28365)) by @charlesBochet - i18n - translations ([#28366](https://github.com/twentyhq/twenty/pull/28366)) by @github-actions - Fix grouped table rows disappearing after a relation edit ([#28367](https://github.com/twentyhq/twenty/pull/28367)) by @charlesBochet - Parse quoted REST filter values and sibling root groups correctly ([#28368](https://github.com/twentyhq/twenty/pull/28368)) by @charlesBochet - Subscribe grouped table views to SSE record events ([#28369](https://github.com/twentyhq/twenty/pull/28369)) by @charlesBochet - Fix currency display crash on a code missing from the currency labels ([#28370](https://github.com/twentyhq/twenty/pull/28370)) by @charlesBochet - i18n - translations ([#28372](https://github.com/twentyhq/twenty/pull/28372)) by @github-actions - chore: sync AI model catalog ([#28376](https://github.com/twentyhq/twenty/pull/28376)) by @github-actions - fix(front): resize record table columns in the right direction in RTL ([#28378](https://github.com/twentyhq/twenty/pull/28378)) by @almoghazaz-cell - Fix stale selectors in create-record and create-kanban-view e2e tests ([#28380](https://github.com/twentyhq/twenty/pull/28380)) by @charlesBochet - chore(billing): remove unused billingMeter table ([#28381](https://github.com/twentyhq/twenty/pull/28381)) by @etiennejouan - Remove the `as any` casts in cache-storage.service.ts ([#28382](https://github.com/twentyhq/twenty/pull/28382)) by @twenty-pr-author - Offer pending invitations in the workspace picker only once the email is verified ([#28383](https://github.com/twentyhq/twenty/pull/28383)) by @charlesBochet - Rename 2 server files to the singular suffix in src/engine/core-modules/admin-panel/constants ([#28384](https://github.com/twentyhq/twenty/pull/28384)) by @twenty-pr-author - Improve Standard and Custom app marketplace pages ([#28387](https://github.com/twentyhq/twenty/pull/28387)) by @martmull - Show built-in account apps in the Installed tab ([#28388](https://github.com/twentyhq/twenty/pull/28388)) by @ehconitin - Add visual RadioGroup orientation ([#28392](https://github.com/twentyhq/twenty/pull/28392)) by @bosiraphael - Add outlined Chips for rounded links ([#28393](https://github.com/twentyhq/twenty/pull/28393)) by @bosiraphael - Add 32px Avatars and move 40px to xxl ([#28394](https://github.com/twentyhq/twenty/pull/28394)) by @bosiraphael - Add compact Tabs for tool call details ([#28395](https://github.com/twentyhq/twenty/pull/28395)) by @bosiraphael - Open the calendar event from the Call Recordings widget ([#28398](https://github.com/twentyhq/twenty/pull/28398)) by @ehconitin - Fix transcript status placement in the call recording transcript widget ([#28401](https://github.com/twentyhq/twenty/pull/28401)) by @ehconitin - Drop db spans from AI agent transactions sent to Sentry ([#28402](https://github.com/twentyhq/twenty/pull/28402)) by @etiennejouan - Rename native account apps to built-in account apps ([#28403](https://github.com/twentyhq/twenty/pull/28403)) by @ehconitin - Search help center through the docs.twenty.com MCP server ([#28405](https://github.com/twentyhq/twenty/pull/28405)) by @etiennejouan - Wait for the signed-in app in the postcard e2e auth setup ([#28406](https://github.com/twentyhq/twenty/pull/28406)) by @charlesBochet - Remove IS_TRANSCRIPT_IMPORT_RELEASED feature flag ([#28409](https://github.com/twentyhq/twenty/pull/28409)) by @ehconitin - Remove the remaining placeholders from the call recorder widgets ([#28410](https://github.com/twentyhq/twenty/pull/28410)) by @ehconitin - Add inherited Button colors ([#28413](https://github.com/twentyhq/twenty/pull/28413)) by @bosiraphael - Use Twenty UI by default in app agent guidance ([#28419](https://github.com/twentyhq/twenty/pull/28419)) by @bosiraphael - fix(shared): keep trailing slashes inside the query or hash in normalizeUrlOrigin ([#28421](https://github.com/twentyhq/twenty/pull/28421)) by @charlesBochet - Fix flaky SavedSecretCanBeCleared story ([#28423](https://github.com/twentyhq/twenty/pull/28423)) by @ehconitin - Cover the empty currency code in getCurrencyLabel tests ([#28424](https://github.com/twentyhq/twenty/pull/28424)) by @charlesBochet - Wait for the auth UI before choosing email login in e2e tests ([#28426](https://github.com/twentyhq/twenty/pull/28426)) by @charlesBochet - Clean up call recordings left behind by call recorder integration tests ([#28428](https://github.com/twentyhq/twenty/pull/28428)) by @ehconitin - Apply loaded metadata when one stale query fails ([#28429](https://github.com/twentyhq/twenty/pull/28429)) by @charlesBochet - Accept the self-signed local TLS proxy in the postcard e2e config ([#28431](https://github.com/twentyhq/twenty/pull/28431)) by @charlesBochet - fix(billing): drop billingPrice.stripeMeterId before dropping billingMeter ([#28435](https://github.com/twentyhq/twenty/pull/28435)) by @etiennejouan - Use shared settings dialog layouts ([#28436](https://github.com/twentyhq/twenty/pull/28436)) by @bosiraphael - Use shared confirmation dialog layouts ([#28437](https://github.com/twentyhq/twenty/pull/28437)) by @bosiraphael - Always show unmatched attendees in the call participants widget ([#28438](https://github.com/twentyhq/twenty/pull/28438)) by @ehconitin - Remove the main CI failure ping to a route that does not exist ([#28440](https://github.com/twentyhq/twenty/pull/28440)) by @charlesBochet - Expose host location to front components ([#28444](https://github.com/twentyhq/twenty/pull/28444)) by @bosiraphael </details> **Full Changelog**: https://github.com/twentyhq/twenty/compare/twenty/v2.49.0...twenty/v2.50.0
Related Repositories
openclaw/openclaw★ 392,714
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
nilbuild/developer-roadmap★ 370,095
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
morluto/rea★ 360,153
Reverse engineer anything with agents, from app behavior down to native binaries.
anomalyco/opencode★ 219,855
The open source coding agent.
n8n-io/n8n★ 208,278
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.