sdk/v2.40.0
BasedHardware/omisdk/v2.40.0Sep 15, 2026by twenty-pr[bot]
Upgrading?
AI Summary
The SDK introduces breaking changes regarding job inputs and AI model configuration, while adding new developer utilities for search, audit logging, and page layout widgets.
Key Highlights
- Breaking: `TriggerInstallApplicationJobInput` no longer carries a `version` field
- Breaking: AI model selection now uses five named tiers
- New FieldMetadata flags: `isSearchable` and `isAuditLogged`
Breaking Changes
- `TriggerInstallApplicationJobInput` no longer carries a `version` field
- AI model configuration now uses five named tiers (`EXTRA_FAST`, `FAST`, `BALANCED`, `SMART`, `EXTRA_SMART`)
New Features
- `isSearchable` flag on `FieldMetadata`
- `isAuditLogged` flag on `FieldMetadata`
- `definePageLayoutWidget` for placing widgets on non-owned tabs
- `messageCampaign.scheduledAt` property for queuing campaigns
- Batched database events trigger settings
Full Release Notes
<!-- generated-release-notes v1 --> Two breaking changes ship in this release. Install job inputs no longer carry a `version` field; remove it from any call sites. AI model configuration moves from name-based pickers to a five-tier system; update any code that references specific model identifiers. `yarn twenty pull` now writes views, page layouts, navigation menu items, and translations as typed `define*` files. `yarn twenty apply` no longer prunes translations when your project has no `locales/` folder, and empty built files no longer abort the upload batch. Two new `FieldMetadata` flags ship: `isSearchable` controls which fields feed the search vector, and `isAuditLogged` keeps scheduled writes off the record timeline. `definePageLayoutWidget` lets an app place a widget on a tab it does not own. ## ⚠️ Breaking changes - `TriggerInstallApplicationJobInput` no longer carries a `version` field; the installer resolves version from the app registration. Remove `version` from any call sites. ([#25502](https://github.com/twentyhq/twenty/pull/25502)) by @martmull - AI model configuration now uses five named tiers (`EXTRA_FAST`, `FAST`, `BALANCED`, `SMART`, `EXTRA_SMART`) instead of model names; update any code that references specific AI model identifiers. ([#25721](https://github.com/twentyhq/twenty/pull/25721)) by @FelixMalfait ## 🌟 Highlights - Breaking: `TriggerInstallApplicationJobInput` no longer carries a `version` field; the installer resolves version from the app registration. Remove `version` from any call sites. ([#25502](https://github.com/twentyhq/twenty/pull/25502)) - Breaking: AI model selection now uses five named tiers instead of model names; update any code that referenced specific AI model identifiers. ([#25721](https://github.com/twentyhq/twenty/pull/25721)) - `yarn twenty pull` now writes views, page layouts, navigation menu items, and published translations as typed `define*` files, completing round-trip sync of the app manifest. ([#25606](https://github.com/twentyhq/twenty/pull/25606)) - `create-twenty-app` scaffolds `locales/en.json` with an empty catalog so new projects declare their translation set from the first sync. ([#25539](https://github.com/twentyhq/twenty/pull/25539)) - `definePageLayoutWidget` lets an app place a widget on a tab it does not own; declare it in `manifest.pageLayoutWidgets`. ([#25651](https://github.com/twentyhq/twenty/pull/25651)) - `yarn twenty apply` no longer wipes published translations when there is no `locales/` folder, and empty built files no longer abort the upload batch. ([#25535](https://github.com/twentyhq/twenty/pull/25535)) ## ✨ New features - `isSearchable` is now available on `FieldMetadata`; use it to identify which fields contribute to an object's search vector. ([#25166](https://github.com/twentyhq/twenty/pull/25166)) by @prastoin - Apps can call `reportAppConnectionAuthFailure` to mark a connection credential as broken when it fails at call time, triggering the reconnect UI in settings. ([#25297](https://github.com/twentyhq/twenty/pull/25297)) by @abdulrahmancodes - `messageCampaign.scheduledAt` is now available; set it to queue a campaign for later delivery instead of sending immediately. ([#25563](https://github.com/twentyhq/twenty/pull/25563)) by @neo773 - `isAuditLogged` is now available on `FieldMetadata`; fields with it set to `false` are excluded from the record timeline. ([#25641](https://github.com/twentyhq/twenty/pull/25641)) by @FelixMalfait - `definePageLayoutWidget` lets an app place a single widget on a tab it does not own; declare it in `manifest.pageLayoutWidgets`. ([#25651](https://github.com/twentyhq/twenty/pull/25651)) by @Weiko - Logic functions can now receive batched database events by setting `batchSize` on `databaseEventTriggerSettings`, instead of one job per event. ([#25726](https://github.com/twentyhq/twenty/pull/25726)) by @martmull ## 💅 Improvements & UX - `exportApplication` now fills `manifest.translations` with compiled catalogs so a raw export carries translation data. ([#25566](https://github.com/twentyhq/twenty/pull/25566)) by @Weiko - `yarn twenty pull` now writes an app's published translations back into `locales/` files. ([#25567](https://github.com/twentyhq/twenty/pull/25567)) by @Weiko - `yarn twenty pull` now writes views as `.view.ts` files using `defineView` and standalone view fields as `.view-field.ts` files using `defineViewField`. ([#25606](https://github.com/twentyhq/twenty/pull/25606)) by @Weiko - `yarn twenty pull` now writes page layouts as `definePageLayout()` files and standalone tabs as `definePageLayoutTab()` files. ([#25655](https://github.com/twentyhq/twenty/pull/25655)) by @Weiko - `yarn twenty pull` now writes navigation menu items as `defineNavigationMenuItem()` files, including items from the Custom app. ([#25705](https://github.com/twentyhq/twenty/pull/25705)) by @Weiko - `applicationConnectedAccounts(applicationId)` is a new query that returns all non-archived app connections the caller can use, including workspace-shared connections. ([#25708](https://github.com/twentyhq/twenty/pull/25708)) by @abdulrahmancodes ## 🐛 Bug fixes - `yarn twenty apply` no longer wipes published translations when your project has no `locales/` folder. ([#25535](https://github.com/twentyhq/twenty/pull/25535)) by @Weiko - `yarn twenty apply` and `yarn twenty dev` now skip empty built files on upload and report a rejected batch once rather than once per file. ([#25568](https://github.com/twentyhq/twenty/pull/25568)) by @Weiko - `twenty-ui` is republished as `1.0.0-alpha.2` under MIT; update your dependency if you pulled an earlier alpha that carried the old AGPL license. ([#25738](https://github.com/twentyhq/twenty/pull/25738)) by @MauryaQbit ## 🔧 Developer & API - `create-twenty-app` now scaffolds `locales/en.json` with an empty catalog so new projects declare their translation set from the first sync. ([#25539](https://github.com/twentyhq/twenty/pull/25539)) by @Weiko <details> <summary>🏗️ Internal changes (5)</summary> - feat(record-form): render the record creation form behind a flag ([#25203](https://github.com/twentyhq/twenty/pull/25203)) by @thomtrp - 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 - Remove an unused import from defineObject ([#25569](https://github.com/twentyhq/twenty/pull/25569)) by @Weiko - Make the billing catalog ready for plan and price evolution ([#25635](https://github.com/twentyhq/twenty/pull/25635)) by @FelixMalfait - feat(usage-limit): cap webhook calls per workspace at enqueue time ([#25673](https://github.com/twentyhq/twenty/pull/25673)) by @etiennejouan </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 <details> <summary>Full changelog (24 PRs)</summary> - 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 - 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 - Track application installs and uninstalls with deterministic queue jobs ([#25502](https://github.com/twentyhq/twenty/pull/25502)) by @martmull - 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 - Scaffold a locales folder with an empty source catalog ([#25539](https://github.com/twentyhq/twenty/pull/25539)) by @Weiko - Let marketers schedule a campaign for a later send ([#25563](https://github.com/twentyhq/twenty/pull/25563)) 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 - Write pulled views and standalone view fields as define files ([#25606](https://github.com/twentyhq/twenty/pull/25606)) by @Weiko - 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 - 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 - feat(usage-limit): cap webhook calls per workspace at enqueue time ([#25673](https://github.com/twentyhq/twenty/pull/25673)) by @etiennejouan - 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 - feat(ai): replace model pickers with a five-tier model slider ([#25721](https://github.com/twentyhq/twenty/pull/25721)) by @FelixMalfait - Add batch delivery to database-event-triggered logic functions ([#25726](https://github.com/twentyhq/twenty/pull/25726)) by @martmull - 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 </details> **Full Changelog**: https://github.com/twentyhq/twenty/compare/sdk/v2.39.0...sdk/v2.40.0
Related Repositories
public-apis/public-apis★ 491,131
A collective list of free APIs
NousResearch/hermes-agent★ 255,909
The agent that grows with you
yt-dlp/yt-dlp★ 200,005
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,483
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,700
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.