Twenty v1.20.0stable Released Mar 31, 2026
Impact Score: 5/10

Twenty v1.20.0 — Release Notes & Engineering Impact

Source available — automated, not human-reviewed

Component: twenty · Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Compatibility not verified — check source notes
📄 .MD
⚡ Executive Summary (TL;DR)

Twenty v1.20.0. Source highlight: feat: add resumable stream support for agent chat

Who Does This Impact? (Role-Based Analysis)

💻 Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

📊 Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

⚙️ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

✨ New Features & Capabilities (6)

  • feat: add resumable stream support for agent chat
  • Add Gemini 3.1 Flash Lite model to AI registry
  • feat: rename RICH_TEXT_V2 → RICH_TEXT in codebase (keep DB value)
  • feat: deprecate WorkspaceFavorite in favor of NavigationMenuItem
  • feat: enable Rich Text as a creatable field type
  • Add pitfall reminders to LLMS guidance

⚡ Performance & Enhancements (6)

  • Improve type safety and remove unnecessary store operations
  • Improve workflow metrics with faillure reason
  • chore: improve i18n workflow to prevent stale compiled translations
  • Perf investigation - Time qgl query
  • Improve apps
  • Gql direct execution - Improvements

🔧 Bug Fixes & Patches (6)

  • Fix widgets drag handles
  • Fix TransactionNotStartedError
  • fix: show disabled file chip when file no longer exists in timeline
  • Fix upgrade commands 2
  • fix: add missing React key props to ButtonGroup and FloatingButtonGro…
  • docs: fix contributor docs links and typos
