Twenty
The open alternative to Salesforce, designed for AI
Alternative to: salesforce, hubspot, pipedrive, zoho crm
About
Versions (86)
v1.20.0
2026-03-31What’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]Extracttwenty-front-component-rendereroutside oftwenty-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.7bump 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-Toto 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.infilter 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:prodby @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]Extracttwenty-front-component-rendereroutside oftwenty-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.7bump 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