Commit Graph
427 Commits
Author SHA1 Message Date
Thomas TrompetteandGitHub a1fe1d7f47 Display relation field id reaching max depth (#14101)
Search record action do not fetch relations. We could add it to but the
logic used, based on gql filtering will be refactored soon. Issue it
that the output schema of the step is displaying relation content as if
there were available.

This PR:
- remove the relation content from search record output schema
- replace it by the relation field id so the user can still use it
- makes UUID selectable in object record picker field

Before 


https://github.com/user-attachments/assets/1bdb4c24-ef32-4a15-9da9-149f270abb01

After


https://github.com/user-attachments/assets/d6e97160-c5a3-4989-a603-0c7ce8128b31
2025-08-27 14:36:05 +02:00
Abdul RahmanGitHubFélix Malfaitgreptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
9098df7ddf Add preconfigured Workflow creation agent (#13855)
Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-08-27 14:20:38 +02:00
martmullandGitHub 850a0fdea2 Add command to update workflow version steps positions (#14098)
Reopening https://github.com/twentyhq/twenty/pull/13721 after some
updates
2025-08-27 12:01:33 +02:00
martmullandGitHub a6fb4dd589 Fix handle color on workflow run steps (#14091)
## Before

<img width="2878" height="1316" alt="image"
src="https://github.com/user-attachments/assets/0e1238b7-b602-4283-ae55-dccd51aa4d90"
/>


## After
<img width="1322" height="495" alt="image"
src="https://github.com/user-attachments/assets/d1f3c912-ebf4-494f-b606-21d11b3e0058"
/>
2025-08-27 10:22:13 +02:00
martmullandGitHub 0f347e2f42 Fix connection design (#14070)
- refactor edges related files into sub-module
- remove top handle from workflow, workflowVersion and workflowRun
- add a custom design for connection (edge being created)
- connect when hovering a connectable node
- fix marker z-index
- refactor Handles

## Before


https://github.com/user-attachments/assets/013dec36-5cc7-4561-938c-404511118578

<img width="934" height="409" alt="image"
src="https://github.com/user-attachments/assets/2b43c6cb-0bf3-4110-b1cc-b2e50c15c9a8"
/>



## After


https://github.com/user-attachments/assets/a5b32cbf-bfbd-48e6-9889-037234adf38f

<img width="1433" height="599" alt="image"
src="https://github.com/user-attachments/assets/02edc085-9b23-4434-b666-bf25e5c430a8"
/>
2025-08-26 16:33:39 +02:00
Thomas TrompetteandGitHub f4312422ce Allow to select full object and object id in filters (#14083)
Today WorkflowVariablesDropdownAllItems is used for variable picker in
all workflow steps, and for step field picker in filters.
Using that component in filters prevent us from knowing if a full record
or only the id has been selected.

This PR:
- creates a new component WorkflowDropdownStepOutputItems, mostly
copying the logic of WorkflowVariablesDropdownAllItems
- call it WorkflowStepFilterFieldSelect, removing the display logic from
that parent component
- store isFullRecord in filter. So we now know if we should display a
record picker or a uuid picker

Before - selecting id makes picker behaves like when we select an object


https://github.com/user-attachments/assets/bde34dc5-8011-4983-8d0f-d8cb0cb3c045

After - selecting object and id are two different things


https://github.com/user-attachments/assets/49289990-3e6d-4ad7-abc1-e3ade2a821bb
2025-08-26 15:31:15 +02:00
Thomas TrompetteandGitHub 293cf0be39 Search variables - finish the search by step type (#14046)
- Add a specific search and type for find records step. Will be mainly
useful when we start fetching list of records
- Same for forms
2025-08-25 13:48:12 +00:00
martmullandGitHub 97e5f06ff9 Fix edge design on hover (#14061)
## Before



https://github.com/user-attachments/assets/d44c9c20-fcf0-4f79-8ebf-8e03202c3559

## After



https://github.com/user-attachments/assets/ac7ef2ff-585e-49c1-96f9-63d6bea8de3f
2025-08-25 15:14:05 +02:00
Thomas TrompetteandGitHub 4ecd275f5e Add separated types + build a search for records (#14014)
The code to search variables became too complex. This is mainly because
it tries to handle all use cases at once:
- steps returning records (MANUAL TRIGGER, CREATE RECORD...)
- steps returning record events
- primitive types (code, webhook...)
- forms

To make the code maintainable, let's make a few updates:
- clear schema output types for each steps
- group the output types that are similar and implement a search schema
function for each
- once this is implemented on frontend, let's remove the logic on
backend side. Schema should be recompute and not stored

This PR implement the refacto for steps returning records and events.
2025-08-22 10:20:07 +00:00
Thomas TrompetteandGitHub 7225078743 Filters: Fix readonly on record picker + select label (#14026)
As a filter V1, we do not distinguish between selecting Id and full
record. We always should display the record

Before - Id and readonly not working

<img width="492" height="256" alt="Capture d’écran 2025-08-21 à 15 10
56"
src="https://github.com/user-attachments/assets/5152b43f-bbda-436b-97fe-d8e391b47832"
/>

After - Object name and readonly working

<img width="492" height="256" alt="Capture d’écran 2025-08-21 à 15 10
15"
src="https://github.com/user-attachments/assets/e35eeb1e-135c-4213-8b59-55a5d10da82b"
/>
2025-08-21 13:26:26 +00:00
Thomas TrompetteandGitHub b9b5f9a347 Remove workflow filters from lab (#14017)
As title
2025-08-21 14:30:36 +02:00
dematrixandGitHub 4752970f79 Removed Redundant Filter Option in Filter Menu (#14003)
Removed Redundant Filter Option in Filter Menu

File Changed : WorkflowDiagramFilterEdgeEditable.tsx

Issue : #13908
2025-08-20 19:15:21 +02:00
30c42345f0 Core views frontend (#13932)
Parallel code path to read and write core views when
IS_CORE_VIEW_ENABLED.

Migrated view key to an enum.

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
2025-08-20 19:04:58 +02:00
4b66e8021a Fix filters + add behaviour for select (#13997)
On field selection, we need to retrieve the fieldMetadata to set the
filter type. Current code was using the current step filter
fieldMetdataId instead of the new one.

Also adding a special behaviour for Select filter: it behaves as
arrays/multiselect but the opearands are not the same.

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2025-08-20 17:14:31 +02:00
a9156666e5 fix: set content-type header for isMethodWithBody (#13839)
Fixes Workflow HTTP Request not setting `content-type` header for JSON
body it was defaulting to `application/x-www-form-urlencoded` causing
parsing issues

<img width="1496" height="847" alt="image"
src="https://github.com/user-attachments/assets/c4bd6ac3-0f4a-47eb-b108-fae95338c019"
/>

/closes #13781

---------

Co-authored-by: Thomas Trompette <thomas.trompette@sfr.fr>
2025-08-20 14:20:13 +02:00
521ef5ea4c fix: workflow node classification (#13945)
closes #13391 
As the solution said to classify workflow nodes based on colors I have
updated them with the following colors and new categories to better
classify and identify different node types as told:

  - Trigger Colors: Data (palette blue), Other (palette purple)
- Action Colors: Data (text/tertiary), AI (palette pink), Flow (tag
green), Human Input (palette orange)
 
<img width="451" height="690" alt="image"
src="https://github.com/user-attachments/assets/8c000f22-8f25-4b1d-ac6f-f2639b1eff94"
/>

<img width="451" height="690" alt="image"
src="https://github.com/user-attachments/assets/15a11a98-3fec-4374-a5f7-d7caf2ae5334"
/>

<img width="480" height="690" alt="image"
src="https://github.com/user-attachments/assets/6382f538-be6d-4595-b967-e7911f7ad61f"
/>

<img width="899" height="761" alt="image"
src="https://github.com/user-attachments/assets/98c97cd4-54cd-4bee-91b5-dd7cd3b03a5e"
/>

---------

Co-authored-by: Thomas Trompette <thomas.trompette@sfr.fr>
2025-08-20 11:31:03 +02:00
3ef94f6e8c Refactor read only object and fields (#13936)
Co-authored-by: Charles Bochet <charles@twenty.com>
2025-08-19 18:10:35 +02:00
e60e2bd342 fix: remove unnecessary spacing in search node's conditional operator field (#13946)
fix for issue #13905
<img width="177" height="138" alt="image"
src="https://github.com/user-attachments/assets/4bb44615-8c32-441a-8fdf-4429dc4dcadc"
/>

---------

Co-authored-by: Weiko <corentin@twenty.com>
2025-08-19 14:59:23 +02:00
Abhinav TalmaleandGitHub b5394f6ba6 minor changes - fixed text color (#13970)
closes #13902
2025-08-19 10:15:39 +02:00
Baptiste DevessierandGitHub cded145609 Implement new workflow node design (#13929)
## Demo workflows + workflow runs


https://github.com/user-attachments/assets/f2ee9451-37c3-4fce-803e-7696093456c6

## Demo workflow versions


https://github.com/user-attachments/assets/0f40c670-3fb3-4c73-a842-549b31ae26df

## With Branches disabled


https://github.com/user-attachments/assets/a9a39515-dd18-4310-b96e-a42dbebb17d9
2025-08-18 15:40:34 +00:00
Thomas TrompetteandGitHub abe6b7828b Fix run input tab for filters (#13961)
Previous step id was still calculated the old way for step following
triggers: if first step in the array, means it follows the trigger.
It was not working for steps inserted between trigger and first step.
Removing that code for good.

Before
<img width="500" height="655" alt="Capture d’écran 2025-08-18 à 16 34
50"
src="https://github.com/user-attachments/assets/31365bfe-8c7d-45b5-8141-ac3d4e31127f"
/>

After
<img width="500" height="655" alt="Capture d’écran 2025-08-18 à 16 34
18"
src="https://github.com/user-attachments/assets/b9b42c58-0416-48a6-bc65-2966366a888c"
/>
2025-08-18 17:00:52 +02:00
5e905d3004 fix: Filter Selection Icon Missing #13901 (#13950)
Fixed issue #13901



https://github.com/user-attachments/assets/4aa7d0f3-88b8-474f-85e5-b2989ed8afdd

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2025-08-18 16:54:26 +02:00
Thomas TrompetteandGitHub 578a2f4e6b Handle relative date step filter (#13930)
https://github.com/user-attachments/assets/2fbb02dd-2170-4807-a1dd-faa3f374bd5a



- move relative date types to twenty-shared
- use and adapt existing relative date picker to be used in workflow
forms
- add backend logic to support relative dates in filters
2025-08-18 14:12:22 +02:00
Thomas TrompetteandGitHub 1598e5590a Fix not available workflow version id in runs (#13958)
Quick fix : make workflow version available in runs.
This would global refactor. We should not have both version and run flow
here.
I will probably stop using the same component in both at some point and
rather duplicate. Versions and Workflow will use version. Runs will use
flow.
2025-08-18 11:52:40 +02:00
Thomas TrompetteandGitHub 50c4c50169 Remove workflow context + clean action config (#13919)
- Remove create related version and runs from workflow action config
- Remove WorkflowStepContextProvider. Use states instead
2025-08-14 10:17:07 +00:00
455ce191e4 feat: ability to pin a manual trigger in the navbar (#13904)
Fixes #13333 

This PR adds the ability to pin a manual trigger in the navbar. As
suggested, the following changes have been made:

**Changes Made**

- **Schema updates**
- Updated the `workflowSchema.ts` and added `isPinned` to the
`workflowManualTriggerSchema` as an optional boolean.

- **Defaults**
- Updated the `getManualTriggerDefaultSettings.ts` to add `isPinned` to
the `WorkflowManualTriggerSettings`, defaulting to false.

- **UI updates**
- Updated the `ManualTriggerAvailabilityOptions.ts` to improve the
Availability labels as suggested in the figma files.
- Created a new file `ManualTriggerIsPinnedOptions.ts` that contains the
options (label, value and icon) for the `isPinned` select component.
- Updated the `WorkflowEditTriggerManualForm.tsx` to incorporate the
added `isPinned` select component.

- **Action handling**
- Modified `useRunWorkflowRecordActions.tsx` to add `isPinned:
activeWorkflowVersion.trigger?.settings?.isPinned` to the returned
action config.

---------

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
Co-authored-by: Félix Malfait <felix@twenty.com>
Co-authored-by: Raphaël Bosi <71827178+bosiraphael@users.noreply.github.com>
Co-authored-by: bosiraphael <raphael.bosi@gmail.com>
2025-08-14 09:03:35 +00:00
Baptiste DevessierandGitHub 36fcb29e86 Implement proper arrows between nodes for workflows and workflow versions (#13909)
> [!IMPORTANT]
> We still have to implement the new arrows for **workflow runs**. I
kept the old arrows because they currently indicate the success state of
an execution. In the new version, arrows will all look the same,
regardless of the execution state of the previous node, so we'll be able
to use the same arrows everywhere.

## Workflows

You can see that arrows start from the right spot and end just above the
target node. **We will soon remove the round top handle, and the arrow
will gently touch the top of the node.**


https://github.com/user-attachments/assets/febd5f49-393f-4d97-addc-bede5cf6944a

## Workflow versions


https://github.com/user-attachments/assets/e519850f-abd9-4d75-8337-c4c44a2dbfed

Closes https://github.com/twentyhq/core-team-issues/issues/1369
2025-08-14 10:05:42 +02:00
Thomas TrompetteandGitHub 88735f6788 Stop propagating full workflow in components (#13900)
Workflow, workflow version and workflow runs should not be passed
through props or context. These are set in recoil component states and
that's where all hooks should look for these.

This PR stop propagating workflow with version through all components.
2025-08-13 16:02:13 +00:00
Baptiste DevessierandGitHub 36dc6cbcb8 Allow deleting any branch via keyboard (#13897)
The heart of the fixing is making edges selectable and deletable in
`packages/twenty-front/src/modules/workflow/workflow-diagram/utils/transformFilterNodesAsEdges.ts`.

## When Branches are enabled


https://github.com/user-attachments/assets/7477c556-d593-4235-8312-e830847192ca

## When Branches are disabled


https://github.com/user-attachments/assets/445c98b7-2370-4d60-b2e8-e47b05e8d8a2
2025-08-13 15:06:42 +02:00
Baptiste DevessierandGitHub dafb43be6d Make source handle blue when node is selected and on hover (#13887)
## Branches disabled


https://github.com/user-attachments/assets/a0f597df-467e-4a45-bfc0-7c55dfbbcf47

## Branches enabled


https://github.com/user-attachments/assets/99d5a1c2-6943-407e-9928-ffabd344bebd
2025-08-13 14:03:32 +02:00
Lucas BordeauandGitHub 3f0ee0139c Refactor record-field into ui sub-folder (#13888)
This PR prepares the refactor of record field definition and column
definition.

We need to separate the two concepts of FieldInput and FieldContext at
the cell level, and the new RecordField concept that will replace
FieldDefinition at the metadata and state level.

So we create a new ui sub-folder in the already existing record-field
folder, in order to separate those two concepts that are still very
close.
2025-08-13 11:31:39 +02:00
Baptiste DevessierandGitHub 98e1a325a8 Only allow deleting branches when branches are enabled (#13889)
## When filtering is enabled


https://github.com/user-attachments/assets/820e0a3a-265d-490d-9bd2-6d1bce9900a6

## When filtering is disabled


https://github.com/user-attachments/assets/cfc6cf9f-f66b-402a-8db9-9e8a34de6feb
2025-08-13 09:19:46 +00:00
Baptiste DevessierandGitHub 3ffb35d7a8 Bring back edge selection & deletion (#13863)
Bring back what shouldn't have been deleted.
2025-08-12 17:21:52 +02:00
8b59fcaea7 Remove preconstruct, update wyw (#13844)
To simplify our setup, moving back to Vite to build twenty-shared.

Also upgrading wyw

---------

Co-authored-by: prastoin <paul@twenty.com>
2025-08-12 12:43:35 +02:00
Thomas TrompetteandGitHub 954da6da9d Delete filter on branch deletion (#13834)
When the target is not in the direct next step ids of the source (step
or trigger), check if there is a filter between both. If yes, delete the
filter and remove it from source next step ids.

Also refactored the existing.
2025-08-12 12:30:08 +02:00
Baptiste DevessierandGitHub 245e69e622 Prevent edges selection and deletion (#13830)
https://github.com/user-attachments/assets/5a3d5a4b-2d8e-418a-a638-09acd0b94d84
2025-08-11 19:06:34 +02:00
Baptiste DevessierandGitHub 3e5b60a923 Add Delete branch buttons (#13826)
Deleting branches containing a filter isn't yet supported by the
backend, but I set up the button in the frontend.



https://github.com/user-attachments/assets/f27234c4-ff9c-4f5c-930c-64d824981454
2025-08-11 17:38:22 +02:00
Charles BochetandGitHub b14063fe06 Re-add prettier (#13812)
Re add prettier in eslint.configs
2025-08-11 14:10:04 +02:00
Félix MalfaitandGitHub d29dbd473b Upgrade SWC Core and Storybook to v8 (#13799)
This is is a blocker for various sub-migrations
2025-08-11 12:02:33 +02:00
Félix MalfaitandGitHub 464a480043 Continue ESLINT9 Migration (#13795)
Might already fix #13793
2025-08-10 23:25:58 +02:00
martmullandGitHub 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
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 MalfaitandGitHub 5fae14377a Eslint migration 4 (#13773)
A new attempt to migrate!
2025-08-08 16:21:57 +02:00
Thomas TrompetteandGitHub 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
Félix MalfaitandGitHub 0236f79ccf Fix assert unreachable, remove unused variables (#13753)
Small code cleanup
2025-08-08 09:04:45 +02:00
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 TrompetteandGitHub 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
Thomas TrompetteandGitHub 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 DevessierandGitHub 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 TrompetteandGitHub 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