What's Changed
- Add a CARD layout to the Field widget by @Devessier in #16995
- Remove
sync-metadataandIS_WORKSPACE_CREATION_V2_ENABLEDfeature flag by @prastoin in #16997 - i18n - translations by @github-actions[bot] in #17024
- i18n - translations by @github-actions[bot] in #17025
- i18n - docs translations by @github-actions[bot] in #17026
- Migrate
MicrosoftAPIRefreshAccessTokenServiceto@azure/msal-nodeby @neo773 in #16954 - [Dashboards] use select option colors when grouping by SELECT/MULTI_SELECT fields by @ehconitin in #16973
- i18n - docs translations by @github-actions[bot] in #17029
- Use canvas layout for all advanced RPL widgets by @Devessier in #17028
- feat: improve the design of the fields widget by @mabdullahabaid in #17003
- i18n - translations by @github-actions[bot] in #17037
- Improve application ast by @martmull in #17016
- Made the code more resilient to stale value prop in date filter by @lucasbordeau in #17038
- Cascade delete Task targets when tasks deleted - logic + migration command by @etiennejouan in #17019
- i18n - translations by @github-actions[bot] in #17048
- Improve application ast 2 by @martmull in #17045
- Fix MS Office preview for private/local URLs by @FelixMalfait in #17044
- i18n - translations by @github-actions[bot] in #17050
- i18n - docs translations by @github-actions[bot] in #17036
- Implement hide empty groups for grouped table view by @abdulrahmancodes in #16494
- Generate Field widgets for relations by @Devessier in #17047
- Fix messaging 404 handling by @neo773 in #17041
- Set canonical url for docs by @FelixMalfait in #17052
- feat: drop empty states and instead render nothing by @Devessier in #17049
- i18n - translations by @github-actions[bot] in #17057
- If else node followup changes by @abdulrahmancodes in #16974
- Center lock icon when widget isn't accessible by @Devessier in #17055
- Fix cleaning command by @etiennejouan in #17040
- fix onboarding for messaging by @neo773 in #16729
- i18n - docs translations by @github-actions[bot] in #17059
- feat: add sorting on relation fields (Many-to-One) by @FelixMalfait in #17021
- feat: add case-insensitive sorting for text fields by @FelixMalfait in #17023
- i18n - docs translations by @github-actions[bot] in #17064
- Fix sort direction toggle when clicking on existing sort by @gayanMatch in #17046
- IMAP edge cases by @neo773 in #17065
- [SSE] Add backend for SSE subscriptions by @thomtrp in #17022
- Improve application ast 3 by @martmull in #17061
- fix(search): add support for searching by additional emails, phones, and secondary links by @salmonumbrella in #17034
- Fix orderBy columns missing from SELECT in DISTINCT subquery by @FelixMalfait in #17079
- feat: upgrade Storybook to version 9 by @mabdullahabaid in #17077
- i18n - docs translations by @github-actions[bot] in #17070
- Bump react-router-dom from 6.26.0 to 6.30.3 by @dependabot[bot] in #17086
- Bump @typescript-eslint/eslint-plugin from 8.39.0 to 8.52.0 by @dependabot[bot] in #17087
- fix: hide "Add new" button for workspace member relations by @AyeshaWaseemAhmad in #17080
- dashboard workspace standard seeds by @ehconitin in #16962
- Identify standard field do deploy until
IS_WORKSPACE_CREATION_V2_ENABLEDis enabled in prod by @prastoin in #16981 - fix: removed scrollbar, elipsified overflow text supporting tooltip by @carbonFibreCode in #17078
- Fix logs by @martmull in #17090
- Enable editing for calendar event custom fields by @salmonumbrella in #17063
- Add missing RPL configuration for note tabs by @Devessier in #17092
- Common api - chores by @etiennejouan in #17051
- Refactored table virtualization real index state by @lucasbordeau in #17074
- Add error boundary on widget renderer and minor widget seed fix by @ehconitin in #17058
- i18n - translations by @github-actions[bot] in #17094
[REQUIRES_FIELDS_CACHE_FLUSH]Fix field entity to flat field transpiler by @prastoin in #17096- [Extensibility] Support relation fields by @ijreilly in #17056
- [DASHBOARDS] Allow dashboards to be restored by @bosiraphael in #17042
- i18n - translations by @github-actions[bot] in #17097
- RLS FE implementation by @Weiko in #17062
- fix: use theme-aware background color for billing credits progress bar by @Bonapara in #17103
- i18n - translations by @github-actions[bot] in #17106
- Fix agent app setting section by @martmull in #17105
- Fix settings data model tables to take full width and align columns by @Bonapara in #17104
- Implemented SSE subscription mechanism on the frontend by @lucasbordeau in #17017
- Identify standard objects by @prastoin in #17091
- i18n - translations by @github-actions[bot] in #17108
- Make illustration icons color responsive using accent theme colors by @Bonapara in #17107
- feat: upgrade to Storybook version 10 by @mabdullahabaid in #17110
- Improve Japanese translations by @johnnyshields in #16979
- fix rich text widget's side menu handle by @ehconitin in #17113
- i18n - translations by @github-actions[bot] in #17119
- [Dashboards] add primary axis select gap fill for bar and line charts by @ehconitin in #17098
- Allow
isUniquemutation on standard field by @prastoin in #17120 - Allow app to extend object by @martmull in #17116
- i18n - translations by @github-actions[bot] in #17125
- Invalidate legacy cache after flats by @prastoin in #17126
- Hardcode workflow objects and dashboards to be last in the navigation drawer by @bosiraphael in #17123
- 17042 followups by @bosiraphael in #17122
- refactor google refresh token service error handling by @neo773 in #17127
- New article to detail how to attach pdf files to a given record by @StephanieJoly4 in #17128
- feat(auth): Show Last used label on SSO sign-in method by @ManikanthMartha in #17093
- i18n - translations by @github-actions[bot] in #17132
- i18n - docs translations by @github-actions[bot] in #17134
- i18n - docs translations by @github-actions[bot] in #17142
- fix: e2e login test - handle optional Continue with Email button by @FelixMalfait in #17146
- Fix dev seed page layout cache invalidation by @prastoin in #17141
- i18n - docs translations by @github-actions[bot] in #17149
- Move query matching before publication by @thomtrp in #17121
- fix: AWS SDK for JavaScript v3 adopted defense in depth enhancement for region parameter value by @mabdullahabaid in #17148
- chore: cleanup repository root structure by @FelixMalfait in #17147
- Set back amount micros by @thomtrp in #17124
- IMAP Error handling enhancement and fix revoked authentication edge case by @neo773 in #17133
- Fixes two critical bugs for DATE type by @lucasbordeau in #17143
- Updating the user guide to reflect available features by @StephanieJoly4 in #17139
- Identify standard view fields and views by @prastoin in #17118
- Clean soft deleted suspended workspace command and
ignore-grace-periodflag by @prastoin in #17144 - [Dashboards] disable chart drill-down and pointer cursor for relation group-by fields by @ehconitin in #17150
- Add feature flag for sse by @thomtrp in #17152
- Filter valid fields in record steps by @thomtrp in #17145
- [Apps] Small improvements by @ijreilly in #17129
- Throw 400 for webhook triggering deleted workspaces + enqueue workflows by batches by @thomtrp in #17154
- Fix universalIdentifier ignored when creating object by @martmull in #17158
- Improve view identification command perfs and reliability by @prastoin in #17161
- [Dashboards] [Performance] Bar chart re renders fix by @ehconitin in #17162
- [Dashboard] Add chart settings/config documentation by @ehconitin in #17053
- fix widget skeleton loader not being centered by @ehconitin in #17157
- Create syncable entity cursor rule by @prastoin in #17165
- [Dashboards] restrict dashboard actions based on object permissions by @ehconitin in #17169
- fix: show save button when creating a new role by @FelixMalfait in #17163
- [Dashboards] fix widget type switching when navigating back in command menu by @ehconitin in #17166
- Refactored object operation dispatch for SSE by @lucasbordeau in #17174
- Fix insert new record with RLS by @Weiko in #17164
- Add get current workflow version tool by @thomtrp in #17177
- [Dashboards] [ai] update dashboard tools schema and skill with correct config field names by @ehconitin in #17180
- Add forwardedRequestHeaders in routeTriggers by @martmull in #17151
- Improve view field identification command perfs and reliability by @prastoin in #17168
- Remove
delete-fieldanddelete-objectaggregators by @prastoin in #17183 - [Dashboards] [ai] expand widget schemas with subfield grouping, color, and styling options by @ehconitin in #17185
- feat(serverless): add basic sandbox isolation and flexible driver options by @FelixMalfait in #17176
- fix: add base_path to Crowdin configs for correct path resolution by @FelixMalfait in #17196
- File v2 - update core.file table by @etiennejouan in #17172
- i18n - translations by @github-actions[bot] in #17198
- Front Extensibility: Introduce Front Component Entity by @charlesBochet in #17175
- i18n - translations by @github-actions[bot] in #17200
- Various layout fixes so that RPL v1 look the same as production version by @Devessier in #17195
- i18n - docs translations by @github-actions[bot] in #17199
- Add command menu item entity by @abdulrahmancodes in #17181
- i18n - translations by @github-actions[bot] in #17206
- i18n - docs translations by @github-actions[bot] in #17204
- Move tools/eslint-rules to packages/twenty-eslint-rules by @FelixMalfait in #17203
- Replace test-runner with vitest for storybook by @mabdullahabaid in #17187
- Identify view filter by @prastoin in #17197
- Implemented SSE update across main front components by @lucasbordeau in #17205
- Improve cleaning job by @prastoin in #17208
- Identify agent by @prastoin in #17221
- [Apps] App misc - fixes + settings permissions for apps + uploadFile by @ijreilly in #17167
- i18n - translations by @github-actions[bot] in #17224
- Twenty SDK iteration by @charlesBochet in #17223
- Improve image upload error handling and validation by @Angel98518 in #17188
- Add "See all" widget action for ONE_TO_MANY relation fields by @Copilot in #17192
- Rework folder structure by @charlesBochet in #17229
- Bump eslint-config-prettier from 9.1.0 to 9.1.2 by @dependabot[bot] in #17227
- Bump json-2-csv from 5.5.5 to 5.5.10 by @dependabot[bot] in #17226
- Bump eslint-plugin-prettier from 5.2.1 to 5.5.5 by @dependabot[bot] in #17228
- feat: add TypeScript Go (tsgo) for faster type checking by @FelixMalfait in #17211
- [Breaking: DEPLOY SERVER BEFORE FRONT] fix: allow custom domain without Cloudflare API key by @VedantMadane in #17160
- fix: E2E login test flakiness by @FelixMalfait in #17233
- Identify view group by @prastoin in #17220
- fix: ensure we display fields in the same order as in production by @Devessier in #17231
- Add permissions to SSE by @thomtrp in #17201
- Rework folder structure by @charlesBochet in #17230
- fix: jsdiff has a denial of service vulnerability in parsePatch and applyPatch by @mabdullahabaid in #17235
- Move assets folder at root level by @martmull in #17238
- Twenty SDK command renaming and dev mode by @charlesBochet in #17245
- Identify standard role by @prastoin in #17234
- BILLING - Send dis-sync error to sentry by @etiennejouan in #17242
- Support referencing updatedFields array in databaseEvent triggers by @ijreilly in #17240
- i18n - translations by @github-actions[bot] in #17248
- Identify index by @prastoin in #17239
- Fix workflow if-else node issues by @abdulrahmancodes in #17244
- i18n - translations by @github-actions[bot] in #17249
- Watch command skeleton by @charlesBochet in #17246
- Add progressive loading to FIELD widget CARD display mode by @Copilot in #17202
- i18n - translations by @github-actions[bot] in #17256
- SSE - Protect query api by @thomtrp in #17241
- Cache WorkspaceMember by @Weiko in #17247
- [DASHBOARDS] Move all the graph computing logic to the backend by @bosiraphael in #17189
- [App] Small fixes by @ijreilly in #17254
- i18n - translations by @github-actions[bot] in #17257
- Twenty SDK watch build of functions by @charlesBochet in #17252
- i18n - translations by @github-actions[bot] in #17258
- i18n - docs translations by @github-actions[bot] in #17251
- refresh oAuth tokens when sending email by @neo773 in #17250
- i18n - docs translations by @github-actions[bot] in #17260
- fix rls create new record with composite by @Weiko in #17243
- Add Front components to SDK by @charlesBochet in #17259
- Fix dev env by @etiennejouan in #17269
- Simplify config file script in sdk by @charlesBochet in #17267
- [Dashboards] add missing hideEmptyCategory field to PieChartConfiguration GraphQL fragment by @ehconitin in #17266
- [Dashboards] align cumulative range filtering with raw-value filters by @ehconitin in #17265
- Fix hotkey bugs by @bosiraphael in #17273
- 2091 extensibility twenty sdk add command twenty app function logs and twenty app function test by @martmull in #17278
- Add endpoint to upload application file by @martmull in #17270
- Handle dynamic predicates by @thomtrp in #17287
- 2093 extensibility add twenty auth switch command by @martmull in #17286
- Add RLS Entitlement check by @Weiko in #17179
- Rework watcher by @charlesBochet in #17284
- Improve streamToBuffer error handling and memory safety by @Angel98518 in #17255
- i18n - translations by @github-actions[bot] in #17290
- Stop workflow in any status by @thomtrp in #17271
- i18n - translations by @github-actions[bot] in #17292
- Files v2 - Add new FILES field type by @etiennejouan in #17236
- i18n - translations by @github-actions[bot] in #17294
- Migrate serverless function service to v2 by @prastoin in #17285
- i18n - translations by @github-actions[bot] in #17295
- [Dashboards] fix tooltip item ordering to match visual stacking in bar and line chart by @ehconitin in #17288
- feat: implement generic many-to-many junction relation support by @FelixMalfait in #16820
- i18n - translations by @github-actions[bot] in #17296
- Fix widget injection order: place relation widgets after FIELDS, Notes after relations by @Copilot in #17274
- Remove extra spacing for empty widgets by @Devessier in #17289
- Deprecate nullable
syncableEntityby @prastoin in #17279 - Handled SSE create event by @lucasbordeau in #17293
- Update create entity cursor rule by @prastoin in #17299
- fix gmail message import policy by @neo773 in #17272
- Improvements on SDK watcher by @charlesBochet in #17291
- Fix identify remaining entities command to cover soft-deleted rows by @prastoin in #17304
- Rework SDK watcher by @charlesBochet in #17305
- [Dashboards] fix line chart duplicate widget bleed by hashing series IDs by @ehconitin in #17303
- fix: implement polymorphic relation detach when selecting 'No {Field}' by @bitloi in #17264
- Add logs to debug workflow crons by @thomtrp in #17302
- Fixed test file typing by @lucasbordeau in #17307
- Refactor runner delete action to be workspace agnostic by @prastoin in #17276
- Identification cleanup by @prastoin in #17301
- [Apps] Get rid of .yarn binaries in apps by @ijreilly in #17306
- Use new SSE setup for workflow runs by @thomtrp in #17309
- Enhance tests on SDK by @charlesBochet in #17312
- i18n - docs translations by @github-actions[bot] in #17261
- More improvements on SDK watch by @charlesBochet in #17314
- i18n - docs translations by @github-actions[bot] in #17320
- Add vscode tasks for integration test run and inputs to debug mode by @prastoin in #17327
- Fix RLS entitlement check + fix role page with RLS on object without object-permission not being displayed by @Weiko in #17326
- Fix Gmail sync edge case with multi-label emails by @neo773 in #17318
- Enable RLS in lab by @Weiko in #17328
- 2114 extensibility manage serverless execution from built code by @martmull in #17317
- Move sdk watcher back to esbuild by @charlesBochet in #17316
- Fix workspace resolver when billing is not enabled by @Weiko in #17333
- Fix null user crash in admin panel user lookup by @neo773 in #17336
- Disable query logs if I want to by @martmull in #17329
- feat: migrate typecheck to tsgo for faster type checking by @FelixMalfait in #17331
- [DASHBOARD] Allow hovering small pie slices that are smaller than the gap by @bosiraphael in #17330
- Add syncable NavigationMenuItem entity to core schema by @abdulrahmancodes in #17232
- i18n - translations by @github-actions[bot] in #17339
- Files v2 - Add new workspace field file upload resolver by @etiennejouan in #17325
- Fix menu item toggle by @bosiraphael in #17338
- [DASHBOARDS] Hide pinned workflow actions when dashboard is in edit mode by @bosiraphael in #17341
- Add sdk build by @charlesBochet in #17335
- Exclude community apps from Dependabot scanning by @FelixMalfait in #17345
- [SSE] Event stream TTL refresh by @thomtrp in #17337
- Fix tests by @charlesBochet in #17356
- fix: remove empty else-if branches and add numbering by @abdulrahmancodes in #17315
- [Dashboards] Add delete widget option in widget settings footer by @ehconitin in #17344
- i18n - translations by @github-actions[bot] in #17359
- Bump ts-key-enum from 2.0.12 to 2.0.13 by @dependabot[bot] in #17353
- Bump @sentry/nestjs from 10.27.0 to 10.36.0 by @dependabot[bot] in #17352
- Refactor workspace migration runner exception handling by @prastoin in #17310
- Serverless built updates by @martmull in #17351
- i18n - translations by @github-actions[bot] in #17362
- [Dashboards] Dynamic paddings by @ehconitin in #17298
- fix: display current object name in morph relation picker after rename by @AyeshaWaseemAhmad in #17209
- Refactor rls backend simplify add tests by @Weiko in #17357
- i18n - translations by @github-actions[bot] in #17366
- Allow variables with dots and keys by @thomtrp in #17361
- i18n - translations by @github-actions[bot] in #17369
- Fix a bunch of bugs on Record Page Layouts by @Devessier in #17342
- Render missing context provider for layouts by @Devessier in #17349
- [DASHBOARDS] Improve bar chart performances by @bosiraphael in #17358
- [Dashboards] fix dragging widget z index by @ehconitin in #17371
- Remove useUpdateOneRecordV2 by @ijreilly in #17355
- i18n - translations by @github-actions[bot] in #17373
- Remove if-else workflow node flag by @thomtrp in #17370
- Fix blank page layout after navigation by @Devessier in #17340
- Revert TS LSP to Strada by @neo773 in #17365
- CalDav throw error If a user tries to connect an unsupported server. by @neo773 in #17363
- Add checksum to manifest by @charlesBochet in #17368
- Follow up dev and build by @martmull in #17364
- i18n - translations by @github-actions[bot] in #17374
- Remove debounced chart resize by @bosiraphael in #17376
- [Dashboards] Update default bar chart config by @ehconitin in #17375
- Introduce
UniversalFlatEntityFromby @prastoin in #17367 - Shrink table rows by @Devessier in #17360
- [Dashboards] Fix rich text widget empty side menu bug by @ehconitin in #17377
- fix(twenty-front): fix tsconfig to properly typecheck all files with tsgo by @FelixMalfait in #17380
- [DASHBOARDS] Fix pie chart gap when there is only one slice by @bosiraphael in #17388
- i18n - translations by @github-actions[bot] in #17391
- Release dashboards V1 by @bosiraphael in #17386
- Fix dashboard animations by @ehconitin in #17389
- Add footer to iFrame widget settings by @bosiraphael in #17397
- Sync built files by @martmull in #17379
- [Dashboards] Improve bar chart performance by @ehconitin in #17399
- fix backfill command by @ehconitin in #17402
New Contributors
- @gayanMatch made their first contribution in #17046
- @salmonumbrella made their first contribution in #17034
- @AyeshaWaseemAhmad made their first contribution in #17080
- @carbonFibreCode made their first contribution in #17078
- @johnnyshields made their first contribution in #16979
- @Angel98518 made their first contribution in #17188
- @VedantMadane made their first contribution in #17160
- @bitloi made their first contribution in #17264
Full Changelog: v1.15.0...v1.16.0