v1.3.0

twentyhq/twentyv1.3.0Aug 11, 2025by charlesBochet

AI Summary

Foundation release with Core Views, merge records, and field permissions. Major auth refactoring and IMAP improvements.

Key Highlights

  • Core Views system
  • Merge records functionality
  • Field permissions
  • Token logic refactoring
  • Object metadata API with workspace migration v2
  • Branch implementation for workflows

Breaking Changes

  • Refactor tokens logic and enhance email verification flow

New Features

  • Core Views synchronization
  • Merge records button and functionality
  • Field permissions CRUD
  • Object metadata API v2
  • Workflow branches
  • IMAP fixes and improvements
  • Google Place Autocomplete for address fields

Full Release Notes

## What's Changed
* Fix empty emails critical bug by @bosiraphael in https://github.com/twentyhq/twenty/pull/13465
* bug fix - cannot-read-properties-of-undefined-reading-tolowercase by @guillim in https://github.com/twentyhq/twenty/pull/13466
* Synchronization between Core Views and Workspace Views by @bosiraphael in https://github.com/twentyhq/twenty/pull/13461
* Cleaning command - add log by @etiennejouan in https://github.com/twentyhq/twenty/pull/13464
* Cleanup remaining old component states by @lucasbordeau in https://github.com/twentyhq/twenty/pull/13435
* add command to destroy workspaces by @etiennejouan in https://github.com/twentyhq/twenty/pull/13447
* fixing issue with QueryFailed on message import by @guillim in https://github.com/twentyhq/twenty/pull/13471
* Improve core view migration by @bosiraphael in https://github.com/twentyhq/twenty/pull/13474
* [permissions] Adapt FE to non-readable fields by @ijreilly in https://github.com/twentyhq/twenty/pull/13440
* remove gql connect input for morph field - temporary by @etiennejouan in https://github.com/twentyhq/twenty/pull/13475
* Connect/Disconnect in .save by @etiennejouan in https://github.com/twentyhq/twenty/pull/13444
* feat: add Google Place Autocomplete for address fields by @omarNaifer12 in https://github.com/twentyhq/twenty/pull/13450
* move APIs and Webhooks section out of advanced mode by @BKM14 in https://github.com/twentyhq/twenty/pull/13481
* Filter action fixes on select field by @thomtrp in https://github.com/twentyhq/twenty/pull/13477
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13483
* Fix Website deploy by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13482
* Permissions V1 Documentation by @vickywxng in https://github.com/twentyhq/twenty/pull/13473
* Remove all legacy state management by @lucasbordeau in https://github.com/twentyhq/twenty/pull/13476
* Filter batch fixes  by @thomtrp in https://github.com/twentyhq/twenty/pull/13486
* feat(ai): add markdown in ai chat by @AMoreaux in https://github.com/twentyhq/twenty/pull/13402
* Reset relation id to null rather than empty string by @thomtrp in https://github.com/twentyhq/twenty/pull/13488
* Object metadata API create one using workspace migration v2 by @prastoin in https://github.com/twentyhq/twenty/pull/13420
* fix: Display year for releases from previous years on website (#13276) by @vishwas-babar in https://github.com/twentyhq/twenty/pull/13291
* refactor:  to useCopyToClipboard to catch errors - when user has disable copy clipboard permission in browser by @Nabhag8848 in https://github.com/twentyhq/twenty/pull/13330
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13495
* feat: allow users to start the calendar week on Monday by @omarNaifer12 in https://github.com/twentyhq/twenty/pull/13295
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13499
* fix: IMAP Import by @neo773 in https://github.com/twentyhq/twenty/pull/13500
* `CreateFieldInput` transpilation to `FlatFieldMetadata`, `FlatFieldMetadata` validation by @prastoin in https://github.com/twentyhq/twenty/pull/13493
* Add design for selected filter by @thomtrp in https://github.com/twentyhq/twenty/pull/13498
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13503
* AI Agent handoffs by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/13472
* Implement Workspace Schema Manager Service by @Weiko in https://github.com/twentyhq/twenty/pull/13501
* fix: add userFriendlyMessage to handleDuplicateKeyError by @neo773 in https://github.com/twentyhq/twenty/pull/13513
* Remove mistakenly added files by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13514
* BREAKING - feat(auth): refactor tokens logic & enhance email verification flow by @AMoreaux in https://github.com/twentyhq/twenty/pull/13487
* feat: merge records by @neo773 in https://github.com/twentyhq/twenty/pull/13436
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13521
* Fix 2fa auth and token format migration by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13523
* test(front): coverage limit by @prastoin in https://github.com/twentyhq/twenty/pull/13526
* `FlatFieldMetadataType` hashmap arch and enum validation by @prastoin in https://github.com/twentyhq/twenty/pull/13502
* Fix linter performance front by @charlesBochet in https://github.com/twentyhq/twenty/pull/13527
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13528
* Do not enrich relations when id undefined by @thomtrp in https://github.com/twentyhq/twenty/pull/13530
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13531
* [permissions] Update permission check layer by @ijreilly in https://github.com/twentyhq/twenty/pull/13485
* fix: delete account by @neo773 in https://github.com/twentyhq/twenty/pull/13543
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13546
* enhance globalComponentInstanceContextMap type safety by @neo773 in https://github.com/twentyhq/twenty/pull/13544
* feat(domain-manager): refactor custom domain validation and improve c… by @AMoreaux in https://github.com/twentyhq/twenty/pull/13388
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13547
* [admin-panel] - add scroll restoration and filter persistence on config variables by @ehconitin in https://github.com/twentyhq/twenty/pull/13363
* [POC] multi select drag and drop on record board by @ehconitin in https://github.com/twentyhq/twenty/pull/13053
* feat: merge records button in RecordDetailDuplicatesSection by @neo773 in https://github.com/twentyhq/twenty/pull/13537
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13555
* fix: prevent saving tiny scroll positions in restoration hook by @ehconitin in https://github.com/twentyhq/twenty/pull/13554
* AI settings tab by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/13496
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13556
* feat(database): add chunked insert method for ClickHouse integration by @AMoreaux in https://github.com/twentyhq/twenty/pull/13534
* Fix `flatFieldMetadata` transpiler to fit real `cache` typing by @prastoin in https://github.com/twentyhq/twenty/pull/13529
* Fix eventEmitter emitting when diff is empty by @Weiko in https://github.com/twentyhq/twenty/pull/13560
* feat: add sub fields for address by @omarNaifer12 in https://github.com/twentyhq/twenty/pull/13566
* Enable roles on api keys by @ehconitin in https://github.com/twentyhq/twenty/pull/13334
* Removed Line 52 from SETTINGS_NON_COMPOSITE_FIELD_TYPE_CONFIGS by @Atharva-Pandkar in https://github.com/twentyhq/twenty/pull/13572
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13575
* Fix breadcrumbs to display friendly object names instead of API names… by @aaron-cal in https://github.com/twentyhq/twenty/pull/13573
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13578
* Improve messaging sync performances by @charlesBochet in https://github.com/twentyhq/twenty/pull/13549
* [permissions] Remove non-readable field from aggregate options (kanban) by @ijreilly in https://github.com/twentyhq/twenty/pull/13559
* Refacto filter action + handle missing composite fields by @thomtrp in https://github.com/twentyhq/twenty/pull/13557
* Field metadata v2 relation by @prastoin in https://github.com/twentyhq/twenty/pull/13562
* fix: standardize GraphQL schema UUID field types by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/13550
* Add tooltip when navigation menu isnt expanded by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13583
* Reset overflow visible to previous value, fix console error by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13586
* fix: API key regeneration fails when roles feature is disabled by @ehconitin in https://github.com/twentyhq/twenty/pull/13588
* Fix upsert in ORM by @charlesBochet in https://github.com/twentyhq/twenty/pull/13589
* Disable changing label identifier for standard objects by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13593
* Add local storage effect to save sidebar state by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13591
* Implement branch front end by @martmull in https://github.com/twentyhq/twenty/pull/13489
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13600
* Fix seed workspace by @martmull in https://github.com/twentyhq/twenty/pull/13601
* [permissions] Return all columns by default for upsert by @ijreilly in https://github.com/twentyhq/twenty/pull/13587
* Update workflow stepId type  by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/13602
* Add TwentyORM query read timeout exception by @charlesBochet in https://github.com/twentyhq/twenty/pull/13603
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13606
* Fix workflowRun real time updates by @martmull in https://github.com/twentyhq/twenty/pull/13605
* Create getting-around-twenty.mdx by @StephanieJoly4 in https://github.com/twentyhq/twenty/pull/13558
* Fix id typing in metadata generated schema by @charlesBochet in https://github.com/twentyhq/twenty/pull/13596
* Refactor isReadOnly + introduce restrictedFields by @ijreilly in https://github.com/twentyhq/twenty/pull/13533
* Upsert in CreateMany - fixes by @etiennejouan in https://github.com/twentyhq/twenty/pull/13598
* Update docker-compose.mdx by @alexcohfr in https://github.com/twentyhq/twenty/pull/13597
* Upgrade Vite6 to Vite7 by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13610
* Remove unused files by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13612
* Remove unused dependencies by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13611
* Add snackbar on CSV exports by @BiswasRai in https://github.com/twentyhq/twenty/pull/13608
* feat: email and calendar events for opportunities by @neo773 in https://github.com/twentyhq/twenty/pull/13613
* Update object-level permissions design by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13614
* Fix soft delete unique constraints to allow reusing unique values after deletion by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/13615
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13616
* [CleanUp] Post api keys and webhooks migration cleanup by @ehconitin in https://github.com/twentyhq/twenty/pull/13576
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13617
* IMAP Fixes & Improvements by @neo773 in https://github.com/twentyhq/twenty/pull/13582
* [Admin Panel] fix invalid uuid issue on health status by @ehconitin in https://github.com/twentyhq/twenty/pull/13619
* `FlatObjectMetadataMaps` and non FP style refactor by @prastoin in https://github.com/twentyhq/twenty/pull/13590
* Fix created step position by @martmull in https://github.com/twentyhq/twenty/pull/13621
* Field permission CRUD front-end implementation  by @lucasbordeau in https://github.com/twentyhq/twenty/pull/13524
* Handle types that are not field metadata by @thomtrp in https://github.com/twentyhq/twenty/pull/13604
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13627
* Fix email not verified issue while login through sso by @charlesBochet in https://github.com/twentyhq/twenty/pull/13631
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13632
* fix typo by @etiennejouan in https://github.com/twentyhq/twenty/pull/13634
* Add immer in package.json by @charlesBochet in https://github.com/twentyhq/twenty/pull/13635
* [api keys] fix breadcrumb not appearing on api key details by @ehconitin in https://github.com/twentyhq/twenty/pull/13633
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13636
* Remove graphql-middleware by @charlesBochet in https://github.com/twentyhq/twenty/pull/13638
* Fix workflow run command by @martmull in https://github.com/twentyhq/twenty/pull/13641
* Improve code editor style and enable full screen code editor by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13618
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13645
* [permissions] Handle fieldPermissions configuration for 1N relations by @ijreilly in https://github.com/twentyhq/twenty/pull/13630
* Re add graphql middlware by @charlesBochet in https://github.com/twentyhq/twenty/pull/13644
* Split workspace service by @martmull in https://github.com/twentyhq/twenty/pull/13642
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13648
* Display edge button when whole edge is hovered by @martmull in https://github.com/twentyhq/twenty/pull/13651
* Fixed SettingsObjectFieldItemTableRow grid sizes by @lucasbordeau in https://github.com/twentyhq/twenty/pull/13653
* Fix insert query builder not handling empty array by @charlesBochet in https://github.com/twentyhq/twenty/pull/13656
* Merge Records fix by @neo773 in https://github.com/twentyhq/twenty/pull/13658
* add userFriendly messages to PermissionsException by @neo773 in https://github.com/twentyhq/twenty/pull/13659
* [permissions] Adapt field permissions to connect + createMany by @ijreilly in https://github.com/twentyhq/twenty/pull/13655
* Data model settings - Address field design fix by @etiennejouan in https://github.com/twentyhq/twenty/pull/13677
* Removed all v2 in naming of state management logic by @lucasbordeau in https://github.com/twentyhq/twenty/pull/13675
* Introduce a TAB to test the HTTP node by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13622
* Merge record UI fixes by @neo773 in https://github.com/twentyhq/twenty/pull/13678
* fix api mismatch on rest metadata  by @ehconitin in https://github.com/twentyhq/twenty/pull/13680
* revert ci changes on ci-breaking-changes  by @ehconitin in https://github.com/twentyhq/twenty/pull/13682
* Add ADD NEW cta as the last row by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13594
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13684
* Fix broken main branch by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13685
* Handle relations for filters by @thomtrp in https://github.com/twentyhq/twenty/pull/13654
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13688
* Feat workspace migration maintains flat object metadata maps by @prastoin in https://github.com/twentyhq/twenty/pull/13620
* Fix for Invalid URL Error when creating new user  by @thomasmol in https://github.com/twentyhq/twenty/pull/13689
* Fixed show page crash with object metadata item not found by @lucasbordeau in https://github.com/twentyhq/twenty/pull/13694
* Disable node dragging on workflow run and workflow version by @martmull in https://github.com/twentyhq/twenty/pull/13693
* `FlatObject/FieldMetadata` and `FlatObjectMetadataMaps` mocks by @prastoin in https://github.com/twentyhq/twenty/pull/13691
* Add design when edge focused by @martmull in https://github.com/twentyhq/twenty/pull/13687
* Replace `useOnSelectionChange` with `onClick` listeners for steps opening by @Devessier in https://github.com/twentyhq/twenty/pull/13672
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13707
* `FlatObjectMetadataMaps` utils coverage by @prastoin in https://github.com/twentyhq/twenty/pull/13695
* PR comment followups (isNonEmptyString and rename WorkflowExecutionResult) by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13706
* Refactor timeline activity insert by @charlesBochet in https://github.com/twentyhq/twenty/pull/13696
* [Need metadatada sync] - add user email unique on workspace member by @etiennejouan in https://github.com/twentyhq/twenty/pull/13686
* Timestamp column migration in all workspace schema tables by @etiennejouan in https://github.com/twentyhq/twenty/pull/13679
* CreateMany optim - .save -> .updateMany + position by @etiennejouan in https://github.com/twentyhq/twenty/pull/13704
* Fix i18n issues on datamodel translation by @charlesBochet in https://github.com/twentyhq/twenty/pull/13710
* Remove filters following deleted trigger/steps by @thomtrp in https://github.com/twentyhq/twenty/pull/13697
* Fix update many behavior with composite and connect by @charlesBochet in https://github.com/twentyhq/twenty/pull/13712
* Filter dropdown by types by @thomtrp in https://github.com/twentyhq/twenty/pull/13703
* [permissions] Fix delete and soft-delete + enable fieldPermissions in devSeeds by @ijreilly in https://github.com/twentyhq/twenty/pull/13646
* fix record position calculations on tables by @ehconitin in https://github.com/twentyhq/twenty/pull/13723
* Fix missing WHERE clause in migration by @martmull in https://github.com/twentyhq/twenty/pull/13718
* Set flow after step creation by @Devessier in https://github.com/twentyhq/twenty/pull/13725
* Do not throw when no selected not found by @thomtrp in https://github.com/twentyhq/twenty/pull/13727
* Remove chrome extension by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13729
* Upgrade to Node 24 by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13730
* Refactor `FieldMetadataService` and validation to consume `FlatObjectMetadataMaps` by @prastoin in https://github.com/twentyhq/twenty/pull/13719
* Remove filter when this is the last step by @thomtrp in https://github.com/twentyhq/twenty/pull/13726
* Prevent node creation when trigger is empty by @thomtrp in https://github.com/twentyhq/twenty/pull/13731
* [permissions] QA fixes by @ijreilly in https://github.com/twentyhq/twenty/pull/13698
* Expect node `24.5.0` by @prastoin in https://github.com/twentyhq/twenty/pull/13734
* fix rest api metadata by @etiennejouan in https://github.com/twentyhq/twenty/pull/13720
* Create resolvers and controllers for core views by @bosiraphael in https://github.com/twentyhq/twenty/pull/13624
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/13738
* Add command to delete workflow runs by @martmull in https://github.com/twentyhq/twenty/pull/13736
* Run migrations on empty databases on docker compose by @thani-sh in https://github.com/twentyhq/twenty/pull/13647
* Improve messaging behavior by @charlesBochet in https://github.com/twentyhq/twenty/pull/13746
* Update try/catch syntax by @FelixMalfait in https://github.com/twentyhq/twenty/pull/13732
* Improve messaging batch by @charlesBochet in https://github.com/twentyhq/twenty/pull/13747
* Other messaging improvements by @charlesBochet in https://github.com/twentyhq/twenty/pull/13750

## New Contributors
* @Atharva-Pandkar made their first contribution in https://github.com/twentyhq/twenty/pull/13572
* @aaron-cal made their first contribution in https://github.com/twentyhq/twenty/pull/13573
* @alexcohfr made their first contribution in https://github.com/twentyhq/twenty/pull/13597
* @BiswasRai made their first contribution in https://github.com/twentyhq/twenty/pull/13608
* @thani-sh made their first contribution in https://github.com/twentyhq/twenty/pull/13647

**Full Changelog**: https://github.com/twentyhq/twenty/compare/v1.2.0...v1.3.0