sdk/v2.40.0
thesysdev/openuisdk/v2.40.0Sep 15, 2026by twenty-pr[bot]
Upgrading?
AI Summary
SDK update introducing typed `define*` exports for app manifests, new metadata flags, and improved translation handling.
Key Highlights
- `yarn twenty pull` writes views, layouts, nav items, and translations as typed `define*` files.
- New `FieldMetadata` flags: `isSearchable` and `isAuditLogged`.
- `definePageLayoutWidget` lets apps place widgets on tabs they do not own.
- `yarn twenty apply` no longer wipes translations without a `locales/` folder.
- AI model configuration uses five named tiers instead of model names.
Breaking Changes
- `TriggerInstallApplicationJobInput` no longer carries a `version` field.
- AI model configuration now uses five named tiers instead of model names.
New Features
- Apps can call `reportAppConnectionAuthFailure` to mark broken credentials.
- `messageCampaign.scheduledAt` is now available for queuing campaigns.
- Logic functions can receive batched database events via `batchSize`.
- `exportApplication` fills manifest.translations with compiled catalogs.
- `applicationConnectedAccounts(applicationId)` returns all non-archived connections.
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
openclaw/openclaw★ 392,691
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
nilbuild/developer-roadmap★ 370,065
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
morluto/rea★ 357,541
Reverse engineer anything with agents, from app behavior down to native binaries.
anomalyco/opencode★ 219,657
The open source coding agent.
n8n-io/n8n★ 208,248
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.