Skip to content

Release history

twenty releases

Building a modern alternative to Salesforce, powered by the community.

All releases

18 shown

Upgrade now
v2.8.0 Breaking risk
Dependencies

Permission flags + channel deprecation

Config change
v2.7.0 Breaking risk
Auth Breaking upgrade

Front fix, ConnectedAccount encryption, JWT rotation

Review required
v2.6.0 Breaking risk
Auth

auth, server, admin-panel, twenty-front, front

Review required
v2.5.0 Breaking risk
Auth Crypto / TLS Breaking upgrade

Server, twenty‑server, messaging, website, CI, billing

Upgrade now
v2.4.0 Security relevant
Dependencies RCE / SSRF

FTP command injection fix

No immediate action
v2.3.0 Breaking risk

Package removal + Prometheus gauge

v2.2.0 Bug fix
Security fixes
  • Reject ?token= URL query parameter for authentication
Full changelog

What's Changed

  • chore: remove accidentally committed .claude-pr/ directory by @turantekin in https://github.com/twentyhq/twenty/pull/20036
  • Bump twenty-sdk, twenty-client-sdk, create-twenty-app to 2.1.0-canary.1 by @charlesBochet in https://github.com/twentyhq/twenty/pull/20038
  • chore(server): bump current version to 2.2.0 by @charlesBochet in https://github.com/twentyhq/twenty/pull/20040
  • Bump twenty-sdk, twenty-client-sdk, create-twenty-app to 2.1.0 by @charlesBochet in https://github.com/twentyhq/twenty/pull/20041
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20045
  • feat(front-component-renderer): forward offset/movement coordinates on serialised events by @charlesBochet in https://github.com/twentyhq/twenty/pull/20046
  • feat(github-connector): exclude self-reviews from review counts by @charlesBochet in https://github.com/twentyhq/twenty/pull/20050
  • Make twenty-front build env agnostic by @prastoin in https://github.com/twentyhq/twenty/pull/20055
  • [AI] Drop 'serialization' from tool output naming by @ehconitin in https://github.com/twentyhq/twenty/pull/20052
  • [AI] ai usage line chart date gap filling by @ehconitin in https://github.com/twentyhq/twenty/pull/20048
  • fix(logic-function): serialize LocalDriver layer builds with cache lock by @charlesBochet in https://github.com/twentyhq/twenty/pull/20054
  • Add admin avatars and app logos by @Bonapara in https://github.com/twentyhq/twenty/pull/20001
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20073
  • [CI] Prevent previous version upgrade sequence mutation by @prastoin in https://github.com/twentyhq/twenty/pull/20075
  • fix(logic-function): forward raw request body for HMAC signature verification by @charlesBochet in https://github.com/twentyhq/twenty/pull/20061
  • Documentation update by @BOHEUS in https://github.com/twentyhq/twenty/pull/20059
  • gmail extract body from deeply nested MIME parts by @neo773 in https://github.com/twentyhq/twenty/pull/19989
  • fix(messaging): refactor SentMessagePersistenceService by @neo773 in https://github.com/twentyhq/twenty/pull/20077
  • fix(server): match IMAP \Noselect attribute case-insensitively by @rrrodzilla in https://github.com/twentyhq/twenty/pull/20043
  • docs: document rawBody on RoutePayload by @charlesBochet in https://github.com/twentyhq/twenty/pull/20080
  • [Website] locale-segment routing and shared Lingui factory by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20079
  • Filtered upgrade logs when stopping before starting next instance segment by @prastoin in https://github.com/twentyhq/twenty/pull/20078
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20081
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20083
  • [AI] Collapse NativeToolBinder to a single bind() entry by @ehconitin in https://github.com/twentyhq/twenty/pull/20051
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20087
  • Gate AI chat navigation entries by AI_SETTINGS permission by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20089
  • chore: export the enum view calendar layout to avoid typing errors on apps by @abusarah-tech in https://github.com/twentyhq/twenty/pull/20090
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20093
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20095
  • feat(sentry): propagate workspace context to all spans by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20064
  • fix(ai-billing): bill thread title generation and tool-call repair by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20067
  • fix(ai-billing): bill POST /rest/ai/generate-text usage to ClickHouse by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20066
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20097
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20100
  • chore: use navigation menu item type into the generated navigation menu layout by @abusarah-tech in https://github.com/twentyhq/twenty/pull/20099
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20106
  • fix(ai-billing): bill executeAgent in a finally block so failed runs don't leak by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20065
  • refactor: standardize JsonStringified casing by @saisathwikpeddireddy in https://github.com/twentyhq/twenty/pull/20101
  • Fix orphan views by deferring record table widget view creation to dashboard save by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/20006
  • Stop reseting isListed and is featured after each sync by @martmull in https://github.com/twentyhq/twenty/pull/20111
  • Redesign application content tab + logic function settings; add Layout detail pages by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20056
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20114
  • Billing - optimize usageEvent CH table by @etiennejouan in https://github.com/twentyhq/twenty/pull/20019
  • fix(rest-api): prevent silent pagination failures and include valid options in enum validation errors by @ratishjain12 in https://github.com/twentyhq/twenty/pull/20092
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20115
  • refactor: harden website runtime, routing, and hero visual by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20113
  • Fix upgrade --start-from-workspace-id by @prastoin in https://github.com/twentyhq/twenty/pull/20116
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20122
  • Copy twenty-shared in twenty-website deploy by @prastoin in https://github.com/twentyhq/twenty/pull/20124
  • add UpsertViewWidget resolver by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/20053
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20125
  • Fix click house migration by @prastoin in https://github.com/twentyhq/twenty/pull/20127
  • Fix stale UI state after stop-impersonation by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20088
  • fix(ai): render record links inside markdown headings in AI chat by @ehconitin in https://github.com/twentyhq/twenty/pull/20074
  • ssrf hardening by @neo773 in https://github.com/twentyhq/twenty/pull/19963
  • refactor: optimize website visual runtime by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20120
  • [Command Menu] Fix record-selection command filtering in edit mode by @ehconitin in https://github.com/twentyhq/twenty/pull/20034
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20138
  • add recurring calendar events for google cal by @neo773 in https://github.com/twentyhq/twenty/pull/19748
  • Ai Chat - Caching optim by @etiennejouan in https://github.com/twentyhq/twenty/pull/20126
  • CalDAV: support Digest auth by @neo773 in https://github.com/twentyhq/twenty/pull/20135
  • fix(billing): gate AI credit-cap at entry points instead of workflow executor by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20096
  • Fix application icons by @martmull in https://github.com/twentyhq/twenty/pull/20142
  • chore(deps-dev): bump @babel/preset-typescript from 7.24.7 to 7.28.5 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/20151
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20155
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20156
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20157
  • chore(deps): bump postal-mime from 2.6.1 to 2.7.4 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/20150
  • chore(deps): bump @sentry/profiling-node from 10.27.0 to 10.51.0 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/20149
  • Add twenty sdk server upgrade command by @martmull in https://github.com/twentyhq/twenty/pull/20158
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20161
  • fix(security): reject ?token= URL query parameter for authentication by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20154
  • Update doc screenshots by @martmull in https://github.com/twentyhq/twenty/pull/20160
  • Select application excluding logo by @Weiko in https://github.com/twentyhq/twenty/pull/20159

