github twentyhq/twenty sdk/v2.54.0

2 hours ago

Apps can now declare MCP servers in their manifest using defineMcpServer from twenty-sdk. Two new helpers — attachRecordToInboxThread and detachRecordFromInboxThread — let apps and workspace members link records to inbox threads.

Three breaking changes require code updates. SystemPermissionFlag.CONNECTED_ACCOUNTS and APPLICATIONS are renamed to USER_APPS and WORKSPACE_APPS. MarketplaceApp.isVetted is replaced by isListed. FeatureFlagKey.IS_MESSAGE_CAMPAIGN_ENABLED is removed; campaigns are now on for all workspaces.

twenty app pull now restores package.json and yarn.lock alongside metadata, and can scaffold a new local project when run outside an existing directory. The --universal-identifier flag is removed. A type error in the generated client SDK where UpdateViewInput.translations referenced an output type is also fixed.

⚠️ Breaking changes

  • FeatureFlagKey.IS_MESSAGE_CAMPAIGN_ENABLED is removed; campaigns are enabled for every workspace by default, so remove any code-path guards on this key. (#28929) by @neo773
  • Workflow builder workflows now export correctly via twenty app pull; the manifest format was extended to preserve builder state that prior versions silently dropped. (#29053) by @FelixMalfait
  • MarketplaceApp.isVetted is removed and replaced with isListed; ApplicationRegistration and MarketplaceAppDetail also drop isVetted, so update any code that reads or sets the vetted flag. (#29187) by @martmull
  • SystemPermissionFlag.CONNECTED_ACCOUNTS is renamed to USER_APPS and SystemPermissionFlag.APPLICATIONS to WORKSPACE_APPS; stored universal identifiers are unchanged, so only the names you type in manifests need updating. (#29194) by @ehconitin
  • twenty app pull now scaffolds a new local project from your workspace's custom app when run outside an existing directory. The --universal-identifier flag is removed. (#29207) by @Weiko

🌟 Highlights

  • SystemPermissionFlag.CONNECTED_ACCOUNTS and APPLICATIONS are renamed to USER_APPS and WORKSPACE_APPS — update every permission declaration in your manifest. (#29194)
  • MarketplaceApp.isVetted is removed; replace it with isListed wherever you read or render the marketplace catalog. (#29187)
  • FeatureFlagKey.IS_MESSAGE_CAMPAIGN_ENABLED is gone; campaigns are enabled for all workspaces, so remove any guards on this key. (#28929)
  • defineMcpServer is now exported from twenty-sdk — apps can declare an MCP server in their manifest for the first time. (#29158)
  • attachRecordToInboxThread and detachRecordFromInboxThread are new exports in twenty-sdk, letting apps link any record to an inbox thread. (#29090)
  • twenty app pull now initializes a new local project when run outside an existing directory; the --universal-identifier flag is removed. (#29207)

✨ New features

  • attachRecordToInboxThread(threadId, recordId) and detachRecordFromInboxThread(threadId, recordId) are now exported from twenty-sdk, letting apps link records to inbox threads with caller-scoped permissions. (#29090) by @bosiraphael
  • UpdateViewInput now accepts translations: [MetadataTranslationOverrideInput!] on both the GraphQL updateView mutation and PATCH /rest/metadata/views/:id. (#29095) by @ijreilly
  • defineMcpServer({ universalIdentifier, name, label, url, connectionProvider? }) is now exported from twenty-sdk — add it to your app manifest to ship an MCP server alongside your connection provider. (#29158) by @martmull
  • agentChatChannelThreadIds now accepts a filter argument; channel and open-thread summaries return new mentionsCount and needsInputCount fields. (#29192) by @bosiraphael
  • Apps can now receive server webhooks at /webhooks/server/:appRegistrationId/:functionUniversalIdentifier, a stable URL apps can construct without a runtime lookup. (#29204) by @charlesBochet
  • The metadata API exposes relatedRecordPaths and createRelatedRecordPath when IS_RELATED_RECORD_PATHS_ENABLED is enabled. (#29243) by @charlesBochet

🐛 Bug fixes

  • Menu item description text in twenty-ui now renders in the Light color token instead of Secondary, matching the Figma spec. (#29239) by @Bonapara
  • UpdateViewInput.translations in the generated twenty-client-sdk types now correctly references MetadataTranslationOverrideInput instead of the output-only MetadataTranslation. (#29264) by @ehconitin
  • The join word in keyboard shortcut sequences (e.g. "G then D") in twenty-ui now renders in Light instead of Secondary. (#29275) by @Bonapara

🔧 Developer & API

  • The CLI now discovers and bundles React and Twenty UI once from your installed app lockfile rather than re-installing per component preview revision. (#29018) by @Weiko
  • twenty app pull now fetches and writes dependencies/package.json and dependencies/yarn.lock, restoring the full dependency snapshot alongside metadata. (#29197) by @Weiko
🏗️ Internal changes (5)

🎉 New contributors

Full changelog (22 PRs)

Full Changelog: sdk/v2.53.1...sdk/v2.54.0

Don't miss a new twenty release

NewReleases is sending notifications on new releases.