github-actions[bot]
2de681da72
i18n - docs translations ( #22317 )
...
Created by Github action
<!-- This is an auto-generated description by cubic. -->
<a
href="https://cubic.dev/pr/twentyhq/twenty/pull/22317?utm_source=github "
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg "><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg "><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg "></picture></a>
<!-- End of auto-generated description by cubic. -->
Co-authored-by: github-actions <github-actions@twenty.com >
2026-06-29 17:12:55 +02:00
github-actions[bot]
f470e271fa
i18n - docs translations ( #22297 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-06-29 14:01:10 +02:00
github-actions[bot]
68f4cf269d
i18n - docs translations ( #22281 )
...
Created by Github action
<!-- This is an auto-generated description by cubic. -->
<a
href="https://cubic.dev/pr/twentyhq/twenty/pull/22281?utm_source=github "
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg "><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg "><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg "></picture></a>
<!-- End of auto-generated description by cubic. -->
Co-authored-by: github-actions <github-actions@twenty.com >
2026-06-29 07:22:03 +02:00
github-actions[bot]
7b17cac772
i18n - docs translations ( #22273 )
...
Created by Github action
<!-- This is an auto-generated description by cubic. -->
<a
href="https://cubic.dev/pr/twentyhq/twenty/pull/22273?utm_source=github "
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg "><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg "><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg "></picture></a>
<!-- End of auto-generated description by cubic. -->
Co-authored-by: github-actions <github-actions@twenty.com >
2026-06-29 04:44:55 +02:00
github-actions[bot]
710e3e2dfe
i18n - docs translations ( #19957 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-04-22 08:59:13 +02:00
github-actions[bot]
40b1cdaba6
i18n - docs translations ( #19956 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-04-22 07:15:43 +02:00
github-actions[bot]
0aaffe3212
i18n - docs translations ( #19943 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-04-21 18:44:52 +02:00
github-actions[bot]
44ba7725ae
i18n - docs translations ( #19934 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-04-21 14:46:37 +02:00
github-actions[bot]
cd73088be6
i18n - docs translations ( #19925 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-04-21 10:57:27 +02:00
Paul Rastoin
e411f076f1
Replace typeorm binary by database:migrate:generate ( #19515 )
2026-04-09 16:25:10 +00:00
github-actions[bot]
24a5273a79
i18n - docs translations ( #19410 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-04-07 18:36:49 +02:00
neo773
54be3b7e87
docs: remove reference to sync metadata ( #19400 )
2026-04-07 15:55:23 +00:00
github-actions[bot]
6711b40922
i18n - docs translations ( #18645 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-03-14 16:49:41 +01:00
github-actions[bot]
c753b2bee1
i18n - docs translations ( #18644 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-03-14 13:57:57 +01:00
github-actions[bot]
e7fe435f60
i18n - docs translations ( #18541 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-03-10 17:44:34 +01:00
github-actions[bot]
982f0c4a4d
i18n - docs translations ( #18534 )
...
Created by Github action
---------
Co-authored-by: github-actions <github-actions@twenty.com >
Co-authored-by: Charles Bochet <charles@twenty.com >
2026-03-10 15:57:15 +01:00
github-actions[bot]
9d808302aa
i18n - docs translations ( #18452 )
...
Created by Github action
---------
Co-authored-by: github-actions <github-actions@twenty.com >
2026-03-06 08:52:50 +01:00
github-actions[bot]
90cced0e74
i18n - docs translations ( #18451 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-03-06 02:24:32 +01:00
Charles Bochet
9d57bc39e5
Migrate from ESLint to OxLint ( #18443 )
...
## Summary
Fully replaces ESLint with OxLint across the entire monorepo:
- **Replaced all ESLint configs** (`eslint.config.mjs`) with OxLint
configs (`.oxlintrc.json`) for every package: `twenty-front`,
`twenty-server`, `twenty-emails`, `twenty-ui`, `twenty-shared`,
`twenty-sdk`, `twenty-zapier`, `twenty-docs`, `twenty-website`,
`twenty-apps/*`, `create-twenty-app`
- **Migrated custom lint rules** from ESLint plugin format to OxLint JS
plugin system (`@oxlint/plugins`), including
`styled-components-prefixed-with-styled`, `no-hardcoded-colors`,
`sort-css-properties-alphabetically`,
`graphql-resolvers-should-be-guarded`,
`rest-api-methods-should-be-guarded`, `max-consts-per-file`, and
Jotai-related rules
- **Migrated custom rule tests** from ESLint `RuleTester` + Jest to
`oxlint/plugins-dev` `RuleTester` + Vitest
- **Removed all ESLint dependencies** from `package.json` files and
regenerated lockfiles
- **Updated Nx targets** (`lint`, `lint:diff-with-main`, `fmt`) in
`nx.json` and per-project `project.json` to use `oxlint` commands with
proper `dependsOn` for plugin builds
- **Updated CI workflows** (`.github/workflows/ci-*.yaml`) — no more
ESLint executor
- **Updated IDE setup**: replaced `dbaeumer.vscode-eslint` with
`oxc.oxc-vscode` extension, configured `source.fixAll.oxc` and
format-on-save with Prettier
- **Replaced all `eslint-disable` comments** with `oxlint-disable`
equivalents across the codebase
- **Updated docs** (`twenty-docs`) to reference OxLint instead of ESLint
- **Renamed** `twenty-eslint-rules` package to `twenty-oxlint-rules`
### Temporarily disabled rules (tracked in `OXLINT_MIGRATION_TODO.md`)
| Rule | Package | Violations | Auto-fixable |
|------|---------|-----------|-------------|
| `twenty/sort-css-properties-alphabetically` | twenty-front | 578 | Yes
|
| `typescript/consistent-type-imports` | twenty-server | 3814 | Yes |
| `twenty/max-consts-per-file` | twenty-server | 94 | No |
### Dropped plugins (no OxLint equivalent)
`eslint-plugin-project-structure`, `lingui/*`, `@stylistic/*`,
`import/order`, `prefer-arrow/prefer-arrow-functions`,
`eslint-plugin-mdx`, `@next/eslint-plugin-next`,
`eslint-plugin-storybook`, `eslint-plugin-react-refresh`. Partial
coverage for `jsx-a11y` and `unused-imports`.
### Additional fixes (pre-existing issues exposed by merge)
- Fixed `EmailThreadPreview.tsx` broken import from main rename
(`useOpenEmailThreadInSidePanel`)
- Restored truthiness guard in `getActivityTargetObjectRecords.ts`
- Fixed `AgentTurnResolver` return types to match entity (virtual
`fileMediaType`/`fileUrl` are resolved via `@ResolveField()`)
## Test plan
- [x] `npx nx lint twenty-front` passes
- [x] `npx nx lint twenty-server` passes
- [x] `npx nx lint twenty-docs` passes
- [x] Custom oxlint rules validated with Vitest: `npx nx test
twenty-oxlint-rules`
- [x] `npx nx typecheck twenty-front` passes
- [x] `npx nx typecheck twenty-server` passes
- [x] CI workflows trigger correctly with `dependsOn:
["twenty-oxlint-rules:build"]`
- [x] IDE linting works with `oxc.oxc-vscode` extension
2026-03-06 01:03:50 +01:00
Charles Bochet
7a2e397ad1
Complete linaria migration ( #18361 )
...
## Summary
Completes the migration of the frontend styling system from **Emotion**
(`@emotion/styled`, `@emotion/react`) to **Linaria** (`@linaria/react`,
`@linaria/core`), a zero-runtime CSS-in-JS library where styles are
extracted at build time.
This is the final step of the migration — all ~494 files across
`twenty-front`, `twenty-ui`, `twenty-website`, and `twenty-sdk` are now
fully converted.
## Changes
### Styling Migration (across ~480 component files)
- Replaced all `@emotion/styled` imports with `@linaria/react`
- Converted runtime theme access patterns (`({ theme }) => theme.x.y`)
to build-time `themeCssVariables` CSS custom properties
- Replaced `useTheme()` hook (from Emotion) with
`useContext(ThemeContext)` where runtime theme values are still needed
(e.g., passing colors to non-CSS props like icon components)
- Removed `@emotion/react` `css` helper usages in favor of Linaria
template literals
### Dependency & Configuration Changes
- **Removed**: `@emotion/react`, `@emotion/styled` from root
`package.json`
- **Added**: `@wyw-in-js/babel-preset`, `next-with-linaria` (for
twenty-website SSR support)
- Updated Nx generator defaults from `@emotion/styled` to
`@linaria/react` in `nx.json`
- Simplified `vite.config.ts` (removed Emotion-specific configuration)
- Updated `twenty-website/next.config.js` to use `next-with-linaria` for
SSR Linaria support
### Storybook & Testing
- Removed `ThemeProvider` from Emotion in Storybook previews
(`twenty-front`, `twenty-sdk`)
- Now relies solely on `ThemeContextProvider` for theme injection
### Documentation
- Removed the temporary `docs/emotion-to-linaria-migration-plan.md`
(migration complete)
- Updated `CLAUDE.md` and `README.md` to reflect Linaria as the styling
stack
- Updated frontend style guide docs across all locales
## How it works
Linaria extracts styles at build time via the `@wyw-in-js/vite` plugin.
All expressions in `styled` template literals must be **statically
evaluable** — no runtime theme objects or closures over component state.
- **Static styles** use `themeCssVariables` which map to CSS custom
properties (`var(--theme-color-x)`)
- **Runtime theme access** (for non-CSS use cases like icon `color`
props) uses `useContext(ThemeContext)` instead of Emotion's `useTheme()`
2026-03-04 00:50:06 +01:00
github-actions[bot]
9f5a8735c9
i18n - docs translations ( #18280 )
...
Created by Github action
---------
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-27 23:12:39 +01:00
github-actions[bot]
81698ff32c
i18n - docs translations ( #18274 )
...
Created by Github action
---------
Co-authored-by: github-actions <github-actions@twenty.com >
Co-authored-by: Charles Bochet <charles@twenty.com >
2026-02-26 16:52:43 +01:00
Charles Bochet
2674589b44
Remove any recoil reference from project ( #18250 )
...
## Remove all Recoil references and replace with Jotai
### Summary
- Removed every occurrence of Recoil from the entire codebase, replacing
with Jotai equivalents where applicable
- Updated `README.md` tech stack: `Recoil` → `Jotai`
- Rewrote documentation code examples to use
`createAtomState`/`useAtomState` instead of `atom`/`useRecoilState`, and
removed `RecoilRoot` wrappers
- Cleaned up source code comment and Cursor rules that referenced Recoil
- Applied changes across all 13 locale translations (ar, cs, de, es, fr,
it, ja, ko, pt, ro, ru, tr, zh)
2026-02-26 10:28:40 +01:00
github-actions[bot]
001c2097a3
i18n - docs translations ( #18231 )
...
Created by Github action
<!-- mintlify-editor-comments:start -->
Mintlify
---
0 threads from 0 users in Mintlify
- No unresolved comments
<!-- mintlify-editor-comments:end -->
<!-- mintlify-comment-->
<a
href="https://dashboard.mintlify.com/twenty/twenty/editor/i18n-docs?source=pr_comment "
target="_blank" rel="noopener noreferrer"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://d3gk2c5xim1je2.cloudfront.net/assets/open-mintlify-editor-dark.svg "><source
media="(prefers-color-scheme: light)"
srcset="https://d3gk2c5xim1je2.cloudfront.net/assets/open-mintlify-editor-light.svg "><img
src="https://d3gk2c5xim1je2.cloudfront.net/assets/open-mintlify-editor-light.svg "
alt="Open in Mintlify Editor"></picture></a>
<!-- /mintlify-comment -->
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-25 16:50:28 +01:00
github-actions[bot]
9162e62664
i18n - docs translations ( #17481 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-01-27 18:41:52 +01:00
github-actions[bot]
f06caae098
i18n - docs translations ( #17473 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-01-27 13:28:55 +01:00
github-actions[bot]
b7fbe1c49e
i18n - docs translations ( #17199 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-01-16 18:36:39 +01:00
github-actions[bot]
e3757f300a
i18n - docs translations ( #16779 )
...
Created by Github action
---------
Co-authored-by: github-actions <github-actions@twenty.com >
2025-12-23 17:06:38 +01:00
Félix Malfait
3dd858c91e
i18n - docs translations ( #16774 )
...
Created by Github action
Pulls the latest documentation translations from Crowdin for all
supported languages:
- French (fr)
- Arabic (ar)
- Czech (cs)
- German (de)
- Spanish (es)
- Italian (it)
- Japanese (ja)
- Korean (ko)
- Portuguese (pt)
- Romanian (ro)
- Russian (ru)
- Turkish (tr)
- Chinese (zh-CN)
---------
Co-authored-by: github-actions <github-actions@twenty.com >
2025-12-23 14:26:11 +01:00
github-actions[bot]
99d5aa2589
i18n - docs translations ( #16767 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2025-12-23 01:40:21 +01:00