New Contributors

  • @turantekin made their first contribution in https://github.com/twentyhq/twenty/pull/20036
  • @rrrodzilla made their first contribution in https://github.com/twentyhq/twenty/pull/20043
  • @saisathwikpeddireddy made their first contribution in https://github.com/twentyhq/twenty/pull/20101
  • @ratishjain12 made their first contribution in https://github.com/twentyhq/twenty/pull/20092

Full Changelog: https://github.com/twentyhq/twenty/compare/v2.1.0...v2.2.0

v2.1.0 Breaking risk
Breaking changes
  • [breaking, deploy server first] fix(ai-chat): persist providerExecuted flag on tool parts
Notable features
  • SDK authentication confirmation on remote add
  • GitHub connector example app
  • Page layout tab extensions
Full changelog

What's Changed

  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19915
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19914
  • Fix Email composer rich text to HTML conversion by @neo773 in https://github.com/twentyhq/twenty/pull/19872
  • Docs: restructure navigation, add halftone illustrations, clean up hero images by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19728
  • chore(website-new): reword FAQ copy on hosting and Organization plan by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19917
  • docs: remove alpha warning from apps pages except skills & agents by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19919
  • chore: remove IS_AI_ENABLED feature flag by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19916
  • Fix side panel hotkeys breaking when opening records from table by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19849
  • Revert "fix compute folders to update util (#19749)" by @neo773 in https://github.com/twentyhq/twenty/pull/19921
  • Add 2.0.0 release changelog by @Bonapara in https://github.com/twentyhq/twenty/pull/19923
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19925
  • Cross version and upgrade status docs by @prastoin in https://github.com/twentyhq/twenty/pull/19926
  • Website - small fixes by @etiennejouan in https://github.com/twentyhq/twenty/pull/19918
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19928
  • fix email workflow by @neo773 in https://github.com/twentyhq/twenty/pull/19929
  • Cross version ci placeholder by @prastoin in https://github.com/twentyhq/twenty/pull/19932
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19934
  • [Website] Fix flickering of faq illustration. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19920
  • Fix self-hosting pricing page design. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19930
  • Reset default app packages command by @prastoin in https://github.com/twentyhq/twenty/pull/19931
  • Import - Fix by @etiennejouan in https://github.com/twentyhq/twenty/pull/19938
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19939
  • Allow closing navbar folder while viewing an active child item by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19936
  • Optimize 3d models by @neo773 in https://github.com/twentyhq/twenty/pull/19935
  • Optimize website images by @neo773 in https://github.com/twentyhq/twenty/pull/19933
  • Export generateDefaultFieldUniversalIdentifier from SDK by @Weiko in https://github.com/twentyhq/twenty/pull/19937
  • Remove cross version upgrade placeholder by @prastoin in https://github.com/twentyhq/twenty/pull/19940
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19943
  • Fix left/right arrow keys not working in dropdown search inputs by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19759
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19944
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19948
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19952
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19954
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19955
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19956
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19957
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19958
  • Remove Product Hunt banner section by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19959
  • refactor(tool-provider): dedupe descriptor/generator paths by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19960
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19967
  • refactor(tool-provider): kill execute_tool's dual dispatch by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19962
  • refactor(tool-provider): rename NativeModelToolProvider to NativeToolBinderService by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19966
  • fix: restore Try Twenty button text visibility on docs navbar by @Yash-Raj-5424 in https://github.com/twentyhq/twenty/pull/19968
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19970
  • refactor(tool-provider): rename web_search to exa_web_search, drop XOR toggle by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19969
  • Update settings application illustrations and app metadata previews by @Bonapara in https://github.com/twentyhq/twenty/pull/19964
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19975
  • feat(sdk): confirm authentication method on remote add by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19947
  • fix(server): preserve kanban/calendar fields in view manifest sync by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19946
  • Cleanup application and app registration test util by @prastoin in https://github.com/twentyhq/twenty/pull/19981
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19983
  • Docs - Update getting started by @etiennejouan in https://github.com/twentyhq/twenty/pull/19976
  • fix(page-layout): hide deactivated fields from FIELDS widget and layout editor by @Weiko in https://github.com/twentyhq/twenty/pull/19984
  • Forbid permissions update cross app role retarget by @prastoin in https://github.com/twentyhq/twenty/pull/19982
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19987
  • feat(community): add github-connector example app by @charlesBochet in https://github.com/twentyhq/twenty/pull/19961
  • Resend app improvements by @bosiraphael in https://github.com/twentyhq/twenty/pull/19986
  • scaffold record page layout + fields view when adding an object by @Weiko in https://github.com/twentyhq/twenty/pull/19977
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19988
  • chore(deps): bump @blocknote/server-util from 0.47.1 to 0.47.3 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/19997
  • chore(deps): bump @ai-sdk/google from 3.0.31 to 3.0.64 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/19998
  • Fix layout edition mode dark mode text color by @Weiko in https://github.com/twentyhq/twenty/pull/19992
  • optimize workspace export command by @neo773 in https://github.com/twentyhq/twenty/pull/20000
  • feat(sdk): add definePageLayoutTab for extending existing page layouts by @charlesBochet in https://github.com/twentyhq/twenty/pull/20004
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20007
  • Stop throwing for event stream does not exists by @thomtrp in https://github.com/twentyhq/twenty/pull/20008
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20009
  • Force uuids in AI workflow tools by @thomtrp in https://github.com/twentyhq/twenty/pull/20010
  • Retrieve ai catalog at bootstrap by @prastoin in https://github.com/twentyhq/twenty/pull/20005
  • fix(admin-panel): inline skeleton loaders for table sections by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20014
  • feat(app): infrastructure for pre-installed apps by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19973
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20015
  • feat(admin-panel): add read-only Billing tab and workspace logos by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20012
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20016
  • Fix: Database query on opportunity table by @sonarly[bot] in https://github.com/twentyhq/twenty/pull/20017
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20018
  • Keep fallback record page layouts read-only in edition mode by @Weiko in https://github.com/twentyhq/twenty/pull/20023
  • Fix layout edition mode dark mode text color - 2 by @Weiko in https://github.com/twentyhq/twenty/pull/20024
  • [Command Menu] Refactor layout customization conditional availability [Warning] by @ehconitin in https://github.com/twentyhq/twenty/pull/19974
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20027
  • Removing community apps in favor of npm-distributed apps by @Weiko in https://github.com/twentyhq/twenty/pull/20029
  • Dockerfile twenty-server target by @prastoin in https://github.com/twentyhq/twenty/pull/20028
  • backfill widget position from gridPosition (phase 1 of gridPosition removal) by @Weiko in https://github.com/twentyhq/twenty/pull/20032
  • [breaking, deploy server first] fix(ai-chat): persist providerExecuted flag on tool parts by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20030
  • Clarify registry tools vs native model tool binding by @ehconitin in https://github.com/twentyhq/twenty/pull/20022
  • Gate export/import command menu items by permission flag by @Weiko in https://github.com/twentyhq/twenty/pull/19991
  • chore(twenty-sdk): shrink logic-function bundles via stubbing by @charlesBochet in https://github.com/twentyhq/twenty/pull/20033
  • [Website] Architecture, hardening, and perf pass. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20020
  • Move isPreInstalled applicationRegistration instance command to 2.1 by @charlesBochet in https://github.com/twentyhq/twenty/pull/20037

