Release history
twenty releases
Building a modern alternative to Salesforce, powered by the community.
All releases
18 shown
Front fix, ConnectedAccount encryption, JWT rotation
Server, twenty‑server, messaging, website, CI, billing
- 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-frontbuild 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
- [breaking, deploy server first] fix(ai-chat): persist providerExecuted flag on tool parts
- 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-servertarget 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
- 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
- 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
- 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 --lightactually 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
- 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
- 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.0by @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]Preservefastslowsequentiality 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-equalwithfastDeepEqualto 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:statuscommand by @prastoin in https://github.com/twentyhq/twenty/pull/19584- Validate
universalIdentifieruniqueness 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
- 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:generateby @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:prodtriggers instance slow command too by @prastoin in https://github.com/twentyhq/twenty/pull/19555database:resetdepends ondatabase:initthat 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
FixMessageThreadViewAndLabelIdentifierCommandby @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
subjectfield fix onmessageThreadcommand 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.22by @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
AddPermissionFlagRoleIdIndexFastInstanceCommandby @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.23by @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
- 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
- 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
- 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
- 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
- Resumable stream support for agent chat
- Rich Text field as creatable type
- Apollo Client v4 upgrade
- Hardened server-side input validation and authentication defaults
- SSRF prevention for IMAP/SMTP/CalDAV
- Message folder association
- Workspace member filters for actor fields
- objectRecordCounts query endpoint
- Token renewal deduplication
- ServerBlockNoteEditor instance caching
- File avatar migration
- SSRF protection added to webhook requests
- Prometheus exporter
- Navbar customization
- Junction toggle persistence
- Removed sync-metadata feature flag
- Removed IS_WORKSPACE_CREATION_V2_ENABLED feature flag
- CARD layout for Field widget
- Dashboard color grouping by SELECT/MULTI_SELECT
- Relation field sorting
- Removing remote integration feature
- DoS vulnerability in query string parsing (qs arrayLimit bypass)
- Page layout widget validation
- Dashboard update timestamp tracking
- Workflow output improvements