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
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
martmull and GitHub
120096346a
Add define post isntall logic function ( #18248 )
...
As title
2026-02-26 11:09:21 +01:00
Charles Bochet and GitHub
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
4ea8245387
i18n - docs translations ( #18245 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-25 23:42:24 +01:00
Baptiste Devessier and GitHub
f7ea1d9500
Update doc for front components ( #18196 )
2026-02-25 22:04:37 +01:00
Weiko and GitHub
0af980a783
introduce metadata api client to twenty sdk ( #18233 )
...
Logic function: hello-world.ts
```typescript
import { CoreApiClient } from 'twenty-sdk/generated/core';
import { MetadataApiClient } from 'twenty-sdk/generated/metadata';
const handler = async () => {
const coreClient = new CoreApiClient();
const metadataClient = new MetadataApiClient();
// Query the core /graphql endpoint — fetch some people
const coreResult = await coreClient.query({
people: {
edges: {
node: {
id: true,
name: {
firstName: true,
lastName: true,
},
},
},
},
});
// Query the metadata /metadata endpoint — fetch current workspace
const metadataResult = await metadataClient.query({
currentWorkspace: {
id: true,
displayName: true,
},
});
return {
coreResponse: coreResult,
metadataResponse: metadataResult,
};
};
```
With route trigger should now produce:
<img width="582" height="238" alt="Screenshot 2026-02-25 at 17 14 29"
src="https://github.com/user-attachments/assets/8c597113-7552-4d32-845a-352083d84ac7 "
/>
```json
{
"coreResponse": {
"people": {
"edges": [
{
"node": {
"id": "20202020-b000-4485-94de-70c2a98daef2",
"name": {
"firstName": "Jeffery",
"lastName": "Griffin"
}
}
},
{
"node": {
"id": "20202020-b003-415a-9051-133248495f7f",
"name": {
"firstName": "Terry",
"lastName": "Melendez"
}
}
},
{
"node": {
"id": "20202020-b00e-4bc1-87c8-00aeb49c10f8",
"name": {
"firstName": "Lee",
"lastName": "Jones"
}
}
},
{
"node": {
"id": "20202020-b012-44c1-9fdc-90f110962d07",
"name": {
"firstName": "Sarah",
"lastName": "Hernandez"
}
}
},
]
}
},
...
"metadataResponse": {
"currentWorkspace": {
"id": "20202020-1c25-4d02-bf25-6aeccf7ea419",
"displayName": "Apple"
}
}
}
2026-02-25 21:42:05 +01:00
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
martmull and GitHub
448241540d
Improve create-twenty-app command ( #18226 )
...
as title
2026-02-25 14:10:47 +01:00
a900b4a4b4
i18n - docs translations ( #18141 )
...
Created by Github action
---------
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-22 12:36:36 +01:00
martmull and GitHub
ba59ab8094
Add upload file in twenty client ( #18129 )
...
This function
```typescript
import { defineLogicFunction } from 'twenty-sdk';
import TwentyClient from 'twenty-sdk/generated';
import { v4 } from 'uuid';
export const POST_INSTALL_UNIVERSAL_IDENTIFIER =
'1312be5c-4fd6-44b3-afd0-567352616c7c';
const handler = async (): Promise<any> => {
const client = new TwentyClient();
const seedResult = await client.mutation({
createCompany: {
id: true,
name: true,
__args: {
data: {
name: `toto + ${v4()}`,
},
},
},
});
const companyFieldUniversalIdentifier =
'20202020-15db-460e-8166-c7b5d87ad4be';
const uploadFileResult = await client.uploadFile(
Buffer.from('hello world', 'utf-8'),
'test.txt',
undefined,
companyFieldUniversalIdentifier,
);
await client.mutation({
createAttachment: {
id: true,
__args: {
data: {
file: [{ fileId: uploadFileResult.id, label: 'hello-world.txt' }],
fullPath: uploadFileResult.path,
targetCompanyId: seedResult.createCompany?.id,
},
},
},
});
return;
};
export default defineLogicFunction({
universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
name: 'post-install',
description: 'Add a description for your logic function',
timeoutSeconds: 30,
handler,
});
```
produces this record below
<img width="1512" height="859" alt="image"
src="https://github.com/user-attachments/assets/57dc3a6b-fd2c-4f21-8331-8f1f05403826 "
/>
2026-02-20 17:11:59 +00:00
82617727a2
i18n - docs translations ( #18131 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-20 16:33:06 +01:00
9f3f2e21d8
i18n - docs translations ( #18122 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-20 13:51:43 +01:00
Paul Rastoin and GitHub
175df59c21
Support Skill in manifest ( #18092 )
...
# Introduction
Support skill in manifest, pre-requisite for the twenty standard app
migration
2026-02-20 11:45:42 +01:00
db9636bd9e
i18n - docs translations ( #18067 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-19 02:07:09 +01:00
66deb8be63
i18n - docs translations ( #18062 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-18 23:34:46 +01:00
6b3ef404b0
i18n - docs translations ( #18050 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-18 21:31:54 +01:00
martmull and GitHub
2cc3c75c7e
Add example in create-twenty-app ( #18043 )
...
- add interactive mode to create-twenty-app
- by default create an example for each entities
<img width="1181" height="168" alt="image"
src="https://github.com/user-attachments/assets/a2490d8f-66a1-4cd5-bf41-57166cc20a1e "
/>
2026-02-18 18:04:19 +00:00
e4075caa65
i18n - docs translations ( #18048 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-18 19:42:34 +01:00
e9b5cb830c
i18n - docs translations ( #18040 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-18 17:54:40 +01:00
martmull and GitHub
53c314d0fa
2094 extensibility define postinstall orand preinstall function to run in application ( #18037 )
...
- add a new optional key `postInstallLogicFunctionUniversalIdentifier`
in applicationConfig
- seed postInstall function in create-twenty-app
- update execute:function options
- update doc
2026-02-18 15:38:22 +00:00
b7274da8fa
i18n - docs translations ( #18020 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-18 08:12:20 +01:00
4a485aecb0
i18n - docs translations ( #18017 )
...
Created by Github action
---------
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-18 01:06:14 +01:00
3d362e6e01
i18n - docs translations ( #18014 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-17 19:33:21 +01:00
Charles Bochet and GitHub
c0cc0689d6
Add Client Api generation ( #17961 )
...
## Add API client generation to SDK dev mode and refactor orchestrator
into step-based pipeline
### Why
The SDK dev mode lacked typed API client generation, forcing developers
to work without auto-generated GraphQL types when building applications.
Additionally, the orchestrator was a monolithic class that mixed watcher
management, token handling, and sync logic — making it difficult to
extend with new steps like client generation.
### How
- **Refactored the orchestrator** into a step-based pipeline with
dedicated classes: `CheckServer`, `EnsureValidTokens`,
`ResolveApplication`, `BuildManifest`, `UploadFiles`,
`GenerateApiClient`, `SyncApplication`, and `StartWatchers`. Each step
has typed input/output/status, managed by a new `OrchestratorState`
class.
- **Added `GenerateApiClientOrchestratorStep`** that detects
object/field schema changes and regenerates a typed GraphQL client (via
`@genql/cli`) into `node_modules/twenty-sdk/generated` for seamless
imports.
- **Replaced `checkApplicationExist`** with `findOneApplication` on both
server resolver and SDK API service, returning the entity data instead
of a boolean.
- **Added application token pair mutations**
(`generateApplicationToken`, `renewApplicationToken`) to the API
service, with the server now returning `ApplicationTokenPairDTO`
containing both access and refresh tokens.
- **Restructured the dev UI** into `dev/ui/components/` with dedicated
panel, section, and event log components.
- **Simplified `AppDevCommand`** from ~180 lines of watcher management
down to ~40 lines that delegate entirely to the orchestrator.
2026-02-17 18:45:52 +01:00
7523143f12
i18n - docs translations ( #17981 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-17 09:29:37 +01:00
martmull and GitHub
c3d565f266
Add default fields on object manifest ( #17977 )
...
as title
<img width="830" height="227" alt="image"
src="https://github.com/user-attachments/assets/8cbf4a14-5d1d-496f-a146-f31079e6e602 "
/>
2026-02-16 16:50:46 +01:00
4b3c58e013
i18n - docs translations ( #17972 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-16 13:51:12 +01:00
b80146c890
i18n - docs translations ( #17967 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-16 12:11:24 +01:00
martmull and GitHub
da064d5e88
Support define is tool logic function ( #17926 )
...
- supports isTool and timeout settings in defineLogicFunction in apps
and in setting tabs definition
- compute for all toolInputSchema for logic funciton, in settings and in
code steps
<img width="991" height="802" alt="image"
src="https://github.com/user-attachments/assets/05dc1221-cac9-45a3-87b0-3b13161446fd "
/>
2026-02-16 10:43:29 +01:00
2072d5f720
i18n - docs translations ( #17939 )
...
Created by Github action
---------
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-14 00:03:59 +01:00
a48b69d1e5
i18n - docs translations ( #17930 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-13 17:33:48 +01:00
martmull and GitHub
0befb021d0
Add scripts to publish cli tools ( #17914 )
...
- moves workspace:* dependencies to dev-dependencies to avoid spreading
them in npm releases
- remove fix on rollup.external
- remove prepublishOnly and postpublish scripts
- set bundle packages to private
- add release-dump-version that update package.json version before
releasing to npm
- add release-verify-build that check no externalized twenty package
exists in `dist` before releasing to npm
- works with new release github action here ->
https://github.com/twentyhq/twenty-infra/pull/397
2026-02-13 15:43:32 +00:00
9aba2f62e1
i18n - docs translations ( #17692 )
...
Created by Github action
---------
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-04 00:22:17 +01:00
60b48339b9
i18n - docs translations ( #17689 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-03 20:14:58 +01:00
martmull and GitHub
b53dfa0533
Publish twenty packages ( #17676 )
...
- removes code editor in settings
- update readmes and docs
2026-02-03 17:16:54 +00:00
48b4127afa
i18n - docs translations ( #17634 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-02-02 15:40:19 +01:00
Thomas des Francs and GitHub
7f33286274
Update discord link ( #17627 )
2026-02-02 13:03:13 +00:00
1976ad58c4
i18n - docs translations ( #17599 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-01-31 14:22:36 +01:00
be8629d8f6
i18n - docs translations ( #17597 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-01-30 22:07:41 +01:00
a97ca14289
i18n - docs translations ( #17593 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-01-30 19:28:32 +01:00
6462ff6c5f
i18n - docs translations ( #17586 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-01-30 17:25:52 +01:00
martmull and GitHub
f46da3eefd
Update manifest structure ( #17547 )
...
Move all sync entities in an `entities` key. Rename functions to
logicFunctions
```json
{
application: {
...
},
entities: {
objects: [],
logicFunctions: [],
...
}
}
```
2026-01-30 16:26:45 +01:00
4ee9e23ad9
i18n - docs translations ( #17549 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-01-30 13:51:45 +01:00
c9a826aba1
i18n - docs translations ( #17542 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-01-29 12:12:27 +01:00
martmull and GitHub
3412992e99
2162 Add asset watcher in twenty-sdk dev mode ( #17513 )
...
- assets are pushed in .twenty/output
- assets are uploaded in FileFolder.Assets
- not handled yet by the sync-manifest endpoint
2026-01-29 09:08:44 +00:00
f7908de4c1
i18n - docs translations ( #17502 )
...
Created by Github action
---------
Co-authored-by: github-actions <github-actions@twenty.com >
2026-01-28 14:17:07 +01:00
9fbd05ead7
i18n - docs translations ( #17500 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-01-28 01:46:56 +01:00
Charles Bochet and GitHub
da6f1bbef3
Rename serverlessFunction to logicFunction ( #17494 )
...
## Summary
Rename "Serverless Function" to "Logic Function" across the codebase for
clearer naming.
### Environment Variable Changes
| Old | New |
|-----|-----|
| `SERVERLESS_TYPE` | `LOGIC_FUNCTION_TYPE` |
| `SERVERLESS_LAMBDA_REGION` | `LOGIC_FUNCTION_LAMBDA_REGION` |
| `SERVERLESS_LAMBDA_ROLE` | `LOGIC_FUNCTION_LAMBDA_ROLE` |
| `SERVERLESS_LAMBDA_SUBHOSTING_URL` |
`LOGIC_FUNCTION_LAMBDA_SUBHOSTING_URL` |
| `SERVERLESS_LAMBDA_ACCESS_KEY_ID` |
`LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID` |
| `SERVERLESS_LAMBDA_SECRET_ACCESS_KEY` |
`LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY` |
### Breaking Changes
- Environment variables must be updated in production deployments
- Database migration renames `serverlessFunction` → `logicFunction`
tables
2026-01-28 01:42:19 +01:00
59d123d2b1
i18n - docs translations ( #17499 )
...
Created by Github action
Co-authored-by: github-actions <github-actions@twenty.com >
2026-01-27 23:33:44 +01:00