Commit Graph
8160 Commits
Author SHA1 Message Date
359036d9bc i18n - translations (#14812)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-10-01 15:01:05 +02:00
neo773andGitHub 62a1de221b Message Folders Redesign and Import Policy (#14714) 2025-10-01 14:48:46 +02:00
Baptiste DevessierandGitHub a68aa303aa Hide iteration switcher for steps following iterators (#14810)
## Before


https://github.com/user-attachments/assets/a8eca1aa-b2b6-4fdb-8848-65c8235a330c

## After


https://github.com/user-attachments/assets/84b7e969-423b-4f0e-8f53-524bfb11e2ca
2025-10-01 14:44:11 +02:00
Thomas TrompetteandGitHub f302b7c74e Put checkbox and tag into left content (#14811)
As title
2025-10-01 12:20:38 +00:00
Baptiste DevessierandGitHub b3153535a6 Fix step output for iterators (#14796)
It also prevents the app from crashing when opening the output of the
trigger node.

## Before

<img width="3738" height="2442" alt="CleanShot 2025-09-30 at 19 44
39@2x"
src="https://github.com/user-attachments/assets/39fa81b1-2c25-402e-9030-770054870f70"
/>

## After


https://github.com/user-attachments/assets/b7585690-dd3b-4875-9c3e-18b60b3acc3d
2025-10-01 14:15:07 +02:00
martmullandGitHub bc37a3a9bb Remove deprecated check (#14809)
as title
Thanks @Devessier for the report
2025-10-01 10:24:37 +00:00
346da2b2f2 i18n - translations (#14808)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2025-10-01 11:33:53 +02:00
Abdul RahmanandGitHub 3e61f91635 Structured agent chat messages follow up (#14797)
This PR addresses code review feedback from
[#14749](https://github.com/twentyhq/twenty/pull/14749)
2025-10-01 11:24:58 +02:00
Abdul RahmanandGitHub 9d7c36e92f Fix AI Chat permission error for users with restricted field access (#14799)
Closes [#1582](https://github.com/twentyhq/core-team-issues/issues/1582)
2025-10-01 11:21:16 +02:00
nitinandGitHub 4eaf87341f fix - lint main (#14802) 2025-10-01 07:05:56 +00:00
Antoine MoreauxandGitHub 1184c59c94 fix(billing): refactor and update subscription phase handling logic (#14783) 2025-09-30 23:25:21 +02:00
3c0a197525 Feat/add add icon to calendar view (#14696)
# Calendar View: Add "+" Button to Calendar Day Cards

## Description
This PR implements the "+" button on calendar day cards in the Month
view, allowing users to create new records directly from the calendar.

- The "+" button appears **on hover** only.  
- Newly created records include the **day representing the card** in the
payload (UTC, with only the date part).
- Respects **object permissions** and **soft delete filters**.  
- Automatically integrates with **active filters** used in Table and
Kanban views.

## Implementation Notes
- `RecordCalendarAddNew` component handles button visibility and record
creation.
- UTC date is passed to the create function to ensure proper timezone
handling.
- No unit tests added yet (need senior guidance).  

---
[Screencast from 2025-09-24
20-10-18.webm](https://github.com/user-attachments/assets/bd117b43-6c1b-4267-874f-b36844733d9e)

###  Video ->



## Related Issues
Fixes: https://github.com/twentyhq/core-team-issues/issues/1552

---------

Co-authored-by: Weiko <corentin@twenty.com>
2025-09-30 20:04:47 +02:00
Thomas TrompetteandGitHub 1c572294f9 Display actions on calendar item selection (#14795)
https://github.com/user-attachments/assets/e76a1de7-d6c6-45f2-8c2e-73beaf2eb6bf

Fix https://github.com/twentyhq/core-team-issues/issues/1553
Fix https://github.com/twentyhq/core-team-issues/issues/1554
2025-09-30 19:13:12 +02:00
WeikoandGitHub 0959b86f98 fix view update in migration v2 (#14794)
Legacy from early v2 implementation, we don't want to store relation ids
in the cache as the new implementation handle that with flat entities
properly already.

This causes some issues because when we return the updated view, it
contains an array of viewField objects with only the id in it so gql
complains because some fields are non-nullable in the output and the
resolver can't resolve viewField directly because viewField is in the
output (not complete though) already so it just ignores it.
2025-09-30 19:07:12 +02:00
8b2e43c448 Added all the initial selection logic (#14789)
Added initial implementation of calendar card selection logic 

---

Video -> 
[Screencast from 2025-09-30
19-50-56.webm](https://github.com/user-attachments/assets/757e5dbe-9936-4633-9178-d42a20401b82)

---
@Weiko

---------

Co-authored-by: Thomas Trompette <thomas.trompette@sfr.fr>
2025-09-30 16:48:49 +00:00
MarieandGitHub f33396e425 [GroupBy] Add views filters to groupBy query 2/2: handle anyFieldFilter (#14791)
Following https://github.com/twentyhq/twenty/pull/14762 

In this PR
- moved logic around any field filter formatting to twenty-shared
- added any field filter to the filters applied to groupBy when viewId
is defined
- added integration test
2025-09-30 16:13:40 +00:00
MarieandGitHub 3927b36406 [View migration] Clean ViewFilterOperand (#14785)
In the BE we have stored filter operand as IS_EMPTY, IS_NOT_EMPTY, etc. 
For some reason in the FE we were manipulating IsEmpty, IsNotEmpty, etc.
(maybe because they were used before in Views before they were moved to
core)

So we were converting the operands in the FE from IS to Is
(convertViewFilterOperandFromCore) to read and manipulate viewFilters,
and then back to BE version to send mutations etc., from Is to IS
(convertViewFilterOperandToCore).
The migration is now over, so we can remove and simplify that code. 
(In the 1-5:migrate-views-to-core command we still do the migration from
Is format to IS format.)
2025-09-30 17:12:03 +02:00
Baptiste DevessierandGitHub 15975a2cfc Visualize workflow run step input (#14784)
https://github.com/user-attachments/assets/8358a252-0407-4925-a923-7b1d6c7404b0
2025-09-30 17:09:57 +02:00
martmullandGitHub 1938202780 1573 extensibility twenty cli handle custom layers for serverless functions of applications (#14779)
- allow specific layers for serverless functions
- add a serverlessFunctionLayer table
- sync application layer
2025-09-30 16:47:49 +02:00
5560d823c3 i18n - translations (#14788)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-30 16:20:36 +02:00
nitinandGitHub 274f4333b4 Field level permission checks on widgets (#14774) 2025-09-30 16:00:09 +02:00
Thomas TrompetteandGitHub c3b1f6c2b2 Store last iterator execution in history (#14786)
When all items have been processed, iterator should:
- store last iteration in history
- return the final result saying iteration have been successful. So it
gets stored by the executor

It was not doing the first step, so we were losing the last iteration.
Splitting into separated function + adding tests
2025-09-30 14:52:21 +02:00
MarieandGitHub 9bf633e9c9 Intercept all abortErrors (#14780)
Fixes https://github.com/twentyhq/twenty/issues/14569

Some extensions, such as SimilarWeb, are incompatible with twenty: they
trigger intempestive "AbortErrors" converted into error snackbar. While
twenty remains usable it is very annoying.

I did not take time to deeply investigate which requests are
problematic. According to ClaudeAI it may be because twenty makes a lot
of queries to the same endpoint /graphql, a pattern that SimilarWeb may
interpret as tracking which they try to intercept.

In this PR, we finish the work started in [this
PR](https://github.com/twentyhq/twenty/pull/13080) to silent harmless
AbortErrors.
2025-09-30 14:04:11 +02:00
Thomas TrompetteandGitHub b7cdf9183a Search record action - allow to search more than 1 record (#14769)
https://github.com/user-attachments/assets/426da6af-6c6b-4d49-9034-0aa041cb331f
2025-09-30 12:07:25 +02:00
nitinandGitHub 4b87908752 [Dashboards]- Addition of tabs (#14756) 2025-09-30 11:23:52 +02:00
ef988aa6cb i18n - translations (#14782)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-30 11:20:58 +02:00
WeikoandGitHub 68b21d2942 Add db event trigger and cron trigger to migration v2 (#14772)
## Context
Add DB events triggers and Cron triggers to migration v2 builder/runner
(and adding corresponding services/resolvers)
2025-09-30 11:14:18 +02:00
Thomas TrompetteandGitHub 123202df41 Store history for iterator (#14771)
As title
2025-09-30 10:32:40 +02:00
bbe2733bc0 i18n - translations (#14778)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-30 10:21:58 +02:00
+4 7692fb2b6c chore(billing): add tests + fix meter name for trial (#14701)
Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
Co-authored-by: Righteousness Akinbola <righteousnessakinbola@gmail.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
Co-authored-by: Charles Bochet <charlesBochet@users.noreply.github.com>
Co-authored-by: Weiko <corentin@twenty.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: martmull <martmull@hotmail.fr>
Co-authored-by: Raphaël Bosi <71827178+bosiraphael@users.noreply.github.com>
Co-authored-by: Abdullah. <125115953+mabdullahabaid@users.noreply.github.com>
Co-authored-by: Thomas Trompette <thomas.trompette@sfr.fr>
Co-authored-by: Paul Rastoin <45004772+prastoin@users.noreply.github.com>
2025-09-30 10:01:51 +02:00
MarieandGitHub da3c3d2b9d [GroupBy] Add views filters to groupBy query (#14762)
Closes https://github.com/twentyhq/core-team-issues/issues/1560

If viewId is defined in a groupBy query, we want to apply all filters of
the view to the query.
This required to move a lot of code from twenty-front to twenty-shared
to convert the filters as stored in the db into graphql filters,
applying the right combinations between filters etc., which was
previously only done in the FE.

This PR does not handle any field filters, it will be done in a later pr
2025-09-30 09:58:55 +02:00
80fa4c6c26 i18n - translations (#14770)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-29 17:20:50 +02:00
EtienneandGitHub b74ed36ce3 Add impersonate banner (#14734)
Related to https://github.com/twentyhq/twenty/pull/14360

<img width="1511" height="468" alt="Screenshot 2025-09-26 at 12 16 46"
src="https://github.com/user-attachments/assets/33e0e0b5-1226-455d-90f2-e4fc3deef7a8"
/>

@Bonapara, let you tell me if wording and banner color are ok. This
banner is displayed when a user is impersonating an other user
2025-09-29 17:10:46 +02:00
462e2015b1 i18n - translations (#14768)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-29 15:48:01 +02:00
Thomas TrompetteandGitHub 4329501743 Workflow run over a list of records + backfill availability on manual triggers (#14761)
- Allow to run workflow on a list of records
- Use new availability in manual trigger when iterator feature flag is
enabled
- Build a command to backfill availability in workflow trigger



https://github.com/user-attachments/assets/d685c01f-4059-4647-92a1-f5f529b560cf
2025-09-29 13:45:51 +00:00
59be3aab19 feat: Add ability to drag arrow tip to another node (#14657)
Allow users to drag the target of edges when editing workflows.

---------

Co-authored-by: Devessier <baptiste@devessier.fr>
2025-09-29 15:41:41 +02:00
Baptiste DevessierandGitHub 9b88cee1ce Visualize iterator sub step's output by iteration index (#14747)
## Demo


https://github.com/user-attachments/assets/27afff85-4f33-4e91-b28a-3dc868bb9ad7

## With several sub steps

> [!NOTE]
> Please note that as I created the component state, the iteration index
will be different for every step of a workflow run. We might have one
component state instance per iterator node. We can implement it in
another PR if we think it's the way to go.


https://github.com/user-attachments/assets/6b8cd06d-9051-474d-b438-dd6155cc3810
2025-09-29 15:40:42 +02:00
Thomas TrompetteandGitHub 358ab54690 Fix workflow menu icons (#14767)
As title
2025-09-29 12:00:05 +00:00
4f24fc403b i18n - translations (#14765)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-29 13:45:36 +02:00
nitinandGitHub ea144c434b Add configuration types for widgets (#14717)
closes https://github.com/twentyhq/core-team-issues/issues/1532
2025-09-29 11:41:26 +00:00
2685f4a5b9 Restructure agent chat messages with parts-based architecture (#14749)
Co-authored-by: Félix Malfait <felix@twenty.com>
2025-09-29 13:31:55 +02:00
84cbd8e092 i18n - translations (#14744)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-26 16:20:13 +02:00
Paul RastoinandGitHub 4fbdfb6abc Activate v2 default seed (#14660)
## Introduction
After enabling flag by default got following errors:
```ts
Test Suites: 48 failed, 1 skipped, 97 passed, 145 of 146 total
Tests:       499 failed, 1 skipped, 644 passed, 1144 total
Snapshots:   61 failed, 133 passed, 194 total
Time:        363.226 s
Ran all test suites.
```

## From
<img width="2952" height="1510" alt="image"
src="https://github.com/user-attachments/assets/7e3b20c6-2552-40a7-90bb-2d7b3002c895"
/>

## To
<img width="3134" height="1510" alt="image"
src="https://github.com/user-attachments/assets/4fc9ada4-3c14-4333-a1db-11daf87db8d6"
/>

There's a huge test bundle in the latest shard that we could split up

## Notes
- Set as failing morph relation field rename as for the moment we do not
handle relation field mutation
- fixed the object update and creation validation adding label
identifier field metadata id checks
- and more

Some integrations tests are still on the v1 ( they have before and after
all disabling and re-enabling the flat ) but mainly we now have more
coverage on the v2 than the v1.
Mainly related records, uniqueness have to be migrated the v2 and so
tests too
2025-09-26 16:05:09 +02:00
Thomas TrompetteandGitHub ead351cb9e Fix variable search for iterators (#14742)
Add specific search util for iterators. Also making workflow version id
optional in compute step output schema endpoint to avoid breaking
changes on next release.

Before


https://github.com/user-attachments/assets/2ceb5b38-4c0a-4d38-8f57-0e4467dcfd93

After


https://github.com/user-attachments/assets/3ce503ac-5299-4bca-906f-e0fef379df7c
2025-09-26 13:42:40 +00:00
9cd0025aed i18n - translations (#14739)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2025-09-26 14:22:53 +02:00
Thomas TrompetteandGitHub 2c34e1fb8a Allow bulk records for manual trigger (#14725)
https://github.com/user-attachments/assets/d6c565eb-9a29-4830-9396-5f979c8caa7b

- Added a new component for manual trigger (mostly duplicated from
previous one). Will remove the old one once all data are migrated
- Updated schema output so the current item of the iterator can be typed

Todo left:
- migrate old triggers
- add an util to search iterator output. Today current item fields will
be displayed as not found
- set new manual triggers for workflow runs
2025-09-26 14:17:40 +02:00
WeikoandGitHub 584389e17f add code checksum to flat serverless function (#14721)
## Context
Now adding serverless code sync within the migration v2 logic itself. To
do that we need to follow the
- Prepare flat input
- Build migration
- Run migration
steps where now the serverless function entity will store in DB and
cache a checksum of its code and the flat input will contain the code
with the checksum. Build will compare checksum and create an update
action containing the code if it has changed and the migration will now
run the corresponding services (instead of calling those in the parent
serverless service exposed in the API) allowing us to keep that logic
functional for other use cases such as import/export, twenty-cli and
twenty upgrades.
2025-09-26 10:24:36 +02:00
Abdullah.andGitHub 5a56d73fb2 Enables phone number search in the global search (Command Menu) for person records. (#14636)
## Changes Made

- Added phone fields to search indexing: Extended searchable field types
to include `FieldMetadataType.PHONES`
- Updated person entity search configuration: Added `phones` to the
fields indexed for person records
- Enhanced search format support: Phone numbers are now indexed in
multiple formats:
  - Raw number: `2071234567`
  - International with plus: `+442071234567`
  - International without plus: `442071234567`
- Optimized for phone data: Removed unnecessary text processing (e.g.
unaccenting) for numeric phone fields
- Created workspace migration: New command to regenerate search vectors
for existing workspaces

## Technical Details

The implementation modifies PostgreSQL `tsvector` generation to index
both `primaryPhoneNumber` and `primaryPhoneCallingCode` fields,
combining them into international formats. This enables users to search
phone numbers using the formats they naturally type.

### Modified Files

- `is-searchable-field.util.ts` – Added `PHONES` to searchable types
- `person.workspace-entity.ts` – Included `phones` in person search
fields
- `get-ts-vector-column-expression.util.ts` – Enhanced expression
generation to support multiple phone number formats
- `is-searchable-subfield.util.ts` – Added subfield filtering logic for
phone fields

## Testing

- **Unit tests**: Validated `tsvector` expression generation and
phone-specific logic
- **Integration tests**: Covered phone search scenarios across multiple
formats

## Migration

Includes the `upgrade:1-7:regenerate-person-search-vector-with-phones`
command, which safely updates existing workspaces by dropping and
recreating search vectors with phone indexing support.

## Note

Frontend and Backend are both storing normalized phone numbers, as they
should. The issue turned out to be with the seed file instead, which
contained outdated records.

I relied on the database as the source of truth without testing via the
creation of a new record and it was an incorrect evaluation on my part.
Note taken, I will be more comprehensive with my analysis from here on
since I now understand I must check comprehensively before reaching a
conclusion.
2025-09-25 20:18:49 +02:00
Raphaël BosiandGitHub 1fdfac4f0d Update menu items across the app (#14724)
Closes https://github.com/twentyhq/core-team-issues/issues/1568


https://github.com/user-attachments/assets/a0fe6538-8405-4b52-a6ce-7afa846ee5f3
2025-09-25 18:14:32 +02:00
martmullandGitHub 9b3e2bfb45 1571 extensibility twenty cli add command to create base entities like object agent or serverless (#14722)
Remove default agent when init new app

add command to create a new entity (object or agent)



https://github.com/user-attachments/assets/b8f28281-2b40-4eaa-a958-55d2dd5183c8
2025-09-25 16:43:26 +02:00