Commit Graph
6012 Commits
Author SHA1 Message Date
1c8dccda01 i18n - translations (#14575)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-17 17:45:43 +02:00
Thomas TrompetteandGitHub 8b345c9fd2 Change workflow node type (#14570)
- Update step endpoint now supports the case where node type is updated
- Added a new page for edition that re-uses the existing select action
component

Additional work:
- moved submitForm function to workflow runner service



https://github.com/user-attachments/assets/1fcb0adc-fe17-41f9-b2ea-4f84318db860
2025-09-17 15:36:42 +00:00
Lucas BordeauandGitHub 0098ac453c Fixes z-index with groups (#14563)
This PR fixes a few z-index issues on table with groups.

Once the z-index issues will have been stabilized, we'll refactor this
big constant file which is hard to maintain.

In https://github.com/twentyhq/core-team-issues/issues/1490, fixes : 
- Aggregate footer label identifier is hidden
- Bug sticky footer label identifier on table with groups has not the
right z-index
2025-09-17 17:17:36 +02:00
Félix MalfaitGitHubgreptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
fda3183ba6 Add missing migration for unaccent (#14566)
It was in setup-db.ts but that's not enough for instances that are
already live

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-09-17 17:13:49 +02:00
04b1019ca4 i18n - translations (#14571)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-17 17:01:06 +02:00
MarieandGitHub 53b853f877 [fix] Handle null icon for field metadata (#14565)
Fixes https://github.com/twentyhq/twenty/issues/14548.

When creating a field metadata through the api, the field's icon can be
null (from twenty UI, a default icon is always added by default and it
is not possible to remove it). Then this value is turned into an empty
string in the payload - i don't know why we don't send the null value.
When updating the field through the UI, we run a zod validation that
either accepts a null value for Icon, or a value that starts with
`"Icon".` In our case, the value for Icon was `""` (an empty string),
which is not valid. Therefore the form was considered not valid until an
icon was added.

While the fix suggested works, we should probably sort out the `null`
conversion to `""`, as it is prone to errors.
2025-09-17 16:58:17 +02:00
nitinandGitHub bc471deaba [Dashboards] - refactor - gauge and number chart (#14550)
This is the fourth and last PR from the split of
https://github.com/twentyhq/twenty/pull/14458 - refactoring PieChart and
NumberChart widgets.
2025-09-17 14:44:50 +00:00
nitinandGitHub 09b9071182 [Dashboards] - Add scroll wrapper (#14561)
## Summary
  - Fixed nested scrolls and sticky tabs in dashboard view
  - Drag select now auto-scrolls via ScrollWrapper context

## Changes
- Wrapped content in ScrollWrapper which provides context ID
automatically
  - Removed overflow from grid container to fix nested scrolls
2025-09-17 15:39:22 +02:00
d841b0d0db i18n - translations (#14560)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-17 15:14:16 +02:00
Paul RastoinandGitHub 2d8669ae71 Index v2 runner (#14537)
## Introduction
https://github.com/twentyhq/twenty/pull/14363
In this PR we're creating builder and runner for index metadata
Removing its previous integration within object builder

## Next:
- implem index impact on field and object metadata api
- Add integration testing coverage add integration test on index
- Implement uniqueness toggle in field metadata api
- add integration test on uniqueness

related to https://github.com/twentyhq/core-team-issues/issues/1344
2025-09-17 13:02:43 +00:00
Lucas BordeauandGitHub 6e47c1b5c6 Fix column resize handle (#14559)
This PR fixes the column resize handle issues.

Fixes in https://github.com/twentyhq/core-team-issues/issues/1490 : 
- We see the pointer blink when resizing => Already here before
refactor, this is because the mouse enter / leave events shouldn't be
triggered while resizing.
- Resizing handle sometimes cannot be clicked anymore / does not appear
anymore (see if another listener doesn't prevent this)

The code will need to be cleaned after all fixes have been done though
has it duplicates logic between the different header components.
2025-09-17 14:39:44 +02:00
EtienneandGitHub 24204b2928 Group By - Add feature flag (#14558)
Tested : 
- workspace needs to flush cache after activating feature flag 
- workspace does not need to flush cache if ff false and coming from
previous version (before gql schema gen updates)
2025-09-17 11:42:11 +00:00
WeikoandGitHub ddb4cf0c8c various UI fixes in calendar view (#14551) 2025-09-17 12:45:40 +02:00
814c30e775 i18n - translations (#14555)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-17 11:40:55 +02:00
8d9617131c Feat: Add reasoning summary and tool details display for AI responses (#14414)
Closes [#1405](https://github.com/twentyhq/core-team-issues/issues/1405)

### Implemented Features
- Reasoning Summary: Collapsible display of AI thinking process with
real-time streaming
- Tool Execution: Detailed tool call rendering with expandable results
and loading states
- Error Handling: Clean error stream event display with proper
formatting


### Demo



https://github.com/user-attachments/assets/76ad29b7-d831-4bc8-a115-ad25f7ace6e2

<img width="504" height="819" alt="Screenshot 2025-09-12 at 3 23 39 AM"
src="https://github.com/user-attachments/assets/82dc177d-f009-4e8a-8901-ee1a49201984"
/>

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2025-09-17 11:30:24 +02:00
1bf6821b07 i18n - translations (#14553)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-17 11:21:21 +02:00
martmullandGitHub f6530abdf4 Add settings section for public domains (#14543)
As title



https://github.com/user-attachments/assets/1c2adb14-0fc1-4623-88bc-10ff729c72a1
2025-09-17 09:07:02 +00:00
Lucas BordeauandGitHub 7309717ed7 Fix table footer cell resize issue (#14552)
This PR fixes issues about the resizing of footer cell.

Fixes in https://github.com/twentyhq/core-team-issues/issues/1490 :
- Resizing doesn't move footer cell
- Fix column min width (create a constant file with 104px)
2025-09-17 08:43:11 +00:00
EtienneandGitHub dc435a7946 Add default limit when fetching records (#14532)
- set default limit on front find many hooks
- use default constant in rest api find many endpoint
- set a max limit in rest api find many endpoint
2025-09-17 10:32:47 +02:00
EtienneandGitHub 61b9d82950 create groupBy resolver + mock groupBy service (#14530)
To test :

```
query : 
query companiesGroupBy($groupBy: CompanyGroupByInput){
  companiesGroupBy(groupBy: $groupBy){
    groupByDimensionValues
    countEmptyId
    sumAnnualRecurringRevenueAmountMicros
    countEmptyAddress
    percentageEmptySearchVector
  }
}

input : 
{"groupBy": {"name": true, "employees": true, "domainName": {"primaryLinkUrl": true}}}

response : 
{
  "data": {
    "companiesGroupBy": [
      {
        "groupByDimensionValues": [
          "Text 1",
          "twenty.com",
          "1"
        ],
        "countEmptyId": 39,
        "sumAnnualRecurringRevenueAmountMicros": 20,
        "countEmptyAddress": 56,
        "percentageEmptySearchVector": 88
      },
      {
        "groupByDimensionValues": [
          "Long long long long and long text 2",
          "github.com/twentyhq/twenty",
          "2"
        ],
        "countEmptyId": 20,
        "sumAnnualRecurringRevenueAmountMicros": 56,
        "countEmptyAddress": 88,
        "percentageEmptySearchVector": 2
      },
      {
        "groupByDimensionValues": [
          "Text 3",
          "react.dev",
          "3"
        ],
        "countEmptyId": 56,
        "sumAnnualRecurringRevenueAmountMicros": 88,
        "countEmptyAddress": 2,
        "percentageEmptySearchVector": 39
      }
    ]
  }
}
```
closes https://github.com/twentyhq/core-team-issues/issues/1439
2025-09-17 10:23:34 +02:00
Lucas BordeauandGitHub 2430f21d83 Fixed last column width bug on table with groups (#14541)
This PR fixes the last column of a table with groups that was wrapping
on a new line on a empty table or its filtering equivalent (filter
without result)

Fixes in https://github.com/twentyhq/core-team-issues/issues/1490 :
- Fixes most urgent : Empty table with groups header wraps
- Fixes less urgent : Resizing a table with groups makes some filling
resize in the wrong direction
2025-09-17 10:04:02 +02:00
2a7a83de81 feat(search): Add unaccent support for accent-insensitive search. (#14464)
##  Add accent-insensitive search functionality

### 🎯 Overview
Implements accent-insensitive search across all searchable fields in
Twenty CRM.
Users can now search for "jose" to find "José", "muller" to find
"Müller", "cafe" to find "café", etc.

### 🔍 Problem
Twenty's search functionality was accent-sensitive, requiring users to
type exact accented characters to find records.
This created a poor user experience, especially for international names
and content.

### 💡 Solution
Added PostgreSQL `unaccent` extension with a custom immutable wrapper
function to enable accent-insensitive full-text search across all
searchable field types.

### 📋 Changes Made
**Modified Files:**  
- `packages/twenty-server/scripts/setup-db.ts`  
-
`packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/compute-where-condition-parts.ts`
-
`packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util.ts`

### 🗄️ Database Setup (`setup-db.ts`)
```sql
-- Added unaccent extension
CREATE EXTENSION IF NOT EXISTS "unaccent";

-- Created immutable wrapper function
CREATE OR REPLACE FUNCTION unaccent_immutable(text) RETURNS text AS $$
  SELECT public.unaccent($1)
$$ LANGUAGE sql IMMUTABLE;
```

### 🔍 Search Vector Generation
(`get-ts-vector-column-expression.util.ts`)
Applied `public.unaccent_immutable()` to all searchable field types:  
- TEXT fields (job titles, names, etc.)  
- FULL_NAME fields (first/last names)  
- EMAILS fields (both email address and domain)  
- ADDRESS fields  
- LINKS fields  
- RICH_TEXT and RICH_TEXT_V2 fields

### 🔎 Query Processing (`compute-where-condition-parts.ts`)
Enhanced search queries to use `public.unaccent_immutable()` for both:  
- Full-text search (`@@` operator with `to_tsquery`)  
- Pattern matching (`ILIKE` operator)

### 🧠 Technical Rationale: Why the Wrapper Function?
**The Challenge:**  
PostgreSQL's built-in `unaccent()` is marked as **STABLE**, but
`GENERATED ALWAYS AS` expressions (used for search vector columns)
require **IMMUTABLE** functions.

**The Solution:**  
Created an IMMUTABLE wrapper function that calls the underlying
`unaccent()` function:
-  Satisfies PostgreSQL's immutability requirements for generated
columns
-  Maintains the exact same functionality as the original `unaccent()`
-  Uses fully qualified `public.unaccent_immutable()` to ensure
function resolution from workspace schemas

**Alternative Approaches Considered:**  
-  Modifying `search_path`: would affect workspace isolation  
-  Computing unaccent at query time: would hurt performance  
-  Using triggers: would complicate data consistency

### 🎯 Impact
For **Person** records, accent-insensitive search now works on:  
- Name (first/last name): `"jose garcia"` finds `"José García"`  
- Email: `"jose@cafe.com"` finds `"josé@café.com"`  
- Job Title: `"manager"` finds `"Managér"` or `"Gerente de Café"`

Applies to all searchable standard objects:  
- Companies, People, Opportunities, Notes, Tasks, etc.  
- Any custom fields of searchable types (TEXT, EMAILS, etc.)

###  Testing
- Database reset completes successfully  
- Workspace seeding works without errors  
- Search vectors generate with unaccent functionality  
- All searchable field types properly handle accented characters

---------

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
2025-09-17 09:01:35 +02:00
Thomas des FrancsandGitHub f8a842781d feat: add changelog & image for 1.5 (#14412) 2025-09-16 18:10:47 +02:00
Thomas TrompetteandGitHub 5695202d31 Fix variables coming from DB events (#14545)
In the case of DB events, id field will be prefixed with
'property.after'. This is why we need to use the fieldIdName when
provided.

Before: When providing only id, Company variable is {{trigger.id}}.
Which does not exists on DB event output schema
<img width="939" height="462" alt="Capture d’écran 2025-09-16 à 17 57
42"
src="https://github.com/user-attachments/assets/c46dc00a-bb0e-45b9-af42-e9ddd0a08aea"
/>

After: Company variable is {{trigger.property.after.id}}
<img width="939" height="578" alt="Capture d’écran 2025-09-16 à 17 57
14"
src="https://github.com/user-attachments/assets/ede11de0-b98e-40df-89a1-9b283a2692ff"
/>
2025-09-16 16:07:36 +00:00
acccbb1cc4 i18n - translations (#14544)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-16 18:01:09 +02:00
Abdul RahmanandGitHub 172cc12a82 feat: Add xAI models support (#14523) 2025-09-16 17:55:11 +02:00
nitinandGitHub ba3cbd1676 [Dashboards] - refactor - pie chart (#14526)
This is the third PR from the split of
https://github.com/twentyhq/twenty/pull/14458 - refactoring only the
PieChart widget.

Plus small performance improvements on already refactored widgets
2025-09-16 17:44:31 +02:00
Raphaël BosiandGitHub 3b868c3d2a Page layout refactoring (#14535)
In this PR:
- Refactored the page layout renderer
- Converted all the states to component states
- Removed the page layout edition in settings

TODOs in next PRs:
- Fix bug with the drag selector not taking the scroll into account to
display the dragged area
- Readd the tab edition in edit mode
2025-09-16 15:42:51 +00:00
Thomas TrompetteandGitHub e69131790c Put back previous empty option (#14542)
Adding that option puts No Value everywhere. Removing it.
2025-09-16 15:08:44 +00:00
d95ca35faa i18n - translations (#14540)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-16 17:01:08 +02:00
WeikoandGitHub 106da85899 Add dnd to calendar view (#14539) 2025-09-16 17:00:01 +02:00
Thomas TrompetteandGitHub 4b889db06c Add icon to duplicate + split step service in two (#14521)
As title. Created a new step operations service.

Also added Duplicate Icon
<img width="500" height="767" alt="Capture d’écran 2025-09-16 à 09 42
19"
src="https://github.com/user-attachments/assets/4d789639-62f6-4fea-afb8-396868d7c2cb"
/>
2025-09-16 14:45:16 +00:00
Thomas TrompetteandGitHub e9f277fe93 Add form select field (#14538)
- create a WorkflowFormFieldInput component that takes a fieldMetadataId
as input and display a form field input
- add a select field for forms


https://github.com/user-attachments/assets/42f8ce98-c17a-4809-b1be-032e3066a596
2025-09-16 14:26:36 +00:00
4f63f55686 i18n - translations (#14536)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-16 14:59:42 +02:00
Paul RastoinandGitHub 371c26bc9b Flat entity maps cache generic service + runner dynamically retrieving invalidating update cache + view service v2 refactor (#14508)
# Introduction
Migrate previous runner only iterating on `flatObjectMetadataMaps` to
`allFlatEntityMaps`.
Refactored the optimistic to be handled inside the actions handler

## Workspace flat map cache
Introducing a new service and registry, that will dynamically retrieve
and or recompute requested cache when called

## Runner refactor
Runner now dynamically invalidate updated cache at the end of the
transaction

close
https://github.com/orgs/twentyhq/projects/1/views/8?pane=issue&itemId=129136356&issue=twentyhq%7Ccore-team-issues%7C1492
close
https://github.com/orgs/twentyhq/projects/1/views/8?pane=issue&itemId=129136210&issue=twentyhq%7Ccore-team-issues%7C1494
2025-09-16 14:39:42 +02:00
Lucas BordeauandGitHub 8f42c33bd4 Fix table mobile display issues (#14528)
This PR fixes table issues while displaying on mobile, the label
identifier cell and footer cells where using a width not corresponding
to the header cell.

We fix this by creating a shared constant and adapting the CSS for this
case with a media query.

Fixes https://github.com/twentyhq/core-team-issues/issues/1454
2025-09-16 14:20:18 +02:00
69c4b00796 i18n - translations (#14534)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-16 14:01:31 +02:00
Baptiste DevessierandGitHub 60de57f469 Implement creating node before initial step + deleting loop edge (#14525)
https://github.com/user-attachments/assets/d4ef0fa1-89e0-4848-9a4d-93dee81254f7

## Remaining to handle in future PRs

- It would be easier for the frontend if the loop edge was stored in the
backend instead of being an edge case the frontend must handle
- Optimistic rendering when deleting loop edge
2025-09-16 13:50:56 +02:00
WeikoandGitHub e505e9cf9f Add compact view to calendar (#14527)
<img width="1263" height="785" alt="Screenshot 2025-09-16 at 11 44 44"
src="https://github.com/user-attachments/assets/dc61e69f-b887-4a4d-9f9c-e50ffa076082"
/>
<img width="1263" height="785" alt="Screenshot 2025-09-16 at 11 43 45"
src="https://github.com/user-attachments/assets/2dd917b3-6e6d-40f2-bb10-6c82de83c15d"
/>
2025-09-16 12:47:55 +02:00
Baptiste DevessierandGitHub b8ae7ddad9 Disable hover and active styles when button is disabled in primary/default variant (#14524)
Follow up of https://github.com/twentyhq/twenty/pull/14439.

After diving in, it seems primary/default is the only variant that
wasn't protected against this edge case.

## Before


https://github.com/user-attachments/assets/e7b1e61e-8db3-4e0e-82b4-e54c390e744b

## After


https://github.com/user-attachments/assets/bb3b2466-e63d-4727-b520-04f4578d579a
2025-09-16 11:36:32 +02:00
Saurav JainandGitHub 45362c0b12 Added disabled trash button in http in workflows (#14439)
## Summary
Added a disabled Trash button in HTTP workflows to prevent accidental
deletion of certain items.

## Fixes
fixes #14420

## Screenshot

<img width="498" height="852" alt="Screenshot from 2025-09-12 05-37-37"
src="https://github.com/user-attachments/assets/dda8eded-a42b-4a86-bd6b-3d415e39fe3c"
/>

---


Open to review.
2025-09-16 10:57:21 +02:00
Lucas BordeauandGitHub b781da9dfb Fixes table z-index, focus, active rows and cells, pixel perfect (#14519)
This PR fixes z-indices on all cases for table with and without groups.

It also fixes 1px glitches that appeared previously already and also
during this refactor, with active and focused rows.

The focus on cells is no a portal similar to hovered portal, which works
really easily thanks to the z-index management already done on hovered
portal.

The urgent issues here
https://github.com/twentyhq/core-team-issues/issues/1490 have been
fixed.
2025-09-15 22:40:29 +00:00
WeikoandGitHub 91b7ecc0a3 Add current day style in calendar view (#14518)
<img width="1242" height="743" alt="Screenshot 2025-09-15 at 18 36 07"
src="https://github.com/user-attachments/assets/a614534a-e002-4858-ad93-fcb21410795a"
/>
2025-09-15 18:40:06 +02:00
Charles BochetandGitHub 0c4496409a Calendar View: persist field updates (#14517)
<img width="1919" height="956" alt="image"
src="https://github.com/user-attachments/assets/726738db-68fc-4cdc-949a-d2adc29a436c"
/>
2025-09-15 18:38:03 +02:00
WeikoandGitHub fbc4328448 Add grid to calendar view (#14516)
<img width="1254" height="786" alt="Screenshot 2025-09-15 at 18 15 40"
src="https://github.com/user-attachments/assets/3e95b8b9-f877-4527-9793-2f738939ce19"
/>

Next step: fix padding issue with cards
2025-09-15 18:17:21 +02:00
Thomas TrompetteandGitHub 3f112a23a0 Fix loop step ids on insert (#14515)
Existing loop step ids should now be part of the inserted step next step
ids, but not be part of the initialLoopStepIds
2025-09-15 16:15:09 +00:00
Charles BochetandGitHub 755ffe0561 Calendar view: add field edition (#14514)
<img width="1919" height="956" alt="image"
src="https://github.com/user-attachments/assets/4829f6f9-7e53-45da-bc38-590ee2fbde98"
/>
2025-09-15 18:03:06 +02:00
Thomas TrompetteandGitHub 2f1efa68ad Fix manual trigger variables + workflow not found in sentry (#14509)
- Error in
[sentry](https://twenty-v7.sentry.io/issues/6677390012/?environment=prod&environment=prod-eu&project=4507072499810304&query=is%3Aunresolved%20%21issue.type%3A%5Bperformance_consecutive_db_queries%2Cperformance_consecutive_http%2Cperformance_file_io_main_thread%2Cperformance_db_main_thread%2Cperformance_n_plus_one_db_queries%2Cperformance_n_plus_one_api_calls%2Cperformance_p95_endpoint_regression%2Cperformance_slow_db_query%2Cperformance_render_blocking_asset_span%2Cperformance_uncompressed_assets%2Cperformance_http_overhead%2Cperformance_large_http_payload%5D%20timesSeen%3A%3E10&referrer=issue-stream)
: due to workflow being deleted, so not found

- Error with Manual Trigger variable fixed
Before
<img width="1020" height="359" alt="Capture d’écran 2025-09-15 à 16 24
34"
src="https://github.com/user-attachments/assets/0d4b5185-18b5-415f-afbc-8bb63e403c01"
/>

After
<img width="1020" height="359" alt="Capture d’écran 2025-09-15 à 16 24
02"
src="https://github.com/user-attachments/assets/c5b589f8-7abd-40d0-8473-69eab7e1a277"
/>
2025-09-15 15:31:12 +00:00
Charles BochetandGitHub 069956ce92 Add fields on calendar cards (#14513)
<img width="1919" height="956" alt="image"
src="https://github.com/user-attachments/assets/32f3c5b3-3f1e-4279-98ef-5e185f6a7ac1"
/>
2025-09-15 17:28:14 +02:00
Lucas BordeauandGitHub 13c1e63892 Fix hovered portal on table with groups (#14512)
This PR fixes https://github.com/twentyhq/twenty/issues/13022 

It was due to a mouse leave event that worked for table without groups
but not with table with groups, the fix is to handle this event higher
up in the table.

This PR also fixes a bug that happened when hiding a column, the page
crashed because of an indexed array returning undefined that TS didn't
catch, linked to
https://github.com/twentyhq/core-team-issues/issues/1205.
2025-09-15 17:28:01 +02:00