v2.0.0

twentyhq/twentyv2.0.0Apr 21, 2026by Weiko

AI Summary

This major release launches the new website, moves admin panel to a dedicated GraphQL endpoint, and standardizes AI acronym to "Ai". It also requires PKCE for OAuth clients and aligns OAuth discovery with MCP/RFC 9728 spec.

Key Highlights

  • New website launch with articles section
  • Admin panel moved to /admin-panel GraphQL endpoint
  • AI acronym standardized to "Ai" (PascalCase)
  • PKCE required for public OAuth clients
  • OAuth discovery aligned with MCP/RFC 9728

Breaking Changes

  • PKCE code_challenge required for public OAuth clients
  • AI terminology change to "Ai"

New Features

  • New website with articles
  • Admin panel GraphQL endpoint
  • PKCE OAuth requirement
  • MCP/RFC 9728 OAuth alignment
  • ViewSorts in app manifests
  • Hero 2.0 design

Full Release Notes

## 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