What's Changed
- Add prometheus exporter by @thomtrp in #17392
- Fix event logic for soft-delete and restore by @lucasbordeau in #17393
- Change
formatResultto return string instead ofDateobject forDATE_TIMEby @lucasbordeau in #17407 - fix(twenty-server): add SSRF protection to webhook requests by @FelixMalfait in #17403
- fix(twenty-server): preserve input order in createMany response by @FelixMalfait in #17412
- fix: refresh virtualized table when field metadata is updated ( #16388 ) by @carbonFibreCode in #17214
- docs: align type import guidelines with ESLint configuration by @kratisinghh in #17275
- Migrate attachments to morph relations + fix morph join column filtering by @mabdullahabaid in #17381
- Fix the default value of search record if the filter is boolean type by @araj00 in #17297
[Debug log level]Print validation build result failure by @prastoin in #17423- feat: fix junction toggle persistence and add type-safe documentation paths by @FelixMalfait in #17421
- i18n - translations by @github-actions[bot] in #17424
- Fix upgrade command order
backfillStandardPageLayoutsCommandby @prastoin in #17430 - i18n - docs translations by @github-actions[bot] in #17426
- i18n - docs translations by @github-actions[bot] in #17433
- i18n - docs translations by @github-actions[bot] in #17434
- Add front component widget by @bosiraphael in #17440
- i18n - translations by @github-actions[bot] in #17443
- Invalidate flat cache command by @prastoin in #17442
- [Fix] Bug with one to many update in table #16340 by @carbonFibreCode in #17416
[OBJECT_CACHE_FLUSH_REQUIRED_WHEN_RELEASED]RemoveFlatObjectMetadatacustomfieldMetadataIdsfk aggregator property by @prastoin in #17438- [TYPES]
UniversalEntityJsonbPropertyandSerializedRelationby @prastoin in #17396 - fix: prevent record title reset on focus for notes and tasks by @Richman018 in #17439
- Backfill
ownerstandard field check collidingjoinColumnNameby @prastoin in #17449 - fix isCalendarFieldReadOnly function to check if calender field is re… by @Mazen-Saeed in #17319
- IMAP fix edge case of nested folder filtering of unwanted folders by @neo773 in #17428
- Use pipeline to count event stream by @thomtrp in #17450
- Implement sync in dev mode by @martmull in #17405
- fix: update calendar setup CTA to 'Finish Setup' with floppy icon by @Bonapara in #17464
- i18n - translations by @github-actions[bot] in #17468
- Integrate NavigationMenuItem with feature flag support by @abdulrahmancodes in #17268
- Invalidate and flush cache post 1.16 upgrade by @prastoin in #17465
- i18n - translations by @github-actions[bot] in #17469
- Add upgrade to org plan card to RLS by @Weiko in #17455
- i18n - translations by @github-actions[bot] in #17472
- docs: add example output after creating postgres role by @TomLarson20 in #17451
- i18n - docs translations by @github-actions[bot] in #17473
- Fix "Level: Error serverlessFunctionPayloads.map is not a function" error by @ijreilly in #17474
- Fixed plain object in field value for workflow by @lucasbordeau in #17470
- Activate Record Page Layouts flag by default by @Devessier in #17467
- UpdateTaskOnDeleteActionCommand - Add logs by @etiennejouan in #17479
- Patch
formatResultto pass Date object through by @lucasbordeau in #17483 - [Dashboards] Fix page layout navigation edit mode sync by @ehconitin in #17478
- Introduce webhook v2 by @charlesBochet in #17456
- Implement dev mode nice UI by @martmull in #17471
- i18n - translations by @github-actions[bot] in #17485
- Encrypt/decrypt app secret variables by @ijreilly in #17394
- Backfill webhooks universal and application by @charlesBochet in #17486
- [Fix] display current object label in morph relation picker after rename 2/2 by @ijreilly in #17484
- Add WorkspaceAuthContextMiddleware by @Weiko in #17487
- i18n - docs translations by @github-actions[bot] in #17481
- Nested serialized relation property by @prastoin in #17490
- Migrate cron, databaseEventTrigger, httpRoute triggers to serverless functions by @charlesBochet in #17488
- i18n - translations by @github-actions[bot] in #17493
- fix message channels stuck in ONGOING by @neo773 in #17492
- fix: use universalIdentifier to identify the field in migrate-attachment-to-morph-relations by @mabdullahabaid in #17444
- 2081 extensibility publish cli tools and update doc with recent changes by @martmull in #17495
- Fix internal app by @martmull in #17496
- Add delete and restore event handling for table and board by @lucasbordeau in #17489
- i18n - docs translations by @github-actions[bot] in #17499
- Rename serverlessFunction to logicFunction by @charlesBochet in #17494
- Clean up and enhance logging for messaging and calendar by @neo773 in #17498
- i18n - docs translations by @github-actions[bot] in #17500
- i18n - translations by @github-actions[bot] in #17501
- self host 1.16 logs debug by @prastoin in #17510
- Fix error "No widget found in canvas layout" by @Devessier in #17512
- i18n - docs translations by @github-actions[bot] in #17502
- Display Fields widgets title by @Copilot in #17518
- Fix AI chat infinite loading shimmer on empty workspace by @FelixMalfait in #17521
[REQUIRES_FULL_CACHE_FLUSH_WHEN_RELEASED]RefactorFlatEntityto beUniversalFlatEntitysuperset by @prastoin in #17452- Front component rendering by @bosiraphael in #17482
- i18n - translations by @github-actions[bot] in #17528
- [Bug] Fix broken variables for database event by @thomtrp in #17526
- Fix: time format issue in datepicker mask by @vasu1303 in #16922
- Refactor WorkspaceAuthContext to use discriminated union types by @Weiko in #17491
- Bump @prettier/sync from 0.5.3 to 0.5.5 by @dependabot[bot] in #17536
- Bump psl from 1.9.0 to 1.15.0 by @dependabot[bot] in #17535
- feat: Add bulk input mode for select options #5539 by @eni4sure in #17459
- 2162 Add asset watcher in twenty-sdk dev mode by @martmull in #17513
- i18n - translations by @github-actions[bot] in #17538
- fix: standardize billing price display to integers when necessary by @iampraiez in #17445
- File storage refactor - Switch to applicationUniversalIdentifier by @etiennejouan in #17541
- App logic function as step by @thomtrp in #17525
- [Fix] Various typeError fixes by @ijreilly in #17508
- i18n - docs translations by @github-actions[bot] in #17542
- i18n - translations by @github-actions[bot] in #17545
- Record page layout edition frontend by @Devessier in #17519
- Fix
UpdateTaskOnDeleteActionCommandorder and simplify by @prastoin in #17527 - Refactor
deleteobjectMetadataaction type and handler to be workspace agnostic by @prastoin in #17530 - i18n - translations by @github-actions[bot] in #17546
- Files v2 - FILES field update/create in common API by @etiennejouan in #17400
- Update pageLayout* data models for backend recordPageLayout refactor by @Weiko in #17446
- i18n - translations by @github-actions[bot] in #17558
- Fix React warnings for custom props on styled DOM elements by @Copilot in #17553
- Remove redundant label by @Devessier in #17563
- i18n - translations by @github-actions[bot] in #17565
[REQUIRES_CACHE_FLUSH_FOR_FIELD_AND_OBJECT]``FlatFieldMetadataandFlatObjectMetadatarequired universal by @prastoin in #17557- i18n - translations by @github-actions[bot] in #17568
- Improve API + set functions in state by @thomtrp in #17560
- Add standard record page layout by @Weiko in #17567
- i18n - docs translations by @github-actions[bot] in #17549
- fix: lodash has prototype pollution vulnerability in _.unset and _.omit functions by @mabdullahabaid in #17551
- Remove versions from logicFunction by @charlesBochet in #17540
- i18n - translations by @github-actions[bot] in #17577
- fix: replacement of a substring with itself by @mabdullahabaid in #17497
- handle HTTP 400, 500, 502, 504 in parseMicrosoftMessagesImportError by @neo773 in #17509
- Files - Delete command by @etiennejouan in #17576
- Files Field - Add new controller by @etiennejouan in #17561
- Add border bottom to display organization plan features by @BOHEUS in #17422
- i18n - translations by @github-actions[bot] in #17578
- i18n - translations by @github-actions[bot] in #17579
- [FRONT COMPONENTS] Build front components from twenty apps for remote dom by @bosiraphael in #17566
- Refactor workflow to use new functions by @charlesBochet in #17552
- Patch the postgres db url while using an external resource enabling a… by @larron in #17431
- Update manifest structure by @martmull in #17547
- Unit test back vscode task by @prastoin in #17583
- Workflow Send Email Node Multiple Recipients Support by @neo773 in #17458
- Added option to prevent sending requests to twenty-icons by @BOHEUS in #16723
- Improve email onboarding step by @BOHEUS in #17427
- i18n - translations by @github-actions[bot] in #17584
- i18n - translations by @github-actions[bot] in #17585
- i18n - docs translations by @github-actions[bot] in #17586
- feat: CommandMenuItem entity and FrontComponent support in command menu by @abdulrahmancodes in #17555
- i18n - translations by @github-actions[bot] in #17590
- [GroupBy] Fix order by date granularity by @ijreilly in #17573
- Fix SSE for workflow show page by @thomtrp in #17582
- fix: prevent default object re-selection in relation field form by @claytonlin1110 in #17313
- i18n - translations by @github-actions[bot] in #17591
- [Apps] Apps marketplace (first draft) by @ijreilly in #17562
- i18n - translations by @github-actions[bot] in #17592
- Rework logic function module by @charlesBochet in #17588
- i18n - docs translations by @github-actions[bot] in #17593
- i18n - translations by @github-actions[bot] in #17594
- fix: allow board column tag to shrink so aggregate value remains visible by @bitloi in #17372
- Keep simplifying logic functions by @charlesBochet in #17595
- i18n - docs translations by @github-actions[bot] in #17597
- i18n - docs translations by @github-actions[bot] in #17599
- [Dashboards] Replace nivo bar chart with custom canvas bar chart by @ehconitin in #17441
- Add Claude Code GitHub Workflow by @FelixMalfait in #17615
- feat: add cross-repo Claude dispatch from core-team-issues by @FelixMalfait in #17616
- fix: force Claude Code to use Opus model by @FelixMalfait in #17618
- Fix: Favorite records not showing in sidebar by @abdulrahmancodes in #17614
- Revert "fix: prevent default object re-selection in relation field fo… by @ijreilly in #17619
- i18n - translations by @github-actions[bot] in #17620
- Handle SSE event stream reconnection by @lucasbordeau in #17523
- feat: lazy dev env setup for Claude CI workflow by @FelixMalfait in #17621
- [FRONT COMPONENTS] Move to twenty-sdk by @bosiraphael in #17587
ObjectMetadataandFieldMetadataagnostic workspace migration runner by @prastoin in #17572- fix: move Claude allowed tools to claude_args by @FelixMalfait in #17625
- i18n - translations by @github-actions[bot] in #17626
- Update discord link by @Bonapara in #17627
- [Dashboards] Auto focus effect on standalone widget by @ehconitin in #17623
- fix: Claude workflow — prevent bot self-cancellation and add CI permissions by @FelixMalfait in #17628
- Differentiate edit mode behavior for record pages vs dashboards by @Copilot in #17550
- i18n - docs translations by @github-actions[bot] in #17634
[FIXES_MAIN]RemoveobjectMetadatastandardIdby @prastoin in #17632- chore: replace depot.dev runners with GitHub-hosted runners by @FelixMalfait in #17641
- fix: increase Claude max turns to 200 and add missing bash tools by @FelixMalfait in #17642
- Fix creation of objects with acronym names (e.g. "O&J") by @ijreilly in #17633
- i18n - translations by @github-actions[bot] in #17650
- Fix build docker image error by @bosiraphael in #17649
- Silent errors on code step build by @thomtrp in #17651
- Migrate workflow serverless to logic by @charlesBochet in #17646
[BREAKING_CHANGE]Deprecate remaining entitiesstandardIdby @prastoin in #17639- fix: increase performance test thresholds for GitHub Actions runners by @FelixMalfait in #17656
- fix: use red3 for dark mode danger background color by @Bonapara in #17658
- Allow twenty standard app to access messaging items by @ijreilly in #17659
- Upload files instead ofsources by @martmull in #17608
- Fix spaces in code step + suggestion overflow by @thomtrp in #17664
- fix: increase RelationToOneFieldDisplay perf threshold to 0.4ms by @FelixMalfait in #17671
- Improve cache-clear behavior by @charlesBochet in #17662
- Fix code container display by @thomtrp in #17666
- fix: increase findByText timeout for lazy-loaded DateTimePicker tests by @FelixMalfait in #17672
- [FRONT COMPONENTS] Frontend component widget creation by @ehconitin in #17653
- [Dashboard] fix rich text widget bugs + text selection in non edit mode by @ehconitin in #17624
- Disable initial animation in Toggle component by @Copilot in #17648
- Upgrade application model by @charlesBochet in #17673
- i18n - translations by @github-actions[bot] in #17678
- Add position to page layout widgets by @Weiko in #17643
- Scaffold Fields widget edition by @Copilot in #17548
- Remote dom twenty UI POC by @bosiraphael in #17652
- Refactor flat entity maps to be universal oriented by @prastoin in #17665
- i18n - translations by @github-actions[bot] in #17682
- feat: make feature flag image optional by @Devessier in #17679
- Publish twenty packages by @martmull in #17676
- Fix message/calendar channels stuck with null syncStageStartedAt by @neo773 in #17684
- i18n - translations by @github-actions[bot] in #17688
- Trigger refetch workflow on version creation by @thomtrp in #17685
- i18n - docs translations by @github-actions[bot] in #17689
- Backfill package json for custom and standard app by @charlesBochet in #17681
- Migrate gmail fetch by batch to library by @neo773 in #17514
- i18n - docs translations by @github-actions[bot] in #17692
- Migrate noteTarget and taskTarget to Morph. by @mabdullahabaid in #17476
- Fix twenty sdk build by @martmull in #17696
- Remove logic function layer by @charlesBochet in #17697
- Fetch soft-deleted records in Record Page Layouts by @Devessier in #17698
- fix: prevent anonymous users from bypassing workspace creation restriction by @FelixMalfait in #17635
- fix(workspace-cache): memory leak in deleteFromLocalCache by @FelixMalfait in #17686
- i18n - translations by @github-actions[bot] in #17704
- Billing - Fix inactivity by @etiennejouan in #17703
- Files v2 - File table migration + data migration command by @etiennejouan in #17661
- [FRONT COMPONENTS] Expose twenty UI in twenty sdk by @bosiraphael in #17645
- Files field - add files field display and input + filtering by @etiennejouan in #17637
- i18n - translations by @github-actions[bot] in #17706
- Fix build without nx build by @martmull in #17700
- feat: audit Logs by @FelixMalfait in #17660
- i18n - translations by @github-actions[bot] in #17708
- Put SSE in lab by @thomtrp in #17709
- [FRONT COMPONENT] Stories in twenty-sdk for front component generation and upon render interactivity by @ehconitin in #17675
- Add real time image by @thomtrp in #17710
- Refactor workspace migration update action by @prastoin in #17701
- i18n - translations by @github-actions[bot] in #17712
- Improve qualification of rest errors by @ijreilly in #17629
- [fix] Some fixes by @ijreilly in #17674
- Fix twenty sdk build 3 by @martmull in #17715
- fix: use TwentyConfigService instead of ConfigService for ENTERPRISE_KEY by @FelixMalfait in #17721
- Display "Not shared" indicator for RLS-restricted relation fields by @Weiko in #17713
- Fix typeorm internal query builder missing twenty internal context by @Weiko in #17719
- exclude Gmail category labels only for system folders by @neo773 in #17640
- Refactor workflow-logic-function-interaction by @charlesBochet in #17699
- i18n - translations by @github-actions[bot] in #17724
- Bump @cyntler/react-doc-viewer from 1.17.0 to 1.17.1 by @dependabot[bot] in #17727
- Front components communication between host and remote by @bosiraphael in #17716
- Fix note/task target creation to support morph relations by @FelixMalfait in #17734
- fix: fast-xml-parser has rangeerror dos numeric entities bug by @mabdullahabaid in #17732
- Refactor twenty-sdk folder stucture by @bosiraphael in #17733
- Fixed SSE connection retry infinite loop by @lucasbordeau in #17723
- fix: update lockfile for twenty CLI bin path change by @FelixMalfait in #17739
- Fix twenty sdk build by @martmull in #17729
- Bump drizzle-kit from 0.31.5 to 0.31.8 by @dependabot[bot] in #17725
- fix: set isActive=true in morph migration & add system fields toggle by @FelixMalfait in #17736
- Improve workflow crons by @thomtrp in #17720
- i18n - translations by @github-actions[bot] in #17743
- Never display broken relations in record page layouts by @Devessier in #17738
- Add lock on version creation by @thomtrp in #17740
- Fix twenty sdk build 5 by @martmull in #17744
- Add gauge for awaiting jobs by @thomtrp in #17747
- fix: use real founder headshots in seed data by @FelixMalfait in #17749
- Files v2 - Use Files field in attachment by @etiennejouan in #17707
- i18n - translations by @github-actions[bot] in #17751
- Allow filtering by page layout type and fetch more fields by @Devessier in #17750
- fix: add command to fix morph relation field name mismatches by @FelixMalfait in #17757
-
- fixed coloring of item type tag in dark mode by @Lakshayyy-m in #17745
- Fix twenty-emails build by @Weiko in #17760
- Fix CSV preview duplicate key warning (#10920) by @bugisthegod in #17754
- Migrate favorites to navigation menu items (1.17 upgrade) by @abdulrahmancodes in #17477
- Fix iterator creation by @thomtrp in #17763
- Spread in parent and requires
FlatEntity.__universalby @prastoin in #17753 - Store record page layouts in a global state by @Devessier in #17759
- i18n - translations by @github-actions[bot] in #17768
- Fix record page layout BE by @Weiko in #17758
- Validate timezone input in group-by date queries by @FelixMalfait in #17777
- Rename REFRESH_TOKEN_COOL_DOWN to REFRESH_TOKEN_REUSE_GRACE_PERIOD and anchor the grace window by @FelixMalfait in #17782
- Centralize outbound HTTP requests through SecureHttpClientService by @FelixMalfait in #17779
- Remove unused GraphQL throttler plugin and graphql-rate-limit dependency by @FelixMalfait in #17785
- Add token type validation and remove dead code in JWT verification by @FelixMalfait in #17784
- Add sync front component by @Weiko in #17748
- i18n - translations by @github-actions[bot] in #17789
- Fix Cloudflare webhook guard validation logic by @FelixMalfait in #17780
- Fix importing people with mixed-case domain URL failing to match company by @bugisthegod in #17774
- Harden local file storage driver path resolution by @FelixMalfait in #17783
- i18n - translations by @github-actions[bot] in #17790
- Reorganize logic function files by @martmull in #17766
- fix: webpack related dependabot alerts by @mabdullahabaid in #17792
- feat: improve AI chat - system prompt, tool output, context window display by @FelixMalfait in #17769
- Flush cache before and after upgrade for self-hosts by @ijreilly in #17800
- i18n - translations by @github-actions[bot] in #17803
- [FRONT COMPONENTS] Navigate from the remote by @bosiraphael in #17762
- Fix file constraint migration by @charlesBochet in #17796
- Resolve tar related dependabot alerts in the application-layer. by @mabdullahabaid in #17801
- [FRONT COMPONENTS] Create Icon component in twenty ui by @bosiraphael in #17797
- Redesign AI chat and add pre-existing prompts. by @mabdullahabaid in #17787
- i18n - translations by @github-actions[bot] in #17804
- Use backend types in Record Page Layouts' frontend by @Devessier in #17794
- Serve frontend components by @Weiko in #17798
- Fix captcha validation failing due to missing URL in secure axios adapter by @FelixMalfait in #17807
- [FRONT COMPONENTS] Serialize events through the worker boundary by @bosiraphael in #17767
- [Fix] fix relations in apps by @ijreilly in #17791
- Allow AI to update code steps by @thomtrp in #17761
- Migrate
Views-xxxIndexFieldObjectSkillto be fully universal ( all actions and metadata runner and builder ) + all metadata update actions runner by @prastoin in #17687 - i18n - translations by @github-actions[bot] in #17817
- Migrate metrics to prometheus by @charlesBochet in #17810
- [FRONT COMPONENTS] Retrieve the front components from the backend by @bosiraphael in #17813
- Release Twenty SDK 0.5.0 by @charlesBochet in #17818
- Fix RLS creation logic by @Weiko in #17815
- Add handling for internal_failure in Gmail API error parser by @neo773 in #17718
- Improve AI-chat design to match the one provided in Figma by @mabdullahabaid in #17816
- releasing RLS by @Weiko in #17809
- [Fix] fix timelineActivities on notes and tasks by @ijreilly in #17814
- Show accounts with pending message channel configuration by @neo773 in #17770
- i18n - translations by @github-actions[bot] in #17820
- Google OAuth check real permissions before creating channels by @neo773 in #17714
- fix: axios related dependabot alerts by @mabdullahabaid in #17821
- fix: set a margin even for empty side-column widgets by @Devessier in #17806
- fix: remove axios stale entry by ensuring transitive version of axios is also latest by @mabdullahabaid in #17823
-
- Added accomodation of mobile navigation bar in command menu by @Lakshayyy-m in #17419
- Remove the code of old show pages by @Devessier in #17811
- i18n - translations by @github-actions[bot] in #17830
- Extract SecureHttpClientService into its own module by @FelixMalfait in #17828
- Fix downgrade to Pro CTA icon and wording by @Bonapara in #17829
- Remove standard ids by @prastoin in #17833
- Fix ci + improvements by @martmull in #17795
- Fix row-level permissions 'Where' left spacing by @Bonapara in #17831
- revert releasing RLS (#17809) by @Weiko in #17832
- Clarify forms usage by @BOHEUS in #17772
- i18n - translations by @github-actions[bot] in #17835
- Query cache instead of database for event listener webhook, logicFunction, triggers by @charlesBochet in #17824
- Migrate all remaining workspace migration create action to universal by @prastoin in #17836
- [DASHBOARDS] chat agent improvements + new validation layer by @ehconitin in #17722
- i18n - translations by @github-actions[bot] in #17838
- SSO - Check if assertion is signed by @thomtrp in #17837
- Fix blocknote.map crash with generic field-level RICH_TEXT_V2 handler by @FelixMalfait in #17834
- Fix commands order for v1.17.0 by @ijreilly in #17839
New Contributors
- @kratisinghh made their first contribution in #17275
- @Richman018 made their first contribution in #17439
- @Mazen-Saeed made their first contribution in #17319
- @TomLarson20 made their first contribution in #17451
- @vasu1303 made their first contribution in #16922
- @eni4sure made their first contribution in #17459
- @iampraiez made their first contribution in #17445
- @larron made their first contribution in #17431
- @claytonlin1110 made their first contribution in #17313
Full Changelog: v1.16.0...v1.17.0