New Contributors

  • @Yash-Raj-5424 made their first contribution in https://github.com/twentyhq/twenty/pull/19968

Full Changelog: https://github.com/twentyhq/twenty/compare/v2.0.0...v2.1.0

v2.0.0 Breaking risk
Breaking changes
  • Admin panel moved from integrated location to /admin-panel GraphQL endpoint
  • Agent exception renamed to Ai with new error codes THREAD_NOT_FOUND and MESSAGE_NOT_FOUND
  • Twenty SDK barrel split into per-purpose subpaths affecting module imports
Security fixes
  • Fixed socket.io vulnerability allowing unbounded binary attachment uploads
  • Fixed prototype pollution vulnerability in nodejs flatted package
  • Improved OAuth security by requiring PKCE code_challenge for public clients
Notable features
  • SVG export with enhanced halftone studio controls
  • Page layout customization including tab icon picker and layout reset
  • AWS EKS deployment support with managed Docker target and AWS CLI
Full changelog

What's Changed

  • Fix app design 4 by @martmull in https://github.com/twentyhq/twenty/pull/19803
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19805
  • Fix indexFieldMetadata select missing workspaceId by @Weiko in https://github.com/twentyhq/twenty/pull/19806
  • Add SVG export and refine halftone studio controls by @Bonapara in https://github.com/twentyhq/twenty/pull/19813
  • Fix deactivated tabs not visible in new tab action by @Weiko in https://github.com/twentyhq/twenty/pull/19811
  • fix: socket.io allows an unbounded number of binary attachments by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19812
  • Twenty for twenty app by @bosiraphael in https://github.com/twentyhq/twenty/pull/19804
  • Disable reset to default when custom tab or widget by @Weiko in https://github.com/twentyhq/twenty/pull/19814
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19817
  • Add reset page layout in record page layout edit mode tab by @Weiko in https://github.com/twentyhq/twenty/pull/19800
  • Add twenty-managed Docker target with AWS CLI for EKS deployments by @neo773 in https://github.com/twentyhq/twenty/pull/19816
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19819
  • Add page layout tab icon picker by @Weiko in https://github.com/twentyhq/twenty/pull/19818
  • Fix app design 5 by @martmull in https://github.com/twentyhq/twenty/pull/19820
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19821
  • fix(server): normalize empty composite phone sub-fields to NULL by @NathanDrake2406 in https://github.com/twentyhq/twenty/pull/19775
  • fix(server): make workspace:seed:dev --light actually seed only one workspace by @charlesBochet in https://github.com/twentyhq/twenty/pull/19822
  • fix(server): log inner errors of WorkspaceMigrationRunnerException in workspace iterator by @charlesBochet in https://github.com/twentyhq/twenty/pull/19823
  • chore(server): bump logic-function executor lambda memory to 512MB by @charlesBochet in https://github.com/twentyhq/twenty/pull/19826
  • fix(server): skip standard page layout widgets referencing missing field metadatas during 1.23 backfill by @charlesBochet in https://github.com/twentyhq/twenty/pull/19825
  • fix(server): honor X-Forwarded-* via configurable trust proxy by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19824
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19828
  • fix oauth permission check by @neo773 in https://github.com/twentyhq/twenty/pull/19829
  • perf(server): reuse ESM module cache across warm Lambda invocations of logic functions by @charlesBochet in https://github.com/twentyhq/twenty/pull/19830
  • fix(server): deliver user-scoped metadata events only to the owning user by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19832
  • perf(sdk): split twenty-sdk barrel into per-purpose subpaths to cut logic-function bundle ~700x by @charlesBochet in https://github.com/twentyhq/twenty/pull/19834
  • Bump twenty-sdk, twenty-client-sdk, create-twenty-app to 1.23.0-canary.1 by @charlesBochet in https://github.com/twentyhq/twenty/pull/19841
  • refactor(server): rename Agent exception to Ai; add THREAD_NOT_FOUND / MESSAGE_NOT_FOUND codes (fixes 500s) by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19831
  • chore: remove draft email feature flag by @neo773 in https://github.com/twentyhq/twenty/pull/19842
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19843
  • fix(server): require PKCE code_challenge for public OAuth clients by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19840
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19844
  • fix(server): align OAuth discovery metadata with MCP / RFC 9728 spec by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19838
  • fix(server): expose WWW-Authenticate header for browser-based MCP clients by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19836
  • Hero 2.0 by @Bonapara in https://github.com/twentyhq/twenty/pull/19846
  • [Website] Fix testimonials shape, diamond direction, and integrate partner application form. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19835
  • fix: correct sSOService → ssoService camelCase typo by @avasis-ai in https://github.com/twentyhq/twenty/pull/19845
  • refactor: standardize AI acronym to Ai (PascalCase) across internal identifiers by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19837
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19851
  • feat: move admin panel to dedicated /admin-panel GraphQL endpoint by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19852
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19866
  • Partners, customers and more by @Bonapara in https://github.com/twentyhq/twenty/pull/19862
  • fix(server): add registration_client_uri to DCR response for Claude.ai connector by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19858
  • Fix app design 6 by @martmull in https://github.com/twentyhq/twenty/pull/19827
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19869
  • Billing - fixes by @etiennejouan in https://github.com/twentyhq/twenty/pull/19867
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19873
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19874
  • fix(front): suppress full-page skeleton inside auth modal by @charlesBochet in https://github.com/twentyhq/twenty/pull/19875
  • fix: prototype pollution via parse in nodejs flatted by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19870
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19880
  • fix(front): gate renewToken Apollo logger on IS_DEBUG_MODE by @charlesBochet in https://github.com/twentyhq/twenty/pull/19878
  • feat(sdk): support viewSorts in app manifests by @charlesBochet in https://github.com/twentyhq/twenty/pull/19881
  • fix 1.22 upgrade command add-workspace-id-to-indirect-entities by @neo773 in https://github.com/twentyhq/twenty/pull/19868
  • Bump twenty-sdk, twenty-client-sdk, create-twenty-app to 1.23.0-canary.9 by @charlesBochet in https://github.com/twentyhq/twenty/pull/19883
  • Redesign why-twenty page with three-section narrative by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19882
  • Billing - Adapt to new unit by @etiennejouan in https://github.com/twentyhq/twenty/pull/19886
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19888
  • fix(ui): make CardPicker hover cover the whole card and align content left by @charlesBochet in https://github.com/twentyhq/twenty/pull/19884
  • Website - Plan pricing update by @etiennejouan in https://github.com/twentyhq/twenty/pull/19887
  • Cleanup files that were committed with website PR, but should not be there. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19891
  • Fix applications query cartesian product causing read timeouts by @charlesBochet in https://github.com/twentyhq/twenty/pull/19892
  • Translate standard page layouts by @Weiko in https://github.com/twentyhq/twenty/pull/19890
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19893
  • [Website] Self-host billing migration and some responsiveness fixes. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19894
  • fix(server): scope loadingMessage wrap/strip to AI-chat callers by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19896
  • feat(infra): add Dockerfile for twenty-website-new by @charlesBochet in https://github.com/twentyhq/twenty/pull/19901
  • Fix Apps UI: replace 'Managed' label with actual app name and unify app icons by @charlesBochet in https://github.com/twentyhq/twenty/pull/19897
  • fix(infra): copy nx.json and tsconfig.base.json into website-new image by @charlesBochet in https://github.com/twentyhq/twenty/pull/19902
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19903
  • chore(workflow): temporarily lift credit-cap gate on workflow steps by @charlesBochet in https://github.com/twentyhq/twenty/pull/19904
  • fix(website-new): pre-resolve wyw-in-js babel presets to absolute paths by @charlesBochet in https://github.com/twentyhq/twenty/pull/19905
  • Fix activity relation picker by @Weiko in https://github.com/twentyhq/twenty/pull/19898
  • Release v1.23.0 for twenty-sdk, twenty-client-sdk, and create-twenty-app by @charlesBochet in https://github.com/twentyhq/twenty/pull/19906
  • chore(server): bump current version to 2.0.0 and add 2.1.0 as next by @charlesBochet in https://github.com/twentyhq/twenty/pull/19907
  • docs: use twenty-sdk/define subpath in docs and website demo by @charlesBochet in https://github.com/twentyhq/twenty/pull/19908
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19909
  • Release v2.0.0 for twenty-sdk, twenty-client-sdk, and create-twenty-app by @charlesBochet in https://github.com/twentyhq/twenty/pull/19910
  • Website last fixes by @Bonapara in https://github.com/twentyhq/twenty/pull/19895
  • fix: pricing card cutoff on website by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19913
  • feat(website-new): add robots.txt, sitemap.xml and legacy redirects by @charlesBochet in https://github.com/twentyhq/twenty/pull/19911
  • fix(settings): force display "Standard" and "Custom" for app chips by @charlesBochet in https://github.com/twentyhq/twenty/pull/19912

