twenty/v2.15.0
parruda/swarmtwenty/v2.15.0Jun 24, 2026by Weiko
AI Summary
A large-scale feature release for Twenty including billing/usage sections, AI agent improvements, and workflow enhancements, concluding with a breaking change.
Key Highlights
- Added billing and usage sections to the admin panel
- AI agent tool name suggestions when discovery misses
- Expanded workflow runtime payload with metadata
- Enabled inline field editing in calendar events
Breaking Changes
- Fix chart cache collisions with key-based data plu...
New Features
- Billing/usage section in admin panel
- AI agent tool suggestions
- Workflow metadata expansion
- Monaco workers for GraphQL playground
- Code Interpreter warm sandbox reuse
Full Release Notes
## What's Changed * Move twenty-client-sdk to dev dep by @prastoin in https://github.com/twentyhq/twenty/pull/21611 * chore: bump version to 2.15.0 by @twenty-pr[bot] in https://github.com/twentyhq/twenty/pull/21624 * chore(server): temporary diagnostic logging for empty verification email body by @charlesBochet in https://github.com/twentyhq/twenty/pull/21628 * fix(front): set up Monaco workers for GraphQL playground by @charlesBochet in https://github.com/twentyhq/twenty/pull/21620 * fix(command-menu-item): persist overrides after save and add reset-to-default by @Weiko in https://github.com/twentyhq/twenty/pull/21623 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21633 * Fix relation-traversal filters showing no options on select fields by @bosiraphael in https://github.com/twentyhq/twenty/pull/21616 * fix(twenty-partners): reuse existing company by domain in partner-application handler by @rashad in https://github.com/twentyhq/twenty/pull/21615 * Add call recording scheduling backend by @ehconitin in https://github.com/twentyhq/twenty/pull/21629 * fix(ai) - workflow tool outputs optim + display fix by @etiennejouan in https://github.com/twentyhq/twenty/pull/21500 * Add single-record People Data Labs enrich functions (company & person) by @bosiraphael in https://github.com/twentyhq/twenty/pull/21650 * fix(front): remove runtime default-view creation fallback by @charlesBochet in https://github.com/twentyhq/twenty/pull/21652 * fix(docker): run twenty-server in production mode (NODE_ENV=production) by @charlesBochet in https://github.com/twentyhq/twenty/pull/21635 * fix(ui): default Monaco CodeEditor to scrollBeyondLastLine: false by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21657 * fix(server): run 2-14 standard relation label/icon heal as a system build by @charlesBochet in https://github.com/twentyhq/twenty/pull/21658 * Add Recall webhook status handler to the meeting bot app by @ehconitin in https://github.com/twentyhq/twenty/pull/21659 * fix(route-trigger): return 422 instead of 500 for logic function execution errors by @charlesBochet in https://github.com/twentyhq/twenty/pull/21656 * fix(server): run 2-14 standard relation label/icon heal as a system build by @charlesBochet in https://github.com/twentyhq/twenty/pull/21667 * Enable inline field editing in calendar event details by @ehconitin in https://github.com/twentyhq/twenty/pull/21666 * Update GitHub banners and remove unused assets by @Bonapara in https://github.com/twentyhq/twenty/pull/21655 * Clean up MCP Monaco editor by @Bonapara in https://github.com/twentyhq/twenty/pull/21643 * Load twenty-ui global styles in twenty-front Storybook by @bosiraphael in https://github.com/twentyhq/twenty/pull/21665 * feat(ai-agent): suggest similar tool names when tool discovery misses by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21654 * ci: migrate cross-repo dispatch senders to workflow_dispatch (actions:write) by @prastoin in https://github.com/twentyhq/twenty/pull/21648 * feat(admin-panel) - add billing/usage section by @etiennejouan in https://github.com/twentyhq/twenty/pull/21672 * Update Connection provider path by @martmull in https://github.com/twentyhq/twenty/pull/21678 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21681 * fix(cli): detect expired token on deploy and offer interactive re-auth by @Manibharadwaj in https://github.com/twentyhq/twenty/pull/21335 * Hide Input and Test tabs for app logic function nodes by @bosiraphael in https://github.com/twentyhq/twenty/pull/21671 * Show app name on workflow logic function nodes by @bosiraphael in https://github.com/twentyhq/twenty/pull/21675 * feat(onboarding): prefill the invite step with teammates from the connected calendar by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21640 * feat(workflow): expand manual-trigger runtime payload with payload + _metadata by @thomtrp in https://github.com/twentyhq/twenty/pull/21676 * fix(messaging): honor IMAP/SMTP encryption setting instead of inferring it from the port by @neo773 in https://github.com/twentyhq/twenty/pull/21562 * Support variables file email attachment by @neo773 in https://github.com/twentyhq/twenty/pull/21613 * Stabilize flaky Argos stories in twenty-front storybook by @bosiraphael in https://github.com/twentyhq/twenty/pull/21691 * fix(messaging): pin Google OAuth2 client to native fetch by @neo773 in https://github.com/twentyhq/twenty/pull/21668 * fix(server): default timeline thread visibility to METADATA by @neo773 in https://github.com/twentyhq/twenty/pull/21669 * perf(onboarding): compute invite suggestions on-demand by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21696 * fix(onboarding): show the connect step after workspace creation by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21701 * feat(code-interpreter): reuse a warm sandbox per conversation (E2B) by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21664 * Show app logo and name in workflow step side panel header by @bosiraphael in https://github.com/twentyhq/twenty/pull/21689 * Let users pick their workspace subdomain during sign-up by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21641 * feat(sdk): let docker:start choose the server version by @charlesBochet in https://github.com/twentyhq/twenty/pull/21690 * Fix selectable list arrow focus by @Bonapara in https://github.com/twentyhq/twenty/pull/21679 * Remove twenty-ui-deprecated and migrate frontend to twenty-ui by @bosiraphael in https://github.com/twentyhq/twenty/pull/21596 * Partners app: profile picture (additive file field), derived region & deployment, scope cleanup (0.5.4) by @rashad in https://github.com/twentyhq/twenty/pull/21709 * fix(route-trigger): distinguish user vs platform logic function execution errors by @charlesBochet in https://github.com/twentyhq/twenty/pull/21715 * Added page card box-shadow by @Bonapara in https://github.com/twentyhq/twenty/pull/21688 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21724 * fix(front): wait for viewFields + fieldMetadataItems before opening the metadata gate by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21713 * fix(front): home redirect honors first object of the navigation menu by @thomtrp in https://github.com/twentyhq/twenty/pull/21626 * docs: update calendar-email page by @neo773 in https://github.com/twentyhq/twenty/pull/21719 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21741 * feat(server): add isSystemSideEffect & merge createOneObject/createOneField side-effect migrations by @Weiko in https://github.com/twentyhq/twenty/pull/21673 * feat(workflow): use workspace member as variable sender for emails by @thomtrp in https://github.com/twentyhq/twenty/pull/21582 * Point New UI visual regression at the twenty-ui Argos project by @bosiraphael in https://github.com/twentyhq/twenty/pull/21728 * Provide custom workspace id while seeding by @prastoin in https://github.com/twentyhq/twenty/pull/21721 * Add limit on view widget by @martmull in https://github.com/twentyhq/twenty/pull/21718 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21746 * Add stale Recall bot reconciliation by @ehconitin in https://github.com/twentyhq/twenty/pull/21720 * fix(server): allow app-defined permission flags to be referenced by a role in the same sync by @Weiko in https://github.com/twentyhq/twenty/pull/21742 * feat(workflow): surface manual-trigger payload + metadata in variable picker by @thomtrp in https://github.com/twentyhq/twenty/pull/21692 * fix(ai): handle dynamic-tool message parts in chat persistence by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21740 * [BREAKING CHANGE] fix chart cache collisions with key-based data plumbing by @ehconitin in https://github.com/twentyhq/twenty/pull/21743 * feat(billing) - facilitate top up in ai chat by @etiennejouan in https://github.com/twentyhq/twenty/pull/21645 * ci: remove merge queue, run e2e on push to main by @charlesBochet in https://github.com/twentyhq/twenty/pull/21722 * fix(server): enforce lowercase universalIdentifier in sync by @Weiko in https://github.com/twentyhq/twenty/pull/21754 * fix(ai): prevent chat thread bricking from tool parts with null input by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21752 * fix(front): stop impersonation from corrupting the impersonator's profile name by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21757 * Twenty app e2e app prod parity dispatch by @prastoin in https://github.com/twentyhq/twenty/pull/21750 * feat(workflow): expected output schema for runtime-output steps + validation by @etiennejouan in https://github.com/twentyhq/twenty/pull/21744 * fix: enforce strict rules for currency value handling by ai chatbot by @dankgarlic1 in https://github.com/twentyhq/twenty/pull/21470 * Add post-call recording ingestion and billing by @ehconitin in https://github.com/twentyhq/twenty/pull/21758 * Reorganize twenty-ui into best-practice component domains and per-component folders by @bosiraphael in https://github.com/twentyhq/twenty/pull/21745 * Tool execution metrics by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/21587 * chore(deps-dev): bump @babel/core from 7.28.0 to 7.29.7 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/21760 * chore(deps-dev): bump @electron-forge/maker-zip from 7.11.1 to 7.11.2 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/21761 * chore(deps): bump mintlify from 4.2.595 to 4.2.629 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/21762 * Reworked website. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21763 * Centralize and standardize impersonation validation rules by @prastoin in https://github.com/twentyhq/twenty/pull/21717 * Fix typecheck by @bosiraphael in https://github.com/twentyhq/twenty/pull/21783 * fix: exclude non-groupBy date fields (deletedAt) from calendar field selection by @ehconitin in https://github.com/twentyhq/twenty/pull/21764 * Remove twenty-shared import from postcard app by @prastoin in https://github.com/twentyhq/twenty/pull/21786 * Configure Recall bot server variables by @ehconitin in https://github.com/twentyhq/twenty/pull/21774 * Add search input to manual record trigger object select by @bosiraphael in https://github.com/twentyhq/twenty/pull/21777 * feat(workflow): add update_agent tool and responseFormat-aware AI Agent step schema by @etiennejouan in https://github.com/twentyhq/twenty/pull/21755 * Bump call recording app version by @martmull in https://github.com/twentyhq/twenty/pull/21787 * Accessibility fix pass for twenty-ui input components by @bosiraphael in https://github.com/twentyhq/twenty/pull/21776 * Fix flaky Argos diffs by @bosiraphael in https://github.com/twentyhq/twenty/pull/21771 * fix(server): prevent enum migration failure for long identifier names by @thomtrp in https://github.com/twentyhq/twenty/pull/21748 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21789 * fix(server): type WasRemovedInUpgrade columns with WasRemovedInUpgrade<> by @Weiko in https://github.com/twentyhq/twenty/pull/21785 * Fix side panel command menu header controls by @Bonapara in https://github.com/twentyhq/twenty/pull/21747 * Converge Recall transcript artifacts on meeting start by @ehconitin in https://github.com/twentyhq/twenty/pull/21788 * feat(workflow): auto-layout steps on AI workflow creation via shared tidy-up by @etiennejouan in https://github.com/twentyhq/twenty/pull/21756 * Accessibility fix pass for remaining twenty-ui domains by @bosiraphael in https://github.com/twentyhq/twenty/pull/21790 * [Website] Full-bleed hero/testimonials, nav restructure, OpenNext deploy config by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21794 * Partner application form: required fields, skills rework, fail-fast validation by @rashad in https://github.com/twentyhq/twenty/pull/21710 * fix(logic-function): treat invoke timeout as a user-level error, not a platform error by @thomtrp in https://github.com/twentyhq/twenty/pull/21779 * i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21795 * Disable Claude Code attribution on commits and PRs by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21798 * feat(auth): collect the workspace logo on the sign-up creation step by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21723 * [Website] Carry over README assets, .well-known, and an env template by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21803 * feat(website - self hosts billing): add internal endpoint to reissue enterprise keys by @ijreilly in https://github.com/twentyhq/twenty/pull/21660 * [Website] Port partner application form rework (required fields, skills, fail-fast) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21802 * [Website] Straighten the footer 20 model by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21797 * feat(server): report enterprise instance metadata on license validation by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21793 * fix(metadata): remove deprecated isCustom from Objects and Fields by @Weiko in https://github.com/twentyhq/twenty/pull/21799 * Scope empty fixture workspaces to upgrade integration tests by @neo773 in https://github.com/twentyhq/twenty/pull/21778 * Fix(record table): Drag select position by @git-init-priyanshu in https://github.com/twentyhq/twenty/pull/21579 * Fix view type label casing by @Bonapara in https://github.com/twentyhq/twenty/pull/21772 * fix(front): unwrap react-qr-code default export to fix 2FA crash on prod by @charlesBochet in https://github.com/twentyhq/twenty/pull/21804 * messaging: gmail folder backfill by @neo773 in https://github.com/twentyhq/twenty/pull/21753 * fix(workflow): hide empty option for non-nullable select fields by @brendanerofeev in https://github.com/twentyhq/twenty/pull/21075 * feat(server): derive email/calendar timelines from object relations by @neo773 in https://github.com/twentyhq/twenty/pull/21684 * fix(twenty-shared): derive short-number suffix from the rounded value by @yashs33244 in https://github.com/twentyhq/twenty/pull/21591 * fix(security): bump form-data to 4.0.6 (CRLF injection) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21808 * fix(security): remove vulnerable lodash 4.17.23 (code injection + prototype pollution) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21809 * fix(security): bump piscina to 4.9.3 (prototype pollution → RCE) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21810 * fix(security): bump protobufjs to 7.6.4 (DoS + property shadowing) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21811 * fix(security): bump http-proxy-middleware to 3.0.7 (multipart field injection) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21812 * fix(security): bump tar to 7.5.16 across lockfiles (PAX file smuggling) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21813 * fix(security): bump markdown-it to 14.2.0 (smartquotes ReDoS) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21814 * fix(security): dedupe uuid to 11.1.1 (missing buffer bounds check) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21815 * fix(security): patch yaml across both major lines (stack overflow) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21817 * [Website] Add internal enterprise key reissue endpoint. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21807 * Infer record pickers for record-typed logic function workflow inputs by @bosiraphael in https://github.com/twentyhq/twenty/pull/21494 * fix(security): bump webpack-dev-server resolution to 5.2.5 (HMR WS interception) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21818 * feat(partners): add partner-application-triage and partner-meeting-recap skills by @rashad in https://github.com/twentyhq/twenty/pull/21819 * fix call recording bot automatic leave activate after bug by @ehconitin in https://github.com/twentyhq/twenty/pull/21820 * feat(onboarding): always show the Create Profile step by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21823 * [Website] Cut over to the rebuilt site by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21825 * fix(front): emit error instead of completing empty on failed token renewal by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21822 * fix(front): pass auth headers to GraphiQL fetcher for introspection by @etiennejouan in https://github.com/twentyhq/twenty/pull/21821 * fix: filtered view resetting to unfiltered list on navigation by @parshipcy in https://github.com/twentyhq/twenty/pull/21080 * i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21827 * Create CI workflow for internal apps by @martmull in https://github.com/twentyhq/twenty/pull/21791 * fix: reorder table columns against visible fields only (#20940) by @singhharsh1708 in https://github.com/twentyhq/twenty/pull/21084 * feat(billing): embed Stripe Payment Element in onboarding by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21759 * fix(security): bump tar to 7.5.16 in seed-dependencies (PAX file smuggling) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21829 * fix(workflow): show fields for system objects in record-updated trigger by @thomtrp in https://github.com/twentyhq/twenty/pull/21826 * Add application to test input in workflow by @martmull in https://github.com/twentyhq/twenty/pull/21830 * fix(workflow): label manual trigger record output as Record/Records by @thomtrp in https://github.com/twentyhq/twenty/pull/21832 * fix: prevent Create Workspace redirect from being cancelled by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21835 * docs(user-guide): remove unsupported Between operator for Number filters by @thomtrp in https://github.com/twentyhq/twenty/pull/21838 * fix: Edit Layout keeping the command menu open by @parshipcy in https://github.com/twentyhq/twenty/pull/21161 * Deprecate legacy encryption by @prastoin in https://github.com/twentyhq/twenty/pull/21831 * fix(front): recompute ExpandableList visible chips on resize by @dilanmelvin in https://github.com/twentyhq/twenty/pull/21139 * Update ci internal applications by @martmull in https://github.com/twentyhq/twenty/pull/21837 * fix(ai): validate AI agent output field names against schema-key constraint by @charlesBochet in https://github.com/twentyhq/twenty/pull/21834 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21841 * Enable getting started translations by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/21842 * Add Update fields select to People Data Labs enrichment functions by @bosiraphael in https://github.com/twentyhq/twenty/pull/21801 * fix(onboarding): refresh stale workspace in currentWorkspace field resolver by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21839 * fix(front): allow null subfields in Phones default value so Save enables by @thomtrp in https://github.com/twentyhq/twenty/pull/21847 * App uninstall lambda, layers cleanup by @prastoin in https://github.com/twentyhq/twenty/pull/21749 * reset filter search input on field select by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/21850 * fix(front): keep record table footer visible below information banner by @thomtrp in https://github.com/twentyhq/twenty/pull/21852 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21859 * fix(website): restore deploymentId, security headers and redirects in next config by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21851 * Accessibility guardrails and component hardening for twenty-ui by @bosiraphael in https://github.com/twentyhq/twenty/pull/21848 * feat: add resizable kanban column width by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21828 * Fix record table footer hidden when an information banner is visible by @bosiraphael in https://github.com/twentyhq/twenty/pull/21860 * Add standard record page layout for calendar events by @ehconitin in https://github.com/twentyhq/twenty/pull/21857 * fix(workflow): add tooltip explaining why the variable picker is disabled by @thomtrp in https://github.com/twentyhq/twenty/pull/21862 * Add twenty slack to internal application ci by @martmull in https://github.com/twentyhq/twenty/pull/21849 * i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21864 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21865 * i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21866 * Workspace migration post transaction commit side effect by @prastoin in https://github.com/twentyhq/twenty/pull/21845 * Fix broken CSV import grid layout by @bosiraphael in https://github.com/twentyhq/twenty/pull/21867 * fix(security): drop vulnerable serialize-javascript via terser-webpack-plugin bump by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21871 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21873 * fix(security): refresh undici across lockfiles (6.x → 6.27.0, 7.x → 7.28.0) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21870 * fix(security): bump socks to clear vulnerable ip-address (XSS) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21872 * Clear stale parent-view filters on front-component cross-object navigation by @bosiraphael in https://github.com/twentyhq/twenty/pull/21869 * Add transcript tab to calendar record page by @ehconitin in https://github.com/twentyhq/twenty/pull/21792 * Rename meeting bot app variables from RECALL_BOT_* to MEETING_BOT_* by @ehconitin in https://github.com/twentyhq/twenty/pull/21878 * Add recall io webhook endpoint by @martmull in https://github.com/twentyhq/twenty/pull/21879 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21884 * fix(front): respect user number format for counts and aggregates by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21894 * test(server): make timeline integration test self-seed its data by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21896 * fix(security): bump nodemailer to 9.0.1 (raw-option SSRF / file read) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21903 * fix(security): bump dompurify to 3.4.11 (config/hook pollution) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21905 * feat(website): spotlight visual on top and uniform tile background by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21906 * fix(twenty-website): fill feature-card visual frame on wide viewports by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21876 * fix: hide restricted objects and views nested in navigation folders by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/21914 * Fix dangling relation fields crashing records after deleting a custom object by @Weiko in https://github.com/twentyhq/twenty/pull/21874 * feat(workflow): condition filter on database-event triggers by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21868 * fix: cannot create record from table view — empty morph to-many relation returns null by @charlesBochet in https://github.com/twentyhq/twenty/pull/21846 * fix(front): prevent AI agent output field error message from overlapping the Type field by @charlesBochet in https://github.com/twentyhq/twenty/pull/21921 * feat(workflow): add Pick Record action (1/3 — random selection) by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21899 * feat(sdk): declare row-level permission predicates in the role manifest by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21919 * feat(workflow): Pick Record round robin strategy (2/3) by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21900 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21923 * feat(workflow): Pick Record load balanced strategy (3/3) by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21902 * fix(twenty-server): remove uuid format from openapi pageInfo cursors by @Manibharadwaj in https://github.com/twentyhq/twenty/pull/21920 * fix(ai): gemini not working in ask ai by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/21898 * ci: block bot contributors from PR commit history by @charlesBochet in https://github.com/twentyhq/twenty/pull/21926 * chore(deps): bump wrangler to 4.102.0 and drop the wrangler/esbuild resolution by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21930 * fix(security): bump react-router to 6.30.4 via react-router-dom (open redirect) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21931 * [Twenty-front]: Bunch of View Picker Fixes and improvements. by @git-init-priyanshu in https://github.com/twentyhq/twenty/pull/21290 * fix(security): drop vulnerable postcss via styled-components bump (XSS) by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21932 * Add twenty-discord on internal ci apps by @martmull in https://github.com/twentyhq/twenty/pull/21928 * Fix meeting bot CalendarEvent field visibility and editability by @ehconitin in https://github.com/twentyhq/twenty/pull/21883 * Add twenty-exa application to internal app ci by @martmull in https://github.com/twentyhq/twenty/pull/21882 * fix: surface proper errors for People create/delete constraint violations by @Pantkartik in https://github.com/twentyhq/twenty/pull/21270 * fix(workflow): serialize object variables in resolved prompts by @ijreilly in https://github.com/twentyhq/twenty/pull/21612 * Add twenty-fireflies on internal ci apps by @martmull in https://github.com/twentyhq/twenty/pull/21939 * Add self-hosting on internal ci apps by @martmull in https://github.com/twentyhq/twenty/pull/21940 * fix(front): isolate record table dashboard widget filters on duplicate by @ehconitin in https://github.com/twentyhq/twenty/pull/21936 * make mergeMany atomic and optimize relation/field-map handling by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/21885 * Add twenty-for-twenty on internal ci apps by @martmull in https://github.com/twentyhq/twenty/pull/21944 * Add twenty-linear on internal ci apps by @martmull in https://github.com/twentyhq/twenty/pull/21942 * fix(server): surface nested QueryFailedError detail in upgrade error formatting by @charlesBochet in https://github.com/twentyhq/twenty/pull/21948 * Remove jotai from twenty-ui by @bosiraphael in https://github.com/twentyhq/twenty/pull/21937 * Add people-data-labs on internal ci apps by @martmull in https://github.com/twentyhq/twenty/pull/21941 * suport non aws providers 1 by @jubinsoni in https://github.com/twentyhq/twenty/pull/21927 * Refactor search vector field by @prastoin in https://github.com/twentyhq/twenty/pull/21947 * Add gallery screenshot to People Data Labs app by @bosiraphael in https://github.com/twentyhq/twenty/pull/21960 * chore(twenty-server): upgrade typeorm to 0.3.29 by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21957 * fix(front): keep relation field record tables scoped to the host record by @rcshetty3 in https://github.com/twentyhq/twenty/pull/21293 * feat: real-time email & calendar tabs on record pages by @neo773 in https://github.com/twentyhq/twenty/pull/21953 * fix(website): render partner marketplace dynamically to stop profile 404s by @rashad in https://github.com/twentyhq/twenty/pull/21963 * perf(server): rate-limit the active event stream count scan by @charlesBochet in https://github.com/twentyhq/twenty/pull/21951 * perf(server): raise workspace local cache size and meter evictions by @charlesBochet in https://github.com/twentyhq/twenty/pull/21954 * Remove unused call-recording application by @martmull in https://github.com/twentyhq/twenty/pull/21966 * fix(server): skip callRecordings widget in calendar-event page sync when field is absent by @charlesBochet in https://github.com/twentyhq/twenty/pull/21967 * Improve twenty-ui packaging for standalone publishing by @bosiraphael in https://github.com/twentyhq/twenty/pull/21946 * fix(front): scope relation table widget via currentRecordId by @charlesBochet in https://github.com/twentyhq/twenty/pull/21965 * Fix field widget textarea focus reset by @Bonapara in https://github.com/twentyhq/twenty/pull/21959 ## New Contributors * @dankgarlic1 made their first contribution in https://github.com/twentyhq/twenty/pull/21470 * @singhharsh1708 made their first contribution in https://github.com/twentyhq/twenty/pull/21084 * @dilanmelvin made their first contribution in https://github.com/twentyhq/twenty/pull/21139 * @jubinsoni made their first contribution in https://github.com/twentyhq/twenty/pull/21927 * @rcshetty3 made their first contribution in https://github.com/twentyhq/twenty/pull/21293 **Full Changelog**: https://github.com/twentyhq/twenty/compare/twenty/v2.14.0...twenty/v2.15.0