twenty/v2.40.0
BasedHardware/omitwenty/v2.40.0Sep 15, 2026by twenty-pr[bot]
Upgrading?
AI Summary
This update introduces significant changes to AI model selection and app installation tracking, alongside new features for workflows, search, and call recording integration.
Key Highlights
- Breaking change: AI model pickers replaced with a five-tier slider
- New features: Bulk workflow deletion and creation
- Fathom recording integration improvements
- Slack assistant failure reply branching
Breaking Changes
- Track application installs and uninstalls with deterministic queue jobs
- Replace model pickers with a five-tier model slider
New Features
- Object search section editing
- Bulk workflow selection and deletion
- Fathom bot toggle for all calendar meetings
- MCP file upload action tools
- Usage limit quota enforcement over credit allowance periods
- Workflow creation and deletion through core API
- AI chat hints for @ and / in composer
Full Release Notes
<!-- generated-release-notes v1 --> ## β οΈ Breaking changes - Track application installs and uninstalls with deterministic queue jobs ([#25502](https://github.com/twentyhq/twenty/pull/25502)) by @martmull - feat(ai): replace model pickers with a five-tier model slider ([#25721](https://github.com/twentyhq/twenty/pull/25721)) by @FelixMalfait ## β¨ New features - feat(search): expose isSearchable on field metadata and make the object search section editable ([#25166](https://github.com/twentyhq/twenty/pull/25166)) by @prastoin - feat(record-form): render the record creation form behind a flag ([#25203](https://github.com/twentyhq/twenty/pull/25203)) by @thomtrp - feat(core): let apps report a connection auth failure with a reason ([#25297](https://github.com/twentyhq/twenty/pull/25297)) by @abdulrahmancodes - feat(workflow): polish the core workflows index and gate workflow run workspace relations ([#25356](https://github.com/twentyhq/twenty/pull/25356)) by @thomtrp - feat(workflow): select core workflows and delete them in bulk ([#25415](https://github.com/twentyhq/twenty/pull/25415)) by @thomtrp - feat(call-recorder): toggle to send the bot to all calendar meetings ([#25431](https://github.com/twentyhq/twenty/pull/25431)) by @ehconitin - feat(slack): branch the assistant failure reply on the failure kind ([#25484](https://github.com/twentyhq/twenty/pull/25484)) by @abdulrahmancodes - feat: add create/complete file upload action tools for MCP ([#25503](https://github.com/twentyhq/twenty/pull/25503)) by @Lakshayyy-m - feat(usage-limit): quota limits over the credit allowance period ([#25526](https://github.com/twentyhq/twenty/pull/25526)) by @etiennejouan - feat(usage-limit): count quota admits on failure and the credits they let through ([#25546](https://github.com/twentyhq/twenty/pull/25546)) by @etiennejouan - feat(slack): point the channel welcome at the DM as the private path ([#25585](https://github.com/twentyhq/twenty/pull/25585)) by @abdulrahmancodes - feat: add audio playback fallback for call recordings ([#25592](https://github.com/twentyhq/twenty/pull/25592)) by @ehconitin - feat(workflow): create and delete workflows through the core API ([#25626](https://github.com/twentyhq/twenty/pull/25626)) by @thomtrp - feat(workflow): read the workflow show page through the core API ([#25669](https://github.com/twentyhq/twenty/pull/25669)) by @thomtrp - feat(usage-limit): cap webhook calls per workspace at enqueue time ([#25673](https://github.com/twentyhq/twenty/pull/25673)) by @etiennejouan - feat(slack): show the thinking status before the assistant context lookups ([#25676](https://github.com/twentyhq/twenty/pull/25676)) by @abdulrahmancodes - feat(workflow): add coreWorkflowId to core workflow versions ([#25679](https://github.com/twentyhq/twenty/pull/25679)) by @thomtrp - feat(slack): defer rate limited message delivery to a delayed job ([#25700](https://github.com/twentyhq/twenty/pull/25700)) by @abdulrahmancodes - feat(server): run server route dispatch jobs ahead of the trigger fan-out ([#25701](https://github.com/twentyhq/twenty/pull/25701)) by @abdulrahmancodes - feat(slack): answer the assistant request in the execution that records it ([#25702](https://github.com/twentyhq/twenty/pull/25702)) by @abdulrahmancodes - feat(ai-chat): hint @ and / in composer placeholder, add / skill suggestions ([#25778](https://github.com/twentyhq/twenty/pull/25778)) by @FelixMalfait - feat(skills): split agent-only skills from user skills, rewrite the catalog ([#25798](https://github.com/twentyhq/twenty/pull/25798)) by @FelixMalfait ## π Improvements & UX - Alias native worker APIs onto window in front components ([#24190](https://github.com/twentyhq/twenty/pull/24190)) by @bosiraphael - Support classList in front components ([#24191](https://github.com/twentyhq/twenty/pull/24191)) by @bosiraphael - Make the Fathom app publishable and rewrite its listing copy ([#25325](https://github.com/twentyhq/twenty/pull/25325)) by @ehconitin - Fix delayed view deletion feedback ([#25344](https://github.com/twentyhq/twenty/pull/25344)) by @Bonapara - Add field description tooltips ([#25408](https://github.com/twentyhq/twenty/pull/25408)) by @Bonapara - Extract email body text without building a DOM ([#25422](https://github.com/twentyhq/twenty/pull/25422)) by @neo773 - Record sharing 2/14: add the recordShare hidden standard object and its service ([#25425](https://github.com/twentyhq/twenty/pull/25425)) by @martmull - Record sharing 3/14: gate reads and writes on private objects with record share rows ([#25426](https://github.com/twentyhq/twenty/pull/25426)) by @martmull - Record sharing 4/14: let a create state who may read the record with shareWith ([#25428](https://github.com/twentyhq/twenty/pull/25428)) by @martmull - Add Fathom media storage foundation ([#25432](https://github.com/twentyhq/twenty/pull/25432)) by @ehconitin - Import Fathom recording media asynchronously ([#25433](https://github.com/twentyhq/twenty/pull/25433)) by @ehconitin - Reconcile stale Fathom media imports ([#25434](https://github.com/twentyhq/twenty/pull/25434)) by @ehconitin - Migrate existing Canvas tabs to vertical lists ([#25511](https://github.com/twentyhq/twenty/pull/25511)) by @Bonapara - Support explicit widget height behavior ([#25512](https://github.com/twentyhq/twenty/pull/25512)) by @Bonapara - Simplify page layout manifest authoring ([#25513](https://github.com/twentyhq/twenty/pull/25513)) by @Bonapara - Use existing component for AI chat warnings ([#25519](https://github.com/twentyhq/twenty/pull/25519)) by @Bonapara - Delete Fathom webhooks on disconnect ([#25520](https://github.com/twentyhq/twenty/pull/25520)) by @ehconitin - Fix app CI fixtures and registry upload limit ([#25531](https://github.com/twentyhq/twenty/pull/25531)) by @Bonapara - Stop pruning published translations when a project has no locales folder ([#25535](https://github.com/twentyhq/twenty/pull/25535)) by @Weiko - Fix sidebar Link items in folders redirecting to a doubled URL ([#25536](https://github.com/twentyhq/twenty/pull/25536)) by @bosiraphael - bump call recorder app version to 1.13.0 ([#25538](https://github.com/twentyhq/twenty/pull/25538)) by @ehconitin - Scaffold a locales folder with an empty source catalog ([#25539](https://github.com/twentyhq/twenty/pull/25539)) by @Weiko - Add Fathom recording import data model ([#25540](https://github.com/twentyhq/twenty/pull/25540)) by @ehconitin - Polish AI chat mode design and actions ([#25542](https://github.com/twentyhq/twenty/pull/25542)) by @Bonapara - Clear a Recording Bot On the call recorder cannot honor ([#25543](https://github.com/twentyhq/twenty/pull/25543)) by @ehconitin - Offer a DMARC record only when the sending domain has none ([#25547](https://github.com/twentyhq/twenty/pull/25547)) by @neo773 - Run twenty-ui unit tests on vitest and add a component conformance helper ([#25548](https://github.com/twentyhq/twenty/pull/25548)) by @bosiraphael - Add a color scheme toolbar to twenty-ui Storybook with dark catalog stories for Field and Text ([#25550](https://github.com/twentyhq/twenty/pull/25550)) by @bosiraphael - Reuse shared status tags and truncate banner messages ([#25554](https://github.com/twentyhq/twenty/pull/25554)) by @Bonapara - Stream nx task output so a killed task still prints its stack ([#25560](https://github.com/twentyhq/twenty/pull/25560)) by @neo773 - Let marketers schedule a campaign for a later send ([#25563](https://github.com/twentyhq/twenty/pull/25563)) by @neo773 - Stop group email deletion from scanning a cartesian product ([#25565](https://github.com/twentyhq/twenty/pull/25565)) by @neo773 - Export an application's published translations in the manifest ([#25566](https://github.com/twentyhq/twenty/pull/25566)) by @Weiko - [Apps 2-way sync] Pull write translations ([#25567](https://github.com/twentyhq/twenty/pull/25567)) by @Weiko - Skip empty built files on upload and report a rejected batch once ([#25568](https://github.com/twentyhq/twenty/pull/25568)) by @Weiko - Remove an unused import from defineObject ([#25569](https://github.com/twentyhq/twenty/pull/25569)) by @Weiko - Granola 1/8: Add the Granola application scaffold ([#25570](https://github.com/twentyhq/twenty/pull/25570)) by @ehconitin - Granola 3/8: Map Granola notes into Call Recordings ([#25572](https://github.com/twentyhq/twenty/pull/25572)) by @ehconitin - Granola 4/8: Connect Granola webhooks and live synchronization ([#25573](https://github.com/twentyhq/twenty/pull/25573)) by @ehconitin - Granola 5/8: Import Granola history and recover missed updates ([#25574](https://github.com/twentyhq/twenty/pull/25574)) by @ehconitin - Granola 6/8: Expose Granola notes to workflows and AI ([#25575](https://github.com/twentyhq/twenty/pull/25575)) by @ehconitin - Add Input, InputGroup and Textarea to twenty-ui ([#25584](https://github.com/twentyhq/twenty/pull/25584)) by @bosiraphael - Resolve the side panel context store object from the panel location ([#25586](https://github.com/twentyhq/twenty/pull/25586)) by @bosiraphael - Bump app version ([#25587](https://github.com/twentyhq/twenty/pull/25587)) by @martmull - Snapshot the exported manifest and guard the compared properties in the export spec ([#25593](https://github.com/twentyhq/twenty/pull/25593)) by @Weiko - Fix empty relation card vertical padding ([#25595](https://github.com/twentyhq/twenty/pull/25595)) by @Bonapara - Add ListItem to twenty-ui ([#25596](https://github.com/twentyhq/twenty/pull/25596)) by @bosiraphael - Keep the workspace navigation section visible when it has no items ([#25597](https://github.com/twentyhq/twenty/pull/25597)) by @Weiko - Always create app connections at workspace level ([#25598](https://github.com/twentyhq/twenty/pull/25598)) by @FelixMalfait - Stop fanning workflowRun.updated events out to webhooks ([#25599](https://github.com/twentyhq/twenty/pull/25599)) by @thomtrp - Export views and their children from an installed application ([#25600](https://github.com/twentyhq/twenty/pull/25600)) by @Weiko - Restore workflowRun.updated webhooks for explicit subscriptions ([#25601](https://github.com/twentyhq/twenty/pull/25601)) by @thomtrp - Write pulled views and standalone view fields as define files ([#25606](https://github.com/twentyhq/twenty/pull/25606)) by @Weiko - Add Popover to twenty-ui ([#25607](https://github.com/twentyhq/twenty/pull/25607)) by @bosiraphael - Update website changelog through 2.38.1 ([#25609](https://github.com/twentyhq/twenty/pull/25609)) by @Bonapara - Add Menu to twenty-ui ([#25610](https://github.com/twentyhq/twenty/pull/25610)) by @bosiraphael - Add Tabs compound to twenty-ui ([#25612](https://github.com/twentyhq/twenty/pull/25612)) by @bosiraphael - Open onboarding AI chat beside the workspace homepage ([#25614](https://github.com/twentyhq/twenty/pull/25614)) by @Bonapara - Move part class-name merging into shared utilities ([#25621](https://github.com/twentyhq/twenty/pull/25621)) by @bosiraphael - Move twenty-ui component behavior tests into stories ([#25623](https://github.com/twentyhq/twenty/pull/25623)) by @bosiraphael - Export page layouts, tabs and widgets from an installed application ([#25624](https://github.com/twentyhq/twenty/pull/25624)) by @Weiko - Add Select compound to twenty-ui ([#25625](https://github.com/twentyhq/twenty/pull/25625)) by @bosiraphael - Fix Menu imports after class-name helper rename ([#25634](https://github.com/twentyhq/twenty/pull/25634)) by @bosiraphael - Make the billing catalog ready for plan and price evolution ([#25635](https://github.com/twentyhq/twenty/pull/25635)) by @FelixMalfait - Add isAuditLogged on field metadata to keep noisy fields off the timeline ([#25641](https://github.com/twentyhq/twenty/pull/25641)) by @FelixMalfait - Allow automation and AI agents in the terms of service ([#25642](https://github.com/twentyhq/twenty/pull/25642)) by @FelixMalfait - Revert "Revert "Record sharing 5/14: evaluate record shares in memory for events"" ([#25650](https://github.com/twentyhq/twenty/pull/25650)) by @martmull - Add a standalone page layout widget slot to the manifest and export widgets placed on existing tabs ([#25651](https://github.com/twentyhq/twenty/pull/25651)) by @Weiko - Write pulled page layouts and standalone page layout tabs as define files ([#25655](https://github.com/twentyhq/twenty/pull/25655)) by @Weiko - Serialize a workspace's entitlement transition ([#25660](https://github.com/twentyhq/twenty/pull/25660)) by @FelixMalfait - Extract frontend snack bar into twenty-ui Toast ([#25663](https://github.com/twentyhq/twenty/pull/25663)) by @bosiraphael - Add AlertDialog compound to twenty-ui ([#25665](https://github.com/twentyhq/twenty/pull/25665)) by @bosiraphael - Fix dropdown anchoring at non-default interface scales ([#25667](https://github.com/twentyhq/twenty/pull/25667)) by @Bonapara - Let a relation field's bookkeeping properties be updated through a sync ([#25668](https://github.com/twentyhq/twenty/pull/25668)) by @Weiko - Run direct consumer CI on twenty-ui changes and record known radio failures ([#25670](https://github.com/twentyhq/twenty/pull/25670)) by @bosiraphael - Add benchmarks, data residency and zero data retention to the AI model catalog ([#25675](https://github.com/twentyhq/twenty/pull/25675)) by @FelixMalfait - Migrate twenty-ui Toggle to Switch ([#25678](https://github.com/twentyhq/twenty/pull/25678)) by @bosiraphael - Skip workflow status update when the workflow no longer exists ([#25680](https://github.com/twentyhq/twenty/pull/25680)) by @thomtrp - Fix column resize dragging the widget in layout edit mode ([#25681](https://github.com/twentyhq/twenty/pull/25681)) by @bosiraphael - Create the inputs-validation fixture fields in one migration instead of twenty-two ([#25684](https://github.com/twentyhq/twenty/pull/25684)) by @Weiko - Let app-driven agents reach dashboard and workflow tools ([#25685](https://github.com/twentyhq/twenty/pull/25685)) by @abdulrahmancodes - Export an application's navigation menu items ([#25687](https://github.com/twentyhq/twenty/pull/25687)) by @Weiko - Fix two matcher defects the first populated benchmark sync exposed ([#25690](https://github.com/twentyhq/twenty/pull/25690)) by @FelixMalfait - Resolve Slack mention tokens before the assistant prompt is built ([#25694](https://github.com/twentyhq/twenty/pull/25694)) by @abdulrahmancodes - Acknowledge Slack file attachments in the assistant ([#25695](https://github.com/twentyhq/twenty/pull/25695)) by @abdulrahmancodes - Deliver the Claude reasoning config and make effort a first-class model parameter ([#25696](https://github.com/twentyhq/twenty/pull/25696)) by @FelixMalfait - Write pulled navigation menu items as define files ([#25705](https://github.com/twentyhq/twenty/pull/25705)) by @Weiko - Show workspace-shared app connections to every member ([#25708](https://github.com/twentyhq/twenty/pull/25708)) by @abdulrahmancodes - Clear logoFileId when the workspace logo is removed ([#25711](https://github.com/twentyhq/twenty/pull/25711)) by @martmull - Refresh self-hosted Google default to Gemini 3.8 Flash ([#25713](https://github.com/twentyhq/twenty/pull/25713)) by @twenty-pr-author - Increase logic function concurrency ([#25714](https://github.com/twentyhq/twenty/pull/25714)) by @martmull - Migrate twenty-ui Radio and RadioGroup ([#25715](https://github.com/twentyhq/twenty/pull/25715)) by @bosiraphael - Migrate twenty-ui Slider to Base UI ([#25716](https://github.com/twentyhq/twenty/pull/25716)) by @bosiraphael - Backfill twenty-ui front component renderer stories ([#25719](https://github.com/twentyhq/twenty/pull/25719)) by @bosiraphael - Fix AWS region validation across partitions ([#25720](https://github.com/twentyhq/twenty/pull/25720)) by @NiklasDah - Add batch delivery to database-event-triggered logic functions ([#25726](https://github.com/twentyhq/twenty/pull/25726)) by @martmull - Import CalDAV events from servers that omit getetag ([#25728](https://github.com/twentyhq/twenty/pull/25728)) by @neo773 - Accept CalDAV calendars that do not publish a component set ([#25729](https://github.com/twentyhq/twenty/pull/25729)) by @neo773 - Score effort variants from the benchmark rows taken at their own effort ([#25730](https://github.com/twentyhq/twenty/pull/25730)) by @FelixMalfait - Compare a record relation to the current member's relation in row-level permissions ([#25732](https://github.com/twentyhq/twenty/pull/25732)) by @Weiko - Stop pull overwriting a source file that defines no entity ([#25739](https://github.com/twentyhq/twenty/pull/25739)) by @Weiko - Write pulled standalone page layout widgets as define files ([#25743](https://github.com/twentyhq/twenty/pull/25743)) by @Weiko - Stop calling a local file unknown to the workspace when the export reported it ([#25746](https://github.com/twentyhq/twenty/pull/25746)) by @Weiko - Tell pull users their project cannot build what pull just wrote ([#25747](https://github.com/twentyhq/twenty/pull/25747)) by @Weiko - Keep a stored file's identifier when its content is uploaded again ([#25748](https://github.com/twentyhq/twenty/pull/25748)) by @Weiko - Refuse to pull an application into a project that already defines another ([#25750](https://github.com/twentyhq/twenty/pull/25750)) by @Weiko - Never infer deletion for rows a manifest cannot express ([#25752](https://github.com/twentyhq/twenty/pull/25752)) by @Weiko - Block private-network SSO issuers and replace the safe-mode toggle with an internal host allowlist ([#25756](https://github.com/twentyhq/twenty/pull/25756)) by @FelixMalfait - Restrict AI and Settings access during layout editing ([#25760](https://github.com/twentyhq/twenty/pull/25760)) by @Bonapara - Let the e2e local registry accept twenty-ui ([#25765](https://github.com/twentyhq/twenty/pull/25765)) by @Weiko - Fill the empty Type column in Skills settings with the owning app ([#25766](https://github.com/twentyhq/twenty/pull/25766)) by @FelixMalfait - Read the deprecated flag from the model config when picking a tier default ([#25769](https://github.com/twentyhq/twenty/pull/25769)) by @Weiko - Keep only compliance badges on the import-contacts onboarding step ([#25774](https://github.com/twentyhq/twenty/pull/25774)) by @FelixMalfait - Propagate SMTP send failures so the email job actually retries ([#25776](https://github.com/twentyhq/twenty/pull/25776)) by @neo773 - fix iCal parsing: bare CR (0x0D) line breaks instead of the CRLF thatβ¦ ([#25782](https://github.com/twentyhq/twenty/pull/25782)) by @mcr-ksh - Fix CLAUDE.md guard import sources ([#25789](https://github.com/twentyhq/twenty/pull/25789)) by @prastoin - Complete call recordings whose Recall transcript is empty ([#25793](https://github.com/twentyhq/twenty/pull/25793)) by @ehconitin - Finish call recordings without a transcript when Recall rejects the transcript request ([#25794](https://github.com/twentyhq/twenty/pull/25794)) by @ehconitin - Stop re-checking already-warned workspaces every hour in CleanSuspendedWorkspacesJob ([#25800](https://github.com/twentyhq/twenty/pull/25800)) by @etiennejouan - Give each Sentry cron monitor its own max runtime ([#25801](https://github.com/twentyhq/twenty/pull/25801)) by @etiennejouan - Point pull users at the apply flag that protects what it could not write ([#25808](https://github.com/twentyhq/twenty/pull/25808)) by @Weiko - List every kind pull does not export yet ([#25811](https://github.com/twentyhq/twenty/pull/25811)) by @Weiko ## π Bug fixes - fix(slack): bound Slack Web API retries to the logic function budget ([#25483](https://github.com/twentyhq/twenty/pull/25483)) by @abdulrahmancodes - fix(enterprise): keep self-hosted licenses valid while Stripe retries a failed payment ([#25515](https://github.com/twentyhq/twenty/pull/25515)) by @ijreilly - fix(docker): resolve release tags from the twenty/v* namespace and fail on bad downloads ([#25524](https://github.com/twentyhq/twenty/pull/25524)) by @ijreilly - fix(front): accept null Actor context.provider (#25532) ([#25537](https://github.com/twentyhq/twenty/pull/25537)) by @grootbro - fix(front): report the records an interrupted incremental delete already removed ([#25549](https://github.com/twentyhq/twenty/pull/25549)) by @thomtrp - fix(workflow): stop mirroring soft-deleted workflows into core ([#25553](https://github.com/twentyhq/twenty/pull/25553)) by @thomtrp - fix(front): persist percentage values that still include a percent sign (#17677) ([#25555](https://github.com/twentyhq/twenty/pull/25555)) by @claxman - fix(server): stop upgrade-pending columns from breaking repository updates ([#25583](https://github.com/twentyhq/twenty/pull/25583)) by @FelixMalfait - fix(billing): stop granted credits expiring when a period transition misfires ([#25603](https://github.com/twentyhq/twenty/pull/25603)) by @FelixMalfait - fix(server): build the install-time SDK layer from the migration's own flat maps ([#25608](https://github.com/twentyhq/twenty/pull/25608)) by @prastoin - fix(ai-chat): answer a refused message with what actually clears it ([#25622](https://github.com/twentyhq/twenty/pull/25622)) by @etiennejouan - fix(mcp): list connected accounts from the core schema ([#25658](https://github.com/twentyhq/twenty/pull/25658)) by @Hermi941 - fix(server): bound TimelineActivityRoutingPlanService workspace cache ([#25659](https://github.com/twentyhq/twenty/pull/25659)) by @etiennejouan - fix(uploads): cap file size for files-field and application file upload mutations ([#25671](https://github.com/twentyhq/twenty/pull/25671)) by @addyCooks - fix(front): reset confirmation modal input when reopened ([#25674](https://github.com/twentyhq/twenty/pull/25674)) by @mydd7 - fix(slack): keep assistant feedback buttons on long answers ([#25693](https://github.com/twentyhq/twenty/pull/25693)) by @abdulrahmancodes - fix(admin-panel): stop calling a metered line item's quantity "seats" ([#25698](https://github.com/twentyhq/twenty/pull/25698)) by @FelixMalfait - fix(billing): stop writing a raw ISO timestamp into a credit grant's reason ([#25699](https://github.com/twentyhq/twenty/pull/25699)) by @FelixMalfait - fix(workflow): stop email steps sending from another member's account ([#25709](https://github.com/twentyhq/twenty/pull/25709)) by @hktitof - fix(apps): preserve vetted status during catalog sync ([#25725](https://github.com/twentyhq/twenty/pull/25725)) by @ehconitin - fix: republish twenty-ui as MIT (1.0.0-alpha.2) to resolve stale AGPL artifacts ([#25738](https://github.com/twentyhq/twenty/pull/25738)) by @MauryaQbit - fix(messaging): don't delete messages still present in another folder's delta sync ([#25751](https://github.com/twentyhq/twenty/pull/25751)) by @breken-ai - fix(ai): keep catalog efforts under an AI_PROVIDERS override and fix tier UI findings ([#25753](https://github.com/twentyhq/twenty/pull/25753)) by @FelixMalfait - fix(storybook): prevent oversized Argos screenshots ([#25779](https://github.com/twentyhq/twenty/pull/25779)) by @bosiraphael - fix(front): create component instance ids once instead of rewriting them per surface ([#25790](https://github.com/twentyhq/twenty/pull/25790)) by @FelixMalfait - fix(front): hide connection provider avatar when there is no logo ([#25797](https://github.com/twentyhq/twenty/pull/25797)) by @martmull - fix(front): open the view picker on the id its dropdown listens to ([#25799](https://github.com/twentyhq/twenty/pull/25799)) by @FelixMalfait ## π§ Developer & API - Granola 2/8: Add Granola API access and credential settings ([#25571](https://github.com/twentyhq/twenty/pull/25571)) by @ehconitin - Stop reporting handled webhook subscription failures to Sentry ([#25591](https://github.com/twentyhq/twenty/pull/25591)) by @neo773 - Debounce calendar webhook syncs instead of throwing when one is running ([#25656](https://github.com/twentyhq/twenty/pull/25656)) by @neo773 - Stop servicing webhook subscriptions for suspended workspaces ([#25657](https://github.com/twentyhq/twenty/pull/25657)) by @neo773 - Upgrade the AI SDK to v7 ([#25704](https://github.com/twentyhq/twenty/pull/25704)) by @FelixMalfait - Migrate twenty-ui Checkbox to the shared form-control API ([#25712](https://github.com/twentyhq/twenty/pull/25712)) by @bosiraphael - Register the GraphQL resolver name map cache provider in the worker ([#25717](https://github.com/twentyhq/twenty/pull/25717)) by @prastoin - Align twenty-ui with SDK package versions ([#25758](https://github.com/twentyhq/twenty/pull/25758)) by @bosiraphael - Migrate Status to the new twenty-ui API ([#25785](https://github.com/twentyhq/twenty/pull/25785)) by @bosiraphael - Migrate Tag to the new twenty-ui API ([#25786](https://github.com/twentyhq/twenty/pull/25786)) by @bosiraphael <details> <summary>ποΈ Internal changes (6)</summary> - docs: add inbound email channel forwarding guides ([#25602](https://github.com/twentyhq/twenty/pull/25602)) by @neo773 - chore(twenty-ui): update Base UI to 1.8.0 ([#25615](https://github.com/twentyhq/twenty/pull/25615)) by @bosiraphael - refactor(server): warm up prebuilt logic functions after the install migration commits ([#25672](https://github.com/twentyhq/twenty/pull/25672)) by @prastoin - refactor(server): extract a single LRU eviction primitive ([#25733](https://github.com/twentyhq/twenty/pull/25733)) by @etiennejouan - refactor: share floating reference scale calculation ([#25762](https://github.com/twentyhq/twenty/pull/25762)) by @Bonapara - refactor(ai): seed the agent and skill settings forms from the loaded record ([#25764](https://github.com/twentyhq/twenty/pull/25764)) by @FelixMalfait </details> ## π New contributors - @grootbro made their first contribution in https://github.com/twentyhq/twenty/pull/25537 - @claxman made their first contribution in https://github.com/twentyhq/twenty/pull/25555 - @Hermi941 made their first contribution in https://github.com/twentyhq/twenty/pull/25658 - @addyCooks made their first contribution in https://github.com/twentyhq/twenty/pull/25671 - @twenty-pr-author[bot] made their first contribution in https://github.com/twentyhq/twenty/pull/25713 - @NiklasDah made their first contribution in https://github.com/twentyhq/twenty/pull/25720 - @breken-ai made their first contribution in https://github.com/twentyhq/twenty/pull/25751 - @MauryaQbit made their first contribution in https://github.com/twentyhq/twenty/pull/25738 - @mydd7 made their first contribution in https://github.com/twentyhq/twenty/pull/25674 - @mcr-ksh made their first contribution in https://github.com/twentyhq/twenty/pull/25782 <details> <summary>Full changelog (201 PRs)</summary> - Alias native worker APIs onto window in front components ([#24190](https://github.com/twentyhq/twenty/pull/24190)) by @bosiraphael - Support classList in front components ([#24191](https://github.com/twentyhq/twenty/pull/24191)) by @bosiraphael - feat(search): expose isSearchable on field metadata and make the object search section editable ([#25166](https://github.com/twentyhq/twenty/pull/25166)) by @prastoin - feat(record-form): render the record creation form behind a flag ([#25203](https://github.com/twentyhq/twenty/pull/25203)) by @thomtrp - feat(core): let apps report a connection auth failure with a reason ([#25297](https://github.com/twentyhq/twenty/pull/25297)) by @abdulrahmancodes - Make the Fathom app publishable and rewrite its listing copy ([#25325](https://github.com/twentyhq/twenty/pull/25325)) by @ehconitin - Fix delayed view deletion feedback ([#25344](https://github.com/twentyhq/twenty/pull/25344)) by @Bonapara - feat(workflow): polish the core workflows index and gate workflow run workspace relations ([#25356](https://github.com/twentyhq/twenty/pull/25356)) by @thomtrp - Add field description tooltips ([#25408](https://github.com/twentyhq/twenty/pull/25408)) by @Bonapara - feat(workflow): select core workflows and delete them in bulk ([#25415](https://github.com/twentyhq/twenty/pull/25415)) by @thomtrp - Extract email body text without building a DOM ([#25422](https://github.com/twentyhq/twenty/pull/25422)) by @neo773 - Record sharing 2/14: add the recordShare hidden standard object and its service ([#25425](https://github.com/twentyhq/twenty/pull/25425)) by @martmull - Record sharing 3/14: gate reads and writes on private objects with record share rows ([#25426](https://github.com/twentyhq/twenty/pull/25426)) by @martmull - Record sharing 4/14: let a create state who may read the record with shareWith ([#25428](https://github.com/twentyhq/twenty/pull/25428)) by @martmull - feat(call-recorder): toggle to send the bot to all calendar meetings ([#25431](https://github.com/twentyhq/twenty/pull/25431)) by @ehconitin - Add Fathom media storage foundation ([#25432](https://github.com/twentyhq/twenty/pull/25432)) by @ehconitin - Import Fathom recording media asynchronously ([#25433](https://github.com/twentyhq/twenty/pull/25433)) by @ehconitin - Reconcile stale Fathom media imports ([#25434](https://github.com/twentyhq/twenty/pull/25434)) by @ehconitin - fix(slack): bound Slack Web API retries to the logic function budget ([#25483](https://github.com/twentyhq/twenty/pull/25483)) by @abdulrahmancodes - feat(slack): branch the assistant failure reply on the failure kind ([#25484](https://github.com/twentyhq/twenty/pull/25484)) by @abdulrahmancodes - Track application installs and uninstalls with deterministic queue jobs ([#25502](https://github.com/twentyhq/twenty/pull/25502)) by @martmull - feat: add create/complete file upload action tools for MCP ([#25503](https://github.com/twentyhq/twenty/pull/25503)) by @Lakshayyy-m - Migrate existing Canvas tabs to vertical lists ([#25511](https://github.com/twentyhq/twenty/pull/25511)) by @Bonapara - Support explicit widget height behavior ([#25512](https://github.com/twentyhq/twenty/pull/25512)) by @Bonapara - Simplify page layout manifest authoring ([#25513](https://github.com/twentyhq/twenty/pull/25513)) by @Bonapara - fix(enterprise): keep self-hosted licenses valid while Stripe retries a failed payment ([#25515](https://github.com/twentyhq/twenty/pull/25515)) by @ijreilly - Use existing component for AI chat warnings ([#25519](https://github.com/twentyhq/twenty/pull/25519)) by @Bonapara - Delete Fathom webhooks on disconnect ([#25520](https://github.com/twentyhq/twenty/pull/25520)) by @ehconitin - fix(docker): resolve release tags from the twenty/v* namespace and fail on bad downloads ([#25524](https://github.com/twentyhq/twenty/pull/25524)) by @ijreilly - feat(usage-limit): quota limits over the credit allowance period ([#25526](https://github.com/twentyhq/twenty/pull/25526)) by @etiennejouan - Fix app CI fixtures and registry upload limit ([#25531](https://github.com/twentyhq/twenty/pull/25531)) by @Bonapara - chore: bump version to 2.40.0 ([#25534](https://github.com/twentyhq/twenty/pull/25534)) by @twenty-pr - Stop pruning published translations when a project has no locales folder ([#25535](https://github.com/twentyhq/twenty/pull/25535)) by @Weiko - Fix sidebar Link items in folders redirecting to a doubled URL ([#25536](https://github.com/twentyhq/twenty/pull/25536)) by @bosiraphael - fix(front): accept null Actor context.provider (#25532) ([#25537](https://github.com/twentyhq/twenty/pull/25537)) by @grootbro - bump call recorder app version to 1.13.0 ([#25538](https://github.com/twentyhq/twenty/pull/25538)) by @ehconitin - Scaffold a locales folder with an empty source catalog ([#25539](https://github.com/twentyhq/twenty/pull/25539)) by @Weiko - Add Fathom recording import data model ([#25540](https://github.com/twentyhq/twenty/pull/25540)) by @ehconitin - Polish AI chat mode design and actions ([#25542](https://github.com/twentyhq/twenty/pull/25542)) by @Bonapara - Clear a Recording Bot On the call recorder cannot honor ([#25543](https://github.com/twentyhq/twenty/pull/25543)) by @ehconitin - feat(usage-limit): count quota admits on failure and the credits they let through ([#25546](https://github.com/twentyhq/twenty/pull/25546)) by @etiennejouan - Offer a DMARC record only when the sending domain has none ([#25547](https://github.com/twentyhq/twenty/pull/25547)) by @neo773 - Run twenty-ui unit tests on vitest and add a component conformance helper ([#25548](https://github.com/twentyhq/twenty/pull/25548)) by @bosiraphael - fix(front): report the records an interrupted incremental delete already removed ([#25549](https://github.com/twentyhq/twenty/pull/25549)) by @thomtrp - Add a color scheme toolbar to twenty-ui Storybook with dark catalog stories for Field and Text ([#25550](https://github.com/twentyhq/twenty/pull/25550)) by @bosiraphael - fix(workflow): stop mirroring soft-deleted workflows into core ([#25553](https://github.com/twentyhq/twenty/pull/25553)) by @thomtrp - Reuse shared status tags and truncate banner messages ([#25554](https://github.com/twentyhq/twenty/pull/25554)) by @Bonapara - fix(front): persist percentage values that still include a percent sign (#17677) ([#25555](https://github.com/twentyhq/twenty/pull/25555)) by @claxman - i18n - translations ([#25556](https://github.com/twentyhq/twenty/pull/25556)) by @github-actions - i18n - translations ([#25557](https://github.com/twentyhq/twenty/pull/25557)) by @github-actions - i18n - translations ([#25558](https://github.com/twentyhq/twenty/pull/25558)) by @github-actions - Stream nx task output so a killed task still prints its stack ([#25560](https://github.com/twentyhq/twenty/pull/25560)) by @neo773 - Let marketers schedule a campaign for a later send ([#25563](https://github.com/twentyhq/twenty/pull/25563)) by @neo773 - Stop group email deletion from scanning a cartesian product ([#25565](https://github.com/twentyhq/twenty/pull/25565)) by @neo773 - Export an application's published translations in the manifest ([#25566](https://github.com/twentyhq/twenty/pull/25566)) by @Weiko - [Apps 2-way sync] Pull write translations ([#25567](https://github.com/twentyhq/twenty/pull/25567)) by @Weiko - Skip empty built files on upload and report a rejected batch once ([#25568](https://github.com/twentyhq/twenty/pull/25568)) by @Weiko - Remove an unused import from defineObject ([#25569](https://github.com/twentyhq/twenty/pull/25569)) by @Weiko - Granola 1/8: Add the Granola application scaffold ([#25570](https://github.com/twentyhq/twenty/pull/25570)) by @ehconitin - Granola 2/8: Add Granola API access and credential settings ([#25571](https://github.com/twentyhq/twenty/pull/25571)) by @ehconitin - Granola 3/8: Map Granola notes into Call Recordings ([#25572](https://github.com/twentyhq/twenty/pull/25572)) by @ehconitin - Granola 4/8: Connect Granola webhooks and live synchronization ([#25573](https://github.com/twentyhq/twenty/pull/25573)) by @ehconitin - Granola 5/8: Import Granola history and recover missed updates ([#25574](https://github.com/twentyhq/twenty/pull/25574)) by @ehconitin - Granola 6/8: Expose Granola notes to workflows and AI ([#25575](https://github.com/twentyhq/twenty/pull/25575)) by @ehconitin - fix(server): stop upgrade-pending columns from breaking repository updates ([#25583](https://github.com/twentyhq/twenty/pull/25583)) by @FelixMalfait - Add Input, InputGroup and Textarea to twenty-ui ([#25584](https://github.com/twentyhq/twenty/pull/25584)) by @bosiraphael - feat(slack): point the channel welcome at the DM as the private path ([#25585](https://github.com/twentyhq/twenty/pull/25585)) by @abdulrahmancodes - Resolve the side panel context store object from the panel location ([#25586](https://github.com/twentyhq/twenty/pull/25586)) by @bosiraphael - Bump app version ([#25587](https://github.com/twentyhq/twenty/pull/25587)) by @martmull - Stop reporting handled webhook subscription failures to Sentry ([#25591](https://github.com/twentyhq/twenty/pull/25591)) by @neo773 - feat: add audio playback fallback for call recordings ([#25592](https://github.com/twentyhq/twenty/pull/25592)) by @ehconitin - Snapshot the exported manifest and guard the compared properties in the export spec ([#25593](https://github.com/twentyhq/twenty/pull/25593)) by @Weiko - Fix empty relation card vertical padding ([#25595](https://github.com/twentyhq/twenty/pull/25595)) by @Bonapara - Add ListItem to twenty-ui ([#25596](https://github.com/twentyhq/twenty/pull/25596)) by @bosiraphael - Keep the workspace navigation section visible when it has no items ([#25597](https://github.com/twentyhq/twenty/pull/25597)) by @Weiko - Always create app connections at workspace level ([#25598](https://github.com/twentyhq/twenty/pull/25598)) by @FelixMalfait - Stop fanning workflowRun.updated events out to webhooks ([#25599](https://github.com/twentyhq/twenty/pull/25599)) by @thomtrp - Export views and their children from an installed application ([#25600](https://github.com/twentyhq/twenty/pull/25600)) by @Weiko - Restore workflowRun.updated webhooks for explicit subscriptions ([#25601](https://github.com/twentyhq/twenty/pull/25601)) by @thomtrp - docs: add inbound email channel forwarding guides ([#25602](https://github.com/twentyhq/twenty/pull/25602)) by @neo773 - fix(billing): stop granted credits expiring when a period transition misfires ([#25603](https://github.com/twentyhq/twenty/pull/25603)) by @FelixMalfait - Write pulled views and standalone view fields as define files ([#25606](https://github.com/twentyhq/twenty/pull/25606)) by @Weiko - Add Popover to twenty-ui ([#25607](https://github.com/twentyhq/twenty/pull/25607)) by @bosiraphael - fix(server): build the install-time SDK layer from the migration's own flat maps ([#25608](https://github.com/twentyhq/twenty/pull/25608)) by @prastoin - Update website changelog through 2.38.1 ([#25609](https://github.com/twentyhq/twenty/pull/25609)) by @Bonapara - Add Menu to twenty-ui ([#25610](https://github.com/twentyhq/twenty/pull/25610)) by @bosiraphael - Add Tabs compound to twenty-ui ([#25612](https://github.com/twentyhq/twenty/pull/25612)) by @bosiraphael - Open onboarding AI chat beside the workspace homepage ([#25614](https://github.com/twentyhq/twenty/pull/25614)) by @Bonapara - chore(twenty-ui): update Base UI to 1.8.0 ([#25615](https://github.com/twentyhq/twenty/pull/25615)) by @bosiraphael - i18n - website translations ([#25619](https://github.com/twentyhq/twenty/pull/25619)) by @github-actions - Move part class-name merging into shared utilities ([#25621](https://github.com/twentyhq/twenty/pull/25621)) by @bosiraphael - fix(ai-chat): answer a refused message with what actually clears it ([#25622](https://github.com/twentyhq/twenty/pull/25622)) by @etiennejouan - Move twenty-ui component behavior tests into stories ([#25623](https://github.com/twentyhq/twenty/pull/25623)) by @bosiraphael - Export page layouts, tabs and widgets from an installed application ([#25624](https://github.com/twentyhq/twenty/pull/25624)) by @Weiko - Add Select compound to twenty-ui ([#25625](https://github.com/twentyhq/twenty/pull/25625)) by @bosiraphael - feat(workflow): create and delete workflows through the core API ([#25626](https://github.com/twentyhq/twenty/pull/25626)) by @thomtrp - i18n - website translations ([#25627](https://github.com/twentyhq/twenty/pull/25627)) by @github-actions - Fix Menu imports after class-name helper rename ([#25634](https://github.com/twentyhq/twenty/pull/25634)) by @bosiraphael - Make the billing catalog ready for plan and price evolution ([#25635](https://github.com/twentyhq/twenty/pull/25635)) by @FelixMalfait - Add isAuditLogged on field metadata to keep noisy fields off the timeline ([#25641](https://github.com/twentyhq/twenty/pull/25641)) by @FelixMalfait - Allow automation and AI agents in the terms of service ([#25642](https://github.com/twentyhq/twenty/pull/25642)) by @FelixMalfait - Revert "Revert "Record sharing 5/14: evaluate record shares in memory for events"" ([#25650](https://github.com/twentyhq/twenty/pull/25650)) by @martmull - Add a standalone page layout widget slot to the manifest and export widgets placed on existing tabs ([#25651](https://github.com/twentyhq/twenty/pull/25651)) by @Weiko - Write pulled page layouts and standalone page layout tabs as define files ([#25655](https://github.com/twentyhq/twenty/pull/25655)) by @Weiko - Debounce calendar webhook syncs instead of throwing when one is running ([#25656](https://github.com/twentyhq/twenty/pull/25656)) by @neo773 - Stop servicing webhook subscriptions for suspended workspaces ([#25657](https://github.com/twentyhq/twenty/pull/25657)) by @neo773 - fix(mcp): list connected accounts from the core schema ([#25658](https://github.com/twentyhq/twenty/pull/25658)) by @Hermi941 - fix(server): bound TimelineActivityRoutingPlanService workspace cache ([#25659](https://github.com/twentyhq/twenty/pull/25659)) by @etiennejouan - Serialize a workspace's entitlement transition ([#25660](https://github.com/twentyhq/twenty/pull/25660)) by @FelixMalfait - Extract frontend snack bar into twenty-ui Toast ([#25663](https://github.com/twentyhq/twenty/pull/25663)) by @bosiraphael - Add AlertDialog compound to twenty-ui ([#25665](https://github.com/twentyhq/twenty/pull/25665)) by @bosiraphael - Fix dropdown anchoring at non-default interface scales ([#25667](https://github.com/twentyhq/twenty/pull/25667)) by @Bonapara - Let a relation field's bookkeeping properties be updated through a sync ([#25668](https://github.com/twentyhq/twenty/pull/25668)) by @Weiko - feat(workflow): read the workflow show page through the core API ([#25669](https://github.com/twentyhq/twenty/pull/25669)) by @thomtrp - Run direct consumer CI on twenty-ui changes and record known radio failures ([#25670](https://github.com/twentyhq/twenty/pull/25670)) by @bosiraphael - fix(uploads): cap file size for files-field and application file upload mutations ([#25671](https://github.com/twentyhq/twenty/pull/25671)) by @addyCooks - refactor(server): warm up prebuilt logic functions after the install migration commits ([#25672](https://github.com/twentyhq/twenty/pull/25672)) by @prastoin - feat(usage-limit): cap webhook calls per workspace at enqueue time ([#25673](https://github.com/twentyhq/twenty/pull/25673)) by @etiennejouan - fix(front): reset confirmation modal input when reopened ([#25674](https://github.com/twentyhq/twenty/pull/25674)) by @mydd7 - Add benchmarks, data residency and zero data retention to the AI model catalog ([#25675](https://github.com/twentyhq/twenty/pull/25675)) by @FelixMalfait - feat(slack): show the thinking status before the assistant context lookups ([#25676](https://github.com/twentyhq/twenty/pull/25676)) by @abdulrahmancodes - Migrate twenty-ui Toggle to Switch ([#25678](https://github.com/twentyhq/twenty/pull/25678)) by @bosiraphael - feat(workflow): add coreWorkflowId to core workflow versions ([#25679](https://github.com/twentyhq/twenty/pull/25679)) by @thomtrp - Skip workflow status update when the workflow no longer exists ([#25680](https://github.com/twentyhq/twenty/pull/25680)) by @thomtrp - Fix column resize dragging the widget in layout edit mode ([#25681](https://github.com/twentyhq/twenty/pull/25681)) by @bosiraphael - Create the inputs-validation fixture fields in one migration instead of twenty-two ([#25684](https://github.com/twentyhq/twenty/pull/25684)) by @Weiko - Let app-driven agents reach dashboard and workflow tools ([#25685](https://github.com/twentyhq/twenty/pull/25685)) by @abdulrahmancodes - Export an application's navigation menu items ([#25687](https://github.com/twentyhq/twenty/pull/25687)) by @Weiko - chore: sync AI model catalog ([#25689](https://github.com/twentyhq/twenty/pull/25689)) by @github-actions - Fix two matcher defects the first populated benchmark sync exposed ([#25690](https://github.com/twentyhq/twenty/pull/25690)) by @FelixMalfait - chore: sync AI model catalog ([#25691](https://github.com/twentyhq/twenty/pull/25691)) by @github-actions - fix(slack): keep assistant feedback buttons on long answers ([#25693](https://github.com/twentyhq/twenty/pull/25693)) by @abdulrahmancodes - Resolve Slack mention tokens before the assistant prompt is built ([#25694](https://github.com/twentyhq/twenty/pull/25694)) by @abdulrahmancodes - Acknowledge Slack file attachments in the assistant ([#25695](https://github.com/twentyhq/twenty/pull/25695)) by @abdulrahmancodes - Deliver the Claude reasoning config and make effort a first-class model parameter ([#25696](https://github.com/twentyhq/twenty/pull/25696)) by @FelixMalfait - fix(admin-panel): stop calling a metered line item's quantity "seats" ([#25698](https://github.com/twentyhq/twenty/pull/25698)) by @FelixMalfait - fix(billing): stop writing a raw ISO timestamp into a credit grant's reason ([#25699](https://github.com/twentyhq/twenty/pull/25699)) by @FelixMalfait - feat(slack): defer rate limited message delivery to a delayed job ([#25700](https://github.com/twentyhq/twenty/pull/25700)) by @abdulrahmancodes - feat(server): run server route dispatch jobs ahead of the trigger fan-out ([#25701](https://github.com/twentyhq/twenty/pull/25701)) by @abdulrahmancodes - feat(slack): answer the assistant request in the execution that records it ([#25702](https://github.com/twentyhq/twenty/pull/25702)) by @abdulrahmancodes - Upgrade the AI SDK to v7 ([#25704](https://github.com/twentyhq/twenty/pull/25704)) by @FelixMalfait - Write pulled navigation menu items as define files ([#25705](https://github.com/twentyhq/twenty/pull/25705)) by @Weiko - Show workspace-shared app connections to every member ([#25708](https://github.com/twentyhq/twenty/pull/25708)) by @abdulrahmancodes - fix(workflow): stop email steps sending from another member's account ([#25709](https://github.com/twentyhq/twenty/pull/25709)) by @hktitof - chore: sync AI model catalog ([#25710](https://github.com/twentyhq/twenty/pull/25710)) by @github-actions - Clear logoFileId when the workspace logo is removed ([#25711](https://github.com/twentyhq/twenty/pull/25711)) by @martmull - Migrate twenty-ui Checkbox to the shared form-control API ([#25712](https://github.com/twentyhq/twenty/pull/25712)) by @bosiraphael - Refresh self-hosted Google default to Gemini 3.8 Flash ([#25713](https://github.com/twentyhq/twenty/pull/25713)) by @twenty-pr-author - Increase logic function concurrency ([#25714](https://github.com/twentyhq/twenty/pull/25714)) by @martmull - Migrate twenty-ui Radio and RadioGroup ([#25715](https://github.com/twentyhq/twenty/pull/25715)) by @bosiraphael - Migrate twenty-ui Slider to Base UI ([#25716](https://github.com/twentyhq/twenty/pull/25716)) by @bosiraphael - Register the GraphQL resolver name map cache provider in the worker ([#25717](https://github.com/twentyhq/twenty/pull/25717)) by @prastoin - Backfill twenty-ui front component renderer stories ([#25719](https://github.com/twentyhq/twenty/pull/25719)) by @bosiraphael - Fix AWS region validation across partitions ([#25720](https://github.com/twentyhq/twenty/pull/25720)) by @NiklasDah - feat(ai): replace model pickers with a five-tier model slider ([#25721](https://github.com/twentyhq/twenty/pull/25721)) by @FelixMalfait - fix(apps): preserve vetted status during catalog sync ([#25725](https://github.com/twentyhq/twenty/pull/25725)) by @ehconitin - Add batch delivery to database-event-triggered logic functions ([#25726](https://github.com/twentyhq/twenty/pull/25726)) by @martmull - Import CalDAV events from servers that omit getetag ([#25728](https://github.com/twentyhq/twenty/pull/25728)) by @neo773 - Accept CalDAV calendars that do not publish a component set ([#25729](https://github.com/twentyhq/twenty/pull/25729)) by @neo773 - Score effort variants from the benchmark rows taken at their own effort ([#25730](https://github.com/twentyhq/twenty/pull/25730)) by @FelixMalfait - chore: sync AI model catalog ([#25731](https://github.com/twentyhq/twenty/pull/25731)) by @github-actions - Compare a record relation to the current member's relation in row-level permissions ([#25732](https://github.com/twentyhq/twenty/pull/25732)) by @Weiko - refactor(server): extract a single LRU eviction primitive ([#25733](https://github.com/twentyhq/twenty/pull/25733)) by @etiennejouan - fix: republish twenty-ui as MIT (1.0.0-alpha.2) to resolve stale AGPL artifacts ([#25738](https://github.com/twentyhq/twenty/pull/25738)) by @MauryaQbit - Stop pull overwriting a source file that defines no entity ([#25739](https://github.com/twentyhq/twenty/pull/25739)) by @Weiko - Write pulled standalone page layout widgets as define files ([#25743](https://github.com/twentyhq/twenty/pull/25743)) by @Weiko - chore: sync AI model catalog ([#25745](https://github.com/twentyhq/twenty/pull/25745)) by @github-actions - Stop calling a local file unknown to the workspace when the export reported it ([#25746](https://github.com/twentyhq/twenty/pull/25746)) by @Weiko - Tell pull users their project cannot build what pull just wrote ([#25747](https://github.com/twentyhq/twenty/pull/25747)) by @Weiko - Keep a stored file's identifier when its content is uploaded again ([#25748](https://github.com/twentyhq/twenty/pull/25748)) by @Weiko - Refuse to pull an application into a project that already defines another ([#25750](https://github.com/twentyhq/twenty/pull/25750)) by @Weiko - fix(messaging): don't delete messages still present in another folder's delta sync ([#25751](https://github.com/twentyhq/twenty/pull/25751)) by @breken-ai - Never infer deletion for rows a manifest cannot express ([#25752](https://github.com/twentyhq/twenty/pull/25752)) by @Weiko - fix(ai): keep catalog efforts under an AI_PROVIDERS override and fix tier UI findings ([#25753](https://github.com/twentyhq/twenty/pull/25753)) by @FelixMalfait - Block private-network SSO issuers and replace the safe-mode toggle with an internal host allowlist ([#25756](https://github.com/twentyhq/twenty/pull/25756)) by @FelixMalfait - Align twenty-ui with SDK package versions ([#25758](https://github.com/twentyhq/twenty/pull/25758)) by @bosiraphael - Restrict AI and Settings access during layout editing ([#25760](https://github.com/twentyhq/twenty/pull/25760)) by @Bonapara - refactor: share floating reference scale calculation ([#25762](https://github.com/twentyhq/twenty/pull/25762)) by @Bonapara - refactor(ai): seed the agent and skill settings forms from the loaded record ([#25764](https://github.com/twentyhq/twenty/pull/25764)) by @FelixMalfait - Let the e2e local registry accept twenty-ui ([#25765](https://github.com/twentyhq/twenty/pull/25765)) by @Weiko - Fill the empty Type column in Skills settings with the owning app ([#25766](https://github.com/twentyhq/twenty/pull/25766)) by @FelixMalfait - Read the deprecated flag from the model config when picking a tier default ([#25769](https://github.com/twentyhq/twenty/pull/25769)) by @Weiko - Keep only compliance badges on the import-contacts onboarding step ([#25774](https://github.com/twentyhq/twenty/pull/25774)) by @FelixMalfait - chore: sync AI model catalog ([#25775](https://github.com/twentyhq/twenty/pull/25775)) by @github-actions - Propagate SMTP send failures so the email job actually retries ([#25776](https://github.com/twentyhq/twenty/pull/25776)) by @neo773 - feat(ai-chat): hint @ and / in composer placeholder, add / skill suggestions ([#25778](https://github.com/twentyhq/twenty/pull/25778)) by @FelixMalfait - fix(storybook): prevent oversized Argos screenshots ([#25779](https://github.com/twentyhq/twenty/pull/25779)) by @bosiraphael - fix iCal parsing: bare CR (0x0D) line breaks instead of the CRLF thatβ¦ ([#25782](https://github.com/twentyhq/twenty/pull/25782)) by @mcr-ksh - Migrate Status to the new twenty-ui API ([#25785](https://github.com/twentyhq/twenty/pull/25785)) by @bosiraphael - Migrate Tag to the new twenty-ui API ([#25786](https://github.com/twentyhq/twenty/pull/25786)) by @bosiraphael - Fix CLAUDE.md guard import sources ([#25789](https://github.com/twentyhq/twenty/pull/25789)) by @prastoin - fix(front): create component instance ids once instead of rewriting them per surface ([#25790](https://github.com/twentyhq/twenty/pull/25790)) by @FelixMalfait - Complete call recordings whose Recall transcript is empty ([#25793](https://github.com/twentyhq/twenty/pull/25793)) by @ehconitin - Finish call recordings without a transcript when Recall rejects the transcript request ([#25794](https://github.com/twentyhq/twenty/pull/25794)) by @ehconitin - fix(front): hide connection provider avatar when there is no logo ([#25797](https://github.com/twentyhq/twenty/pull/25797)) by @martmull - feat(skills): split agent-only skills from user skills, rewrite the catalog ([#25798](https://github.com/twentyhq/twenty/pull/25798)) by @FelixMalfait - fix(front): open the view picker on the id its dropdown listens to ([#25799](https://github.com/twentyhq/twenty/pull/25799)) by @FelixMalfait - Stop re-checking already-warned workspaces every hour in CleanSuspendedWorkspacesJob ([#25800](https://github.com/twentyhq/twenty/pull/25800)) by @etiennejouan - Give each Sentry cron monitor its own max runtime ([#25801](https://github.com/twentyhq/twenty/pull/25801)) by @etiennejouan - Point pull users at the apply flag that protects what it could not write ([#25808](https://github.com/twentyhq/twenty/pull/25808)) by @Weiko - List every kind pull does not export yet ([#25811](https://github.com/twentyhq/twenty/pull/25811)) by @Weiko </details> **Full Changelog**: https://github.com/twentyhq/twenty/compare/twenty/v2.39.0...twenty/v2.40.0
Related Repositories
public-apis/public-apisβ
491,126
A collective list of free APIs
NousResearch/hermes-agentβ
255,898
The agent that grows with you
yt-dlp/yt-dlpβ
199,993
A feature-rich command-line audio/video downloader
microsoft/markitdownβ
191,478
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPTβ
187,699
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.