New Contributors

  • @NathanDrake2406 made their first contribution in https://github.com/twentyhq/twenty/pull/19775
  • @avasis-ai made their first contribution in https://github.com/twentyhq/twenty/pull/19845

Full Changelog: https://github.com/twentyhq/twenty/compare/v1.23.0...v2.0.0

v1.23.0 Mixed
Security fixes
  • OAuth discovery and MCP authentication made host-aware
  • Workspace member permissions and profile onboarding improved
  • MCP discovery with path-aware well-known URL and protocol version
Notable features
  • Introduced TABLE_WIDGET view type for Object view widgets
  • Added standalone page support
  • Search functionality in Fields dropdown and column selector
Full changelog

What's Changed

  • Upgrade self hosting application by @martmull in https://github.com/twentyhq/twenty/pull/19680
  • website new fixes by @Bonapara in https://github.com/twentyhq/twenty/pull/19678
  • fix(address): populate street line from place details by @jeevan6996 in https://github.com/twentyhq/twenty/pull/19326
  • Expend field widget field supported types by @Weiko in https://github.com/twentyhq/twenty/pull/19684
  • Bump current version to 1.23.0 by @prastoin in https://github.com/twentyhq/twenty/pull/19683
  • Reset to default page layout by @Weiko in https://github.com/twentyhq/twenty/pull/19682
  • Test workflow with webhook expected body by @thomtrp in https://github.com/twentyhq/twenty/pull/19688
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19691
  • Improve upgrade registry logging for pre-release bundles by @prastoin in https://github.com/twentyhq/twenty/pull/19689
  • Fix multi-workspace-registration by @martmull in https://github.com/twentyhq/twenty/pull/19685
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19692
  • Add missing doc by @martmull in https://github.com/twentyhq/twenty/pull/19693
  • Introduce standalone page by @bosiraphael in https://github.com/twentyhq/twenty/pull/19675
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19699
  • Switch default remote to lastly added remote by @martmull in https://github.com/twentyhq/twenty/pull/19697
  • Align GraphQL error handling for billing and AI chat by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19690
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19703
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19705
  • Introduce updateWorkspaceMemberSettings and clarify product by @ijreilly in https://github.com/twentyhq/twenty/pull/19441
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19707
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19709
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19710
  • Update home card visuals and partner marketing assets by @Bonapara in https://github.com/twentyhq/twenty/pull/19711
  • Reactivate disabled full tab widgets by @Devessier in https://github.com/twentyhq/twenty/pull/19702
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19715
  • Fix infinite recursion in iterator loop traversal when If/Else branch loops back to enclosing iterator by @thomtrp in https://github.com/twentyhq/twenty/pull/19714
  • Hide fallback command menu items in edit mode by @bosiraphael in https://github.com/twentyhq/twenty/pull/19700
  • Fix duplicate Fields widget by @Weiko in https://github.com/twentyhq/twenty/pull/19696
  • Invert pinned and dots icon buttons in command menu items edit mode by @bosiraphael in https://github.com/twentyhq/twenty/pull/19717
  • Fix active navigation item disambiguation by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19664
  • Object view widget - Introduce new TABLE_WIDGET view type by @etiennejouan in https://github.com/twentyhq/twenty/pull/19545
  • [Billing for self host] End dummy enterprise key validity by @ijreilly in https://github.com/twentyhq/twenty/pull/19560
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19720
  • Hide workflow manual trigger from command menu on "Select All" by @thomtrp in https://github.com/twentyhq/twenty/pull/19718
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19722
  • Add new html tags to the remote elements by @bosiraphael in https://github.com/twentyhq/twenty/pull/19723
  • Update backfill page layout command by @Weiko in https://github.com/twentyhq/twenty/pull/19687
  • Various bug fixes Record page layouts by @Devessier in https://github.com/twentyhq/twenty/pull/19719
  • Fix standalone page migration failing on navigationMenuItem enum type change by @charlesBochet in https://github.com/twentyhq/twenty/pull/19724
  • Fix command menu item edit record selection dropdown icons by @bosiraphael in https://github.com/twentyhq/twenty/pull/19725
  • [Upgrade] Fix workspace creation cursor by @prastoin in https://github.com/twentyhq/twenty/pull/19701
  • Go back to the original command K button by @bosiraphael in https://github.com/twentyhq/twenty/pull/19727
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19729
  • Fix fields widget flash during reset by @Weiko in https://github.com/twentyhq/twenty/pull/19726
  • Refactor SnackBar duration handling and progress bar visibility logic by @aryanghugare in https://github.com/twentyhq/twenty/pull/19712
  • Fix navbar folder opening lag by deferring navigation until expand animation completes by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19686
  • Fix silent failures in logic function route trigger execution by @charlesBochet in https://github.com/twentyhq/twenty/pull/19698
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19731
  • Homepage 3 cards finished by @Bonapara in https://github.com/twentyhq/twenty/pull/19732
  • Update website hero to use shared local avatars and logos by @Bonapara in https://github.com/twentyhq/twenty/pull/19736
  • Add isUnique update in query + invalidate cache on rollback by @thomtrp in https://github.com/twentyhq/twenty/pull/19746
  • Release v1.22.0 for twenty-sdk, twenty-client-sdk, and create-twenty-app by @charlesBochet in https://github.com/twentyhq/twenty/pull/19751
  • Fix calendar event "Not shared" content alignment and background by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19743
  • Fix spacing between workspace domain cards by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19742
  • [Website] Resolve animations breaking due to renderer context being lost. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19747
  • Remove workspace-migrations deadcode by @prastoin in https://github.com/twentyhq/twenty/pull/19752
  • Add event forwarding stories to the front component renderer by @bosiraphael in https://github.com/twentyhq/twenty/pull/19721
  • Add logs before and after instance slow data migration by @prastoin in https://github.com/twentyhq/twenty/pull/19753
  • fix compute folders to update util by @neo773 in https://github.com/twentyhq/twenty/pull/19749
  • Fix app design 1/2 by @martmull in https://github.com/twentyhq/twenty/pull/19735
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19754
  • fix: add missing LayoutRenderingProvider in SettingsApplicationCustomTab by @Lazare-42 in https://github.com/twentyhq/twenty/pull/19679
  • Support Select All for workflow manual triggers by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19734
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19758
  • Link command menu items to specific page layout by @bosiraphael in https://github.com/twentyhq/twenty/pull/19706
  • [run-instance-commands] Preserve fast slow sequentiality by @prastoin in https://github.com/twentyhq/twenty/pull/19757
  • Add search to Fields dropdown by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19750
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19762
  • Add test tab to tool step by @thomtrp in https://github.com/twentyhq/twenty/pull/19760
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19765
  • fix(server): make OAuth discovery and MCP auth metadata host-aware by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19755
  • chore(server): drop api-host branch in OAuth discovery by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19768
  • fix: replace slow deep-equal with fastDeepEqual to resolve CPU bottleneck by @charlesBochet in https://github.com/twentyhq/twenty/pull/19771
  • Fix MCP discovery: path-aware well-known URL and protocol version by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19766
  • Add workspace id in job logs by @thomtrp in https://github.com/twentyhq/twenty/pull/19764
  • Fix slow db query issue by @etiennejouan in https://github.com/twentyhq/twenty/pull/19770
  • upgrade:status command by @prastoin in https://github.com/twentyhq/twenty/pull/19584
  • Validate universalIdentifier uniqueness among application and its dependencies by @prastoin in https://github.com/twentyhq/twenty/pull/19767
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19782
  • Add search to add column dropdown by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19763
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19784
  • fix(server): workspace member permissions and profile onboarding by @ijreilly in https://github.com/twentyhq/twenty/pull/19786
  • Surface structured validation errors during application install by @charlesBochet in https://github.com/twentyhq/twenty/pull/19787
  • shouldIncludeRecordPageLayouts deprecation by @Weiko in https://github.com/twentyhq/twenty/pull/19774
  • chore: move pageLayoutWidget.conditionalAvailabilityExpression migration to 1.23 fast instance command by @charlesBochet in https://github.com/twentyhq/twenty/pull/19792
  • Fix AI chat dropzone persisting when dragging file out without dropping by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19794
  • Forbid other app role extension by @prastoin in https://github.com/twentyhq/twenty/pull/19783
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19795
  • Fix: aggregate Calculate not updating in dashboard Table widgets by @Weiko in https://github.com/twentyhq/twenty/pull/19796
  • chore: move TABLE_WIDGET view type migration to 1.23 fast instance command by @charlesBochet in https://github.com/twentyhq/twenty/pull/19797
  • Send Email Tool: Don't persist message on SMTP only connections by @neo773 in https://github.com/twentyhq/twenty/pull/19756
  • Skip backfill record page layouts for missing standard objects by @Weiko in https://github.com/twentyhq/twenty/pull/19799

