github twentyhq/twenty sdk/v2.40.0

4 hours ago

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) 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) 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)
  • Breaking: AI model selection now uses five named tiers instead of model names; update any code that referenced specific AI model identifiers. (#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)
  • create-twenty-app scaffolds locales/en.json with an empty catalog so new projects declare their translation set from the first sync. (#25539)
  • definePageLayoutWidget lets an app place a widget on a tab it does not own; declare it in manifest.pageLayoutWidgets. (#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)

✨ New features

  • isSearchable is now available on FieldMetadata; use it to identify which fields contribute to an object's search vector. (#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) by @abdulrahmancodes
  • messageCampaign.scheduledAt is now available; set it to queue a campaign for later delivery instead of sending immediately. (#25563) by @neo773
  • isAuditLogged is now available on FieldMetadata; fields with it set to false are excluded from the record timeline. (#25641) by @FelixMalfait
  • definePageLayoutWidget lets an app place a single widget on a tab it does not own; declare it in manifest.pageLayoutWidgets. (#25651) by @Weiko
  • Logic functions can now receive batched database events by setting batchSize on databaseEventTriggerSettings, instead of one job per event. (#25726) by @martmull

💅 Improvements & UX

  • exportApplication now fills manifest.translations with compiled catalogs so a raw export carries translation data. (#25566) by @Weiko
  • yarn twenty pull now writes an app's published translations back into locales/ files. (#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) by @Weiko
  • yarn twenty pull now writes page layouts as definePageLayout() files and standalone tabs as definePageLayoutTab() files. (#25655) by @Weiko
  • yarn twenty pull now writes navigation menu items as defineNavigationMenuItem() files, including items from the Custom app. (#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) by @abdulrahmancodes

🐛 Bug fixes

  • yarn twenty apply no longer wipes published translations when your project has no locales/ folder. (#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) 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) 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) by @Weiko
🏗️ Internal changes (5)
  • feat(record-form): render the record creation form behind a flag (#25203) by @thomtrp
  • Record sharing 3/14: gate reads and writes on private objects with record share rows (#25426) by @martmull
  • Remove an unused import from defineObject (#25569) by @Weiko
  • Make the billing catalog ready for plan and price evolution (#25635) by @FelixMalfait
  • feat(usage-limit): cap webhook calls per workspace at enqueue time (#25673) by @etiennejouan

🎉 New contributors

Full changelog (24 PRs)
  • feat(search): expose isSearchable on field metadata and make the object search section editable (#25166) by @prastoin
  • feat(record-form): render the record creation form behind a flag (#25203) by @thomtrp
  • feat(core): let apps report a connection auth failure with a reason (#25297) by @abdulrahmancodes
  • Record sharing 3/14: gate reads and writes on private objects with record share rows (#25426) by @martmull
  • Track application installs and uninstalls with deterministic queue jobs (#25502) by @martmull
  • chore: bump version to 2.40.0 (#25534) by @twenty-pr
  • Stop pruning published translations when a project has no locales folder (#25535) by @Weiko
  • Scaffold a locales folder with an empty source catalog (#25539) by @Weiko
  • Let marketers schedule a campaign for a later send (#25563) by @neo773
  • Export an application's published translations in the manifest (#25566) by @Weiko
  • [Apps 2-way sync] Pull write translations (#25567) by @Weiko
  • Skip empty built files on upload and report a rejected batch once (#25568) by @Weiko
  • Remove an unused import from defineObject (#25569) by @Weiko
  • Write pulled views and standalone view fields as define files (#25606) by @Weiko
  • Make the billing catalog ready for plan and price evolution (#25635) by @FelixMalfait
  • Add isAuditLogged on field metadata to keep noisy fields off the timeline (#25641) by @FelixMalfait
  • Add a standalone page layout widget slot to the manifest and export widgets placed on existing tabs (#25651) by @Weiko
  • Write pulled page layouts and standalone page layout tabs as define files (#25655) by @Weiko
  • feat(usage-limit): cap webhook calls per workspace at enqueue time (#25673) by @etiennejouan
  • Write pulled navigation menu items as define files (#25705) by @Weiko
  • Show workspace-shared app connections to every member (#25708) by @abdulrahmancodes
  • feat(ai): replace model pickers with a five-tier model slider (#25721) by @FelixMalfait
  • Add batch delivery to database-event-triggered logic functions (#25726) by @martmull
  • fix: republish twenty-ui as MIT (1.0.0-alpha.2) to resolve stale AGPL artifacts (#25738) by @MauryaQbit

Full Changelog: sdk/v2.39.0...sdk/v2.40.0

Don't miss a new twenty release

NewReleases is sending notifications on new releases.