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