New Contributors

  • @jeevan6996 made their first contribution in https://github.com/twentyhq/twenty/pull/19326
  • @aryanghugare made their first contribution in https://github.com/twentyhq/twenty/pull/19712
  • @Lazare-42 made their first contribution in https://github.com/twentyhq/twenty/pull/19679

Full Changelog: https://github.com/twentyhq/twenty/compare/v1.22.4...v1.23.0

v1.22.4 Breaking risk
Notable features
  • File attachment support in agent chat messaging
  • Rich-text field widget
  • SSE streaming support on POST /mcp (Phase 2)
Full changelog

What's Changed

  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19510
  • Fix AI chat threads query firing for users without AI permissions by @thomtrp in https://github.com/twentyhq/twenty/pull/19507
  • Fix rolesPermissions cache query cartesian product (62k → 162 rows) by @charlesBochet in https://github.com/twentyhq/twenty/pull/19511
  • Replace typeorm binary by database:migrate:generate by @prastoin in https://github.com/twentyhq/twenty/pull/19515
  • Build lambda error - catch user code compilation errors by @thomtrp in https://github.com/twentyhq/twenty/pull/19516
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19520
  • Fix system objects not appearing in sidebar View picker due to filtering mismatch by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19502
  • Fix/align microsoft calendar error handling by @neo773 in https://github.com/twentyhq/twenty/pull/19519
  • Add rich-text field widget by @Weiko in https://github.com/twentyhq/twenty/pull/19512
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19521
  • Add standard skills backfill and improve skill availability messaging by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19523
  • add workspaceId to indirect entities by @neo773 in https://github.com/twentyhq/twenty/pull/19522
  • Edit visibility restriction by @Devessier in https://github.com/twentyhq/twenty/pull/19499
  • Flatten AI tool call output structure by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19524
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19525
  • Fix pre post logic function not executed by @martmull in https://github.com/twentyhq/twenty/pull/19462
  • Add file attachment support to agent chat messaging by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19517
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19527
  • fix mcp streamable-http method handling by @channi23 in https://github.com/twentyhq/twenty/pull/19496
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19529
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19533
  • Remove DataSourceService and clean up datasource migration logic by @charlesBochet in https://github.com/twentyhq/twenty/pull/19532
  • Add SSE streaming support on POST /mcp (Phase 2) by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19528
  • feat: email attachments and open-in-app click action by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19485
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19537
  • Pre-sync only pre-install-logic-function by @martmull in https://github.com/twentyhq/twenty/pull/19534
  • Upgrade cli tool version by @martmull in https://github.com/twentyhq/twenty/pull/19538
  • [AI] Add group_by_* database tools and centralize groupBy validation by @ehconitin in https://github.com/twentyhq/twenty/pull/19406
  • Refactor command menu items deprecated code by @bosiraphael in https://github.com/twentyhq/twenty/pull/19508
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19548
  • halftone generator v1 + new 3d shapes effect start by @Bonapara in https://github.com/twentyhq/twenty/pull/19539
  • Skip email/calendar tab creation for custom object record page layouts by @Weiko in https://github.com/twentyhq/twenty/pull/19544
  • Upgrade command internal doc by @prastoin in https://github.com/twentyhq/twenty/pull/19541
  • Upgrade cli tool version in technical apps by @martmull in https://github.com/twentyhq/twenty/pull/19542
  • Object icon visual parity by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19374
  • Remove Favorite and FavoriteFolder from workspace schema by @charlesBochet in https://github.com/twentyhq/twenty/pull/19536
  • Workspace export command follow-up by @neo773 in https://github.com/twentyhq/twenty/pull/19549
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19551
  • Support junction relations in Field widget by @Devessier in https://github.com/twentyhq/twenty/pull/19518
  • Fix error handling in stream agent chat job by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19550
  • Optim - Increase connection idle timeout by @etiennejouan in https://github.com/twentyhq/twenty/pull/19553
  • Workflow - Avoid billing skipped steps by @thomtrp in https://github.com/twentyhq/twenty/pull/19547
  • fix: expand kanban column drop zone to full height by @JASSBR in https://github.com/twentyhq/twenty/pull/18897
  • Lambda build update instead of delete existing logic function while building by @prastoin in https://github.com/twentyhq/twenty/pull/19116
  • database:init:prod triggers instance slow command too by @prastoin in https://github.com/twentyhq/twenty/pull/19555
  • database:reset depends on database:init that runs slow instance commands by @prastoin in https://github.com/twentyhq/twenty/pull/19557
  • Fix server-validation ci pending instance command detection by @prastoin in https://github.com/twentyhq/twenty/pull/19558
  • Fix merge command being available in exclusion mode by @bosiraphael in https://github.com/twentyhq/twenty/pull/19546
  • Replace AGENT_CHAT_UNKNOWN_THREAD_ID with null for thread state by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19552
  • fix: side panel close animation cleanup not firing due to invalid CSS transition by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19556
  • Fix: Select next sidebar menu item after removing current item by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19505
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19569
  • Remove IS_USAGE_ANALYTICS_ENABLED feature flag by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19566
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19570
  • Use app's own OAuth credentials for CoreApiClient generation by @charlesBochet in https://github.com/twentyhq/twenty/pull/19563
  • Bump twenty-sdk, twenty-client-sdk, create-twenty-app to 1.22.0-canary.1 by @charlesBochet in https://github.com/twentyhq/twenty/pull/19580
  • halftone v2 by @Bonapara in https://github.com/twentyhq/twenty/pull/19573
  • Exchange clientSecret for tokens after app registration + bump canary by @charlesBochet in https://github.com/twentyhq/twenty/pull/19582
  • Improve NullCheckEnum filter descriptions with usage examples by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19581
  • Fix sdk-e2e-test: ensure DB is ready before server starts by @charlesBochet in https://github.com/twentyhq/twenty/pull/19583
  • Bump twenty-sdk, twenty-client-sdk, create-twenty-app to 1.22.0-canary.3 by @charlesBochet in https://github.com/twentyhq/twenty/pull/19587
  • Add app-path input to deploy and install composite actions by @charlesBochet in https://github.com/twentyhq/twenty/pull/19589
  • Improve sensitive config variable masking and editing UX by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19578
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19591
  • Convert AI chat state atoms to component family states by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19585
  • Add APPLICATION_LOG_DRIVER=CONSOLE to twenty-app-dev container by @charlesBochet in https://github.com/twentyhq/twenty/pull/19600
  • Fix syncApplication failing when navigation menu item child is listed before folder in manifest by @charlesBochet in https://github.com/twentyhq/twenty/pull/19599
  • Inline twenty-shared types in SDK declarations by @charlesBochet in https://github.com/twentyhq/twenty/pull/19605
  • Clear stale SDK config on uninstall and invalid client by @charlesBochet in https://github.com/twentyhq/twenty/pull/19608
  • small fixes on pricing by @Bonapara in https://github.com/twentyhq/twenty/pull/19603
  • Halftone studio v3 (glass effect) by @Bonapara in https://github.com/twentyhq/twenty/pull/19598
  • Add isUnique support for application-defined fields by @charlesBochet in https://github.com/twentyhq/twenty/pull/19609
  • Re-export missing types from SDK public API by @charlesBochet in https://github.com/twentyhq/twenty/pull/19610
  • Export field settings types from SDK public API by @charlesBochet in https://github.com/twentyhq/twenty/pull/19611
  • Fields widget draft view by @Weiko in https://github.com/twentyhq/twenty/pull/19562
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19612
  • fix: prevent image upload panel from being clipped in side panel by @bugisthegod in https://github.com/twentyhq/twenty/pull/19572
  • fix: prevent image upload panel from being clipped in side panel by @sanskar0627 in https://github.com/twentyhq/twenty/pull/19613
  • Add admin panel workspace detail page with chat viewer by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19579
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19621
  • Fix command FixMessageThreadViewAndLabelIdentifierCommand by @prastoin in https://github.com/twentyhq/twenty/pull/19622
  • Implement cross version upgrade by @prastoin in https://github.com/twentyhq/twenty/pull/19559
  • Fix e2e by @Devessier in https://github.com/twentyhq/twenty/pull/19639
  • Switch app test infra to globalSetup with appDevOnce by @charlesBochet in https://github.com/twentyhq/twenty/pull/19623
  • Fix design by @martmull in https://github.com/twentyhq/twenty/pull/19628
  • Fix installed app setting tab by @martmull in https://github.com/twentyhq/twenty/pull/19629
  • Rename standard and custom apps by @martmull in https://github.com/twentyhq/twenty/pull/19631
  • Disable permission tab when empty by @martmull in https://github.com/twentyhq/twenty/pull/19630
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19643
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19645
  • Implement full tab widget frontend by @Devessier in https://github.com/twentyhq/twenty/pull/19568
  • Document isAuthRequired: true instead of false by @martmull in https://github.com/twentyhq/twenty/pull/19641
  • Colliding subject field fix on messageThread command by @prastoin in https://github.com/twentyhq/twenty/pull/19637
  • Fix side panel close button title by @bosiraphael in https://github.com/twentyhq/twenty/pull/19638
  • Fix permission flag deletion validator by @martmull in https://github.com/twentyhq/twenty/pull/19636
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19646
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19647
  • Fixes on website by @Bonapara in https://github.com/twentyhq/twenty/pull/19625
  • Add per-workspace error handling to CronTriggerCronJob by @neo773 in https://github.com/twentyhq/twenty/pull/19640
  • More website updates. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19624
  • few fixes by @Bonapara in https://github.com/twentyhq/twenty/pull/19648
  • Move view field label identifier deletion validation into the cross entity validation by @prastoin in https://github.com/twentyhq/twenty/pull/19642
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19651
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19652
  • refactor messaging jobs by @neo773 in https://github.com/twentyhq/twenty/pull/19626
  • Prevent cross version upgrade mismatch in 1.22 by @prastoin in https://github.com/twentyhq/twenty/pull/19627
  • Fix merge with null value + reset data virtualization before init load by @thomtrp in https://github.com/twentyhq/twenty/pull/19633
  • Fix navbar folder not opening on page refresh when it has an active child item by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19619
  • Fix: Filter out deactivated objects from navigation sidebar by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/19620
  • Fix VariablePicker and Fullscreen Icon overlap in FormAdvancedTextFieldInput by @neo773 in https://github.com/twentyhq/twenty/pull/19614
  • Fix AddPermissionFlagRoleIdIndexFastInstanceCommand by @prastoin in https://github.com/twentyhq/twenty/pull/19654
  • Sync command menu with main context store by @bosiraphael in https://github.com/twentyhq/twenty/pull/19650
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19656
  • Add banner for not vetted apps by @martmull in https://github.com/twentyhq/twenty/pull/19655
  • i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19661
  • Remove app record if first install fails by @martmull in https://github.com/twentyhq/twenty/pull/19659
  • Remove orphaned workspaceId column from BillingSubscriptionItemEntity by @charlesBochet in https://github.com/twentyhq/twenty/pull/19660
  • Add ClickHouse-backed metered credit cap enforcement by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19586
  • Deprecate IS_RECORD_TABLE_WIDGET_ENABLED feature flag by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19662
  • Fix testimonials background, faq clickability and some case-studies page edits. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19657
  • Clean event creation exception by @thomtrp in https://github.com/twentyhq/twenty/pull/19561
  • fix: return 404 for deleted workspace webhook race by @hussainarslan in https://github.com/twentyhq/twenty/pull/19439
  • few website updates by @Bonapara in https://github.com/twentyhq/twenty/pull/19663
  • test: fix failing useColorScheme test and remove FIXME by @srijita2506 in https://github.com/twentyhq/twenty/pull/19593
  • Remove 'twenty-app' keyword by default by @martmull in https://github.com/twentyhq/twenty/pull/19669
  • Move backfill page layout to 1.23 by @prastoin in https://github.com/twentyhq/twenty/pull/19670
  • fix(api-key): batch role resolution with DataLoader to fix N+1 by @oniani1 in https://github.com/twentyhq/twenty/pull/19590
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19672
  • fix: edit button not coming up on avatar right after image upload by @amlannandy in https://github.com/twentyhq/twenty/pull/19596
  • Add gql operationName metadata in sentry by @etiennejouan in https://github.com/twentyhq/twenty/pull/19564
  • Fix upgrade commands discovery outside of cli by @prastoin in https://github.com/twentyhq/twenty/pull/19671
  • Fix Quick Lead command menu item not appearing by @bosiraphael in https://github.com/twentyhq/twenty/pull/19635
  • Fix view filter/sort deletion by @etiennejouan in https://github.com/twentyhq/twenty/pull/19567
  • Rpl various fixes by @Devessier in https://github.com/twentyhq/twenty/pull/19668
  • Move is active to fe by @Weiko in https://github.com/twentyhq/twenty/pull/19649
  • i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19677

