What's Changed
- [AI] Add thread actions, filters, and archive support by @ehconitin in #20068
- i18n - translations by @github-actions[bot] in #20164
- i18n - docs translations by @github-actions[bot] in #20166
- Dispatch root package.json hoisted deps and devDeps by @prastoin in #20140
- Bump 2.3.0 by @Weiko in #20169
- fix: register all cron jobs in twenty-app-dev image by @FelixMalfait in #20167
- fix: disable sync on seeded message and calendar channels by @FelixMalfait in #20168
- chore: sync AI model catalog from models.dev by @github-actions[bot] in #20178
- [AI] Prefer batch tools in system prompts by @ehconitin in #20173
- fix(code-interpreter): three correctness fixes for the TwentyMCP helper + tool output shape by @krzysztof7363 in #20103
- test(upgrade): assert sequence-runner error structurally instead of snapshot by @FelixMalfait in #20213
- fix(shared): @types/lodash.camelcase for Docker CD by @charlesBochet in #20219
- fix(shared): add uuid, @types/uuid, @types/qs for Docker CD by @charlesBochet in #20222
- Twenty email deps by @prastoin in #20223
- revert: Sentry #20064 + @sentry 10.27 (prod bisect) by @charlesBochet in #20221
- feat(apps): generic OAuth provider support for app SDK by @FelixMalfait in #20181
- i18n - translations by @github-actions[bot] in #20226
- feat(server): OTLP metrics export logs for troubleshooting by @charlesBochet in #20228
- Fix record table dashboard save by @abdulrahmancodes in #20202
- feat(server): add heartbeat gauge + first-export-attempt log for OTLP by @charlesBochet in #20230
- [Website] Implement translations. by @mabdullahabaid in #20171
- Fix front unit test on main by @prastoin in #20233
- fix(server): deduplicate @opentelemetry/api to fix NoopMeterProvider by @charlesBochet in #20231
- Fix empty record page on system objects for non-English workspace members by @Weiko in #20235
- Add twenty version validation by @martmull in #20227
- i18n - translations by @github-actions[bot] in #20236
[DockerFile]Optimizetwenty-serverdeps and build by @prastoin in #20132- AI - Add azure foundry provider by @etiennejouan in #20170
- i18n - docs translations by @github-actions[bot] in #20238
- Add server upgrade status on admin panel by @ijreilly in #20107
- fix: handle missing file entity in avatar deletion listener by @aayushbaluni in #20192
- Return false instead of throwing when event stream does not exist by @thomtrp in #20165
- fix: show active advanced filter count badge in dropdown button by @wadeKeith in #20229
- i18n - translations by @github-actions[bot] in #20240
- Improve twenty deploy cli logs by @martmull in #20237
- Add check for manifest uuid version by @martmull in #20239
- fix rest filter default conjunction detection by @channi23 in #20133
- i18n - docs translations by @github-actions[bot] in #20243
- i18n - docs translations by @github-actions[bot] in #20248
- Fix/workspace member avatars 20193 by @Pantkartik in #20200
- New name not appearing when renaming "Stages" in data-model settings by @Bonapara in #20246
- fix: Invalid configuration instead of related notes by @LuckyPigDev in #20251
- feat: expose upgrade status as Prometheus gauge metrics by @charlesBochet in #20262
- fix: show empty cell instead of 'Not shared' for soft-deleted related records by @charlesBochet in #20260
- Remove twenty-website package. by @mabdullahabaid in #20270
- Make ConnectionProvider a true SyncableEntity by @FelixMalfait in #20232
- i18n - translations by @github-actions[bot] in #20278
- fix: show AI chat filter button only on hover in navigation drawer by @ehconitin in #20274
- fix smtp outbound persist message by @neo773 in #20276
- fix: don't mark IMAP channel as failed on transient server errors by @neo773 in #20273
- docs: align example name to my-twenty-app across quickstarts by @FelixMalfait in #20279
[Headless Front component]Support multiple selected record by @prastoin in #20268- ci: add ci-website workflow for twenty-website-new by @charlesBochet in #20281
- fix: show 'Not shared' for RLS-hidden morph relation records by @charlesBochet in #20272
- feat(apps): split AI tool and workflow action triggers in LogicFunction manifest by @FelixMalfait in #20208
- i18n - translations by @github-actions[bot] in #20284
- fix: show pinned commands in side panel search results by @abdulrahmancodes in #20265
- Bump twenty current version by @prastoin in #20241
- feat(sdk): move catalog-sync under server group by @FelixMalfait in #20282
- docs: restructure Getting Started around three explicit phases by @FelixMalfait in #20283
- feat(sdk): give Docker-not-running error an actionable next step by @FelixMalfait in #20280
- remove direction from messages by @neo773 in #20026
- fix(website-new): inherit test target so twenty-shared builds in CI by @charlesBochet in #20285
- i18n - translations by @github-actions[bot] in #20286
- CalDAV refactor by @neo773 in #20180
- feat(sdk): add defineCommandMenuItem by @FelixMalfait in #20256
- i18n - translations by @github-actions[bot] in #20289
- i18n - translations by @github-actions[bot] in #20290
- Fix stale address coordinates after clearing autofill by @abdulrahmancodes in #20264
- Fix root monorepo package json focused installation by @prastoin in #20292
- i18n - docs translations by @github-actions[bot] in #20297
- feat: improve SEO foundations and canonicalise locale URLs while adding language-switcher in Footer as planned by @mabdullahabaid in #20294
- Improve app gallery image sizing (no cropping) by @abdulrahmancodes in #20287
- i18n - website translations by @github-actions[bot] in #20301
- Fix unreliable SSE event stream updates during workflow form transitions by @thomtrp in #20242
- Fix unclear metadata validation errors by @abdulrahmancodes in #20234
- i18n - translations by @github-actions[bot] in #20302
- i18n - docs translations by @github-actions[bot] in #20303
- [Dashboards] [Warning] Remove gauge chart support and delete existing widgets by @ehconitin in #20172
- fix(server): handle Redis idle disconnects in session-store client by @sibelius in #20143
- 20215 convert application variable to a syncable entity by @martmull in #20269
- i18n - translations by @github-actions[bot] in #20313
- fix(front): resolve labelIdentifier per target for morph relation depth=1 by @charlesBochet in #20305
- Nest command unhandled error process exit 1 by @prastoin in #20312
- Replace sign-in mocked metadata with hardcoded BackgroundMock by @charlesBochet in #20308
- i18n - translations by @github-actions[bot] in #20317
- Fix migration by @martmull in #20321
- fix: server.fs.deny bypassed with queries by @mabdullahabaid in #20323
- fix(server): bypass workspace cache in onboardingStatus resolver by @charlesBochet in #20322
- fix(front): defer default home redirect when object metadata is not loaded by @charlesBochet in #20330
- chore(deps): bump papaparse from 5.5.2 to 5.5.3 by @dependabot[bot] in #20335
- chore(deps-dev): bump verdaccio from 6.3.1 to 6.5.2 by @dependabot[bot] in #20334
- refactor: stop reading joinColumnName from relation field settings by @charlesBochet in #20304
- [Website] Add articles section with index and article pages, matching customers page design by @mabdullahabaid in #20315
- Fix NestJS CLI pin chokidar to v3 by @neo773 in #20316
- Remove broken total count from workflow version by @thomtrp in #20324
- Add Workspace Created and Payment Received ClickHouse events by @thomtrp in #20277
- Add isConfigured to application registration in App admin panel by @martmull in #20326
- i18n - website translations by @github-actions[bot] in #20337
- Ai provider - fix by @etiennejouan in #20318
- i18n - translations by @github-actions[bot] in #20338
- i18n - translations by @github-actions[bot] in #20340
New Contributors
- @krzysztof7363 made their first contribution in #20103
- @aayushbaluni made their first contribution in #20192
- @wadeKeith made their first contribution in #20229
- @Pantkartik made their first contribution in #20200
- @LuckyPigDev made their first contribution in #20251
- @sibelius made their first contribution in #20143
Full Changelog: v2.2.0...v2.3.0