Commit Graph

4080 Commits

Author SHA1 Message Date
Furquan Anwer 48e783c4fa fix(ui): remove line break in all IMAP section subtitles (#13785)
This PR removes the unintended line break in all IMAP section subtitles
so the text reads as a single inline paragraph.

 No functional changes  
 Purely UI/text formatting fix




Closes #13783

Co-authored-by: Charles Bochet <charles@twenty.com>
2025-08-08 20:36:38 +02:00
github-actions[bot] 41480dc64c i18n - translations (#13788)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-08-08 19:20:15 +02:00
Etienne e06fc34cbe Unique fields - add unicity toggle on data model settings (#13592)
To review after https://github.com/twentyhq/twenty/pull/13539

closes https://github.com/twentyhq/core-team-issues/issues/1224

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2025-08-08 19:15:49 +02:00
martmull 415f57ffa5 Fix qa issues with branches (#13776)
Fixes 3 issues:

- Can’t delete a trigger node if alone
- Workflow branch with Form terminates with Fail

<img height="350" alt="Pasted Graphic"
src="https://github.com/user-attachments/assets/a8cc1ebe-bf3f-4b7f-b3f1-a13c98408bc7"
/>
- If empty trigger with branch, it adds edges that does not exists on db
<img height="350" alt="Pasted Graphic 2"
src="https://github.com/user-attachments/assets/6642220b-9c7a-4efe-8cb3-c5d94fdd4dd5"
/>
2025-08-08 17:29:09 +02:00
github-actions[bot] 8bd4dd2fd5 i18n - translations (#13778)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-08-08 16:37:22 +02:00
github-actions[bot] f2195225cf i18n - translations (#13777)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-08-08 16:26:20 +02:00
Pavan Nambi 858391492b Docs and improve trigger icon handling (#13769)
<img width="1124" height="248" alt="image"
src="https://github.com/user-attachments/assets/6f35391b-0dd0-4129-ae94-b66f824533e6"
/>

#13757  and #13766

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2025-08-08 16:26:07 +02:00
Félix Malfait 5fae14377a Eslint migration 4 (#13773)
A new attempt to migrate!
2025-08-08 16:21:57 +02:00
Etienne 81012ab1fb Import - Unique value check optimization (#13761)
After an issue opened by @StephanieJoly4

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2025-08-08 16:19:34 +02:00
Marie 2932439689 [permissions] Add field permissions feature flag in lab (#13767)
- Add field permissions feature flag in lab
- Fix / configuration of field permissions on roles page should be
behind feature flag (@lucasbordeau )
2025-08-08 13:42:50 +00:00
Thomas Trompette f9fa2db7f0 Display id field input as record picker (#13759)
When selecting a record or an id, a text input was appearing.
Replacing by a record picker. 

Before


https://github.com/user-attachments/assets/61e7c1fe-4f74-459e-8b50-5ebe2fc7462f

After


https://github.com/user-attachments/assets/ad7fcf05-b86c-4e10-a8cb-bd3e4a694812
2025-08-08 12:01:17 +02:00
Marie 4708ff34c7 [permissions] Fix update of relation field permissions (#13755)
In this PR, we add some validation logic and rules in both FE and BE to
ensure field permissions are handled correctly for relation fields.

- (BE) Only one field permission per fieldMetadata is accepted per
input. This is already guaranteed in the FE. It was added to help
guarantee that, when looking within the field permissions input for a
potential field permission on a relationTargetFieldMetadataId for a
relation field, there can only be 0 or 1.
- (FE) Only field permission with new values are sent to save, to avoid
sending contradictory field permissions for related fields. E.g. let's
say I have an existing field permission restricting read permission on
company's people field. By definition I also have one on person's
company field. If I update this field permission to enable the read
permission by updating company's people field, in the previous logic I
was also going to send for upsert the existing obsolete field permission
on person's company. Thus the server does not know which is the right
value so we should only send the new value.
- (BE) If the server receives two contradictory field permissions on two
related fields, e.g. on company's people with canRead = null and
person's company with canRead = false, it throws an error.
2025-08-08 08:27:53 +00:00
Félix Malfait 0236f79ccf Fix assert unreachable, remove unused variables (#13753)
Small code cleanup
2025-08-08 09:04:45 +02:00
Félix Malfait b44b46109c Update try/catch syntax (#13732)
Update try/catch syntax to prepare for eslint migration
2025-08-07 22:19:43 +02:00
Raphaël Bosi 593b064448 Create resolvers and controllers for core views (#13624)
Created:
- Services
- Resolvers
- Controllers
- Tests for services
- Integration tests for GraphQL and Rest

Updated the Rest API playground

Added new feature flag `IS_CORE_VIEW_ENABLED`

Updated `viewFilter` `operand` and `view` `type` to be enums rather than
strings and generated migration file.

Closes https://github.com/twentyhq/core-team-issues/issues/1259

---------

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
2025-08-07 18:45:04 +02:00
Paul Rastoin 5476164a28 Expect node 24.5.0 (#13734)
Unless I'm mistaken the project does not run with node `24.0.0`
Switching to node `24.5.0` ( as defined in vscode node runtime
requirements in https://github.com/twentyhq/twenty/pull/13730 ) seems to
fix the issue
```ts
Successfully compiled: 2897 files with swc (188.32ms)
(node:77006) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
(Use `node --trace-deprecation ...` to show where the warning was created)
Watching for file changes.

/Users/paulrastoin/ws/twenty/node_modules/buffer-equal-constant-time/index.js:37
var origSlowBufEqual = SlowBuffer.prototype.equal;
                                  ^
TypeError: Cannot read properties of undefined (reading 'prototype')
```

Updating engines so local constraint suggest a functional node version
2025-08-07 16:22:28 +00:00
Marie ee19ee5119 [permissions] QA fixes (#13698)
In this PR

- Introduction of readableFields and updatableFields in
objectMetadataItem selector to ease filtering from a developer
experience perspective ( + to help developers think to do it). In
discussion @lucasbordeau @charlesBochet
- Remove non-updatable field from CSV import process (@etiennejouan)
- QA fix / Non-readable fields should not show on show page
- QA fix / It should not be offered to create a kanban view on a
non-readable field
- QA fix / It should not be offered to create view groups on a
non-readable field
- QA fix / Rating field should have a readonly mode

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2025-08-07 18:21:59 +02:00
Thomas Trompette 258f21a4be Prevent node creation when trigger is empty (#13731)
Before


https://github.com/user-attachments/assets/5d411abe-a480-4c51-8357-9dc710e23792

After


https://github.com/user-attachments/assets/2dd551b2-6f84-4129-8cc0-7af82aba5e8e
2025-08-07 15:41:15 +00:00
Félix Malfait 05c6805f0a Upgrade to Node 24 (#13730)
As described in title
2025-08-07 17:02:12 +02:00
Thomas Trompette 3e1c9295d9 Do not throw when no selected not found (#13727)
<img width="1299" height="713" alt="Capture d’écran 2025-08-07 à 15 25
23"
src="https://github.com/user-attachments/assets/b9c3c3d3-9521-442a-8493-54a06418ade0"
/>

Remove error from console. When deleting a step, we get the command menu
opened for a short time. We should simply return null until the command
menu gets closed

Fix
https://twenty-v7.sentry.io/issues/6795046867/?project=4507072563183616&referrer=github-open-pr-bot
2025-08-07 16:17:52 +02:00
Baptiste Devessier 0822080105 Set flow after step creation (#13725)
## Before


https://github.com/user-attachments/assets/5f89e2c5-af59-46eb-a0af-6eb0ab103291

## After


https://github.com/user-attachments/assets/11accdc5-a49c-4479-8686-b01f44519d81

## The issue

`getStepDefinitionOrThrow` throws if the provided `steps` aren't
defined. With my recent refactor, the side panel is opened immediately,
as we no longer open it in the `useOnSelectionChange` hook. We use a
`useEffect` to set the `flowState` whenever the workflow version
definition changes. As the side panel is now opened faster,
`getStepDefinitionOrThrow` throws before the `flowState` could have been
set.

In this PR, I only fixed the bug I encountered. We might want to replace
the synchronization `useEffect` with explicit `setFlow` calls whenever
we change the workflow version.
2025-08-07 15:32:37 +02:00
Thomas Trompette 9cfd62f1ef Filter dropdown by types (#13703)
Allow to filter types in variable dropdown. This will avoid unsupported
types for filters (RICH_TEXT, ACTOR)
<img width="579" height="505" alt="Capture d’écran 2025-08-07 à 09 58
42"
src="https://github.com/user-attachments/assets/c3fbeb3f-61ab-4c2c-bb2c-6f2c6292ef9e"
/>
2025-08-07 10:38:46 +02:00
Thomas Trompette 8c41c956d5 Remove filters following deleted trigger/steps (#13697)
https://github.com/user-attachments/assets/e6ec591a-2064-4dfe-9048-2f234bef5c79
2025-08-07 09:40:26 +02:00
Charles Bochet 5631dd122e Refactor timeline activity insert (#13696)
In this PR:
- refactor timelineActivity computation to batch it
- make sure to pass the authContext to insert-query-builder in order to
pass user information to timelineActivity
- refactor message-participant /calendar-participant creation to batch
more
- fix favorite on view race condition (FE)
- deprecate PARTIAL_CALENDAR_EVENT_FETCH_LIST syncStage as we will
deprecate partial vs full notion (we will just leverage cursor emptyness
or not)
- introduce calendar / messging SCHEDULED syncStage that will allow
better performance granularity later
- activate quick message import after message list fetch to speed
performance on small message lists
2025-08-06 22:11:26 +02:00
Félix Malfait 453a6167a5 PR comment followups (isNonEmptyString and rename WorkflowExecutionResult) (#13706)
Addressing two comments from Thomas and Charles
2025-08-06 22:09:30 +02:00
github-actions[bot] d45fcf43e5 i18n - translations (#13707)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-08-06 19:21:03 +02:00
Baptiste Devessier b8cd4491c2 Replace useOnSelectionChange with onClick listeners for steps opening (#13672)
This PR cleans a few parts of the workflow features and fixes a few
improper behaviors.

Here is a non-exaustive list of improved things:

- Clicking on an action will always reset the command menu's navigation
stack. Previously, the behavior wasn't unified between workflows,
workflow versions and workflow runs.
- Opening a step in the side panel is now down in the `onClick` event
handler put on individual Reactflow nodes. This makes interoperability
between filters (which are buttons on edges) and traditional actions.
- Simplified the code that automatically opens pending forms in the side
panel. This feature should now work more predictably.
- Splitted the `WorkflowDiagramEmptyTrigger` component into
`WorkflowDiagramEmptyTriggerEditable` and
`WorkflowDiagramEmptyTriggerReadonly`. This makes handling events easier
as the behavior isn't the same in both cases.
- Dropped all `useOnSelectionChange` hooks that were used to open steps
in the side panel upon user selection.
- Created a specific `WorkflowRunDiagramStepNode` instead of using
`WorkflowDiagramStepNodeReadonly` in `WorkflowRunDiagramCanvas`
- Deleted `useHandleWorkflowRunDiagramCanvasInit` as it was used to open
the initially selected step in the command menu, which is now handled in
an effect that works for all cases, including workflow run's state
refreshing.

Closes https://github.com/twentyhq/core-team-issues/issues/1227
Closes https://github.com/twentyhq/twenty/issues/11923
2025-08-06 19:00:48 +02:00
martmull 787f8b75ab Add design when edge focused (#13687)
Fix focused design for edges, edge buttons and handle

## Before
<img width="3014" height="1026" alt="image"
src="https://github.com/user-attachments/assets/8ef6647b-1ba6-4c71-9ffd-f6f5fe15e891"
/>


https://github.com/user-attachments/assets/9d702a24-70c4-4f2b-9655-5fec0f83e9d8


## After

<img width="1509" height="595" alt="Capture d’écran 2025-08-06 à 14 58
54"
src="https://github.com/user-attachments/assets/7c81b504-69a3-4d62-b455-738764b21d45"
/>



https://github.com/user-attachments/assets/7d859d12-c2e1-43d5-a611-d906aa9bc0d1
2025-08-06 17:47:35 +02:00
martmull 040fde459a Disable node dragging on workflow run and workflow version (#13693)
As title

## Before


https://github.com/user-attachments/assets/f3d07bb8-5d8b-43de-b06d-ecd747e91b31



https://github.com/user-attachments/assets/8617ac1c-841d-4945-b8a9-e5052fdb5f2b



## After


https://github.com/user-attachments/assets/4549974b-e699-4756-8479-8ee27608692b



https://github.com/user-attachments/assets/2a1aa0f3-89c3-4769-82d3-da01dfe96170
2025-08-06 17:03:23 +02:00
Lucas Bordeau c48d14715c Fixed show page crash with object metadata item not found (#13694)
This PR fixes a bug that appeared because of a race condition with
context store when navigating between settings page and show page.

The bug was caused because record title cell used on record show page
was trying to retrieve the object metadata item before the context store
was initialized.

I created a new hook that supports an undefined state for one render
loop, since in that case components can be rendered before the context
store is initialized.

Fixes https://github.com/twentyhq/twenty/issues/13649
2025-08-06 14:41:06 +00:00
github-actions[bot] e1d169e51e i18n - translations (#13688)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2025-08-06 15:06:13 +02:00
Thomas Trompette d9dbfc4f7e Handle relations for filters (#13654)
- Refacto variable dropdown so it can display both objects and fields
- we do not filter on object name anymore to simplify the code
- add relation handler in filters



https://github.com/user-attachments/assets/e4f03f11-45cb-4d3f-b628-e996129dd996
2025-08-06 14:57:10 +02:00
Félix Malfait d74bcbe62b Fix broken main branch (#13685)
Main branch had changed in the meantime and these components had been
deprecated
2025-08-06 14:33:09 +02:00
github-actions[bot] 25c4af8feb i18n - translations (#13684)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2025-08-06 14:01:47 +02:00
Félix Malfait ca19b731ef Add ADD NEW cta as the last row (#13594)
<img width="961" height="478" alt="Screenshot 2025-08-04 at 14 34 07"
src="https://github.com/user-attachments/assets/42e266d2-7329-4eb7-9d22-78402800f646"
/>

---------

Co-authored-by: nitin <142569587+ehconitin@users.noreply.github.com>
2025-08-06 13:49:03 +02:00
neo773 8169ba10a5 Merge record UI fixes (#13678)
Partially addresses #13643
2025-08-06 12:16:26 +02:00
Félix Malfait b7022202fa Introduce a TAB to test the HTTP node (#13622)
<img width="1020" height="757" alt="Screenshot 2025-08-05 at 11 05 12"
src="https://github.com/user-attachments/assets/7cfcb216-d34d-4daa-b468-8153869c8f6a"
/>
2025-08-06 12:12:13 +02:00
Lucas Bordeau de802b1447 Removed all v2 in naming of state management logic (#13675)
This PR removes any V2 naming in state management logic and some minor
utils and hooks.

It has a lot of changes but nearly all of them were made by the rename
functionality of vscode which is deterministic, so it shouldn't
introduce any regression.

QA has been made on this PR on the main features of the app without any
noticeable issue.

Also renamed some other v2 naming related items : 
- TextInputV2 => TextInput
- TextInput => SettingsTextInput
- ObjectFilterDropdownFilterSelectMenuItemV2 =>
ObjectFilterDropdownFilterSelectMenuItem
- useInitDraftValueV2 => useInitDraftValue
- useOpenRecordTableCellV2 => useOpenRecordTableCell
2025-08-06 12:09:15 +02:00
Etienne d8b24812b0 Data model settings - Address field design fix (#13677)
fixes https://github.com/twentyhq/twenty/issues/13671

After
<img width="549" height="536" alt="Screenshot 2025-08-06 at 10 48 17"
src="https://github.com/user-attachments/assets/484bcaba-1538-4f20-9f87-cb71c72d1023"
/>
2025-08-06 11:28:43 +02:00
neo773 22eedb0281 Merge Records fix (#13658)
/closes #13643
2025-08-05 22:34:23 +02:00
Lucas Bordeau a3aabc6855 Fixed SettingsObjectFieldItemTableRow grid sizes (#13653)
This PR fixes a wrong change that happened during a refactor of some
tables in the settings permission area.

**Before**

<img width="662" height="657" alt="image"
src="https://github.com/user-attachments/assets/a3cf5ce1-4aaa-410c-ac5f-d085b590554d"
/>


**After** 

<img width="661" height="660" alt="image"
src="https://github.com/user-attachments/assets/5eefb129-5fd6-497b-ba2a-5efc0851172e"
/>
2025-08-05 17:03:36 +02:00
martmull 0bef766f63 Display edge button when whole edge is hovered (#13651)
As title

## Before
Need to aim center of edge


https://github.com/user-attachments/assets/5f014f15-af7b-4884-902d-3b7001782d2d


## After
Whole edge triggers hover behavior


https://github.com/user-attachments/assets/bddaa6b2-7d62-428a-bee5-c237db16a403
2025-08-05 14:53:08 +00:00
github-actions[bot] 287edd44ad i18n - translations (#13645)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-08-05 15:47:31 +02:00
Félix Malfait 1de3338551 Improve code editor style and enable full screen code editor (#13618)
<img width="1501" height="757" alt="Screenshot 2025-08-05 at 09 30 44"
src="https://github.com/user-attachments/assets/535e6dfb-a1b5-4812-b5a9-c19ab7bb7240"
/>
<img width="486" height="717" alt="Screenshot 2025-08-05 at 09 30 36"
src="https://github.com/user-attachments/assets/189407b3-fdec-4795-b115-7e00a11e6bc5"
/>
2025-08-05 15:38:54 +02:00
github-actions[bot] fe3cce8a1d i18n - translations (#13636)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-08-05 15:06:14 +02:00
nitin 111f083a24 [api keys] fix breadcrumb not appearing on api key details (#13633) 2025-08-05 14:37:11 +02:00
Etienne 010c9b6250 fix typo (#13634) 2025-08-05 14:34:10 +02:00
Charles Bochet 16d78b450c Fix email not verified issue while login through sso (#13631)
In this PR:
- fix race condition while getting token and redirecting to workspace
domain (missing await)
- add userFriendlyMessage when user does not have password and we try to
log in using password
- refactor computePartialUserFromUserPayload to remove side effect
- add isEmailAlreadyVerified in userPayload that will set
user.isEmailVerified to true
2025-08-05 12:01:55 +00:00
github-actions[bot] dcded4ae4f i18n - translations (#13627)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-08-05 12:01:18 +02:00
Lucas Bordeau 04ed843aaf Field permission CRUD front-end implementation (#13524)
This PR implements what's needed to edit field permissions on a role.

Field permissions that aren't useful are kept in the database to avoid
the overhead of adding cleaning logics both in front end and back end.
They just won't be taken into account if object permission doesn't allow
it.

In this PR we also handle the case were there's no object permission
override but where there are only field permission overrides, which can
happen if an object inherits from a "all object can read" but restricts
read only on some fields.

<img width="547" height="642" alt="image"
src="https://github.com/user-attachments/assets/77d81f89-4af9-42b6-97f3-fae3a6ba1eeb"
/>


<img width="590" height="912" alt="image"
src="https://github.com/user-attachments/assets/69fab8ee-7252-401a-bc6f-8a8b7c7f6bc4"
/>

Fixes https://github.com/twentyhq/core-team-issues/issues/1152

This PR lowers unit test coverage because the essential unit tests for
this PR have been written and writing more tests would not be a great
tradeoff for this feature which has already taken a lot of efforts.
2025-08-05 11:50:23 +02:00