📄 View Raw Release Notes (Original Developer Log)
## What's Changed * feat: add resumable stream support for agent chat by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19107 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19134 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19135 * `[SDK]` Extract `twenty-front-component-renderer` outside of `twenty-sdk` ( 2.8MB ) by @prastoin in https://github.com/twentyhq/twenty/pull/19021 * Fix widgets drag handles by @bosiraphael in https://github.com/twentyhq/twenty/pull/19133 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19137 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19139 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19142 * `0.8.0.canary.7` bump by @prastoin in https://github.com/twentyhq/twenty/pull/19150 * Fix TransactionNotStartedError by @Weiko in https://github.com/twentyhq/twenty/pull/19155 * fix: show disabled file chip when file no longer exists in timeline by @bugisthegod in https://github.com/twentyhq/twenty/pull/19045 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19158 * Fix upgrade commands 2 by @charlesBochet in https://github.com/twentyhq/twenty/pull/19157 **Full Changelog**: https://github.com/twentyhq/twenty/compare/v1.19.13...v1.20.0 ## What's Changed * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18617 * Add Gemini 3.1 Flash Lite model to AI registry by @pablofmorales in https://github.com/twentyhq/twenty/pull/18597 * Upgrade Apollo Client to v4 and refactor error handling by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18584 * Improve type safety and remove unnecessary store operations by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18622 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18620 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18621 * Deprecate legacy RICH_TEXT field metadata type by @charlesBochet in https://github.com/twentyhq/twenty/pull/18623 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18625 * fix: add missing React key props to ButtonGroup and FloatingButtonGro… by @williamjusticedavis in https://github.com/twentyhq/twenty/pull/18615 * feat: rename RICH_TEXT_V2 → RICH_TEXT in codebase (keep DB value) by @charlesBochet in https://github.com/twentyhq/twenty/pull/18628 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18633 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18636 * feat: deprecate WorkspaceFavorite in favor of NavigationMenuItem by @charlesBochet in https://github.com/twentyhq/twenty/pull/18624 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18639 * feat: enable Rich Text as a creatable field type by @charlesBochet in https://github.com/twentyhq/twenty/pull/18634 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18642 * Add pitfall reminders to LLMS guidance by @Bonapara in https://github.com/twentyhq/twenty/pull/18627 * View field override by @Weiko in https://github.com/twentyhq/twenty/pull/18572 * feat: migrate objectMetadata reads to granular metadata store by @charlesBochet in https://github.com/twentyhq/twenty/pull/18643 * docs: fix contributor docs links and typos by @channi23 in https://github.com/twentyhq/twenty/pull/18637 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18644 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18645 * feat: uniformize metadata store with flat types, SSE alignment, presentation endpoint & localStorage by @charlesBochet in https://github.com/twentyhq/twenty/pull/18647 * feat: hash-based metadata staleness detection by @charlesBochet in https://github.com/twentyhq/twenty/pull/18649 * refactor: metadata store cleanup, SSE unification, mock metadata loading & login redirect fix by @charlesBochet in https://github.com/twentyhq/twenty/pull/18651 * fix: yauzl contains an off-by-one error by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/18662 * fix: expr-eval related dependabot alerts by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/18661 * fix: @isaacs/brace-expansion has uncontrolled resource consumption by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/18660 * fix: multer vulnerable to denial of service via uncontrolled recursion by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/18659 * Implement OAuth 2.0 Dynamic Client Registration (RFC 7591) by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18608 * fix: DOMPurify contains a cross-site scripting vulnerability by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/18665 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18669 * refactor: remove "core" naming from views and eliminate converter layer by @charlesBochet in https://github.com/twentyhq/twenty/pull/18667 * fix: mailparser vulnerable to cross-site scripting by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/18664 * fix: return method-specific MCP responses by @channi23 in https://github.com/twentyhq/twenty/pull/18671 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18674 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18677 * fix: add viewFieldGroupId to ViewField fragment and connect page layout selectors to live metadata store by @ehconitin in https://github.com/twentyhq/twenty/pull/18676 * Fix timeline activities + breadcrumb by @thomtrp in https://github.com/twentyhq/twenty/pull/18626 * refactor: consolidate database query timeout config variables by @charlesBochet in https://github.com/twentyhq/twenty/pull/18670 * fix: respect standard object rename across all locales (Closes #18650) by @Assad-Robles in https://github.com/twentyhq/twenty/pull/18652 * Fix styles side column by @Devessier in https://github.com/twentyhq/twenty/pull/18632 * Fix custom object view fields creation by @Weiko in https://github.com/twentyhq/twenty/pull/18629 * Update sidebar section toggle to match Figma chevron by @Bonapara in https://github.com/twentyhq/twenty/pull/18631 * fix: allow identical singular and plural labels for objects by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18678 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18683 * feat: add color property to ObjectMetadata for object icon customization by @charlesBochet in https://github.com/twentyhq/twenty/pull/18672 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18686 * refactor: remove ProcessedNavigationMenuItem, derive display fields at point of use by @charlesBochet in https://github.com/twentyhq/twenty/pull/18687 * fix 2FA UI layout by @neo773 in https://github.com/twentyhq/twenty/pull/18688 * chore: frontend dead code removal and naming cleanup by @charlesBochet in https://github.com/twentyhq/twenty/pull/18690 * refactor(twenty-front): reorganize NavigationMenuItem module into common/display/edit subfolders by @charlesBochet in https://github.com/twentyhq/twenty/pull/18691 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18696 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18692 * Twenty sdk cli oauth by @martmull in https://github.com/twentyhq/twenty/pull/18638 * Add hotkeys to command menu items by @bosiraphael in https://github.com/twentyhq/twenty/pull/18682 * [FIx]: using the dynamic {objectLabelPlural} instead of hardcoded name by @carbonFibreCode in https://github.com/twentyhq/twenty/pull/18700 * Setup local instance on app creation by @thomtrp in https://github.com/twentyhq/twenty/pull/18184 * refactor: unify layout customization mode (record pages + navigation) by @ehconitin in https://github.com/twentyhq/twenty/pull/18640 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18703 * [Command menu items] Create engine commands by @bosiraphael in https://github.com/twentyhq/twenty/pull/18681 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18704 * refactor(twenty-front): unify Favorites and Workspace navigation menu item code by @charlesBochet in https://github.com/twentyhq/twenty/pull/18697 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18709 * Update store on data model mutation by @thomtrp in https://github.com/twentyhq/twenty/pull/18684 * Upgrade Ink to v6 and pause TUI on idle/error by @charlesBochet in https://github.com/twentyhq/twenty/pull/18705 * feat: optimistic metadata store updates for navigation menu items by @charlesBochet in https://github.com/twentyhq/twenty/pull/18710 * fix: make 1.19 upgrade commands resilient to pre-existing data by @charlesBochet in https://github.com/twentyhq/twenty/pull/18716 * Skip threads with no participants in timeline formatting by @neo773 in https://github.com/twentyhq/twenty/pull/18725 * fix: restructure navigationMenuItem type migration for safe upgrade path by @charlesBochet in https://github.com/twentyhq/twenty/pull/18722 * fix: route object color through standardOverrides for standard objects by @charlesBochet in https://github.com/twentyhq/twenty/pull/18717 * Treat Microsoft Graph 400 with empty body as transient error by @neo773 in https://github.com/twentyhq/twenty/pull/18726 * Fix null connectedAccount crash in blocklist message deletion job by @neo773 in https://github.com/twentyhq/twenty/pull/18723 * Publish new version by @martmull in https://github.com/twentyhq/twenty/pull/18727 * fix Draft Email stuck Callout by @neo773 in https://github.com/twentyhq/twenty/pull/18719 * Support template variables in command menu item labels by @bosiraphael in https://github.com/twentyhq/twenty/pull/18707 * workspace:export command by @neo773 in https://github.com/twentyhq/twenty/pull/18695 * fix: navigation menu item type backfill and frontend loading by @charlesBochet in https://github.com/twentyhq/twenty/pull/18730 * Migrate permission flag to syncable entity by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18567 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18736 * fix(auth): use dynamic SSE headers and add token renewal retry logic by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18706 * Remove front component and command menu item old seeds by @bosiraphael in https://github.com/twentyhq/twenty/pull/18737 * Add progress tracking to command menu items by @bosiraphael in https://github.com/twentyhq/twenty/pull/18732 * Add record page layout tabs editing by @Devessier in https://github.com/twentyhq/twenty/pull/18702 * fix: migrate driver modules to DriverFactoryBase lazy-loading pattern by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18731 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18738 * fix: replace > button with button selector in styled wrappers by @bugisthegod in https://github.com/twentyhq/twenty/pull/18568 * Migrate object permission to syncable entity by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18609 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18742 * fix: restore ViewFilter value stringification lost in converter removal by @charlesBochet in https://github.com/twentyhq/twenty/pull/18745 * Scaffold light twenty app dev container by @martmull in https://github.com/twentyhq/twenty/pull/18734 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18749 * fix: use unique concurrency group per merge queue entry by @charlesBochet in https://github.com/twentyhq/twenty/pull/18756 * chore(deps): bump @ai-sdk/mistral from 3.0.20 to 3.0.25 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/18755 * chore(deps): bump @dagrejs/dagre from 1.1.3 to 1.1.8 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/18753 * chore(deps): bump nodemailer from 7.0.11 to 7.0.13 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/18754 * Separate metadata and object record publisher by @thomtrp in https://github.com/twentyhq/twenty/pull/18740 * Fix: prevent record navigation when clicking Remove from favorite in nav sidebar by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18760 * Remove postition from Timeline Activities + fix workflow title placeholder by @thomtrp in https://github.com/twentyhq/twenty/pull/18777 * Fix: cascade delete favorite folder children on backend by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18765 * Fix relation connect where failing on mixed-case email and URL by @bugisthegod in https://github.com/twentyhq/twenty/pull/18605 * fix: stop event propagation when removing file in AI chat preview by @victorjzq in https://github.com/twentyhq/twenty/pull/18779 * Fix: Hide object from Opened section when it already has a workspace nav item by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18766 * feat: migrate ConnectedAccount infrastructure entities to metadata schema by @charlesBochet in https://github.com/twentyhq/twenty/pull/18784 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18786 * Improve workflow metrics with faillure reason by @thomtrp in https://github.com/twentyhq/twenty/pull/18768 * fix: remove redundant cookie write that made tokenPair a session cookie by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18795 * fix: autogrow input sizing + surface nested error details in upgrade command by @charlesBochet in https://github.com/twentyhq/twenty/pull/18796 * fix: backfill missing ids on SELECT/MULTI_SELECT field metadata options by @charlesBochet in https://github.com/twentyhq/twenty/pull/18797 * Avoid side panel tab overriden by show page by @thomtrp in https://github.com/twentyhq/twenty/pull/18800 * fix: add missing LEFT JOIN for relation fields in groupBy orderByForRecords by @charlesBochet in https://github.com/twentyhq/twenty/pull/18798 * fix: update workspace members state on profile onboarding completion by @charlesBochet in https://github.com/twentyhq/twenty/pull/18799 * fix - handle invoice.paid webhook to recover unpaid subscriptions by @etiennejouan in https://github.com/twentyhq/twenty/pull/18770 * Direct graphql execution by @etiennejouan in https://github.com/twentyhq/twenty/pull/18759 * Add a note to documentation about variable change by @BOHEUS in https://github.com/twentyhq/twenty/pull/18752 * Fix orphan navigation menu items for deleted views by @channi23 in https://github.com/twentyhq/twenty/pull/18791 * fix: decouple viewPicker favorite detection from sorted navigation menu items by @charlesBochet in https://github.com/twentyhq/twenty/pull/18803 * Clean workflow query invalid input errors from sentry by @thomtrp in https://github.com/twentyhq/twenty/pull/18804 * feat: secure and user-scope metadata resolvers for messaging infrastructure by @charlesBochet in https://github.com/twentyhq/twenty/pull/18787 * fix useless auth in sdk gql codegen command by @etiennejouan in https://github.com/twentyhq/twenty/pull/18805 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18806 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18807 * fix(links): preserve percent-encoded URLs during normalization by @Dailin521 in https://github.com/twentyhq/twenty/pull/18792 * fix: restore original migration timestamp for messaging infrastructure by @charlesBochet in https://github.com/twentyhq/twenty/pull/18810 * Fix page scrolling when layout customization bar is visible by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18802 * [Fix]: Vertical bar charts with max data range do not show data up to the top if above max data range by @carbonFibreCode in https://github.com/twentyhq/twenty/pull/18748 * Fix AI chat re-renders and refactored code by @lucasbordeau in https://github.com/twentyhq/twenty/pull/18585 * fix: prevent blank subdomain from being saved by @oniani1 in https://github.com/twentyhq/twenty/pull/18812 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18822 * feat: replace hardcoded AI model constants with JSON seed catalog by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18818 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18823 * fix: board view loads all records instead of showing skeleton placeholders by @charlesBochet in https://github.com/twentyhq/twenty/pull/18824 * fix: prevent FIND_RECORDS from silently dropping unresolved filter variables by @oniani1 in https://github.com/twentyhq/twenty/pull/18814 * fix: skip chat messages query when thread ID is the unknown-thread default by @neo773 in https://github.com/twentyhq/twenty/pull/18828 * feat: store SSO connections as connected accounts during sign-in by @charlesBochet in https://github.com/twentyhq/twenty/pull/18825 * Fetch load more on group by by @thomtrp in https://github.com/twentyhq/twenty/pull/18811 * fix: prevent localStorage bloat from derived fields on mock metadata by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18809 * refactor: rename ObjectMetadataItem to EnrichedObjectMetadataItem and clean up metadata flows by @charlesBochet in https://github.com/twentyhq/twenty/pull/18830 * [Chore]: Migration to dynamic view names for standard views by @carbonFibreCode in https://github.com/twentyhq/twenty/pull/18701 * Add `In-Reply-To` to Email Workflow Node by @neo773 in https://github.com/twentyhq/twenty/pull/18641 * fix: auto-retry Microsoft OAuth on AADSTS650051 race condition by @311u1 in https://github.com/twentyhq/twenty/pull/18405 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18831 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18832 * Improve helm chart // Fix linting issues & introduce Redis externalSecret for redis password // Add additional ENVs // Improve migrations by @HuppertzL in https://github.com/twentyhq/twenty/pull/18157 * fix(helm): add unit tests, extraEnv schema validation, and minor fixes by @charlesBochet in https://github.com/twentyhq/twenty/pull/18836 * fix: reset form defaultValues after save to fix dirty detection by @bugisthegod in https://github.com/twentyhq/twenty/pull/18835 * Create command menu items for workflows with manual trigger by @bosiraphael in https://github.com/twentyhq/twenty/pull/18746 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18837 * Fix: TypeError: Cannot convert undefined or null to object by @sonarly[bot] in https://github.com/twentyhq/twenty/pull/18333 * Allow users to create Fields and Field widget by @Devessier in https://github.com/twentyhq/twenty/pull/18801 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18838 * Migrate field widgets to backend by @Devessier in https://github.com/twentyhq/twenty/pull/18808 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18839 * Fix migration crash: agent.modelId NOT NULL violation by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18844 * Add billing usage analytics dashboard with ClickHouse integration by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18592 * Show AI provider sections regardless of billing status by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18845 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18846 * chore: improve i18n workflow to prevent stale compiled translations by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18850 * fix: run AI catalog sync as standalone script to avoid DB dependency by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18853 * chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18854 * chore: trigger automerge for AI catalog sync PRs by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18855 * Fix deploy: remove stale @ai-sdk/groq from yarn.lock by @charlesBochet in https://github.com/twentyhq/twenty/pull/18863 * fix: add security headers to file serving endpoints to prevent stored XSS by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18857 * Update BackfillCommandMenuItemsCommand with workflow backfill by @bosiraphael in https://github.com/twentyhq/twenty/pull/18848 * Ensure command backfills all relations as Field widget by @Devessier in https://github.com/twentyhq/twenty/pull/18858 * Fix e2e test by @etiennejouan in https://github.com/twentyhq/twenty/pull/18866 * Rename "New sidebar item" to "New menu item" by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18859 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18873 * Fix: Background color selected row + border bottom settings tab by @thomtrp in https://github.com/twentyhq/twenty/pull/18870 * Fix workspace dropdown truncation and center auth titles by @Bonapara in https://github.com/twentyhq/twenty/pull/18869 * Fix multi-select option removal crashing when records contain removed values by @charlesBochet in https://github.com/twentyhq/twenty/pull/18871 * Add visual regression CI for twenty-ui by @charlesBochet in https://github.com/twentyhq/twenty/pull/18877 * chore: add explicit return type to getBackgroundColor by @charlesBochet in https://github.com/twentyhq/twenty/pull/18878 * chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18885 * chore: optimize app-dev Docker image and add CI test by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18856 * [AI] Fix new chat button stacking side panel and auto-focus editor by @ehconitin in https://github.com/twentyhq/twenty/pull/18875 * Fix twenty app dev image by @martmull in https://github.com/twentyhq/twenty/pull/18852 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18903 * Fix rich text widget edition by @Devessier in https://github.com/twentyhq/twenty/pull/18899 * fix: ai providers json formatting by @neo773 in https://github.com/twentyhq/twenty/pull/18910 * Fix cropped view/link overlay icons in collapsed navigation sidebar by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18883 * Fix lambda driver by @martmull in https://github.com/twentyhq/twenty/pull/18907 * Perf investigation - Time qgl query by @etiennejouan in https://github.com/twentyhq/twenty/pull/18911 * fix: validate blocknote JSON in rich text fields by @charlesBochet in https://github.com/twentyhq/twenty/pull/18902 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18915 * Fix duplicate views creation in command by @Devessier in https://github.com/twentyhq/twenty/pull/18900 * fix: insert-before folder for workspace DnD and add-to-nav drags by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18789 * Display found items after full items loaded by @thomtrp in https://github.com/twentyhq/twenty/pull/18914 * Fix double arrow by @martmull in https://github.com/twentyhq/twenty/pull/18916 * fix: metadata store lifecycle during sign-in, sign-out, and locale change by @charlesBochet in https://github.com/twentyhq/twenty/pull/18901 * Fix readme by @martmull in https://github.com/twentyhq/twenty/pull/18918 * Fix documentation by @martmull in https://github.com/twentyhq/twenty/pull/18917 * Fix navigation “add before/after” insertion index by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18879 * Refactor: Unify command menu item execution by @bosiraphael in https://github.com/twentyhq/twenty/pull/18908 * Fix batch update optimistic and prevent accidental mass-update by @samuelarbibe in https://github.com/twentyhq/twenty/pull/17213 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18920 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18922 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18925 * Fix visual regression dispatch for fork PRs by @charlesBochet in https://github.com/twentyhq/twenty/pull/18921 * Refactor backfill-command-menu-items to use a single validateBuildAndRun call by @bosiraphael in https://github.com/twentyhq/twenty/pull/18923 * send X-Schema-Version header when metadataVersion is 0 by @thomtrp in https://github.com/twentyhq/twenty/pull/18924 * Add record table widget to dashboards by @lucasbordeau in https://github.com/twentyhq/twenty/pull/18747 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18926 * Refactor twenty client sdk provisioning for logic function and front-component by @prastoin in https://github.com/twentyhq/twenty/pull/18544 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18930 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18931 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18932 * Batch create, update, and delete navigation menu items by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18882 * Unify auth context → role permission config resolution into a single pure utility by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18927 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18934 * Use side panel sub-pages for add-to-folder flow by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18872 * Add twenty-sdk-client to deployed packages unique version check by @martmull in https://github.com/twentyhq/twenty/pull/18933 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18935 * Set system object icon colors to gray in New menu item flows by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18862 * Animate the sidebar when opening/closing an element in the "opened" section by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18867 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18936 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18938 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18941 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18942 * fix navigation menu item overflow issue by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18937 * fix logo upload during workspace onboarding by @neo773 in https://github.com/twentyhq/twenty/pull/18905 * Migrate twenty-companion from npm to yarn workspaces by @charlesBochet in https://github.com/twentyhq/twenty/pull/18946 * fix: reset throttle state on channel relaunch by @neo773 in https://github.com/twentyhq/twenty/pull/18843 * Do not rollback on cache invalidation failure in workspace migration runner by @prastoin in https://github.com/twentyhq/twenty/pull/18947 * Fix object permission override by @thomtrp in https://github.com/twentyhq/twenty/pull/18948 * Fix: use user role for OAuth tokens bearing user context by @ijreilly in https://github.com/twentyhq/twenty/pull/18954 * fix: wrap standard object/field metadata labels in msg for i18n extraction by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18951 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18955 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18956 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18958 * Split command menu items backfill into separate migration runs per application by @charlesBochet in https://github.com/twentyhq/twenty/pull/18957 * Add object type filter dropdown to side panel record searches by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18912 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18967 * feat: add S3 presigned URL redirect for file downloads by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18864 * Fix: default to allow-read when object permissions are not yet loaded by @charlesBochet in https://github.com/twentyhq/twenty/pull/18971 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18976 * Fix record page layout upgrade commands by @Devessier in https://github.com/twentyhq/twenty/pull/18962 * Add record table widget feature flag by @lucasbordeau in https://github.com/twentyhq/twenty/pull/18960 * Fix SSE event stream errors when impersonating users with limited permissions by @thomtrp in https://github.com/twentyhq/twenty/pull/18966 * Add multiselect option to form step by @thomtrp in https://github.com/twentyhq/twenty/pull/18979 * Do not run loop when iterator is skipped by @thomtrp in https://github.com/twentyhq/twenty/pull/18964 * fix SVG icon sizing broken in Chrome 142 by @charlesBochet in https://github.com/twentyhq/twenty/pull/18974 * Fixed board no value column not fetching more by @lucasbordeau in https://github.com/twentyhq/twenty/pull/18977 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18981 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18982 * chore(deps): bump @linaria/core from 6.2.0 to 6.3.0 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/18984 * chore(deps): bump @ai-sdk/xai from 3.0.59 to 3.0.74 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/18986 * chore(deps): bump @microsoft/microsoft-graph-types from 2.40.0 to 2.43.1 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/18985 * [AI] Match ai chat composer to figma by @ehconitin in https://github.com/twentyhq/twenty/pull/18874 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18987 * [AI] Refactor settings search to use SearchInput and restructure Skills tab by @ehconitin in https://github.com/twentyhq/twenty/pull/18876 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18988 * fix: prevent saving API key with empty name by @bugisthegod in https://github.com/twentyhq/twenty/pull/18970 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18990 * feat: make workflow objects searchable by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18906 * Use record page layouts in the merge records feature by @Devessier in https://github.com/twentyhq/twenty/pull/18961 * fix: handle dashboard filters referencing deleted fields by @ehconitin in https://github.com/twentyhq/twenty/pull/18512 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/18997 * fix dashboard widget edit mode content by @ehconitin in https://github.com/twentyhq/twenty/pull/18965 * fix: prevent empty array `id.in` filter in single record picker by @FelixMalfait in https://github.com/twentyhq/twenty/pull/18995 * [Ai] fix overflow on new chat button by @ehconitin in https://github.com/twentyhq/twenty/pull/18996 * fix: hide "Move to folder" when no destination folder is available by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18992 * Refactor dependency graph for SDK, client-sdk and create-app by @prastoin in https://github.com/twentyhq/twenty/pull/18963 * Bump prelease version sdk, sdk-client, create-twenty-app by @prastoin in https://github.com/twentyhq/twenty/pull/19000 * fix: hide objects with no addable views in sidebar view picker by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18993 * connected accounts follow up by @neo773 in https://github.com/twentyhq/twenty/pull/18998 * [AI] Navigation panel scroll refactor + Non chat placeholder by @ehconitin in https://github.com/twentyhq/twenty/pull/18999 * Add missing row lvl permission check on Kanban view by @thomtrp in https://github.com/twentyhq/twenty/pull/19002 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19011 * [AI] replace custom styles with MenuItem and SidePanelGroup in AI agent persmissions tab by @ehconitin in https://github.com/twentyhq/twenty/pull/19003 * Fix format result by @etiennejouan in https://github.com/twentyhq/twenty/pull/18975 * `[SDK]` twenty-ui/display selective re-export to avoid bloating icons by @prastoin in https://github.com/twentyhq/twenty/pull/19010 * feat: add command menu item to layout customization by @ehconitin in https://github.com/twentyhq/twenty/pull/18764 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19014 * Fix create new with filters by @lucasbordeau in https://github.com/twentyhq/twenty/pull/18969 * Fix board drag and drop issues by @lucasbordeau in https://github.com/twentyhq/twenty/pull/19005 * [Apps SDK] Add error message if relationType is missing by @ijreilly in https://github.com/twentyhq/twenty/pull/19006 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19018 * feat: support authType on AI providers for IAM role authentication by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19016 * fix: update settings page for mobile viewport by @harshit078 in https://github.com/twentyhq/twenty/pull/18991 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19019 * Fix: Cannot create two workflow agent nodes because these have the same name by @thomtrp in https://github.com/twentyhq/twenty/pull/19015 * Fix not shared chip height + hard coded border radius by @Bonapara in https://github.com/twentyhq/twenty/pull/19020 * Clear navbar edit selection when closing the side panel by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18940 * [Dashboards] fix rich text widget AGAIN by @ehconitin in https://github.com/twentyhq/twenty/pull/19017 * Combine and clean upgrade commands for record page layouts by @Devessier in https://github.com/twentyhq/twenty/pull/19004 * chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19028 * fix: gate command-menu-items query behind feature flag by @charlesBochet in https://github.com/twentyhq/twenty/pull/19029 * fix: batch viewGroup mutations sequentially to prevent race conditions by @cyphercodes in https://github.com/twentyhq/twenty/pull/19027 * fix: remove remaining direct cookie writes that make tokenPair a session cookie on renewal by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19031 * fix: sign file URLs in timeline and file loss on click outside by @bugisthegod in https://github.com/twentyhq/twenty/pull/19001 * Refactor client auto heal by @prastoin in https://github.com/twentyhq/twenty/pull/19032 * refacto - remove hello-pangea/dnd from navigation-menu-item module by @etiennejouan in https://github.com/twentyhq/twenty/pull/19033 * Seed company workflow for email upserts by @Bonapara in https://github.com/twentyhq/twenty/pull/18909 * First PR to bring in the new twenty website. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19035 * fix: use workspace-generated id for core dual-write in message folder save by @neo773 in https://github.com/twentyhq/twenty/pull/19038 * Migrate field permission to syncable entity by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/18751 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19040 * Guard `yarn database:migrate:prod` by @prastoin in https://github.com/twentyhq/twenty/pull/19008 * fix: resolve availabilityObjectMetadataUniversalIdentifier in backfill command by @charlesBochet in https://github.com/twentyhq/twenty/pull/19041 * Enforce workspace count limit for multi-workspace setups by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19036 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19046 * Fix backfill record page layout command by @Devessier in https://github.com/twentyhq/twenty/pull/19043 * fix: invalidate rolesPermissions cache + add Docker Hub auth to CI by @charlesBochet in https://github.com/twentyhq/twenty/pull/19044 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19048 * Fix INDEX view showing labelPlural instead of resolved view name in nav by @charlesBochet in https://github.com/twentyhq/twenty/pull/19049 * Deprecate dataSource table with dual-write to workspace.databaseSchema by @charlesBochet in https://github.com/twentyhq/twenty/pull/19059 * feat: optimize hot database queries with multi-layer caching by @charlesBochet in https://github.com/twentyhq/twenty/pull/19068 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19073 * fix: resolve settings/usage chart crash and add ClickHouse usage event seeds by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19039 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19076 * chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19078 * chore: remove completed migration feature flags and upgrade commands <= 1.18 by @charlesBochet in https://github.com/twentyhq/twenty/pull/19074 * chore: remove IS_DASHBOARD_V2_ENABLED feature flag by @charlesBochet in https://github.com/twentyhq/twenty/pull/19079 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19080 * chore: remove IS_APPLICATION_ENABLED feature flag by @charlesBochet in https://github.com/twentyhq/twenty/pull/19081 * chore: remove IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED and IS_DATE_TIME_WHOLE_DAY_FILTER_ENABLED feature flags by @charlesBochet in https://github.com/twentyhq/twenty/pull/19082 * chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19100 * Provide applicatiion assets by @martmull in https://github.com/twentyhq/twenty/pull/18973 * Fix warning about ../../tsconfig.base.json not found by @martmull in https://github.com/twentyhq/twenty/pull/19105 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19108 * More parts of the new website. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/19094 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19113 * Fix workspace dropdown by @bosiraphael in https://github.com/twentyhq/twenty/pull/19106 * fix: convert empty parentFolderId to null in messageFolder core dual-write by @neo773 in https://github.com/twentyhq/twenty/pull/19110 * Fix record name hover by @bosiraphael in https://github.com/twentyhq/twenty/pull/19109 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19119 * fix: use Redis metadata version for GraphQL response cache key by @charlesBochet in https://github.com/twentyhq/twenty/pull/19111 * Fix export view by @bosiraphael in https://github.com/twentyhq/twenty/pull/19117 * Fix navigation menu edition by @bosiraphael in https://github.com/twentyhq/twenty/pull/19115 * Fix - Not shared message on record index by @etiennejouan in https://github.com/twentyhq/twenty/pull/19103 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19125 * messaging cleanup by @neo773 in https://github.com/twentyhq/twenty/pull/19124 * chore: remove 1-19 upgrade commands and navigation menu item feature flags by @charlesBochet in https://github.com/twentyhq/twenty/pull/19083 * [APP] Stricter API assertions by @prastoin in https://github.com/twentyhq/twenty/pull/19114 * Fix cropped calendar event name by @bosiraphael in https://github.com/twentyhq/twenty/pull/19126 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19128 * Improve apps by @martmull in https://github.com/twentyhq/twenty/pull/19120 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19129 * Gql direct execution - Improvements by @etiennejouan in https://github.com/twentyhq/twenty/pull/18972 * Fix - Remove signFileUrl method by @etiennejouan in https://github.com/twentyhq/twenty/pull/19121 * clean paddings in favorites section by @Bonapara in https://github.com/twentyhq/twenty/pull/19112 * Fix databaseSchema migration by @Weiko in https://github.com/twentyhq/twenty/pull/19132 * feat: add resumable stream support for agent chat by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19107 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19134 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19135 * `[SDK]` Extract `twenty-front-component-renderer` outside of `twenty-sdk` ( 2.8MB ) by @prastoin in https://github.com/twentyhq/twenty/pull/19021 * Fix widgets drag handles by @bosiraphael in https://github.com/twentyhq/twenty/pull/19133 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19137 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19139 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19142 * `0.8.0.canary.7` bump by @prastoin in https://github.com/twentyhq/twenty/pull/19150 * Fix TransactionNotStartedError by @Weiko in https://github.com/twentyhq/twenty/pull/19155 * fix: show disabled file chip when file no longer exists in timeline by @bugisthegod in https://github.com/twentyhq/twenty/pull/19045 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/19158 * Fix upgrade commands 2 by @charlesBochet in https://github.com/twentyhq/twenty/pull/19157 ## New Contributors * @pablofmorales made their first contribution in https://github.com/twentyhq/twenty/pull/18597 * @williamjusticedavis made their first contribution in https://github.com/twentyhq/twenty/pull/18615 * @channi23 made their first contribution in https://github.com/twentyhq/twenty/pull/18637 * @Assad-Robles made their first contribution in https://github.com/twentyhq/twenty/pull/18652 * @victorjzq made their first contribution in https://github.com/twentyhq/twenty/pull/18779 * @Dailin521 made their first contribution in https://github.com/twentyhq/twenty/pull/18792 * @oniani1 made their first contribution in https://github.com/twentyhq/twenty/pull/18812 * @311u1 made their first contribution in https://github.com/twentyhq/twenty/pull/18405 * @HuppertzL made their first contribution in https://github.com/twentyhq/twenty/pull/18157 * @cyphercodes made their first contribution in https://github.com/twentyhq/twenty/pull/19027 **Full Changelog**: https://github.com/twentyhq/twenty/compare/v1.19.0...v1.20.0