What's Changed
- fix: clear navigation stack immediately in goBackFromSidePanel by @bugisthegod in #19153
- Fix: composite update events not received by @thomtrp in #19053
- Add link to workspace members index view page from the settings by @Weiko in #19164
- i18n - translations by @github-actions[bot] in #19166
- Fix dropping workspace nav items at the bottom of the list by @abdulrahmancodes in #18989
- Add see records link to data model by @Weiko in #19163
- i18n - translations by @github-actions[bot] in #19168
- i18n - translations by @github-actions[bot] in #19169
- [Apps SDK] Fix rich app link in documentation by @ijreilly in #19007
- [AI] More tab new design by @ehconitin in #19165
- i18n - translations by @github-actions[bot] in #19171
- Fix sdk tests by @Devessier in #19172
- Fix navbar object color not updating immediately when changed in edit mode by @abdulrahmancodes in #19075
- Complete the structure for homepage in new website. by @mabdullahabaid in #19162
- Direct execution - Follow up by @etiennejouan in #19177
- Add 1-21 upgrade command to backfill datasource to workspace table by @charlesBochet in #19180
- Fallback to field metadata by @Devessier in #19131
- Add "search" to reserved metadata name keywords by @charlesBochet in #19181
- Replace twentycrm/twenty-postgres-spilo with official postgres:16 in CI by @charlesBochet in #19182
- Fix: Upgrade Nodemailer to address SMTP command injection vulnerability by @GabrielBischof in #19151
- Improve app errors logs at sync by @ijreilly in #19174
- Update documentation on how to upload a file by @BOHEUS in #19197
- i18n - docs translations by @github-actions[bot] in #19212
- Fix workflow date fields by @thomtrp in #19210
- [COMMAND MENU ITEMS] Resolve object metadata label in dynamic command menu item label by @bosiraphael in #19211
- Repair Edit Layout command menu item and add a button in settings to start edition too by @Devessier in #19208
- i18n - translations by @github-actions[bot] in #19214
- Field widget edition by @Devessier in #19209
- i18n - translations by @github-actions[bot] in #19215
- [COMMAND MENU ITEMS] Remove deprecated code by @bosiraphael in #19199
- i18n - translations by @github-actions[bot] in #19216
- i18n - docs translations by @github-actions[bot] in #19217
- Improve getting started doc by @martmull in #19138
- i18n - docs translations by @github-actions[bot] in #19226
- i18n - docs translations by @github-actions[bot] in #19227
- i18n - docs translations by @github-actions[bot] in #19228
- i18n - docs translations by @github-actions[bot] in #19229
- i18n - docs translations by @github-actions[bot] in #19234
- Add delete widget action in fields widget side panel by @Weiko in #19167
- i18n - translations by @github-actions[bot] in #19236
- feat: queue messages + replace AI SDK with GraphQL SSE subscription by @FelixMalfait in #19203
- i18n - translations by @github-actions[bot] in #19237
- fix read only text editor color by @ehconitin in #19223
- [AI] agent node prompt tab new design + refactor by @ehconitin in #19012
- i18n - docs translations by @github-actions[bot] in #19240
- i18n - translations by @github-actions[bot] in #19242
- Bump react-hotkeys-hook from 4.5.0 to 4.6.2 by @dependabot[bot] in #19231
- Fix front component not opening in side panel by @bosiraphael in #19238
- Bump qs from 6.14.2 to 6.15.0 by @dependabot[bot] in #19233
- Bump @storybook/react-vite from 10.2.13 to 10.3.3 by @dependabot[bot] in #19232
- Fix front component worker re-creation on every render by @bosiraphael in #19245
- Command to deduplicate command menu items by @bosiraphael in #19202
- i18n - translations by @github-actions[bot] in #19249
- Add workspace DDL lock env var and maintenance mode UI by @charlesBochet in #19130
- i18n - translations by @github-actions[bot] in #19250
- i18n - docs translations by @github-actions[bot] in #19251
- [AI] Unify code-interpreter streaming rendering and fix assistant width jitter by @ehconitin in #19235
- fix: make models.dev provider logos theme-aware by @ehconitin in #19225
- Complete sections of the new website. by @mabdullahabaid in #19239
- Seed Front Components by @Devessier in #19220
- Investigate memory leak by @etiennejouan in #19213
- Gql direct execution - Handle introspection queries by @etiennejouan in #19219
- Disable edition for record page layouts disabled in the side panel by @Devessier in #19248
- Add missing index on viewField.viewFieldGroupId by @charlesBochet in #19253
- fix: harden token renewal and soften refresh token revocation by @FelixMalfait in #19175
- i18n - docs translations by @github-actions[bot] in #19257
- Fix maintenance mode banner button color, timezone and date picker UX by @charlesBochet in #19255
- i18n - translations by @github-actions[bot] in #19263
- Prevent hovered tab to overflow by @Devessier in #19259
- Fix field permission validation rejecting undefined optional fields by @Weiko in #19243
- Cleaning
UpgradeCommandcode flow by @prastoin in #19241 - [AI] Improve tools tab by @ehconitin in #19221
- fix workflow node by @ehconitin in #19262
- i18n - translations by @github-actions[bot] in #19266
- Add datasource migration and connected account feature flag by @charlesBochet in #19268
- Interactive home visual for website. by @mabdullahabaid in #19261
- [CommandMenu] Disable record selection dropdown on record pages in command menu editor by @ehconitin in #19264
- Disable going to settings in layout edit mode by @Devessier in #19265
- Fix insert conflict between field permission and RLS by @Weiko in #19244
- Add new workspace feature flag fix by @charlesBochet in #19270
- Add is active to overridable entities and deactivation logic for page layouts by @Weiko in #19200
- feat: add message compaction for AI chats by @abdulrahmancodes in #19205
- Fixes: relation settings design + workflow input border by @thomtrp in #19269
- On workspace creation generate sdk client through a job by @prastoin in #19271
- Add AI as a public feature flag in the Lab by @FelixMalfait in #19277
- Fix create e2e app ci set version flakiness by @prastoin in #19278
- Local driver layer resolution wipe partial local layers relicas by @prastoin in #19267
- Remove more button in edit mode by @bosiraphael in #19281
- Sync record selection with the edit mode by @bosiraphael in #19276
- Remove try catch from generate sdk client job by @prastoin in #19279
- fix: prepend UTF-8 BOM to fix non-Latin characters in csv by @bugisthegod in #19246
- [Apps] Fix - app-synced object should be searchable by @ijreilly in #19206
- i18n - translations by @github-actions[bot] in #19285
- polishing next home hero visual by @Bonapara in #19284
- fix: bump handlebars to 4.7.9 (CVE-2026-33937) by @BGebken in #19288
- chore: sync AI model catalog from models.dev by @github-actions[bot] in #19298
- Refined demo workspace creation skill (rebased, review fixes) by @FelixMalfait in #19274
- fix: create company workflow (use psl for domain suffix) by @neo773 in #19289
- fix: CalDAV sync broken by SSRF hostname replacement by @neo773 in #19291
- [AI] Fix record chips not rendering inside markdown tables in AI chat by @ehconitin in #19260
- Fix search fallback command menu item by @bosiraphael in #19304
- i18n - translations by @github-actions[bot] in #19305
- Improve apps by @martmull in #19256
- Dynamic icon for command menu items by @bosiraphael in #19307
- Read cache value for total event stream count by @thomtrp in #19313
- i18n - docs translations by @github-actions[bot] in #19314
- Fix delete/restore/destroy commands unavailable in select-all mode by @bosiraphael in #19311
- Add redis cache for cron triggers by @thomtrp in #19306
- Remove direct execution feature flag - WIP by @etiennejouan in #19254
- Disable setting tab when empty by @martmull in #19315
- i18n - translations by @github-actions[bot] in #19317
- i18n - translations by @github-actions[bot] in #19318
- Remove connected account upgrade command by @neo773 in #19316
- i18n - docs translations by @github-actions[bot] in #19320
- Fix stored XSS via unsafe URL protocols in href attributes by @FelixMalfait in #19282
- i18n - translations by @github-actions[bot] in #19329
- Publish 0.8.0 by @martmull in #19323
- Add npm packages app settings list by @martmull in #19324
- i18n - translations by @github-actions[bot] in #19330
- Clean up tool output architecture: remove wrappers, enforce ToolOutput everywhere by @FelixMalfait in #19321
- chore: sync AI model catalog from models.dev by @github-actions[bot] in #19339
- Fix zh-CN sidebar translations in minimalMetadata API by @yukuotec in #19342
- fix: replace npm pkg set with node script in set-local-version target by @charlesBochet in #19344
- Fix dark mode text color on permissions tab empty stat (#19336) by @neilk17 in #19340
- Fix readonly date still editable by @venom-10 in #19334
- Refactor typeorm migration lifecycle and generation by @prastoin in #19275
- Fixes and updates to the website. by @mabdullahabaid in #19350
- Remove connected account feature flag by @neo773 in #19286
- i18n - translations by @github-actions[bot] in #19352
- Migrate messageFolder parentFolderId from UUID to externalId by @neo773 in #19348
- Update last interaction app by @BOHEUS in #19332
- few website improvements by @Bonapara in #19353
- Add email thread widget and message thread record page layout by @FelixMalfait in #19351
- feat: generic web search driver abstraction with Exa support and billing by @FelixMalfait in #19341
- i18n - translations by @github-actions[bot] in #19354
- i18n - translations by @github-actions[bot] in #19355
- feat: Send email from UI — inline reply composer & SendEmail mutation by @FelixMalfait in #19363
- i18n - translations by @github-actions[bot] in #19370
- Salesforce section by @Bonapara in #19366
- fix: minimatch related dependabot alerts. by @mabdullahabaid in #19357
- fix: SVGO DoS through entity expansion in DOCTYPE by @mabdullahabaid in #19359
- fix: node-tar symlink path traversal via drive-relative linkpath by @mabdullahabaid in #19360
- fix: use AND instead of OR in neq filter for null-equivalent values by @oniani1 in #19071
- fix: unify settings layout prep when entering settings from outside by @FelixMalfait in #19373
- fix: bypass permission checks in 1.21 backfill-message-thread-subject command by @FelixMalfait in #19375
- chore: remove registeredCoreMigration by @prastoin in #19376
- Remove hover and scroll transitions from website. by @mabdullahabaid in #19369
- Fix s3 driver empty objects by @prastoin in #19361
- messaging post migration cleanup by @neo773 in #19365
- Instance commands and
upgrade_migrationstable by @prastoin in #19356 - Reset Fields widget implementation by @Weiko in #19283
- i18n - translations by @github-actions[bot] in #19382
- fix: prevent NaN in health indicator calculations by @mango766 in #19378
- Styled illustrations for Hero, ThreeCards, Helped sections. by @mabdullahabaid in #19387
- Direct execution - Remove conditional schema by @etiennejouan in #19383
- fix(messaging): split thread create/update statements and stop clobbering accumulator by @FelixMalfait in #19388
- Add messaging upgrade command 1 21 by @neo773 in #19389
- Fix - Update package.json by @etiennejouan in #19390
- [AI] Improve AI System Prompt page layout and token display by @ehconitin in #19391
- i18n - translations by @github-actions[bot] in #19395
- Workspace commands writes in
upgradeMigrationby @prastoin in #19379 - Imap-smtp-caldav form fixes by @neo773 in #19392
- Enterprise plan required for private app sharing by @martmull in #19393
- i18n - translations by @github-actions[bot] in #19398
- i18n - docs translations by @github-actions[bot] in #19399
- fix(messaging): create messageThread.subject field metadata + column in 1-21 backfill by @FelixMalfait in #19394
- Pagelayout backfill command standard app by @Weiko in #19380
- App feedbacks fix option id required in apps by @martmull in #19386
- i18n - translations by @github-actions[bot] in #19403
- Improve workflow crons efficiency by @thomtrp in #19381
- Add Manage and Placement sections in widget side panel page for record page layouts by @Devessier in #19310
- i18n - translations by @github-actions[bot] in #19404
- Style the remaining website visuals. by @mabdullahabaid in #19401
- i18n - docs translations by @github-actions[bot] in #19405
- Refactor navigation commands to use NAVIGATION engine key with payload by @bosiraphael in #19303
- improve pricing card header [website] by @Bonapara in #19385
- Fix
yarn-install-lambdaandlambda-buildtargetby @prastoin in #19407 - docs: remove reference to sync metadata by @neo773 in #19400
- fix TextVariableEditor layout and add support for multi line paste by @neo773 in #18721
- [COMMAND MENU ITEMS] Add navigate to settings pages commands by @bosiraphael in #19408
- i18n - docs translations by @github-actions[bot] in #19410
- Workspace command decorators by @prastoin in #19397
- Unselect widget when exiting layout customization mode by @Devessier in #19411
- Fix messageThread view and labelIdentifier on legacy workspaces by @FelixMalfait in #19414
- App feedbacks front by @martmull in #19416
- Add color to object icon picker in data model by @abdulrahmancodes in #19368
- i18n - translations by @github-actions[bot] in #19421
- feat(sdk): use config file as single source of truth, remove env var fallbacks by @charlesBochet in #19409
- App feedbacks front by @martmull in #19417
- fix: IMAP skip no-select flag folders properly by @neo773 in #19402
- i18n - translations by @github-actions[bot] in #19424
- i18n - translations by @github-actions[bot] in #19425
- feat: Add support for CLF currency code by @amantinetti in #19420
- chore: sync AI model catalog from models.dev by @github-actions[bot] in #19426
- Add twenty sync command by @martmull in #19413
- i18n - docs translations by @github-actions[bot] in #19437
- Fix tab selection in layout edit mode by @Devessier in #19436
- Fix last widget bottom bar inconsistencies by @Devessier in #19440
- Add a lock on function creation by @thomtrp in #19428
- Fix overridable entities logic for SSE by @Weiko in #19433
- fix(ai): use @ai-sdk/openai-compatible for third-party providers by @bugisthegod in #19438
- Slow instance commands by @prastoin in #19431
- chore: add CD workflow template and point spawn action to main by @charlesBochet in #19430
- i18n - docs translations by @github-actions[bot] in #19446
- [COMMAND MENU ITEMS] Create union type for command menu item payload by @bosiraphael in #19432
- i18n - translations by @github-actions[bot] in #19451
- Refactor the website hero into an interactive multi-view illustration by @Bonapara in #19429
- Isolate illustrations from sections to style them independently. by @mabdullahabaid in #19447
- chore: replace spawn-twenty-app-dev-test with native postgres/redis services by @charlesBochet in #19449
- cleaning - remove logs by @etiennejouan in #19445
- [COMMAND MENU ITEMS] Remove object metadata name from search commands by @bosiraphael in #19435
- chore: centralize deploy/install CD actions in twentyhq/twenty by @charlesBochet in #19454
- Store upgrade commands error message by @prastoin in #19443
- Fix: Staled data on record table after merging records by @thomtrp in #19457
- Fix workspace command name inserted in db by @prastoin in #19458
- Fix documentation about importing dates by @BOHEUS in #19434
- introduce MESSAGING_MESSAGES_GET_BATCH_SIZE as config variable by @neo773 in #19455
- fix(ai-chat): preload web_search action tool when driver is enabled by @FelixMalfait in #19461
- [COMMAND MENU ITEMS] Disable hide label toggle for items with no short label by @bosiraphael in #19464
- Reset Tab Page Layout by @Weiko in #19453
- i18n - docs translations by @github-actions[bot] in #19466
- i18n - translations by @github-actions[bot] in #19467
- Fix AI model registry staleness on self-hosted instances by @FelixMalfait in #19427
- fix(ai-models): use AWS provider chain for Bedrock IRSA auth by @FelixMalfait in #19470
- chore: sync AI model catalog from models.dev by @github-actions[bot] in #19478
- Bump graphql-sse from 2.5.4 to 2.6.0 by @dependabot[bot] in #19477
- Bump tsdav from 2.1.5 to 2.1.8 by @dependabot[bot] in #19476
- Bump @babel/preset-react from 7.26.3 to 7.28.5 by @dependabot[bot] in #19475
- Refactor: Extract EventRow shared types and styles to EventRowBase by @FelixMalfait in #19480
- [COMMAND MENU ITEMS] Sync object metadata with navigation command menu items by @bosiraphael in #19456
- Enqueue a snack bar on merge preview errors by @thomtrp in #19465
- Fix role synchronisation by @martmull in #19469
- Fix install and deploy commands by @martmull in #19481
- i18n - translations by @github-actions[bot] in #19488
- i18n - docs translations by @github-actions[bot] in #19490
- Flush Redis between server runs in breaking changes CI by @FelixMalfait in #19491
- [COMMAND MENU ITEMS] Add dynamic label and icon to command menu navigation items by @bosiraphael in #19452
- Resolve frontComponent relation on command menu items via selector by @bosiraphael in #19493
- Move page layout backfill command out of 1-21 release by @Weiko in #19483
- messaging fix relaunch cron jobs by @neo773 in #19492
- i18n - docs translations by @github-actions[bot] in #19497
- More website fixes. by @mabdullahabaid in #19489
- Record table widget - Follow up by @etiennejouan in #19479
- i18n - translations by @github-actions[bot] in #19500
- reorganize standard page layouts by @Weiko in #19482
- fix: SendEmail workflow ConnectedAccount query by @neo773 in #19484
- Fix moving a widget to another tab by @Devessier in #19450
- Prepare 1.21 by @prastoin in #19501
- Fix Date/DateTime/Relation field forms by @etiennejouan in #19463
- [AI] new model tab design by @ehconitin in #19384
- i18n - translations by @github-actions[bot] in #19504
- i18n - translations by @github-actions[bot] in #19506
- Cleaning - Remove logs by @etiennejouan in #19498
- chore: replace glb files and lottie with optimized variants by @mabdullahabaid in #19503
- Add application-logs module with driver pattern for logic function log persistence by @charlesBochet in #19486
- i18n - docs translations by @github-actions[bot] in #19509
New Contributors
- @GabrielBischof made their first contribution in #19151
- @BGebken made their first contribution in #19288
- @yukuotec made their first contribution in #19342
- @neilk17 made their first contribution in #19340
- @venom-10 made their first contribution in #19334
- @mango766 made their first contribution in #19378
- @amantinetti made their first contribution in #19420
Full Changelog: v1.20.0...v1.21.0