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