twenty/v2.47.0
twentyhq/twentytwenty/v2.47.0Oct 15, 2026by twenty-pr[bot]
Upgrading?
AI Summary
A major update focusing on migrating workflows to a 'core' architecture, removing legacy code, and introducing usage-based billing limits. It also refines the UI, adds Persian locale support, and cleans up legacy chat and workflow flags.
Key Highlights
- Migrates workflows to a core-only architecture, removing legacy services and mirroring code.
- Introduces usage-based limits, replacing the limit meter with quota defaults per billing plan.
- Removes feature flags for the Conversations tab and AI chat sharing dropdown.
- Adds Persian locale support and improves campaign tracking (opens/clicks).
Breaking Changes
- Ship the Conversations tab and workflow inbox messages under the inbox flag.
- Unpin chat Share and drop the AI chat sharing dropdown flag.
- Reject records-API writes on workflow and workflowVersion.
- Remove the legacy workspace-id workflow GraphQL API.
- Remove the legacy workflow trigger and version workspace services.
New Features
- Add selected people or a whole People view to a campaign list.
- Answer Teams assistant requests.
- Hide marketplace apps the server version does not satisfy.
- Set quota and stock default values per billing plan.
Full Release Notes
<!-- generated-release-notes v1 --> ## ⚠️ Breaking changes - [BREAKING_CHANGE] Ship the Conversations tab and workflow inbox messages under the inbox flag ([#27830](https://github.com/twentyhq/twenty/pull/27830)) by @FelixMalfait - [BREAKING_CHANGE] Unpin chat Share and drop the AI chat sharing dropdown flag ([#27832](https://github.com/twentyhq/twenty/pull/27832)) by @FelixMalfait - Add widgetAvailability to front components ([#27841](https://github.com/twentyhq/twenty/pull/27841)) by @martmull - Reject records-API writes on workflow and workflowVersion ([#27855](https://github.com/twentyhq/twenty/pull/27855)) by @thomtrp - Remove the legacy workspace-id workflow GraphQL API ([#27856](https://github.com/twentyhq/twenty/pull/27856)) by @thomtrp - Accept [BREAKING_CHANGE] titles and stop flagging feature flag removals in the API breaking change check ([#27859](https://github.com/twentyhq/twenty/pull/27859)) by @FelixMalfait - fix(admin-panel): look up admin chat threads in the workspace from the route ([#27901](https://github.com/twentyhq/twenty/pull/27901)) by @etiennejouan ## ✨ New features - feat(campaigns): add selected people or a whole People view to a campaign list ([#26823](https://github.com/twentyhq/twenty/pull/26823)) by @neo773 - feat(teams): answer Teams assistant requests ([#27811](https://github.com/twentyhq/twenty/pull/27811)) by @abdulrahmancodes - feat(apps): hide marketplace apps the server version does not satisfy ([#27843](https://github.com/twentyhq/twenty/pull/27843)) by @martmull - feat(usage-limit): set quota and stock default values per billing plan ([#27890](https://github.com/twentyhq/twenty/pull/27890)) by @etiennejouan ## 💅 Improvements & UX - Fix JSON filter ([#26589](https://github.com/twentyhq/twenty/pull/26589)) by @BOHEUS - Show unique and total clicks and opens on campaigns ([#26875](https://github.com/twentyhq/twenty/pull/26875)) by @neo773 - Track campaign opens ([#26938](https://github.com/twentyhq/twenty/pull/26938)) by @neo773 - Make TipTap email documents the only outbound email body format ([#26981](https://github.com/twentyhq/twenty/pull/26981)) by @neo773 - Fix record gql fields typing ([#27069](https://github.com/twentyhq/twenty/pull/27069)) by @BOHEUS - fix force redirect with Navigate ([#27130](https://github.com/twentyhq/twenty/pull/27130)) by @minnibaevB - Add people to a campaign list with a background job ([#27276](https://github.com/twentyhq/twenty/pull/27276)) by @neo773 - Align agent execution with caller context ([#27394](https://github.com/twentyhq/twenty/pull/27394)) by @prastoin - refactor(usage-limit) - quota counters hold consumption; allowance cap from the workspace cache ([#27479](https://github.com/twentyhq/twenty/pull/27479)) by @etiennejouan - Support ImageInput file selection in the front component renderer ([#27588](https://github.com/twentyhq/twenty/pull/27588)) by @bosiraphael - Let the AI agent build validation rules from the side panel ([#27635](https://github.com/twentyhq/twenty/pull/27635)) by @thomtrp - Link Teams transcripts to their calendar event by Microsoft Graph event id ([#27676](https://github.com/twentyhq/twenty/pull/27676)) by @ehconitin - Add Persian locale ([#27684](https://github.com/twentyhq/twenty/pull/27684)) by @BOHEUS - Skip standby aggregate queries when refetching after record changes ([#27691](https://github.com/twentyhq/twenty/pull/27691)) by @FelixMalfait - Align log console access and retention with plans ([#27696](https://github.com/twentyhq/twenty/pull/27696)) by @martmull - Let application workflows run on a schedule ([#27699](https://github.com/twentyhq/twenty/pull/27699)) by @thomtrp - Let application workflows run on record events ([#27700](https://github.com/twentyhq/twenty/pull/27700)) by @thomtrp - Replace Pill and NotificationCounter with Badge ([#27702](https://github.com/twentyhq/twenty/pull/27702)) by @bosiraphael - Complete radio and segmented selection ([#27707](https://github.com/twentyhq/twenty/pull/27707)) by @bosiraphael - Preserve native edits across renderer updates ([#27726](https://github.com/twentyhq/twenty/pull/27726)) by @bosiraphael - Align Tabs with Base UI ([#27732](https://github.com/twentyhq/twenty/pull/27732)) by @bosiraphael - Remove the WhatsApp and Calls Soon tabs from Communication settings ([#27733](https://github.com/twentyhq/twenty/pull/27733)) by @Bonapara - Expose NumberField and retain NumberStepper ([#27734](https://github.com/twentyhq/twenty/pull/27734)) by @bosiraphael - Stop stacking record creation forms on repeated Create clicks ([#27736](https://github.com/twentyhq/twenty/pull/27736)) by @thomtrp - Complete Select public parts ([#27741](https://github.com/twentyhq/twenty/pull/27741)) by @bosiraphael - Normalize saved view filter values for query resolution ([#27742](https://github.com/twentyhq/twenty/pull/27742)) by @FelixMalfait - Batch global admin chat report transactions ([#27746](https://github.com/twentyhq/twenty/pull/27746)) by @FelixMalfait - Stop selecting agent.evaluationInputs once the 2.47 drop has run ([#27748](https://github.com/twentyhq/twenty/pull/27748)) by @charlesBochet - Derive persisted record filter types from field metadata like views ([#27754](https://github.com/twentyhq/twenty/pull/27754)) by @FelixMalfait - Last contact 1.9.1: stop restoring trashed people, skip unchanged writes ([#27755](https://github.com/twentyhq/twenty/pull/27755)) by @martmull - Add missing translation keys ([#27759](https://github.com/twentyhq/twenty/pull/27759)) by @BOHEUS - Rename morph relations ([#27760](https://github.com/twentyhq/twenty/pull/27760)) by @BOHEUS - Fix ordering for view sort replacements ([#27764](https://github.com/twentyhq/twenty/pull/27764)) by @FelixMalfait - Wait for popup visibility in disabled item stories ([#27766](https://github.com/twentyhq/twenty/pull/27766)) by @FelixMalfait - Fix cascade-before-update ordering in workspace migrations ([#27767](https://github.com/twentyhq/twenty/pull/27767)) by @FelixMalfait - Fix table skeleton cells overflowing into the next column ([#27768](https://github.com/twentyhq/twenty/pull/27768)) by @ehconitin - Remove the 2.45/2.46 chat upgrade fences and fallbacks ([#27779](https://github.com/twentyhq/twenty/pull/27779)) by @FelixMalfait - Drop usage limit meter compatibility in 2.47 ([#27780](https://github.com/twentyhq/twenty/pull/27780)) by @FelixMalfait - Add OSS Scanner build and threat model ([#27781](https://github.com/twentyhq/twenty/pull/27781)) by @FelixMalfait - Identify chat owners and senders by workspace member, and drop the legacy chat columns ([#27783](https://github.com/twentyhq/twenty/pull/27783)) by @FelixMalfait - Follow shared chats only when taking part in them, and track what members read ([#27786](https://github.com/twentyhq/twenty/pull/27786)) by @FelixMalfait - Spell out the security contact email in SECURITY.md ([#27789](https://github.com/twentyhq/twenty/pull/27789)) by @FelixMalfait - Show workspace members by name or email through one helper ([#27791](https://github.com/twentyhq/twenty/pull/27791)) by @FelixMalfait - Type RolePermissionConfig by role source ([#27805](https://github.com/twentyhq/twenty/pull/27805)) by @prastoin - Complete Autocomplete parts ([#27806](https://github.com/twentyhq/twenty/pull/27806)) by @bosiraphael - Remove leftover in Admin Panel ([#27812](https://github.com/twentyhq/twenty/pull/27812)) by @BOHEUS - Show the real remaining count on relation card widgets ([#27813](https://github.com/twentyhq/twenty/pull/27813)) by @charlesBochet - Fix double highlight on view picker rows ([#27816](https://github.com/twentyhq/twenty/pull/27816)) by @Bonapara - Gate validation rules behind the Organization plan ([#27818](https://github.com/twentyhq/twenty/pull/27818)) by @thomtrp - Require the roles permission to pick a role when sending invitations ([#27820](https://github.com/twentyhq/twenty/pull/27820)) by @thomtrp - Group pending invoice items monthly for invoice-paying subscriptions ([#27826](https://github.com/twentyhq/twenty/pull/27826)) by @ijreilly - Let invoice-paying customers end their trial without a card ([#27827](https://github.com/twentyhq/twenty/pull/27827)) by @ijreilly - Add Teams user link object ([#27828](https://github.com/twentyhq/twenty/pull/27828)) by @abdulrahmancodes - Unify Progress semantics and move onboarding motion ([#27831](https://github.com/twentyhq/twenty/pull/27831)) by @bosiraphael - feat(billing) : store the ?partner= sign-up attribution on the Stripe customer ([#27836](https://github.com/twentyhq/twenty/pull/27836)) by @etiennejouan - Revert the browser-bound application claim state (#26214) ([#27837](https://github.com/twentyhq/twenty/pull/27837)) by @martmull - Keep app update tag visible in installed apps list ([#27838](https://github.com/twentyhq/twenty/pull/27838)) by @martmull - Order application workflow steps by application and label ([#27839](https://github.com/twentyhq/twenty/pull/27839)) by @martmull - Show validation rule messages under their field in the record creation form ([#27840](https://github.com/twentyhq/twenty/pull/27840)) by @thomtrp - Keep add-people-to-message-list spec from flooding the workflow queue ([#27842](https://github.com/twentyhq/twenty/pull/27842)) by @FelixMalfait - Ask consent to bill credits when installing an app ([#27844](https://github.com/twentyhq/twenty/pull/27844)) by @martmull - Add Toast updates and status naming ([#27846](https://github.com/twentyhq/twenty/pull/27846)) by @bosiraphael - Make the workflow editor hooks core-only ([#27852](https://github.com/twentyhq/twenty/pull/27852)) by @thomtrp - Make workflow commands, navigation and pages core-only ([#27853](https://github.com/twentyhq/twenty/pull/27853)) by @thomtrp - Remove the legacy workflow trigger and version workspace services ([#27857](https://github.com/twentyhq/twenty/pull/27857)) by @thomtrp - Remove the legacy workflow step and edge workspace services ([#27858](https://github.com/twentyhq/twenty/pull/27858)) by @thomtrp - Show core workflow and version on the workflow runs index ([#27861](https://github.com/twentyhq/twenty/pull/27861)) by @thomtrp - Remove tabs from marketplace app detail page ([#27868](https://github.com/twentyhq/twenty/pull/27868)) by @martmull - Fix oversized icon in side panel switch rows ([#27869](https://github.com/twentyhq/twenty/pull/27869)) by @FelixMalfait - Sort admin apps by attention and show author and install count ([#27871](https://github.com/twentyhq/twenty/pull/27871)) by @martmull - Navigate the inbox with the arrow keys ([#27875](https://github.com/twentyhq/twenty/pull/27875)) by @FelixMalfait - Show application logo on fields, views, widgets and created-by actor ([#27876](https://github.com/twentyhq/twenty/pull/27876)) by @martmull - Remove the workflow drift check, the workspace statuses job and the workspace-to-core sync listener ([#27879](https://github.com/twentyhq/twenty/pull/27879)) by @thomtrp - Activate and deactivate workflows without writing workspace rows ([#27880](https://github.com/twentyhq/twenty/pull/27880)) by @thomtrp - Write workflow version content and drafts to core only ([#27881](https://github.com/twentyhq/twenty/pull/27881)) by @thomtrp - Create, rename, duplicate and delete workflows in core only ([#27882](https://github.com/twentyhq/twenty/pull/27882)) by @thomtrp - Remove the dead workflow mirror write code ([#27883](https://github.com/twentyhq/twenty/pull/27883)) by @thomtrp - Seed and prefill workflows in core only ([#27884](https://github.com/twentyhq/twenty/pull/27884)) by @thomtrp - Keep AI chat thinking signatures valid across turns ([#27888](https://github.com/twentyhq/twenty/pull/27888)) by @charlesBochet - Speed up switching between record table views ([#27897](https://github.com/twentyhq/twenty/pull/27897)) by @charlesBochet - Use Teams user links when matching the sender ([#27898](https://github.com/twentyhq/twenty/pull/27898)) by @abdulrahmancodes - Put twenty-ui styles in a cascade layer ([#27899](https://github.com/twentyhq/twenty/pull/27899)) by @bosiraphael - Use the existing banner and field error components for validation rule messages ([#27906](https://github.com/twentyhq/twenty/pull/27906)) by @thomtrp - Add a route to remove Teams user links ([#27909](https://github.com/twentyhq/twenty/pull/27909)) by @abdulrahmancodes - Take row-level rules from the roles the permission config intersects ([#27911](https://github.com/twentyhq/twenty/pull/27911)) by @prastoin - Fix application author display when the manifest carries an npm-style author object ([#27918](https://github.com/twentyhq/twenty/pull/27918)) by @martmull - Only measure overflowing lists while their count can show ([#27923](https://github.com/twentyhq/twenty/pull/27923)) by @charlesBochet - Enable initial object views on new workspaces ([#27924](https://github.com/twentyhq/twenty/pull/27924)) by @thomtrp - Bump claude-code-action and Claude Code ([#27928](https://github.com/twentyhq/twenty/pull/27928)) by @neo773 - Only add Bedrock cache points for Claude models ([#27929](https://github.com/twentyhq/twenty/pull/27929)) by @charlesBochet - Make Toast timing deterministic ([#27930](https://github.com/twentyhq/twenty/pull/27930)) by @bosiraphael - Fix Kanban icon ([#27936](https://github.com/twentyhq/twenty/pull/27936)) by @BOHEUS - Keep the role permission config on the workspace repository ([#27942](https://github.com/twentyhq/twenty/pull/27942)) by @prastoin - Resolve the connected account when an email is clicked, not per cell ([#27947](https://github.com/twentyhq/twenty/pull/27947)) by @charlesBochet - Wait for Select popup transitions ([#27950](https://github.com/twentyhq/twenty/pull/27950)) by @bosiraphael - Read waiting job ids without loading job data in the BullMQ driver ([#27955](https://github.com/twentyhq/twenty/pull/27955)) by @charlesBochet - Make table cell and skeleton styles static and add a block Skeleton layout ([#27957](https://github.com/twentyhq/twenty/pull/27957)) by @charlesBochet - MCP: fix soft-delete generated tools ([#27962](https://github.com/twentyhq/twenty/pull/27962)) by @BOHEUS - Make filter validation errors actionable for AI agents ([#27963](https://github.com/twentyhq/twenty/pull/27963)) by @BOHEUS ## 🐛 Bug fixes - fix(front): lay phone numbers out left to right in RTL locales ([#27006](https://github.com/twentyhq/twenty/pull/27006)) by @almoghazaz-cell - fix(billing): surface checkoutSession GraphQL errors in toast ([#27018](https://github.com/twentyhq/twenty/pull/27018)) by @evanliuuu - fix(ui): truncate LTR values at their end in RTL layouts ([#27059](https://github.com/twentyhq/twenty/pull/27059)) by @almoghazaz-cell - fix(cli): remove legacy CLI config migration ([#27085](https://github.com/twentyhq/twenty/pull/27085)) by @Sameer7-s - fix: use overflow clip on app layout to stop side-panel shift ([#27112](https://github.com/twentyhq/twenty/pull/27112)) by @hussnainahmedd - fix(server): sync userWorkspace.locale when a workspace member's locale is updated through the record API ([#27245](https://github.com/twentyhq/twenty/pull/27245)) by @slavarosin - fix(website): bump @opennextjs/cloudflare to 1.20.8 for Next 16.3.8 cache keys ([#27751](https://github.com/twentyhq/twenty/pull/27751)) by @FelixMalfait - fix(usage-limit): no workspace record or storage limit when the config variable is unset ([#27803](https://github.com/twentyhq/twenty/pull/27803)) by @etiennejouan - fix(workspace-cleaner): never warn members of a soft-deleted workspace ([#27814](https://github.com/twentyhq/twenty/pull/27814)) by @etiennejouan - fix(workflow): skip not-taken if/else branch targets also listed in the step's nextStepIds ([#27833](https://github.com/twentyhq/twenty/pull/27833)) by @thomtrp - fix(cli): lock the app template with the pins the publish check verified ([#27864](https://github.com/twentyhq/twenty/pull/27864)) by @Weiko - fix(server): sample AI SDK v7 agent spans at 100% in Sentry ([#27913](https://github.com/twentyhq/twenty/pull/27913)) by @etiennejouan - fix(admin-panel): drop the admin panel global AI chats list ([#27920](https://github.com/twentyhq/twenty/pull/27920)) by @etiennejouan - fix(cli): report the Node requirement when launched with npx ([#27932](https://github.com/twentyhq/twenty/pull/27932)) by @Weiko ## 🔧 Developer & API - Stop registering dynamic record cache fragments with graphql-tag ([#27690](https://github.com/twentyhq/twenty/pull/27690)) by @FelixMalfait - Adopt gpt-6-luna for the cheap tier (dev, staging, self-host) ([#27763](https://github.com/twentyhq/twenty/pull/27763)) by @twenty-pr-author - Remove unused Menu API ([#27815](https://github.com/twentyhq/twenty/pull/27815)) by @bosiraphael - Move workflow execution integration tests to the core workflow API ([#27848](https://github.com/twentyhq/twenty/pull/27848)) by @thomtrp - Move workflow node, core workflow, lifecycle and permission integration tests to the core workflow API ([#27849](https://github.com/twentyhq/twenty/pull/27849)) by @thomtrp - Deprecate the SDK CLI and create-twenty-app ([#27862](https://github.com/twentyhq/twenty/pull/27862)) by @Weiko - Align CLI version with Twenty 2.46.0 ([#27905](https://github.com/twentyhq/twenty/pull/27905)) by @Weiko - Let Bedrock AI providers authenticate with a Bedrock API key ([#27907](https://github.com/twentyhq/twenty/pull/27907)) by @charlesBochet - Skip cli-test in the merge queue ([#27908](https://github.com/twentyhq/twenty/pull/27908)) by @prastoin - Skip cli-package-test in the merge queue ([#27910](https://github.com/twentyhq/twenty/pull/27910)) by @prastoin - Let application workflows start from a webhook ([#27933](https://github.com/twentyhq/twenty/pull/27933)) by @thomtrp <details> <summary>🏗️ Internal changes (11)</summary> - chore(twenty-ui): declare storybook as a devDependency ([#27697](https://github.com/twentyhq/twenty/pull/27697)) by @abdulrahmancodes - ci(website): serve the built Worker in workerd and smoke-test real pages ([#27756](https://github.com/twentyhq/twenty/pull/27756)) by @FelixMalfait - chore(security): bump handlebars to 4.7.10 ([#27765](https://github.com/twentyhq/twenty/pull/27765)) by @mabdullahabaid - chore(security): bump simple-git to 4.0.2 ([#27769](https://github.com/twentyhq/twenty/pull/27769)) by @mabdullahabaid - chore(security): bump source-map-js to 1.2.2 ([#27770](https://github.com/twentyhq/twenty/pull/27770)) by @mabdullahabaid - chore(security): bump oxfmt to 0.72.0 and reformat ([#27772](https://github.com/twentyhq/twenty/pull/27772)) by @mabdullahabaid - chore(security): bump nx to 22.7.12 and smol-toml to 1.9.0 ([#27782](https://github.com/twentyhq/twenty/pull/27782)) by @mabdullahabaid - refactor(usage-limit): stock counters hold what is held, keyed by scope ([#27866](https://github.com/twentyhq/twenty/pull/27866)) by @etiennejouan - docs: list the Microsoft scopes Twenty actually requests ([#27904](https://github.com/twentyhq/twenty/pull/27904)) by @neo773 - refactor(usage-limit): import billing directly instead of discovering its providers ([#27926](https://github.com/twentyhq/twenty/pull/27926)) by @etiennejouan - chore(cli): bump the twenty package to 2.47.0 ([#27940](https://github.com/twentyhq/twenty/pull/27940)) by @Weiko </details> ## 🎉 New contributors - @evanliuuu made their first contribution in https://github.com/twentyhq/twenty/pull/27018 - @hussnainahmedd made their first contribution in https://github.com/twentyhq/twenty/pull/27112 - @Sameer7-s made their first contribution in https://github.com/twentyhq/twenty/pull/27085 - @slavarosin made their first contribution in https://github.com/twentyhq/twenty/pull/27245 <details> <summary>Full changelog (160 PRs)</summary> - Fix JSON filter ([#26589](https://github.com/twentyhq/twenty/pull/26589)) by @BOHEUS - feat(campaigns): add selected people or a whole People view to a campaign list ([#26823](https://github.com/twentyhq/twenty/pull/26823)) by @neo773 - Show unique and total clicks and opens on campaigns ([#26875](https://github.com/twentyhq/twenty/pull/26875)) by @neo773 - Track campaign opens ([#26938](https://github.com/twentyhq/twenty/pull/26938)) by @neo773 - Make TipTap email documents the only outbound email body format ([#26981](https://github.com/twentyhq/twenty/pull/26981)) by @neo773 - fix(front): lay phone numbers out left to right in RTL locales ([#27006](https://github.com/twentyhq/twenty/pull/27006)) by @almoghazaz-cell - fix(billing): surface checkoutSession GraphQL errors in toast ([#27018](https://github.com/twentyhq/twenty/pull/27018)) by @evanliuuu - fix(ui): truncate LTR values at their end in RTL layouts ([#27059](https://github.com/twentyhq/twenty/pull/27059)) by @almoghazaz-cell - Fix record gql fields typing ([#27069](https://github.com/twentyhq/twenty/pull/27069)) by @BOHEUS - fix(cli): remove legacy CLI config migration ([#27085](https://github.com/twentyhq/twenty/pull/27085)) by @Sameer7-s - fix: use overflow clip on app layout to stop side-panel shift ([#27112](https://github.com/twentyhq/twenty/pull/27112)) by @hussnainahmedd - fix force redirect with Navigate ([#27130](https://github.com/twentyhq/twenty/pull/27130)) by @minnibaevB - fix(server): sync userWorkspace.locale when a workspace member's locale is updated through the record API ([#27245](https://github.com/twentyhq/twenty/pull/27245)) by @slavarosin - Add people to a campaign list with a background job ([#27276](https://github.com/twentyhq/twenty/pull/27276)) by @neo773 - Align agent execution with caller context ([#27394](https://github.com/twentyhq/twenty/pull/27394)) by @prastoin - refactor(usage-limit) - quota counters hold consumption; allowance cap from the workspace cache ([#27479](https://github.com/twentyhq/twenty/pull/27479)) by @etiennejouan - Support ImageInput file selection in the front component renderer ([#27588](https://github.com/twentyhq/twenty/pull/27588)) by @bosiraphael - Let the AI agent build validation rules from the side panel ([#27635](https://github.com/twentyhq/twenty/pull/27635)) by @thomtrp - Link Teams transcripts to their calendar event by Microsoft Graph event id ([#27676](https://github.com/twentyhq/twenty/pull/27676)) by @ehconitin - Add Persian locale ([#27684](https://github.com/twentyhq/twenty/pull/27684)) by @BOHEUS - Stop registering dynamic record cache fragments with graphql-tag ([#27690](https://github.com/twentyhq/twenty/pull/27690)) by @FelixMalfait - Skip standby aggregate queries when refetching after record changes ([#27691](https://github.com/twentyhq/twenty/pull/27691)) by @FelixMalfait - Align log console access and retention with plans ([#27696](https://github.com/twentyhq/twenty/pull/27696)) by @martmull - chore(twenty-ui): declare storybook as a devDependency ([#27697](https://github.com/twentyhq/twenty/pull/27697)) by @abdulrahmancodes - Let application workflows run on a schedule ([#27699](https://github.com/twentyhq/twenty/pull/27699)) by @thomtrp - Let application workflows run on record events ([#27700](https://github.com/twentyhq/twenty/pull/27700)) by @thomtrp - Replace Pill and NotificationCounter with Badge ([#27702](https://github.com/twentyhq/twenty/pull/27702)) by @bosiraphael - Complete radio and segmented selection ([#27707](https://github.com/twentyhq/twenty/pull/27707)) by @bosiraphael - Preserve native edits across renderer updates ([#27726](https://github.com/twentyhq/twenty/pull/27726)) by @bosiraphael - Align Tabs with Base UI ([#27732](https://github.com/twentyhq/twenty/pull/27732)) by @bosiraphael - Remove the WhatsApp and Calls Soon tabs from Communication settings ([#27733](https://github.com/twentyhq/twenty/pull/27733)) by @Bonapara - Expose NumberField and retain NumberStepper ([#27734](https://github.com/twentyhq/twenty/pull/27734)) by @bosiraphael - chore: bump version to 2.47.0 ([#27735](https://github.com/twentyhq/twenty/pull/27735)) by @twenty-pr - Stop stacking record creation forms on repeated Create clicks ([#27736](https://github.com/twentyhq/twenty/pull/27736)) by @thomtrp - i18n - translations ([#27737](https://github.com/twentyhq/twenty/pull/27737)) by @github-actions - i18n - translations ([#27740](https://github.com/twentyhq/twenty/pull/27740)) by @github-actions - Complete Select public parts ([#27741](https://github.com/twentyhq/twenty/pull/27741)) by @bosiraphael - Normalize saved view filter values for query resolution ([#27742](https://github.com/twentyhq/twenty/pull/27742)) by @FelixMalfait - Batch global admin chat report transactions ([#27746](https://github.com/twentyhq/twenty/pull/27746)) by @FelixMalfait - i18n - translations ([#27747](https://github.com/twentyhq/twenty/pull/27747)) by @github-actions - Stop selecting agent.evaluationInputs once the 2.47 drop has run ([#27748](https://github.com/twentyhq/twenty/pull/27748)) by @charlesBochet - i18n - translations ([#27750](https://github.com/twentyhq/twenty/pull/27750)) by @github-actions - fix(website): bump @opennextjs/cloudflare to 1.20.8 for Next 16.3.8 cache keys ([#27751](https://github.com/twentyhq/twenty/pull/27751)) by @FelixMalfait - Derive persisted record filter types from field metadata like views ([#27754](https://github.com/twentyhq/twenty/pull/27754)) by @FelixMalfait - Last contact 1.9.1: stop restoring trashed people, skip unchanged writes ([#27755](https://github.com/twentyhq/twenty/pull/27755)) by @martmull - ci(website): serve the built Worker in workerd and smoke-test real pages ([#27756](https://github.com/twentyhq/twenty/pull/27756)) by @FelixMalfait - i18n - translations ([#27757](https://github.com/twentyhq/twenty/pull/27757)) by @github-actions - i18n - translations ([#27758](https://github.com/twentyhq/twenty/pull/27758)) by @github-actions - Add missing translation keys ([#27759](https://github.com/twentyhq/twenty/pull/27759)) by @BOHEUS - Rename morph relations ([#27760](https://github.com/twentyhq/twenty/pull/27760)) by @BOHEUS - chore: sync AI model catalog ([#27761](https://github.com/twentyhq/twenty/pull/27761)) by @github-actions - Adopt gpt-6-luna for the cheap tier (dev, staging, self-host) ([#27763](https://github.com/twentyhq/twenty/pull/27763)) by @twenty-pr-author - Fix ordering for view sort replacements ([#27764](https://github.com/twentyhq/twenty/pull/27764)) by @FelixMalfait - chore(security): bump handlebars to 4.7.10 ([#27765](https://github.com/twentyhq/twenty/pull/27765)) by @mabdullahabaid - Wait for popup visibility in disabled item stories ([#27766](https://github.com/twentyhq/twenty/pull/27766)) by @FelixMalfait - Fix cascade-before-update ordering in workspace migrations ([#27767](https://github.com/twentyhq/twenty/pull/27767)) by @FelixMalfait - Fix table skeleton cells overflowing into the next column ([#27768](https://github.com/twentyhq/twenty/pull/27768)) by @ehconitin - chore(security): bump simple-git to 4.0.2 ([#27769](https://github.com/twentyhq/twenty/pull/27769)) by @mabdullahabaid - chore(security): bump source-map-js to 1.2.2 ([#27770](https://github.com/twentyhq/twenty/pull/27770)) by @mabdullahabaid - chore(security): bump oxfmt to 0.72.0 and reformat ([#27772](https://github.com/twentyhq/twenty/pull/27772)) by @mabdullahabaid - chore: sync AI model catalog ([#27773](https://github.com/twentyhq/twenty/pull/27773)) by @github-actions - Remove the 2.45/2.46 chat upgrade fences and fallbacks ([#27779](https://github.com/twentyhq/twenty/pull/27779)) by @FelixMalfait - Drop usage limit meter compatibility in 2.47 ([#27780](https://github.com/twentyhq/twenty/pull/27780)) by @FelixMalfait - Add OSS Scanner build and threat model ([#27781](https://github.com/twentyhq/twenty/pull/27781)) by @FelixMalfait - chore(security): bump nx to 22.7.12 and smol-toml to 1.9.0 ([#27782](https://github.com/twentyhq/twenty/pull/27782)) by @mabdullahabaid - Identify chat owners and senders by workspace member, and drop the legacy chat columns ([#27783](https://github.com/twentyhq/twenty/pull/27783)) by @FelixMalfait - i18n - translations ([#27784](https://github.com/twentyhq/twenty/pull/27784)) by @github-actions - Follow shared chats only when taking part in them, and track what members read ([#27786](https://github.com/twentyhq/twenty/pull/27786)) by @FelixMalfait - Spell out the security contact email in SECURITY.md ([#27789](https://github.com/twentyhq/twenty/pull/27789)) by @FelixMalfait - Show workspace members by name or email through one helper ([#27791](https://github.com/twentyhq/twenty/pull/27791)) by @FelixMalfait - i18n - translations ([#27801](https://github.com/twentyhq/twenty/pull/27801)) by @github-actions - chore: sync AI model catalog ([#27802](https://github.com/twentyhq/twenty/pull/27802)) by @github-actions - fix(usage-limit): no workspace record or storage limit when the config variable is unset ([#27803](https://github.com/twentyhq/twenty/pull/27803)) by @etiennejouan - Type RolePermissionConfig by role source ([#27805](https://github.com/twentyhq/twenty/pull/27805)) by @prastoin - Complete Autocomplete parts ([#27806](https://github.com/twentyhq/twenty/pull/27806)) by @bosiraphael - i18n - translations ([#27808](https://github.com/twentyhq/twenty/pull/27808)) by @github-actions - i18n - translations ([#27810](https://github.com/twentyhq/twenty/pull/27810)) by @github-actions - feat(teams): answer Teams assistant requests ([#27811](https://github.com/twentyhq/twenty/pull/27811)) by @abdulrahmancodes - Remove leftover in Admin Panel ([#27812](https://github.com/twentyhq/twenty/pull/27812)) by @BOHEUS - Show the real remaining count on relation card widgets ([#27813](https://github.com/twentyhq/twenty/pull/27813)) by @charlesBochet - fix(workspace-cleaner): never warn members of a soft-deleted workspace ([#27814](https://github.com/twentyhq/twenty/pull/27814)) by @etiennejouan - Remove unused Menu API ([#27815](https://github.com/twentyhq/twenty/pull/27815)) by @bosiraphael - Fix double highlight on view picker rows ([#27816](https://github.com/twentyhq/twenty/pull/27816)) by @Bonapara - Gate validation rules behind the Organization plan ([#27818](https://github.com/twentyhq/twenty/pull/27818)) by @thomtrp - Require the roles permission to pick a role when sending invitations ([#27820](https://github.com/twentyhq/twenty/pull/27820)) by @thomtrp - Group pending invoice items monthly for invoice-paying subscriptions ([#27826](https://github.com/twentyhq/twenty/pull/27826)) by @ijreilly - Let invoice-paying customers end their trial without a card ([#27827](https://github.com/twentyhq/twenty/pull/27827)) by @ijreilly - Add Teams user link object ([#27828](https://github.com/twentyhq/twenty/pull/27828)) by @abdulrahmancodes - [BREAKING_CHANGE] Ship the Conversations tab and workflow inbox messages under the inbox flag ([#27830](https://github.com/twentyhq/twenty/pull/27830)) by @FelixMalfait - Unify Progress semantics and move onboarding motion ([#27831](https://github.com/twentyhq/twenty/pull/27831)) by @bosiraphael - [BREAKING_CHANGE] Unpin chat Share and drop the AI chat sharing dropdown flag ([#27832](https://github.com/twentyhq/twenty/pull/27832)) by @FelixMalfait - fix(workflow): skip not-taken if/else branch targets also listed in the step's nextStepIds ([#27833](https://github.com/twentyhq/twenty/pull/27833)) by @thomtrp - feat(billing) : store the ?partner= sign-up attribution on the Stripe customer ([#27836](https://github.com/twentyhq/twenty/pull/27836)) by @etiennejouan - Revert the browser-bound application claim state (#26214) ([#27837](https://github.com/twentyhq/twenty/pull/27837)) by @martmull - Keep app update tag visible in installed apps list ([#27838](https://github.com/twentyhq/twenty/pull/27838)) by @martmull - Order application workflow steps by application and label ([#27839](https://github.com/twentyhq/twenty/pull/27839)) by @martmull - Show validation rule messages under their field in the record creation form ([#27840](https://github.com/twentyhq/twenty/pull/27840)) by @thomtrp - Add widgetAvailability to front components ([#27841](https://github.com/twentyhq/twenty/pull/27841)) by @martmull - Keep add-people-to-message-list spec from flooding the workflow queue ([#27842](https://github.com/twentyhq/twenty/pull/27842)) by @FelixMalfait - feat(apps): hide marketplace apps the server version does not satisfy ([#27843](https://github.com/twentyhq/twenty/pull/27843)) by @martmull - Ask consent to bill credits when installing an app ([#27844](https://github.com/twentyhq/twenty/pull/27844)) by @martmull - Add Toast updates and status naming ([#27846](https://github.com/twentyhq/twenty/pull/27846)) by @bosiraphael - Move workflow execution integration tests to the core workflow API ([#27848](https://github.com/twentyhq/twenty/pull/27848)) by @thomtrp - Move workflow node, core workflow, lifecycle and permission integration tests to the core workflow API ([#27849](https://github.com/twentyhq/twenty/pull/27849)) by @thomtrp - Make the workflow editor hooks core-only ([#27852](https://github.com/twentyhq/twenty/pull/27852)) by @thomtrp - Make workflow commands, navigation and pages core-only ([#27853](https://github.com/twentyhq/twenty/pull/27853)) by @thomtrp - Reject records-API writes on workflow and workflowVersion ([#27855](https://github.com/twentyhq/twenty/pull/27855)) by @thomtrp - Remove the legacy workspace-id workflow GraphQL API ([#27856](https://github.com/twentyhq/twenty/pull/27856)) by @thomtrp - Remove the legacy workflow trigger and version workspace services ([#27857](https://github.com/twentyhq/twenty/pull/27857)) by @thomtrp - Remove the legacy workflow step and edge workspace services ([#27858](https://github.com/twentyhq/twenty/pull/27858)) by @thomtrp - Accept [BREAKING_CHANGE] titles and stop flagging feature flag removals in the API breaking change check ([#27859](https://github.com/twentyhq/twenty/pull/27859)) by @FelixMalfait - Show core workflow and version on the workflow runs index ([#27861](https://github.com/twentyhq/twenty/pull/27861)) by @thomtrp - Deprecate the SDK CLI and create-twenty-app ([#27862](https://github.com/twentyhq/twenty/pull/27862)) by @Weiko - fix(cli): lock the app template with the pins the publish check verified ([#27864](https://github.com/twentyhq/twenty/pull/27864)) by @Weiko - refactor(usage-limit): stock counters hold what is held, keyed by scope ([#27866](https://github.com/twentyhq/twenty/pull/27866)) by @etiennejouan - Remove tabs from marketplace app detail page ([#27868](https://github.com/twentyhq/twenty/pull/27868)) by @martmull - Fix oversized icon in side panel switch rows ([#27869](https://github.com/twentyhq/twenty/pull/27869)) by @FelixMalfait - Sort admin apps by attention and show author and install count ([#27871](https://github.com/twentyhq/twenty/pull/27871)) by @martmull - Navigate the inbox with the arrow keys ([#27875](https://github.com/twentyhq/twenty/pull/27875)) by @FelixMalfait - Show application logo on fields, views, widgets and created-by actor ([#27876](https://github.com/twentyhq/twenty/pull/27876)) by @martmull - Remove the workflow drift check, the workspace statuses job and the workspace-to-core sync listener ([#27879](https://github.com/twentyhq/twenty/pull/27879)) by @thomtrp - Activate and deactivate workflows without writing workspace rows ([#27880](https://github.com/twentyhq/twenty/pull/27880)) by @thomtrp - Write workflow version content and drafts to core only ([#27881](https://github.com/twentyhq/twenty/pull/27881)) by @thomtrp - Create, rename, duplicate and delete workflows in core only ([#27882](https://github.com/twentyhq/twenty/pull/27882)) by @thomtrp - Remove the dead workflow mirror write code ([#27883](https://github.com/twentyhq/twenty/pull/27883)) by @thomtrp - Seed and prefill workflows in core only ([#27884](https://github.com/twentyhq/twenty/pull/27884)) by @thomtrp - Keep AI chat thinking signatures valid across turns ([#27888](https://github.com/twentyhq/twenty/pull/27888)) by @charlesBochet - feat(usage-limit): set quota and stock default values per billing plan ([#27890](https://github.com/twentyhq/twenty/pull/27890)) by @etiennejouan - Speed up switching between record table views ([#27897](https://github.com/twentyhq/twenty/pull/27897)) by @charlesBochet - Use Teams user links when matching the sender ([#27898](https://github.com/twentyhq/twenty/pull/27898)) by @abdulrahmancodes - Put twenty-ui styles in a cascade layer ([#27899](https://github.com/twentyhq/twenty/pull/27899)) by @bosiraphael - fix(admin-panel): look up admin chat threads in the workspace from the route ([#27901](https://github.com/twentyhq/twenty/pull/27901)) by @etiennejouan - docs: list the Microsoft scopes Twenty actually requests ([#27904](https://github.com/twentyhq/twenty/pull/27904)) by @neo773 - Align CLI version with Twenty 2.46.0 ([#27905](https://github.com/twentyhq/twenty/pull/27905)) by @Weiko - Use the existing banner and field error components for validation rule messages ([#27906](https://github.com/twentyhq/twenty/pull/27906)) by @thomtrp - Let Bedrock AI providers authenticate with a Bedrock API key ([#27907](https://github.com/twentyhq/twenty/pull/27907)) by @charlesBochet - Skip cli-test in the merge queue ([#27908](https://github.com/twentyhq/twenty/pull/27908)) by @prastoin - Add a route to remove Teams user links ([#27909](https://github.com/twentyhq/twenty/pull/27909)) by @abdulrahmancodes - Skip cli-package-test in the merge queue ([#27910](https://github.com/twentyhq/twenty/pull/27910)) by @prastoin - Take row-level rules from the roles the permission config intersects ([#27911](https://github.com/twentyhq/twenty/pull/27911)) by @prastoin - fix(server): sample AI SDK v7 agent spans at 100% in Sentry ([#27913](https://github.com/twentyhq/twenty/pull/27913)) by @etiennejouan - Fix application author display when the manifest carries an npm-style author object ([#27918](https://github.com/twentyhq/twenty/pull/27918)) by @martmull - fix(admin-panel): drop the admin panel global AI chats list ([#27920](https://github.com/twentyhq/twenty/pull/27920)) by @etiennejouan - Only measure overflowing lists while their count can show ([#27923](https://github.com/twentyhq/twenty/pull/27923)) by @charlesBochet - Enable initial object views on new workspaces ([#27924](https://github.com/twentyhq/twenty/pull/27924)) by @thomtrp - refactor(usage-limit): import billing directly instead of discovering its providers ([#27926](https://github.com/twentyhq/twenty/pull/27926)) by @etiennejouan - Bump claude-code-action and Claude Code ([#27928](https://github.com/twentyhq/twenty/pull/27928)) by @neo773 - Only add Bedrock cache points for Claude models ([#27929](https://github.com/twentyhq/twenty/pull/27929)) by @charlesBochet - Make Toast timing deterministic ([#27930](https://github.com/twentyhq/twenty/pull/27930)) by @bosiraphael - fix(cli): report the Node requirement when launched with npx ([#27932](https://github.com/twentyhq/twenty/pull/27932)) by @Weiko - Let application workflows start from a webhook ([#27933](https://github.com/twentyhq/twenty/pull/27933)) by @thomtrp - Fix Kanban icon ([#27936](https://github.com/twentyhq/twenty/pull/27936)) by @BOHEUS - chore(cli): bump the twenty package to 2.47.0 ([#27940](https://github.com/twentyhq/twenty/pull/27940)) by @Weiko - Keep the role permission config on the workspace repository ([#27942](https://github.com/twentyhq/twenty/pull/27942)) by @prastoin - Resolve the connected account when an email is clicked, not per cell ([#27947](https://github.com/twentyhq/twenty/pull/27947)) by @charlesBochet - Wait for Select popup transitions ([#27950](https://github.com/twentyhq/twenty/pull/27950)) by @bosiraphael - Read waiting job ids without loading job data in the BullMQ driver ([#27955](https://github.com/twentyhq/twenty/pull/27955)) by @charlesBochet - Make table cell and skeleton styles static and add a block Skeleton layout ([#27957](https://github.com/twentyhq/twenty/pull/27957)) by @charlesBochet - MCP: fix soft-delete generated tools ([#27962](https://github.com/twentyhq/twenty/pull/27962)) by @BOHEUS - Make filter validation errors actionable for AI agents ([#27963](https://github.com/twentyhq/twenty/pull/27963)) by @BOHEUS </details> **Full Changelog**: https://github.com/twentyhq/twenty/compare/twenty/v2.46.0...twenty/v2.47.0
Related Repositories
openclaw/openclaw★ 392,725
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
nilbuild/developer-roadmap★ 370,103
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
morluto/rea★ 361,139
Reverse engineer anything with agents, from app behavior down to native binaries.
anomalyco/opencode★ 219,907
The open source coding agent.
n8n-io/n8n★ 208,289
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.