New Contributors

  • @JASSBR made their first contribution in https://github.com/twentyhq/twenty/pull/18897
  • @sanskar0627 made their first contribution in https://github.com/twentyhq/twenty/pull/19613
  • @hussainarslan made their first contribution in https://github.com/twentyhq/twenty/pull/19439
  • @srijita2506 made their first contribution in https://github.com/twentyhq/twenty/pull/19593
  • @amlannandy made their first contribution in https://github.com/twentyhq/twenty/pull/19596

Full Changelog: https://github.com/twentyhq/twenty/compare/v1.21.0...v1.22.4

v1.21.0 Security relevant
⚠ Upgrade required
  • Run the 1.21 upgrade command to backfill datasource to the workspace table
  • Run the 1.21 messaging upgrade command for messaging migration cleanup
  • Run the 1.21 backfill-message-thread-subject command to create messageThread.subject field metadata and column
Breaking changes
  • messageFolder.parentFolderId migrated from UUID to externalId — may break integrations relying on UUID-based parent folder references
  • AI SDK replaced with GraphQL SSE subscription for message queuing — Apps SDK consumers must update accordingly
  • Direct execution feature flag removed — any configuration depending on it must be updated
Security fixes
  • Upgraded Nodemailer to address SMTP command injection vulnerability
  • Bumped handlebars to 4.7.9 to fix CVE-2026-33937
  • Fixed stored XSS via unsafe URL protocols in href attributes
