Commit Graph

1644 Commits

Author SHA1 Message Date
041b1f21bf line breaks in tooltips & text (#8783)
This feature goal is to :

1 - clean variables not used any longer

2 - add line breaks for tooltips and text wrapped

<img width="329" alt="Screenshot 2024-11-27 at 18 37 18"
src="https://github.com/user-attachments/assets/b3d7ed76-df30-4377-9d73-08d55c0f5c49">
<img width="468" alt="Screenshot 2024-11-27 at 18 37 31"
src="https://github.com/user-attachments/assets/48ef343e-6071-4a89-a73f-fb271f8284c0">


Request From @Bonapara

---------

Co-authored-by: guillim <guillaume@twenty.com>
2024-11-28 14:30:23 +01:00
8aab063da3 Demo new onclick behavior 2024-11-28 14:17:01 +01:00
812ed6ed69 feat: record board component state refactor (#8779)
Fix #8758 

This PR is migrating the recoil component state from v1 to v2 for board.
It also now share some states and logics between board and table,
further can be done later.
Lastly this PR fix an issue since the PR #8613 that was treating
no-value as a normal record-group.
2024-11-28 13:44:21 +01:00
e96ad9a1f2 Admin panel init (#8742)
WIP
Related issues - 
#7090 
#8547 
Master issue - 
#4499

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2024-11-28 13:43:11 +01:00
525a2c2bed minor-fix: console errors (#8782) 2024-11-28 11:09:00 +01:00
2fab2266d5 feat(front): improve logo component (#8720) 2024-11-27 19:26:45 +01:00
3ad1113173 fix: scroll dropdown listing in hidden fields (#8738)
Fixes: #8716 

[Screencast from 2024-11-25
22-06-24.webm](https://github.com/user-attachments/assets/35bd66cc-942f-4903-abda-0d67a75b6582)

---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
2024-11-27 18:06:11 +01:00
a9cb1e9b0d Refactor actions (#8761)
Closes #8737 
- Refactored actions by creating hooks to add the possibility to
register actions programatically.
- Small fixes from #8610 review
- Fixed shortcuts display inside the command menu
- Removed `actionMenuEntriesComponentState` and introduced
`actionMenuEntriesComponentSelector`
2024-11-27 15:08:27 +01:00
149ce680d5 [Fix] Custom object icon update (#8762) 2024-11-26 18:03:19 +01:00
315938215e Fix Table text wrapping (#8683)
As discovered during the last release, text fields in the table were
wrapped. This PR fixes this unwanted behaviour

Current :
<img width="1077" alt="Screenshot 2024-11-22 at 14 17 42"
src="https://github.com/user-attachments/assets/080c5b1f-b793-46de-8733-9c69a4eb6b3b">

Wanted : 
One line ellipsed
<img width="244" alt="Screenshot 2024-11-22 at 14 20 46"
src="https://github.com/user-attachments/assets/c1d32859-4ffe-42e3-bfed-66db20c8c0c7">

---------

Co-authored-by: guillim <guillaume@twenty.com>
2024-11-26 17:58:05 +01:00
dfb966d47e Treat no value view group as normal & enable hide/dnd for no value (#8613)
Fixes #8591 

1. Summary
We disabled hide/dnd(drag-and-drop) options for `No value` view group
intentionally in the first implementation. We want to change it to
behave like normal view groups, so enable hide/dnd for `No value` view
group as well.

2. Solution
I have removed the code that filters the `No value` group out of view
groups, so `No value` is stored in the same array as other view groups.
I have removed the `No value` flag check for `Hide` button on the
hamburger menu of the Kanban header. I had to update the code in
`packages/twenty-front/src/modules/views/utils/mapViewGroupsToRecordGroupDefinitions.ts`
because it was ignoring the visibility flag of the `No value` view group
and set it always to true. Also, it was always putting the `No value`
group last ignoring the previous position.
>**_I am not 100% confident in the changes I made in
`packages/twenty-front/src/modules/views/utils/mapViewGroupsToRecordGroupDefinitions.ts`.
I'd like to have a review from someone more familiar with that part._**

3. Recording

https://github.com/user-attachments/assets/e135e22e-6e3a-4f94-a898-aafc03bba060
2024-11-26 17:47:42 +01:00
a026cde46a Fix folder deletion confirmation modal (#8744)
Scrollwrapper `navigationDrawer` is interfering with this particular
modal rendering
2024-11-26 10:58:07 +01:00
d85279c55e Fix update of custom object icon (#8730)
Icon update was not triggering a save due to missing onBlur prop drill
2024-11-26 10:56:57 +01:00
eea2885cbd Fix: open filter from column (#8747)
Column filter button (image below) was broken for all filter types, this
PR fixes it.

<img width="1053" alt="broken-filter-button"
src="https://github.com/user-attachments/assets/febd10a8-f360-4245-ba06-ef847c79fde1">

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2024-11-26 10:52:45 +01:00
9f2e774113 Fix Error field type rich text (#8739)
fix #8445

It seems linked to commandBar search where we filter tasks/notes by body
with ilike.
2024-11-26 10:11:41 +01:00
2e75fae3ad Allow standard field default value and settings editing (#7104) (#8559)
Co-authored-by: Marie Stoppa <marie.stoppa@essec.edu>
2024-11-26 10:03:48 +01:00
49526937fa fix: navigation drawer clip while making folder in favorites (#8619) 2024-11-25 19:49:22 +00:00
a19349bdae fix: table deselect doesn't work with few selected records (#8692)
Fixes: #8665 

[Screencast from 2024-11-23
00-33-14.webm](https://github.com/user-attachments/assets/e3b86955-4e12-4d10-9c13-ee60d7695cb3)

Co-authored-by: Félix Malfait <felix@twenty.com>
2024-11-24 17:59:49 +01:00
bad7ad464b Add boolean filtering (#7190) (#8700)
<img width="956" alt="filter-icp-true"
src="https://github.com/user-attachments/assets/fc5fe18d-c7b6-463d-9ce7-8e5facb7352f">

Link to issue: https://github.com/twentyhq/twenty/issues/7190
2024-11-24 09:43:44 +01:00
fd8e0d04a2 Fix array edit option (#8697)
Closes #8578 
There was no case to handle a FieldMetadataType.Array and thus an error
was thrown every time the edit button was clicked on an Array type.
It has been added now with an explicit break statement.
2024-11-23 13:13:15 +01:00
5ec6cb0e6f Make workflow step name editable (#8677)
- Use TextInput in header title
- add onTitleChange prop
- rename field name instead of label

To fix :
- padding right on title comes from current TextInput component. It
needs to be refactored


https://github.com/user-attachments/assets/535cd6d3-866b-4a61-9c5d-cdbe7710396a
2024-11-22 15:25:01 +00:00
cb5a0c1cc6 fix-percentage (#8684)
Following previous release, a suggestion was noticed by @martmull . Here
is a suggested fix.

Before :

![image](https://github.com/user-attachments/assets/10a55daa-8c90-42fc-8d1b-e28fc03f1948)

After :
<img width="611" alt="Screenshot 2024-11-22 at 14 56 07"
src="https://github.com/user-attachments/assets/67298633-4513-41a4-90aa-5e2366d3cd88">

---------

Co-authored-by: guillim <guillaume@twenty.com>
2024-11-22 14:20:37 +00:00
f44e2935df Fix filter multi select (#8682)
- Created a dropdown inside a dropdown for the
`ObjectFilterDropdownOperandDropdown` so the operand can be opened over
the selection with an offset
- Refactored dropdown component and introduced `DropdownUnmountEffect`
to close the dropdown when the component unmounts
- Removed old logic

Before:
<img width="216" alt="Capture d’écran 2024-11-22 à 14 03 58"
src="https://github.com/user-attachments/assets/3c1bba03-af03-4993-a070-f009b8dc876f">

After:
<img width="222" alt="Capture d’écran 2024-11-22 à 14 03 40"
src="https://github.com/user-attachments/assets/a8a784b4-8672-4b02-bb21-e4a749682f2e">
2024-11-22 14:08:29 +00:00
ac9cf737fb Fix RICH_TEXT display on cell (#8676)
## Context
We added a check of the field type in
[useTextFieldDisplay.ts](https://github.com/twentyhq/twenty/compare/c--fix-rich-text-display?expand=1#diff-8e53a2496b9faa67ac9aad3f7016efed19147557904da1bc44e895688513330d)
however this hook is also used for RICH_TEXT fields so it fails.
I'm removing this check since I don't think this is necessary, the
caller should already know its a TEXT or RICH_TEXT
2024-11-22 12:09:47 +01:00
76be1df66a Fix array and links display (#8671)
## Before

![image](https://github.com/user-attachments/assets/ebecb45b-d3c1-4c80-9d90-726e37d2d417)

![image](https://github.com/user-attachments/assets/33e85593-9459-4790-9ae6-a79265f33b5a)

## After

![image](https://github.com/user-attachments/assets/a5174069-bed3-4e02-ae98-550a418243c5)

![image](https://github.com/user-attachments/assets/f2d0dd16-225c-4788-bb90-d47875d8b5f3)
2024-11-22 12:06:31 +01:00
a41e563b9c Bump 0.34.0-canary (#8675) 2024-11-22 11:53:33 +01:00
62df0f0445 Display a generic fallback component when initial config load fails (#8588)
Fixes: #8487 #5027 

1. Summary
The purpose of these changes is to elevate the dev/user experience when
the initial config load call fails for whatever reason by displaying a
fallback component.

2. Solution
I ended up making more changes than I initially planned. I had to update
the order of the contexts a bit because `GenericErrorFallback` is
dependent on `AppThemeProvider` for styling and `AppThemeProvider` is
dependent on `ObjectMetadataItemsProvider` for
[`useObjectMetadataItem`](ae2f193d68/packages/twenty-front/src/modules/object-metadata/hooks/useObjectMetadataItem.ts (L22))
hook (`AppThemeProvider` -> `useColorScheme` -> `useUpdateOneRecord` ->
`useObjectMetadataItem`). I had to create a wrapper component for
`AppThemeProvider` and stylize it in a way that it looks responsive on
both mobile and desktop devices. Finally, I had to introduce the
`isErrored` flag to differentiate the loading and error states.

    There are some improvements we can make later - 
    - Display a loading state for the initial config load
    - Implement a refetch logic for the initial config loading failure
    
3. Recording



https://github.com/user-attachments/assets/c2f43573-8006-4118-8e18-8576099d78fd



https://github.com/user-attachments/assets/9c5853d3-539b-4880-aa38-c416c3e13594

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2024-11-22 09:45:23 +01:00
8f5515cab3 8414 add records selection context inside the command menu (#8610)
Closes #8414



https://github.com/user-attachments/assets/a6aeb50a-b57d-43db-a839-4627c49b4155
2024-11-21 17:56:53 +01:00
b8c01bcf5a Fix empty state not being centered (#8650)
Fix empty state not being centered

Before:
<img width="1512" alt="Capture d’écran 2024-11-21 à 15 50 56"
src="https://github.com/user-attachments/assets/8ea843b6-dce3-46d9-b2e3-db3be39e0cc1">

After:
<img width="1512" alt="Capture d’écran 2024-11-21 à 15 50 41"
src="https://github.com/user-attachments/assets/b18d306a-ccea-489f-941f-086d816d3a79">
2024-11-21 16:28:07 +01:00
aae18a94c5 Fix action menu padding (#8652)
Before:
<img width="211" alt="Capture d’écran 2024-11-21 à 16 10 29"
src="https://github.com/user-attachments/assets/f13be007-e043-4b65-8fb1-b7264f7b37fd">

After:
<img width="218" alt="Capture d’écran 2024-11-21 à 16 10 10"
src="https://github.com/user-attachments/assets/3fdf02b1-f932-4e72-8994-7596f6e22164">
2024-11-21 16:27:50 +01:00
cf73e32969 Fix isLabelSyncedWithName toggle at object creation (#8646)
+ remove useless disableNameEdit prop (always has same value as disabled
prop)
2024-11-21 15:15:25 +01:00
3f98c2ddbe feat(vite): add HTTPS support with configurable SSL (#8585)
The Pull Request adds support for local HTTPS configuration and
introduces a new environment variable for the app's base URL.
- Added new environment variable REACT_APP_BASE_URL in .env.example.
- Introduced logic to utilize SSL certificates for local HTTPS in
vite.config.ts.
- Added validation to ensure SSL key and certificate paths are defined
for HTTPS.
- Included support for dynamic base URL setting based on the environment
configuration.
- Enhanced server configuration in vite.config.ts to handle HTTPS and
local development.

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2024-11-21 14:22:00 +01:00
ae4fb7d113 fix: soft deleted records are read only (#8198)
TODO:
- [ ] It should not be possible to add tasks, notes, files, etc.

Fix for https://github.com/twentyhq/twenty/issues/7172

Note for reviewer:
- With these changes, `deletedAt` is now always included in
`recordGqlFields`.

--- Edit from Charles --
In this PR:
1) As mentionned by @pau-not-paul, we are adding deletedAt to our
recordGqlFields for board and table
2) I'm removing cellReadOnly logic, it is now fully computed using
useIsFieldValueReadonly like it's done in other places, there is no need
to maintain two read only systems
3) refactoring useIsFieldValueReadonly to take all the business logics
into one place together. It's now a function of the 5 factors (isRemote,
isDeleted, objectName, fieldName, etc...). Later it's likely to get back
to a function of Pick<FieldMetadata>, Pick<ObjectMetadata>,
record.isDeleted but we are not there yet

Note: as all cells are listening to the record (for isDeleted), updating
a field will trigger a re-rendering of the row which is not an issue
right now. It will be if we introduce bulk edition. In this case we
would need to use a selector on fields on top of record store

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2024-11-21 14:02:09 +01:00
8772f8aac7 Hide the "Expand to Full Page" button on Email and Calendar pages (#8615)
### Overview
This pull request addresses issue #8612 by ensuring the "Expand to Full
Page" button does not appear on the Email and Calendar pages in the
right drawer.

### Changes Made
- Added conditions in the `RightDrawerTopBar` component to prevent the
`RightDrawerTopBarExpandButton` from rendering on:
  - Email pages (`RightDrawerPages.ViewEmailThread`)
  - Calendar pages (`RightDrawerPages.ViewCalendarEvent`)
- Verified that the button still renders correctly on other pages, such
as Record pages.

### Testing
Since I couldn't run the project locally, I was unable to confirm the
changes in a running environment. However, the logic has been carefully
updated to ensure the button is conditionally hidden based on the
current `rightDrawerPage` state.

### Additional Notes
Please let me know if further adjustments are needed or if there are any
issues during testing. Thank you for reviewing this PR!

---------

Co-authored-by: Weiko <corentin@twenty.com>
2024-11-20 20:33:54 +01:00
eb66c019f5 Set initial step if only one root step (#8617) 2024-11-20 17:38:35 +00:00
2968085e73 Feat: revamp group by settings (#8503)
This PR fix #8202 that is revamping the `Options` settings for board and
table.

<img width="221" alt="Screenshot 2024-11-15 at 11 47 52 AM"
src="https://github.com/user-attachments/assets/0b143c95-810d-408b-b19e-c2678cd5653a">
<img width="214" alt="Screenshot 2024-11-15 at 11 47 59 AM"
src="https://github.com/user-attachments/assets/3468734a-8174-4e36-a8ee-08dad6c56227">
<img width="210" alt="Screenshot 2024-11-15 at 11 48 10 AM"
src="https://github.com/user-attachments/assets/300628f5-6645-4f1c-af8a-befce2714716">
<img width="212" alt="Screenshot 2024-11-15 at 11 48 37 AM"
src="https://github.com/user-attachments/assets/37a3db40-2146-45eb-bea4-44e1041f5bcf">
<img width="214" alt="Screenshot 2024-11-15 at 11 48 44 AM"
src="https://github.com/user-attachments/assets/42d2adcc-8f03-4f28-928b-d3c3d54d388a">
<img width="213" alt="Screenshot 2024-11-15 at 11 48 51 AM"
src="https://github.com/user-attachments/assets/90824568-b979-46a7-9841-ab8b9978e138">
<img width="211" alt="Screenshot 2024-11-15 at 11 49 00 AM"
src="https://github.com/user-attachments/assets/fa22446a-b1db-4d97-9a45-0778bf09ae3c">

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2024-11-20 17:03:18 +01:00
96c8673278 fix: empty composite field input (#8451)
Fixes: #7225

---------

Co-authored-by: bosiraphael <raphael.bosi@gmail.com>
2024-11-20 15:39:55 +01:00
24c0b0f873 Remove "When no records are selected" actions on record page ⌘O (#8575)
Closes #8566 
- Introduce the concept of scope for an ActionMenuEntry, scope is either
`global` or `record-selection`
2024-11-20 14:33:16 +01:00
c133129eb0 Fix state mutation serverless action (#8580)
In this PR:

- Ensure the `setNestedValue` does a deep copy of the provided object
and doesn't mutate it directly.
- Store the form's state in a `useState` instead of relying entirely on
the backend's state. This makes the form more resilient to slow network
connections.
- Ensure the input settings are reset when selecting another function.
- The Inner component now expects the serverless functions data to be
resolved before being mounted, so I split it.

Closes https://github.com/twentyhq/twenty/issues/8523
2024-11-20 09:15:55 +00:00
271af37327 Fix relations in search queries (#8595)
We were not handling relations in the search resolver, which started
being an issue as we query those relations in the combinedSearch queries
(introduced here https://github.com/twentyhq/twenty/pull/8564); they
were nullified in the response payload. The response was overwriting
findManyRecords results in the cache as it contained the exact same
fields.

So we now
1. Handle relations in the search resolver
2. Stop querying relations in search queries (no use)
2024-11-19 19:07:57 +01:00
4f2019edae favorite folders followup (#8570)
Something changed, which affected the Favorite folder picker checkbox
styles -- fixed it!
Cleaned up code in `CurrentWorkspaceMemberFavoritesFolders` - removed
redundant filtering since favorites are already filtered in
`usePrefetchedFavoritesData`.
Regarding issue #8569 - I am not sure what to do in this case. Since
Folders data is gated by a feature flag, we can't use it in
`CurrentWorkspaceMemberFavoritesFolders` to ensure the favorite section
renders with empty folders. Currently, the section only appears when at
least one favorite exists - may be leave this section open at all times
or fix this bug after removal of the feature flag?

---------

Co-authored-by: Nitin Koche <nitinkoche@Nitins-MacBook-Pro.local>
Co-authored-by: Charles Bochet <charles@twenty.com>
2024-11-19 18:55:25 +01:00
2773974459 Add disable state to variable tag component (#8586)
- add hover on variables
- add disable state with readonly props

Disabled
<img width="284" alt="Capture d’écran 2024-11-19 à 16 12 10"
src="https://github.com/user-attachments/assets/19b21429-8500-4cdc-9914-22a7968beb64">


Normal
<img width="284" alt="Capture d’écran 2024-11-19 à 16 12 30"
src="https://github.com/user-attachments/assets/bc3be00f-944d-488c-bf05-a9f7b9f134c4">
2024-11-19 17:15:32 +00:00
ba1c094775 Fix select filter eq (#8594)
Fix
https://discord.com/channels/1130383047699738754/1308384008043757640/1308384008043757640
2024-11-19 18:12:08 +01:00
eeb4f2d329 Set white-space nowrap for table cells (#8568)
Fixes: #8552 

1. Summary
It seems table cell content is missing `white-space: nowrap`, so it
breaks the content into multiple lines when there are spaces or such.

2. Solution
Set `white-space: nowrap` for the table cell container so it always
takes a single line regardless of the length of the content.

3. Recording


https://github.com/user-attachments/assets/a42a2e80-d1fc-43b1-bf87-d52bf0367a88
2024-11-19 17:44:37 +01:00
ac72f8a271 Fix workflow actions not being selectable with arrow keys (#8576)
https://github.com/user-attachments/assets/c108b60b-030e-4eef-a30f-fab472ea60a9
2024-11-19 16:01:28 +01:00
1e55010e26 8563 workflow workflow node does not open on step click (#8582)
- fix multiple node selection
- fix console error
- fix close right drawer no unselect nodes
- fix edges not selectable
- fix sometime node not selected when clicking

## After


https://github.com/user-attachments/assets/ceec847f-5b7d-4452-9685-81a845bbf21e
2024-11-19 14:51:52 +01:00
86c2e9f0e4 fix: uncontrolled input to controlled in SigninUpForm (#8536)
Fixes: #8535

---------

Co-authored-by: Devessier <baptiste@devessier.fr>
2024-11-19 13:13:35 +00:00
0d0f7e67a6 Add custom objects to command menu search + use ilike for notes search (#8564)
In this PR

- Re-introduce previously used search based on "ILIKE" queries for
search on notes since the tsvector search with json text is not working
correctly (@charlesBochet)
- Add search on custom objects in Command Menu bar (closes
https://github.com/twentyhq/twenty/issues/8522)


https://github.com/user-attachments/assets/0cc064cf-889d-4f2c-8747-6d8670f35a39
2024-11-19 14:11:38 +01:00
4a8234d18c Feature 7552 patch (#8574)
Related to #7552

<img width="556" alt="Screenshot 2024-11-18 at 17 57 30"
src="https://github.com/user-attachments/assets/e89e575b-9adb-4910-ab0d-b60079727f70">

---------

Co-authored-by: guillim <guillaume@twenty.com>
2024-11-19 12:47:33 +01:00
9073bdf21a Background Blur added across multiple Input Fields in Edit Popups (#8277)
Fix #5644 

**Apply background blur to input fields across UI for improved
consistency and appearance with Theme compatibility :**

1. Updated **TextAreaInput.tsx** to apply background blur to text input
fields (e.g., City name).

2. Enhanced **PhonesFieldInput.tsx** to apply background blur for
seamless styling in phone number input sections.

3. Modified **TextInputV2.tsx** to add background blur in address
inputs, workspace fields (e.g., Blocklist, Name fields), invitation
inputs, profile name/email fields, and other input areas.

4. Updated **DateTimeInput.tsx** and **DateInput.tsx** to improve the
appearance of date, time, and calendar popup fields with background
blur.

5. Refined **DropdownMenuInput.tsx** and **DropdownMenuSearchInput.tsx**
to add background blur to inputs for Emails, Domain name, and search
fields across the web (e.g., Time Zone dropdowns, phone number country
search).

Some images are attached for reference.

<img width="235" alt="1_b"
src="https://github.com/user-attachments/assets/bd72e69a-712e-4226-8fda-0cb737d4cbd1">
<img width="229" alt="1_w"
src="https://github.com/user-attachments/assets/bb8eb60b-31fb-44c6-ac2a-ca28638b5e07">
<img width="234" alt="2_b"
src="https://github.com/user-attachments/assets/a4f0a9de-dea1-4ef8-926b-99de984c081b">
<img width="239" alt="2_w"
src="https://github.com/user-attachments/assets/4d2c7331-4bbf-4ea2-adad-76c7cde4072c">
<img width="225" alt="3_b"
src="https://github.com/user-attachments/assets/458f4759-8428-43ae-a6b6-aa38ab6fb0f8">
<img width="219" alt="3_w"
src="https://github.com/user-attachments/assets/5ddb67c5-e59d-47cc-b2e7-44b3a7b794e6">
<img width="646" alt="4_b"
src="https://github.com/user-attachments/assets/01252bce-a34a-4dda-a801-654ccc5e7841">
<img width="637" alt="4_w"
src="https://github.com/user-attachments/assets/ea60deab-7594-4aef-ac63-0cedc9168951">
<img width="648" alt="5_b"
src="https://github.com/user-attachments/assets/465789ec-55b3-4750-a2bc-a9e156b1101e">
<img width="642" alt="5_w"
src="https://github.com/user-attachments/assets/8b58977a-f543-4018-a4ee-b1ff5b9180a3">
<img width="647" alt="6_b"
src="https://github.com/user-attachments/assets/88030efe-bd16-43e4-9744-ee223aa04298">
<img width="642" alt="6_w"
src="https://github.com/user-attachments/assets/4ca2c365-ab1e-47e9-ba4a-bdb738500f56">
<img width="647" alt="7_b"
src="https://github.com/user-attachments/assets/224c3da5-cf57-4652-bd29-681c2098917e">
<img width="655" alt="7_w"
src="https://github.com/user-attachments/assets/eecc2d51-ce1f-47c9-845c-c6fe15a40fa5">
<img width="317" alt="8_b"
src="https://github.com/user-attachments/assets/e899b4a2-4849-4d1c-805b-5a950a53d6cc">
<img width="335" alt="8_w"
src="https://github.com/user-attachments/assets/73fef887-0a46-4557-aca4-d07c9dc298d1">
<img width="246" alt="9_b"
src="https://github.com/user-attachments/assets/99c5627a-e7ba-4453-9666-8d73b0d676ee">
<img width="238" alt="9_w"
src="https://github.com/user-attachments/assets/bb36e4ea-3b78-48f5-822f-cc5012e5d434">
<img width="218" alt="10_b"
src="https://github.com/user-attachments/assets/450fa833-12ad-40b7-80f5-17de6af582bd">
<img width="225" alt="10_w"
src="https://github.com/user-attachments/assets/3fe6d128-4146-4316-821e-2ebd65fd12d5">
<img width="647" alt="11_b"
src="https://github.com/user-attachments/assets/ec39f88f-0beb-4cf0-b35f-b4f78b4e75ff">
<img width="663" alt="11_w"
src="https://github.com/user-attachments/assets/6eb19fe7-604c-4cb9-9623-208e541df751">
<img width="235" alt="12_b"
src="https://github.com/user-attachments/assets/98e68530-f5c5-43d1-839e-a8c14582b72a">
<img width="245" alt="12_w"
src="https://github.com/user-attachments/assets/e3f0aec9-6a32-4784-a36c-d187303d3310">

---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
2024-11-19 12:21:01 +01:00