Notable features
  • Email thread widget and inline reply composer with SendEmail mutation
  • Message compaction for AI chats
  • Generic web search driver abstraction with Exa support and billing
v1.20.0 New feature
Notable features
  • Resumable stream support for agent chat
  • Rich Text field as creatable type
  • Apollo Client v4 upgrade
v1.19.0 Security relevant
Security fixes
  • Hardened server-side input validation and authentication defaults
  • SSRF prevention for IMAP/SMTP/CalDAV
Notable features
  • Message folder association
  • Workspace member filters for actor fields
  • objectRecordCounts query endpoint
v1.18.0 Bug fix
Notable features
  • Token renewal deduplication
  • ServerBlockNoteEditor instance caching
  • File avatar migration
v1.17.0 Security relevant
Security fixes
  • SSRF protection added to webhook requests
Notable features
  • Prometheus exporter
  • Navbar customization
  • Junction toggle persistence
v1.16.0 New feature
Breaking changes
  • Removed sync-metadata feature flag
  • Removed IS_WORKSPACE_CREATION_V2_ENABLED feature flag
Notable features
  • CARD layout for Field widget
  • Dashboard color grouping by SELECT/MULTI_SELECT
  • Relation field sorting
v1.15.0 Breaking risk
Breaking changes
  • Removing remote integration feature
Security fixes
  • DoS vulnerability in query string parsing (qs arrayLimit bypass)
Notable features
  • Page layout widget validation
  • Dashboard update timestamp tracking
  • Workflow output improvements

Beta — feedback welcome: [email protected]