diff --git a/packages/twenty-docs/l/de/developers/extend/apps/config/application.mdx b/packages/twenty-docs/l/de/developers/extend/apps/config/application.mdx index f551e61b76..491461105b 100644 --- a/packages/twenty-docs/l/de/developers/extend/apps/config/application.mdx +++ b/packages/twenty-docs/l/de/developers/extend/apps/config/application.mdx @@ -13,7 +13,6 @@ Jede App muss genau einen Aufruf von `defineApplication` haben. Dieser deklarier ```ts src/application-config.ts import { defineApplication } from 'twenty-sdk/define'; -import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role'; export default defineApplication({ universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d', @@ -27,7 +26,6 @@ export default defineApplication({ isSecret: false, }, }, - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, }); ``` @@ -35,12 +33,13 @@ Notizen: * `universalIdentifier`-Felder sind deterministische IDs, die Ihnen gehören. Erzeugen Sie sie einmal und halten Sie sie über Synchronisierungen hinweg stabil. * `applicationVariables` werden zu Umgebungsvariablen für Ihre Funktionen und Frontend-Komponenten (z. B. ist `DEFAULT_RECIPIENT_NAME` als `process.env.DEFAULT_RECIPIENT_NAME` verfügbar). -* `defaultRoleUniversalIdentifier` muss auf eine mit [`defineRole()`](/l/de/developers/extend/apps/config/roles) definierte Rolle verweisen. +* Die Standardrolle wird automatisch aus der Rollen-Datei erkannt, die mit [`defineApplicationRole()`](/l/de/developers/extend/apps/config/roles) markiert ist – Sie müssen sie nicht aus `defineApplication()` referenzieren. * Pre- und Post-Installationsfunktionen werden während des Manifest-Builds automatisch erkannt — Sie müssen sie in `defineApplication()` nicht referenzieren. +* Die explizite Übergabe von `defaultRoleUniversalIdentifier` wird für die Abwärtskompatibilität weiterhin unterstützt, ist jedoch zugunsten von `defineApplicationRole()` veraltet. ## Standard-Funktionsrolle -Der `defaultRoleUniversalIdentifier` steuert, worauf die Logikfunktionen und Frontend-Komponenten der App zugreifen können: +Die mit [`defineApplicationRole()`](/l/de/developers/extend/apps/config/roles) deklarierte Rolle steuert, auf was die Logikfunktionen und Front-End-Komponenten der App zugreifen können: * Das zur Laufzeit als `TWENTY_APP_ACCESS_TOKEN` injizierte Token wird aus dieser Rolle abgeleitet. * Der typisierte API-Client ist auf die dieser Rolle gewährten Berechtigungen beschränkt. diff --git a/packages/twenty-docs/l/de/developers/extend/apps/config/roles.mdx b/packages/twenty-docs/l/de/developers/extend/apps/config/roles.mdx index 3e16127c18..fff7e4b9d1 100644 --- a/packages/twenty-docs/l/de/developers/extend/apps/config/roles.mdx +++ b/packages/twenty-docs/l/de/developers/extend/apps/config/roles.mdx @@ -4,7 +4,7 @@ description: Legen Sie fest, welche Objekte und Felder die Logikfunktionen und F icon: shield-halved --- -Eine **Rolle** ist ein Berechtigungssatz: welche Objekte eine App lesen oder schreiben kann, welche Felder sie sehen kann und welche plattformbezogenen Funktionen sie nutzen kann. Alle Logikfunktionen und Frontend-Komponenten einer App erben die Berechtigungen der Rolle, die in [`defineApplication`](/l/de/developers/extend/apps/config/application) als `defaultRoleUniversalIdentifier` deklariert ist. +Eine **Rolle** ist ein Berechtigungssatz: welche Objekte eine App lesen oder schreiben kann, welche Felder sie sehen kann und welche plattformbezogenen Funktionen sie nutzen kann. Alle Logikfunktionen und Frontend-Komponenten einer App erben die Berechtigungen der Rolle, die mit `defineApplicationRole()` markiert ist (siehe [Die Standardfunktionsrolle](#the-default-function-role) unten). ```ts src/roles/restricted-company-role.ts import { @@ -51,15 +51,15 @@ export default defineRole({ ## Die Standard-Funktionsrolle -Wenn Sie eine neue App erzeugen, erstellt die CLI eine Standard-Rolldatei: +Wenn Sie eine neue App erzeugen, erstellt die CLI eine Datei für die Standardrolle, die mit `defineApplicationRole()` deklariert ist: ```ts src/roles/default-role.ts -import { defineRole, PermissionFlag } from 'twenty-sdk/define'; +import { defineApplicationRole, PermissionFlag } from 'twenty-sdk/define'; export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = 'b648f87b-1d26-4961-b974-0908fd991061'; -export default defineRole({ +export default defineApplicationRole({ universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, label: 'Default function role', description: 'Default role for function Twenty client', @@ -77,10 +77,13 @@ export default defineRole({ }); ``` -Der `universalIdentifier` dieser Rolle wird in `application-config.ts` als `defaultRoleUniversalIdentifier` referenziert: +`defineApplicationRole()` ist ein dünner Wrapper um `defineRole()`, der **die** Rolle kennzeichnet, die zum Installationszeitpunkt als Standardrolle Ihrer Anwendung verwendet wird. Die Validierung ist identisch zu `defineRole`, aber die Build-Pipeline verdrahtet deren `universalIdentifier` automatisch in das `defaultRoleUniversalIdentifier` des Anwendungsmanifests – sodass Sie es nicht selbst aus [`defineApplication`](/l/de/developers/extend/apps/config/application) referenzieren müssen. -* **`*.role.ts`** deklariert, was die Rolle darf. -* **`application-config.ts`** verweist auf diese Rolle, sodass Ihre Funktionen deren Berechtigungen erben. +Notizen: + +* Genau **eine** `defineApplicationRole(...)` ist pro App zulässig – der Manifest-Build schlägt fehl, wenn mehr als eine gefunden wird. +* Verwenden Sie `defineRole()` (nicht `defineApplicationRole()`) für alle **zusätzlichen** Rollen, die Ihre App mitliefert. +* Das explizite Setzen von `defaultRoleUniversalIdentifier` in `defineApplication()` wird für die Abwärtskompatibilität weiterhin unterstützt, ist aber zugunsten von `defineApplicationRole()` veraltet. ## Beste Praktiken diff --git a/packages/twenty-docs/l/de/developers/extend/apps/logic/connections.mdx b/packages/twenty-docs/l/de/developers/extend/apps/logic/connections.mdx index 7614d2f9c1..91df6c1356 100644 --- a/packages/twenty-docs/l/de/developers/extend/apps/logic/connections.mdx +++ b/packages/twenty-docs/l/de/developers/extend/apps/logic/connections.mdx @@ -52,7 +52,6 @@ export default defineApplication({ universalIdentifier: '...', displayName: 'Linear', description: 'Connect Linear to Twenty.', - defaultRoleUniversalIdentifier: '...', // OAuth client credentials live on the app registration (one OAuth app per // Twenty server, configured by the admin) — not per-workspace. Declare them // as serverVariables so the admin can fill them in once for all installs. diff --git a/packages/twenty-docs/l/de/developers/extend/apps/logic/logic-functions.mdx b/packages/twenty-docs/l/de/developers/extend/apps/logic/logic-functions.mdx index fc9fa4f65d..983d06b1fe 100644 --- a/packages/twenty-docs/l/de/developers/extend/apps/logic/logic-functions.mdx +++ b/packages/twenty-docs/l/de/developers/extend/apps/logic/logic-functions.mdx @@ -370,5 +370,5 @@ Hauptpunkte: * `TWENTY_API_URL` — Basis-URL der Twenty-API * `TWENTY_APP_ACCESS_TOKEN` — Kurzlebiger Schlüssel, der auf die Standard-Funktionsrolle Ihrer Anwendung begrenzt ist - Sie müssen diese **nicht** an die Clients übergeben — sie lesen automatisch aus `process.env`. Die Berechtigungen des API-Schlüssels werden durch die Rolle bestimmt, auf die in `defaultRoleUniversalIdentifier` in Ihrer `application-config.ts` verwiesen wird. + Sie müssen diese **nicht** an die Clients übergeben — sie lesen automatisch aus `process.env`. Die Berechtigungen des API-Schlüssels werden durch die Rolle bestimmt, die mit `defineApplicationRole()` deklariert wird (oder über `defaultRoleUniversalIdentifier` in `application-config.ts` referenziert wird). diff --git a/packages/twenty-docs/l/de/developers/extend/apps/operations/publishing.mdx b/packages/twenty-docs/l/de/developers/extend/apps/operations/publishing.mdx index d9210f942f..c90ff0760f 100644 --- a/packages/twenty-docs/l/de/developers/extend/apps/operations/publishing.mdx +++ b/packages/twenty-docs/l/de/developers/extend/apps/operations/publishing.mdx @@ -187,7 +187,6 @@ export default defineApplication({ universalIdentifier: '...', displayName: 'My App', description: 'A great app', - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, logoUrl: 'public/logo.png', screenshots: [ 'public/screenshot-1.png', diff --git a/packages/twenty-docs/l/pt/developers/extend/apps/config/application.mdx b/packages/twenty-docs/l/pt/developers/extend/apps/config/application.mdx index d9b578ba6d..c85f894594 100644 --- a/packages/twenty-docs/l/pt/developers/extend/apps/config/application.mdx +++ b/packages/twenty-docs/l/pt/developers/extend/apps/config/application.mdx @@ -13,7 +13,6 @@ Todo app deve ter exatamente uma chamada a `defineApplication`. Ela declara: ```ts src/application-config.ts import { defineApplication } from 'twenty-sdk/define'; -import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role'; export default defineApplication({ universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d', @@ -27,7 +26,6 @@ export default defineApplication({ isSecret: false, }, }, - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, }); ``` @@ -35,12 +33,13 @@ Notas: * Os campos `universalIdentifier` são IDs determinísticos que você controla. Gere-os uma vez e mantenha-os estáveis entre sincronizações. * `applicationVariables` tornam-se variáveis de ambiente para suas funções e componentes de front-end (por exemplo, `DEFAULT_RECIPIENT_NAME` fica disponível como `process.env.DEFAULT_RECIPIENT_NAME`). -* `defaultRoleUniversalIdentifier` deve fazer referência a um papel definido com [`defineRole()`](/l/pt/developers/extend/apps/config/roles). +* A função padrão é detectada automaticamente a partir do arquivo de função marcado com [`defineApplicationRole()`](/l/pt/developers/extend/apps/config/roles) — você não precisa referenciá-la em `defineApplication()`. * As funções de pré-instalação e pós-instalação são detectadas automaticamente durante a construção do manifesto — você não precisa referenciá-las em `defineApplication()`. +* Passar `defaultRoleUniversalIdentifier` explicitamente ainda é compatível para retrocompatibilidade, mas está obsoleto em favor de `defineApplicationRole()`. ## Papel de função padrão -O `defaultRoleUniversalIdentifier` controla o que as funções de lógica e os componentes de front-end do app podem acessar: +A função declarada com [`defineApplicationRole()`](/l/pt/developers/extend/apps/config/roles) controla ao que as funções de lógica e os componentes de interface do aplicativo podem acessar: * O token em tempo de execução injetado como `TWENTY_APP_ACCESS_TOKEN` é derivado desse papel. * O cliente de API tipado é restrito às permissões concedidas a esse papel. diff --git a/packages/twenty-docs/l/pt/developers/extend/apps/config/roles.mdx b/packages/twenty-docs/l/pt/developers/extend/apps/config/roles.mdx index 47343c20a8..a4cacdd321 100644 --- a/packages/twenty-docs/l/pt/developers/extend/apps/config/roles.mdx +++ b/packages/twenty-docs/l/pt/developers/extend/apps/config/roles.mdx @@ -4,7 +4,7 @@ description: Declare quais objetos e campos as funções de lógica e os compone icon: shield-halved --- -Um **papel** é um conjunto de permissões: quais objetos um app pode ler ou gravar, quais campos ele pode ver e quais recursos em nível de plataforma ele pode usar. Todas as funções de lógica e os componentes de front-end do app herdam as permissões do papel declarado como `defaultRoleUniversalIdentifier` em [`defineApplication`](/l/pt/developers/extend/apps/config/application). +Um **papel** é um conjunto de permissões: quais objetos um app pode ler ou gravar, quais campos ele pode ver e quais recursos em nível de plataforma ele pode usar. Todas as funções de lógica e os componentes de front-end de cada app herdam as permissões do papel marcado com `defineApplicationRole()` (consulte [O papel padrão da função](#the-default-function-role) abaixo). ```ts src/roles/restricted-company-role.ts import { @@ -51,15 +51,15 @@ export default defineRole({ ## Papel de função padrão -Ao criar um novo app com o scaffold, a CLI cria um arquivo de papel padrão: +Ao criar um novo app com o scaffold, a CLI cria um arquivo de papel padrão declarado com `defineApplicationRole()`: ```ts src/roles/default-role.ts -import { defineRole, PermissionFlag } from 'twenty-sdk/define'; +import { defineApplicationRole, PermissionFlag } from 'twenty-sdk/define'; export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = 'b648f87b-1d26-4961-b974-0908fd991061'; -export default defineRole({ +export default defineApplicationRole({ universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, label: 'Default function role', description: 'Default role for function Twenty client', @@ -77,10 +77,13 @@ export default defineRole({ }); ``` -O `universalIdentifier` desse papel é referenciado em `application-config.ts` como `defaultRoleUniversalIdentifier`: +`defineApplicationRole()` é um wrapper leve em torno de `defineRole()` que sinaliza **o** papel usado como padrão do seu app no momento da instalação. A validação é idêntica à de `defineRole`, mas o pipeline de build conecta automaticamente seu `universalIdentifier` ao `defaultRoleUniversalIdentifier` do manifesto do app — assim, você não precisa referenciá-lo em [`defineApplication`](/l/pt/developers/extend/apps/config/application). -* **`*.role.ts`** declara o que o papel pode fazer. -* **`application-config.ts`** aponta para esse papel para que suas funções herdem suas permissões. +Notas: + +* Exatamente **um** `defineApplicationRole(...)` é permitido por app — o build do manifesto falhará se encontrar mais de um. +* Use `defineRole()` (não `defineApplicationRole()`) para quaisquer papéis **adicionais** que o seu app forneça. +* Definir `defaultRoleUniversalIdentifier` explicitamente em `defineApplication()` ainda é compatível para retrocompatibilidade, mas foi preterido em favor de `defineApplicationRole()`. ## Melhores Práticas diff --git a/packages/twenty-docs/l/pt/developers/extend/apps/layout/overview.mdx b/packages/twenty-docs/l/pt/developers/extend/apps/layout/overview.mdx index 3d282ab4bf..97cf20cc77 100644 --- a/packages/twenty-docs/l/pt/developers/extend/apps/layout/overview.mdx +++ b/packages/twenty-docs/l/pt/developers/extend/apps/layout/overview.mdx @@ -26,7 +26,7 @@ A **camada de layout** de um app do Twenty é tudo o que o usuário vê: onde o ## Nesta seção - + `defineView` — configurações salvas de lista: colunas visíveis, filtros, grupos. @@ -39,18 +39,18 @@ A **camada de layout** de um app do Twenty é tudo o que o usuário vê: onde o `defineFrontComponent` — componentes React em sandbox que são renderizados dentro do Twenty. - `defineCommandMenuItem` — registra front components como entradas Cmd+K e ações rápidas. + `defineCommandMenuItem` — registra componentes de front-end como entradas no Cmd+K e ações rápidas. ## Onde o app aparece -| Superfície | O que controla | Entidade | -| ------------------------------------------- | --------------------------------------------------------------------------------------------- | ----------------------------------------- | -| **Barra lateral** | Uma entrada personalizada que aponta para uma visualização salva ou URL externa | `defineNavigationMenuItem` | -| **Lista de registros** | Uma configuração salva para uma lista de um objeto — colunas visíveis, ordem, filtros, grupos | `defineView` | -| **Página de detalhes do registro** | As abas e widgets em uma página de registro (do seu próprio objeto ou de um padrão) | `definePageLayout`, `definePageLayoutTab` | -| **Dentro de qualquer uma das opções acima** | Um widget React personalizado — botões, formulários, dashboards, integrações | `defineFrontComponent` | -| **Menu de comandos (Cmd+K)** | Uma ação rápida fixada ou comando oculto | `defineCommandMenuItem` | +| Superfície | O que controla | Entidade | +| ------------------------------------------- | ------------------------------------------------------------------------------------------ | ----------------------------------------- | +| **Barra lateral** | Uma entrada personalizada que aponta para uma visualização salva ou URL externa | `defineNavigationMenuItem` | +| **Lista de registros** | Uma configuração salva para um objeto — colunas visíveis, ordem, filtros, grupos | `defineView` | +| **Página de detalhes do registro** | As abas e widgets em uma página de registro (do seu próprio objeto ou de um objeto padrão) | `definePageLayout`, `definePageLayoutTab` | +| **Dentro de qualquer uma das opções acima** | Um widget React personalizado — botões, formulários, dashboards, integrações | `defineFrontComponent` | +| **Menu de comandos (Cmd+K)** | Uma ação rápida fixada ou comando oculto | `defineCommandMenuItem` | -Os front components são executados dentro de um Web Worker isolado usando Remote DOM — eles são renderizados *nativamente* na página (não dentro de um iframe), mas não podem acessar diretamente a página host ou o DOM. A comunicação com o Twenty acontece por meio de uma API de host com passagem de mensagens. +Os componentes de front-end são executados dentro de um Web Worker isolado usando Remote DOM — eles são renderizados *nativamente* na página (não dentro de um iframe), mas não podem acessar diretamente a página host ou o DOM. A comunicação com o Twenty acontece por meio de uma API de host com passagem de mensagens. diff --git a/packages/twenty-docs/l/pt/developers/extend/apps/logic/connections.mdx b/packages/twenty-docs/l/pt/developers/extend/apps/logic/connections.mdx index b0486a412c..5ae02f9afe 100644 --- a/packages/twenty-docs/l/pt/developers/extend/apps/logic/connections.mdx +++ b/packages/twenty-docs/l/pt/developers/extend/apps/logic/connections.mdx @@ -52,7 +52,6 @@ export default defineApplication({ universalIdentifier: '...', displayName: 'Linear', description: 'Connect Linear to Twenty.', - defaultRoleUniversalIdentifier: '...', // OAuth client credentials live on the app registration (one OAuth app per // Twenty server, configured by the admin) — not per-workspace. Declare them // as serverVariables so the admin can fill them in once for all installs. diff --git a/packages/twenty-docs/l/pt/developers/extend/apps/logic/logic-functions.mdx b/packages/twenty-docs/l/pt/developers/extend/apps/logic/logic-functions.mdx index fe4fa32b4f..3983c42a72 100644 --- a/packages/twenty-docs/l/pt/developers/extend/apps/logic/logic-functions.mdx +++ b/packages/twenty-docs/l/pt/developers/extend/apps/logic/logic-functions.mdx @@ -370,5 +370,5 @@ Pontos-chave: * `TWENTY_API_URL` — URL base da API do Twenty * `TWENTY_APP_ACCESS_TOKEN` — Chave de curta duração com escopo para o papel de função padrão do seu aplicativo - Você **não** precisa passá-las para os clientes — eles leem de `process.env` automaticamente. As permissões da chave de API são determinadas pelo papel referenciado em `defaultRoleUniversalIdentifier` no seu `application-config.ts`. + Você **não** precisa passá-las para os clientes — eles leem de `process.env` automaticamente. As permissões da chave de API são determinadas pelo papel declarado com `defineApplicationRole()` (ou referenciado via `defaultRoleUniversalIdentifier` em `application-config.ts`). diff --git a/packages/twenty-docs/l/pt/developers/extend/apps/operations/publishing.mdx b/packages/twenty-docs/l/pt/developers/extend/apps/operations/publishing.mdx index b81de2c683..2e90c3f36a 100644 --- a/packages/twenty-docs/l/pt/developers/extend/apps/operations/publishing.mdx +++ b/packages/twenty-docs/l/pt/developers/extend/apps/operations/publishing.mdx @@ -187,7 +187,6 @@ export default defineApplication({ universalIdentifier: '...', displayName: 'My App', description: 'A great app', - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, logoUrl: 'public/logo.png', screenshots: [ 'public/screenshot-1.png', diff --git a/packages/twenty-docs/l/ro/developers/extend/apps/config/application.mdx b/packages/twenty-docs/l/ro/developers/extend/apps/config/application.mdx index 9e754b31e8..6fc6b36983 100644 --- a/packages/twenty-docs/l/ro/developers/extend/apps/config/application.mdx +++ b/packages/twenty-docs/l/ro/developers/extend/apps/config/application.mdx @@ -13,7 +13,6 @@ Fiecare aplicație trebuie să aibă exact un apel `defineApplication`. Acesta d ```ts src/application-config.ts import { defineApplication } from 'twenty-sdk/define'; -import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role'; export default defineApplication({ universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d', @@ -27,7 +26,6 @@ export default defineApplication({ isSecret: false, }, }, - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, }); ``` @@ -35,12 +33,13 @@ Notițe: * Câmpurile `universalIdentifier` sunt ID-uri deterministe pe care le dețineți. Generați-le o singură dată și mențineți-le stabile între sincronizări. * `applicationVariables` devin variabile de mediu pentru funcțiile și componentele front-end (de exemplu, `DEFAULT_RECIPIENT_NAME` este disponibil ca `process.env.DEFAULT_RECIPIENT_NAME`). -* `defaultRoleUniversalIdentifier` trebuie să facă referire la un rol definit cu [`defineRole()`](/l/ro/developers/extend/apps/config/roles). +* Rolul implicit este detectat automat din fișierul de rol marcat cu [`defineApplicationRole()`](/l/ro/developers/extend/apps/config/roles) — nu este nevoie să îl referi din `defineApplication()`. * Funcțiile de pre-instalare și post-instalare sunt detectate automat în timpul construirii manifestului — nu trebuie să le referiți în `defineApplication()`. +* Transmiterea explicită a `defaultRoleUniversalIdentifier` este în continuare acceptată pentru compatibilitate retroactivă, dar este considerată învechită în favoarea `defineApplicationRole()`. ## Rol implicit pentru funcții -`defaultRoleUniversalIdentifier` controlează la ce pot avea acces funcțiile logice și componentele front-end ale aplicației: +Rolul declarat cu [`defineApplicationRole()`](/l/ro/developers/extend/apps/config/roles) controlează la ce pot avea acces funcțiile logice și componentele de interfață ale aplicației: * Tokenul de runtime injectat ca `TWENTY_APP_ACCESS_TOKEN` este derivat din acest rol. * Clientul API tipizat este restricționat la permisiunile acordate acelui rol. diff --git a/packages/twenty-docs/l/ro/developers/extend/apps/config/roles.mdx b/packages/twenty-docs/l/ro/developers/extend/apps/config/roles.mdx index 274e8561b5..a3dded3e70 100644 --- a/packages/twenty-docs/l/ro/developers/extend/apps/config/roles.mdx +++ b/packages/twenty-docs/l/ro/developers/extend/apps/config/roles.mdx @@ -1,10 +1,10 @@ --- title: Roluri și permisiuni -description: Declarați ce obiecte și câmpuri pot citi și scrie funcțiile de logică și componentele front ale aplicației dvs. +description: Declarați ce obiecte și câmpuri pot citi și scrie funcțiile de logică și componentele front-end ale aplicației dvs. icon: shield-halved --- -Un **rol** este un set de permisiuni: ce obiecte poate citi sau scrie o aplicație, ce câmpuri poate vedea și ce capabilități la nivel de platformă poate folosi. Toate funcțiile de logică și componentele front ale unei aplicații moștenesc permisiunile rolului declarat ca `defaultRoleUniversalIdentifier` în [`defineApplication`](/l/ro/developers/extend/apps/config/application). +Un **rol** este un set de permisiuni: ce obiecte poate citi sau scrie o aplicație, ce câmpuri poate vedea și ce capabilități la nivel de platformă poate folosi. Funcțiile de logică și componentele front-end ale fiecărei aplicații moștenesc permisiunile rolului marcat cu `defineApplicationRole()` (consultați [Rolul implicit pentru funcții](#the-default-function-role) mai jos). ```ts src/roles/restricted-company-role.ts import { @@ -51,15 +51,15 @@ export default defineRole({ ## Rolul implicit pentru funcții -Când generați o aplicație nouă, CLI creează un fișier de rol implicit: +Când generați o aplicație nouă, CLI creează un fișier de rol implicit declarat cu `defineApplicationRole()`: ```ts src/roles/default-role.ts -import { defineRole, PermissionFlag } from 'twenty-sdk/define'; +import { defineApplicationRole, PermissionFlag } from 'twenty-sdk/define'; export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = 'b648f87b-1d26-4961-b974-0908fd991061'; -export default defineRole({ +export default defineApplicationRole({ universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, label: 'Default function role', description: 'Default role for function Twenty client', @@ -77,10 +77,13 @@ export default defineRole({ }); ``` -`universalIdentifier` al acestui rol este referențiat din `application-config.ts` ca `defaultRoleUniversalIdentifier`: +`defineApplicationRole()` este un wrapper subțire în jurul `defineRole()` care marchează rolul utilizat ca implicit pentru aplicația dvs. în momentul instalării. Validarea este identică cu `defineRole`, dar pipeline-ul de build conectează automat `universalIdentifier` în `defaultRoleUniversalIdentifier` din manifestul aplicației — astfel încât nu trebuie să îl referiți manual din [`defineApplication`](/l/ro/developers/extend/apps/config/application). -* **`*.role.ts`** declară ce poate face rolul. -* **`application-config.ts`** indică acel rol, astfel încât funcțiile moștenesc permisiunile lui. +Notițe: + +* Exact **un** `defineApplicationRole(...)` este permis per aplicație — build-ul manifestului va eșua dacă găsește mai mult de unul. +* Utilizați `defineRole()` (nu `defineApplicationRole()`) pentru orice roluri **suplimentare** cu care este livrată aplicația. +* Setarea explicită a `defaultRoleUniversalIdentifier` în `defineApplication()` este în continuare acceptată pentru compatibilitate retroactivă, dar este considerată învechită în favoarea `defineApplicationRole()`. ## Cele mai bune practici diff --git a/packages/twenty-docs/l/ro/developers/extend/apps/getting-started/project-structure.mdx b/packages/twenty-docs/l/ro/developers/extend/apps/getting-started/project-structure.mdx index dea3c852a8..e0e74ef3d8 100644 --- a/packages/twenty-docs/l/ro/developers/extend/apps/getting-started/project-structure.mdx +++ b/packages/twenty-docs/l/ro/developers/extend/apps/getting-started/project-structure.mdx @@ -1,6 +1,6 @@ --- title: Structura proiectului -description: Ce se află într-o aplicație Twenty generată cu scaffold — fișiere, foldere și ce face fiecare. +description: Ce conține o aplicație Twenty generată — fișiere, foldere și ce face fiecare. icon: folder-tree --- @@ -32,7 +32,7 @@ my-twenty-app/ | `src/application-config.ts` | **Necesar.** Fișierul principal de configurare pentru aplicație. | | `src/default-role.ts` | Rol implicit care controlează la ce pot avea acces funcțiile logice. | | `src/constants/universal-identifiers.ts` | UUID-uri generate automat și metadate (nume afișat, descriere). | -| `src/__tests__/` | Teste de integrare (configurare + test exemplu). | +| `src/__tests__/` | Teste de integrare (configurare + test de exemplu). | | `public/` | Resurse statice (imagini, fonturi) servite împreună cu aplicația. | diff --git a/packages/twenty-docs/l/ro/developers/extend/apps/logic/connections.mdx b/packages/twenty-docs/l/ro/developers/extend/apps/logic/connections.mdx index c991122cf8..eb8effde1a 100644 --- a/packages/twenty-docs/l/ro/developers/extend/apps/logic/connections.mdx +++ b/packages/twenty-docs/l/ro/developers/extend/apps/logic/connections.mdx @@ -52,7 +52,6 @@ export default defineApplication({ universalIdentifier: '...', displayName: 'Linear', description: 'Connect Linear to Twenty.', - defaultRoleUniversalIdentifier: '...', // OAuth client credentials live on the app registration (one OAuth app per // Twenty server, configured by the admin) — not per-workspace. Declare them // as serverVariables so the admin can fill them in once for all installs. diff --git a/packages/twenty-docs/l/ro/developers/extend/apps/logic/logic-functions.mdx b/packages/twenty-docs/l/ro/developers/extend/apps/logic/logic-functions.mdx index 1ddb916f7b..00397fe4d3 100644 --- a/packages/twenty-docs/l/ro/developers/extend/apps/logic/logic-functions.mdx +++ b/packages/twenty-docs/l/ro/developers/extend/apps/logic/logic-functions.mdx @@ -371,5 +371,5 @@ Puncte cheie: * `TWENTY_API_URL` — URL-ul de bază al API-ului Twenty * `TWENTY_APP_ACCESS_TOKEN` — Cheie cu durată scurtă, limitată la rolul implicit de funcție al aplicației - Nu trebuie să le transmiteți clienților — aceștia citesc automat din `process.env`. Permisiunile cheii API sunt determinate de rolul referențiat în `defaultRoleUniversalIdentifier` din `application-config.ts`. + Nu trebuie să le transmiteți clienților — aceștia citesc automat din `process.env`. Permisiunile cheii API sunt determinate de rolul declarat cu `defineApplicationRole()` (sau referențiat prin `defaultRoleUniversalIdentifier` în `application-config.ts`). diff --git a/packages/twenty-docs/l/ro/developers/extend/apps/operations/publishing.mdx b/packages/twenty-docs/l/ro/developers/extend/apps/operations/publishing.mdx index dabed6978a..27268fb66f 100644 --- a/packages/twenty-docs/l/ro/developers/extend/apps/operations/publishing.mdx +++ b/packages/twenty-docs/l/ro/developers/extend/apps/operations/publishing.mdx @@ -187,7 +187,6 @@ export default defineApplication({ universalIdentifier: '...', displayName: 'My App', description: 'A great app', - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, logoUrl: 'public/logo.png', screenshots: [ 'public/screenshot-1.png', diff --git a/packages/twenty-docs/l/ru/developers/extend/apps/config/application.mdx b/packages/twenty-docs/l/ru/developers/extend/apps/config/application.mdx index 525da30b2a..3ed293cb54 100644 --- a/packages/twenty-docs/l/ru/developers/extend/apps/config/application.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/apps/config/application.mdx @@ -13,7 +13,6 @@ icon: rocket ```ts src/application-config.ts import { defineApplication } from 'twenty-sdk/define'; -import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role'; export default defineApplication({ universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d', @@ -27,7 +26,6 @@ export default defineApplication({ isSecret: false, }, }, - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, }); ``` @@ -35,12 +33,13 @@ export default defineApplication({ * Поля `universalIdentifier` — это детерминированные идентификаторы, которые принадлежат вам. Сгенерируйте их один раз и сохраняйте неизменными между синхронизациями. * `applicationVariables` становятся переменными окружения для ваших функций и фронтенд-компонентов (например, `DEFAULT_RECIPIENT_NAME` доступна как `process.env.DEFAULT_RECIPIENT_NAME`). -* `defaultRoleUniversalIdentifier` должен ссылаться на роль, определённую с помощью [`defineRole()`](/l/ru/developers/extend/apps/config/roles). +* Роль по умолчанию автоматически определяется из файла роли, помеченного с помощью [`defineApplicationRole()`](/l/ru/developers/extend/apps/config/roles) — вам не нужно ссылаться на него из `defineApplication()`. * Предустановочные и постустановочные функции обнаруживаются автоматически во время сборки манифеста — вам не нужно указывать их в `defineApplication()`. +* Явная передача `defaultRoleUniversalIdentifier` по-прежнему поддерживается для обратной совместимости, но считается устаревшей и вместо неё рекомендуется использовать `defineApplicationRole()`. ## Роль функции по умолчанию -`defaultRoleUniversalIdentifier` определяет, к чему могут получать доступ логические функции и фронтенд-компоненты приложения: +Роль, объявленная с помощью [`defineApplicationRole()`](/l/ru/developers/extend/apps/config/roles), определяет, к чему могут получать доступ логические функции и фронтенд‑компоненты приложения: * Токен времени выполнения, подставляемый как `TWENTY_APP_ACCESS_TOKEN`, формируется из этой роли. * Типизированный клиент API ограничен правами, предоставленными этой роли. diff --git a/packages/twenty-docs/l/ru/developers/extend/apps/config/roles.mdx b/packages/twenty-docs/l/ru/developers/extend/apps/config/roles.mdx index 180002d84e..cb469b7837 100644 --- a/packages/twenty-docs/l/ru/developers/extend/apps/config/roles.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/apps/config/roles.mdx @@ -1,10 +1,10 @@ --- title: Роли и разрешения -description: Укажите, к каким объектам и полям логические функции и фронтенд‑компоненты вашего приложения могут выполнять чтение и запись. +description: Укажите, к каким объектам и полям функции логики и фронтенд‑компоненты вашего приложения имеют доступ на чтение и запись. icon: shield-halved --- -**Роль** — это набор разрешений: какие объекты приложение может читать или изменять, какие поля оно может видеть и какие возможности платформенного уровня оно может использовать. Все логические функции и фронтенд‑компоненты каждого приложения наследуют разрешения роли, объявленной как `defaultRoleUniversalIdentifier` в [`defineApplication`](/l/ru/developers/extend/apps/config/application). +**Роль** — это набор разрешений: какие объекты приложение может читать или изменять, какие поля оно может видеть и какие возможности платформенного уровня оно может использовать. Функции логики и фронтенд‑компоненты каждого приложения наследуют разрешения роли, помеченной с помощью `defineApplicationRole()` (см. раздел [Роль функции по умолчанию](#the-default-function-role) ниже). ```ts src/roles/restricted-company-role.ts import { @@ -51,15 +51,15 @@ export default defineRole({ ## Роль функции по умолчанию -Когда вы генерируете новое приложение, CLI создаёт файл роли по умолчанию: +Когда вы создаёте новое приложение с помощью шаблона, CLI создаёт файл роли по умолчанию, объявленный с помощью `defineApplicationRole()`: ```ts src/roles/default-role.ts -import { defineRole, PermissionFlag } from 'twenty-sdk/define'; +import { defineApplicationRole, PermissionFlag } from 'twenty-sdk/define'; export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = 'b648f87b-1d26-4961-b974-0908fd991061'; -export default defineRole({ +export default defineApplicationRole({ universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, label: 'Default function role', description: 'Default role for function Twenty client', @@ -77,10 +77,13 @@ export default defineRole({ }); ``` -Значение `universalIdentifier` этой роли указывается в `application-config.ts` как `defaultRoleUniversalIdentifier`: +`defineApplicationRole()` — это тонкая обёртка вокруг `defineRole()`, которая помечает **ту** роль, которая используется как роль приложения по умолчанию во время установки. Проверка идентична `defineRole`, но конвейер сборки автоматически подключает его `universalIdentifier` к полю `defaultRoleUniversalIdentifier` манифеста приложения — поэтому вам не нужно ссылаться на него из [`defineApplication`](/l/ru/developers/extend/apps/config/application) самостоятельно. -* **`*.role.ts`** определяет, что может делать роль. -* **`application-config.ts`** указывает на эту роль, чтобы ваши функции наследовали её права. +Заметки: + +* Допускается ровно **один** вызов `defineApplicationRole(...)` на приложение — сборка манифеста завершится с ошибкой, если будет найдено более одного. +* Используйте `defineRole()` (а не `defineApplicationRole()`) для любых **дополнительных** ролей, которые ставятся вместе с вашим приложением. +* Явная установка `defaultRoleUniversalIdentifier` в `defineApplication()` всё ещё поддерживается для обратной совместимости, но считается устаревшей по сравнению с `defineApplicationRole()`. ## Лучшие практики diff --git a/packages/twenty-docs/l/ru/developers/extend/apps/getting-started/quick-start.mdx b/packages/twenty-docs/l/ru/developers/extend/apps/getting-started/quick-start.mdx index b4e2dbb1b4..16977e7edb 100644 --- a/packages/twenty-docs/l/ru/developers/extend/apps/getting-started/quick-start.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/apps/getting-started/quick-start.mdx @@ -144,7 +144,7 @@ yarn twenty dev --once npx create-twenty-app@latest my-twenty-app --example postcard ``` -Примеры берутся из каталога [twenty-apps/examples](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/examples) на GitHub. Вы также можете сгенерировать каркас отдельных сущностей в существующем проекте с помощью `yarn twenty add` — см. [Scaffolding](/l/ru/developers/extend/apps/getting-started/scaffolding). +Примеры берутся из каталога [twenty-apps/examples](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/examples) на GitHub. Вы также можете сгенерировать каркас отдельных сущностей в существующем проекте с помощью `yarn twenty add` — см. [Создание каркаса](/l/ru/developers/extend/apps/getting-started/scaffolding). --- @@ -161,24 +161,24 @@ npx create-twenty-app@latest my-twenty-app --example postcard | **Представления и навигация** | Предварительно настроенные представления списков и элементы бокового меню | | **Макеты страниц** | Пользовательские страницы сведений о записи с вкладками и виджетами | -Полная справка: [Concepts](/l/ru/developers/extend/apps/getting-started/concepts). +Полная справка: [Концепции](/l/ru/developers/extend/apps/getting-started/concepts). ## Следующие шаги - Идентификация приложения, роль по умолчанию, хуки установки, публичные ассеты. + Идентификация приложения, роль по умолчанию, хуки установки, публичные ресурсы. Объекты, поля и двунаправленные связи. - Логические функции, скиллы, агенты и OAuth-подключения. + Логические функции, навыки, агенты и OAuth-подключения. - Представления, навигация, макеты страниц, фронтовые компоненты. + Представления, навигация, макеты страниц, фронтенд-компоненты. - CLI, тестирование, ремоуты, CI и публикация вашего приложения. + CLI, тестирование, удалённые серверы, CI и публикация вашего приложения. diff --git a/packages/twenty-docs/l/ru/developers/extend/apps/layout/command-menu-items.mdx b/packages/twenty-docs/l/ru/developers/extend/apps/layout/command-menu-items.mdx index e53b38e65a..bed4aa7ea6 100644 --- a/packages/twenty-docs/l/ru/developers/extend/apps/layout/command-menu-items.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/apps/layout/command-menu-items.mdx @@ -1,10 +1,10 @@ --- title: Элементы меню команд -description: Выводите front-компоненты как быстрые действия и элементы командного меню (Cmd+K) с помощью `defineCommandMenuItem`. +description: Отображайте фронтенд-компоненты как быстрые действия и элементы командного меню (Cmd+K) с помощью `defineCommandMenuItem`. icon: terminal --- -**Элемент командного меню** — это мост между пользователем и [front-компонентом](/l/ru/developers/extend/apps/layout/front-components). Он регистрирует компонент в командном меню Twenty (Cmd+K) и, при необходимости, как закреплённую кнопку быстрого действия в правом верхнем углу страницы. +**Элемент командного меню** — это мост между пользователем и [фронтенд-компонентом](/l/ru/developers/extend/apps/layout/front-components). Он регистрирует компонент в командном меню Twenty (Cmd+K) и, при необходимости, как закреплённую кнопку быстрого действия в правом верхнем углу страницы. ```ts src/command-menu-items/open-dashboard.command-menu-item.ts import { defineCommandMenuItem } from 'twenty-sdk/define'; @@ -36,9 +36,9 @@ export default defineCommandMenuItem({ ## Команды без интерфейса -Элемент командного меню в паре с [front-компонентом без интерфейса](/l/ru/developers/extend/apps/layout/front-components#headless-vs-non-headless) — идиоматичный способ предоставить действие в один клик: выполнить код, перейти по навигации или подтвердить и выполнить действие. Страница Front Components описывает [SDK Command components](/l/ru/developers/extend/apps/layout/front-components#sdk-command-components) (`Command`, `CommandLink`, `CommandModal`, `CommandOpenSidePanelPage`), которые реализуют шаблон «действие и размонтирование». +Элемент командного меню в паре с [фронтенд-компонентом без интерфейса](/l/ru/developers/extend/apps/layout/front-components#headless-vs-non-headless) — идиоматичный способ предоставить действие в один клик: выполнить код, перейти или подтвердить и выполнить. Страница Front Components описывает [SDK Command components](/l/ru/developers/extend/apps/layout/front-components#sdk-command-components) (`Command`, `CommandLink`, `CommandModal`, `CommandOpenSidePanelPage`), которые реализуют шаблон «действие и размонтирование». -Типичный поток: +Типичный сценарий: ```tsx src/front-components/run-action.tsx import { defineFrontComponent } from 'twenty-sdk/define'; diff --git a/packages/twenty-docs/l/ru/developers/extend/apps/layout/overview.mdx b/packages/twenty-docs/l/ru/developers/extend/apps/layout/overview.mdx index 7566b4f1ac..1bfccb8dab 100644 --- a/packages/twenty-docs/l/ru/developers/extend/apps/layout/overview.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/apps/layout/overview.mdx @@ -26,10 +26,10 @@ icon: table-columns ## В этом разделе - + `defineView` — сохранённые конфигурации списков: видимые столбцы, фильтры, группы. - + `defineNavigationMenuItem` — элементы боковой панели, ссылающиеся на представления или внешние URL. diff --git a/packages/twenty-docs/l/ru/developers/extend/apps/logic/connections.mdx b/packages/twenty-docs/l/ru/developers/extend/apps/logic/connections.mdx index 728adb1cf6..0178f4ba69 100644 --- a/packages/twenty-docs/l/ru/developers/extend/apps/logic/connections.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/apps/logic/connections.mdx @@ -52,7 +52,6 @@ export default defineApplication({ universalIdentifier: '...', displayName: 'Linear', description: 'Connect Linear to Twenty.', - defaultRoleUniversalIdentifier: '...', // OAuth client credentials live on the app registration (one OAuth app per // Twenty server, configured by the admin) — not per-workspace. Declare them // as serverVariables so the admin can fill them in once for all installs. diff --git a/packages/twenty-docs/l/ru/developers/extend/apps/logic/logic-functions.mdx b/packages/twenty-docs/l/ru/developers/extend/apps/logic/logic-functions.mdx index 4a163cd8f7..fd09e35faa 100644 --- a/packages/twenty-docs/l/ru/developers/extend/apps/logic/logic-functions.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/apps/logic/logic-functions.mdx @@ -370,5 +370,5 @@ console.log(uploadedFile); * `TWENTY_API_URL` — базовый URL API Twenty * `TWENTY_APP_ACCESS_TOKEN` — краткоживущий ключ, ограниченный ролью функции по умолчанию вашего приложения - Вам не нужно передавать их клиентам — они автоматически читаются из `process.env`. Права ключа API определяются ролью, указанной в `defaultRoleUniversalIdentifier` в вашем `application-config.ts`. + Вам не нужно передавать их клиентам — они автоматически читаются из `process.env`. Права ключа API определяются ролью, объявленной с помощью `defineApplicationRole()` (или указанной через `defaultRoleUniversalIdentifier` в `application-config.ts`). diff --git a/packages/twenty-docs/l/ru/developers/extend/apps/operations/publishing.mdx b/packages/twenty-docs/l/ru/developers/extend/apps/operations/publishing.mdx index 8b5006dbb1..3d96fd1c01 100644 --- a/packages/twenty-docs/l/ru/developers/extend/apps/operations/publishing.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/apps/operations/publishing.mdx @@ -187,7 +187,6 @@ export default defineApplication({ universalIdentifier: '...', displayName: 'My App', description: 'A great app', - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, logoUrl: 'public/logo.png', screenshots: [ 'public/screenshot-1.png', diff --git a/packages/twenty-docs/l/ru/developers/extend/apps/operations/testing.mdx b/packages/twenty-docs/l/ru/developers/extend/apps/operations/testing.mdx index 871efbf2de..81acecd3aa 100644 --- a/packages/twenty-docs/l/ru/developers/extend/apps/operations/testing.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/apps/operations/testing.mdx @@ -60,7 +60,7 @@ export default defineFrontComponent({ **Логические функции** выполняются в среде Node.js. Встроенные модули Node (`fs`, `path`, `crypto`, `http` и т. д.) доступны и не требуют установки. -**Компоненты фронтенда** выполняются в Web Worker. Встроенные модули Node недоступны — доступны только браузерные API и пакеты npm, работающие в браузерной среде. +**Компоненты фронтенда** выполняются в Web Worker. Встроенные модули Node **недоступны** — доступны только браузерные API и пакеты npm, работающие в браузерной среде. В обеих средах доступны как предварительно предоставленные модули `twenty-client-sdk/core` и `twenty-client-sdk/metadata` — они не включаются в бандл, а подставляются сервером во время выполнения. diff --git a/packages/twenty-docs/l/tr/developers/extend/apps/config/application.mdx b/packages/twenty-docs/l/tr/developers/extend/apps/config/application.mdx index adfc51da12..7e0eca8496 100644 --- a/packages/twenty-docs/l/tr/developers/extend/apps/config/application.mdx +++ b/packages/twenty-docs/l/tr/developers/extend/apps/config/application.mdx @@ -13,7 +13,6 @@ Her uygulamanın, tam olarak bir adet `defineApplication` çağrısı olması ge ```ts src/application-config.ts import { defineApplication } from 'twenty-sdk/define'; -import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role'; export default defineApplication({ universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d', @@ -27,7 +26,6 @@ export default defineApplication({ isSecret: false, }, }, - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, }); ``` @@ -35,12 +33,13 @@ Notlar: * `universalIdentifier` alanları, size ait deterministik kimliklerdir. Bunları bir kez oluşturun ve senkronizasyonlar boyunca kararlı tutun. * `applicationVariables`, fonksiyonlarınız ve ön uç bileşenleriniz için ortam değişkenlerine dönüşür (örn. `DEFAULT_RECIPIENT_NAME`, `process.env.DEFAULT_RECIPIENT_NAME` olarak kullanılabilir). -* `defaultRoleUniversalIdentifier`, [`defineRole()`](/l/tr/developers/extend/apps/config/roles) ile tanımlanmış bir role referans vermelidir. +* Varsayılan rol, [`defineApplicationRole()`](/l/tr/developers/extend/apps/config/roles) ile işaretlenmiş rol dosyasından otomatik olarak algılanır — onu `defineApplication()` içinden belirtmenize gerek yoktur. * Kurulum öncesi ve kurulum sonrası fonksiyonlar manifest derlemesi sırasında otomatik olarak algılanır — bunlara `defineApplication()` içinde referans vermeniz gerekmez. +* Geriye dönük uyumluluk için `defaultRoleUniversalIdentifier` değerini açıkça geçmek hâlâ desteklenmektedir, ancak `defineApplicationRole()` lehine kullanımdan kaldırılmıştır. ## Varsayılan fonksiyon rolü -`defaultRoleUniversalIdentifier`, uygulamanın mantık fonksiyonlarının ve ön uç bileşenlerinin nelere erişebileceğini kontrol eder: +[`defineApplicationRole()`](/l/tr/developers/extend/apps/config/roles) ile bildirilen rol, uygulamanın logic fonksiyonlarının ve front bileşenlerinin neye erişebileceğini kontrol eder: * `TWENTY_APP_ACCESS_TOKEN` olarak enjekte edilen çalışma zamanı belirteci bu rolden türetilir. * Türlendirilmiş API istemcisi, o role tanınan izinlerle sınırlandırılır. diff --git a/packages/twenty-docs/l/tr/developers/extend/apps/config/roles.mdx b/packages/twenty-docs/l/tr/developers/extend/apps/config/roles.mdx index bcab2c792f..17654671a6 100644 --- a/packages/twenty-docs/l/tr/developers/extend/apps/config/roles.mdx +++ b/packages/twenty-docs/l/tr/developers/extend/apps/config/roles.mdx @@ -4,7 +4,7 @@ description: Uygulamanızın mantık fonksiyonlarının ve ön bileşenlerinin h icon: shield-halved --- -Bir **rol**, bir izin kümesidir: bir uygulamanın hangi nesneleri okuyup yazabileceğini, hangi alanları görebileceğini ve hangi platform düzeyindeki yetenekleri kullanabileceğini tanımlar. Her uygulamanın mantık fonksiyonları ve ön bileşenleri, [`defineApplication`](/l/tr/developers/extend/apps/config/application) içinde `defaultRoleUniversalIdentifier` olarak beyan edilen rolün izinlerini devralır. +Bir **rol**, bir izin kümesidir: bir uygulamanın hangi nesneleri okuyup yazabileceğini, hangi alanları görebileceğini ve hangi platform düzeyindeki yetenekleri kullanabileceğini tanımlar. Her uygulamanın mantık fonksiyonları ve ön bileşenleri, `defineApplicationRole()` ile işaretlenmiş rolün izinlerini devralır (aşağıda [Varsayılan fonksiyon rolü](#the-default-function-role) bölümüne bakın). ```ts src/roles/restricted-company-role.ts import { @@ -51,15 +51,15 @@ export default defineRole({ ## Varsayılan fonksiyon rolü -Yeni bir uygulama iskeleti oluşturduğunuzda, CLI varsayılan bir rol dosyası oluşturur: +Yeni bir uygulama iskeleti oluşturduğunuzda, CLI `defineApplicationRole()` ile bildirilen varsayılan bir rol dosyası oluşturur: ```ts src/roles/default-role.ts -import { defineRole, PermissionFlag } from 'twenty-sdk/define'; +import { defineApplicationRole, PermissionFlag } from 'twenty-sdk/define'; export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = 'b648f87b-1d26-4961-b974-0908fd991061'; -export default defineRole({ +export default defineApplicationRole({ universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, label: 'Default function role', description: 'Default role for function Twenty client', @@ -77,10 +77,13 @@ export default defineRole({ }); ``` -Bu rolün `universalIdentifier` değeri, `application-config.ts` içinde `defaultRoleUniversalIdentifier` olarak referans verilir: +`defineApplicationRole()`, yükleme sırasında uygulamanızın varsayılanı olarak kullanılan **rolü** işaretleyen, `defineRole()` etrafında ince bir sarmalayıcıdır. Doğrulama, `defineRole` ile aynıdır, ancak derleme hattı `universalIdentifier` değerini uygulama manifestindeki `defaultRoleUniversalIdentifier` alanına otomatik olarak bağlar — bu nedenle onu [`defineApplication`](/l/tr/developers/extend/apps/config/application) içinden kendiniz referans göstermeniz gerekmez. -* **`*.role.ts`** rolün neler yapabileceğini beyan eder. -* **`application-config.ts`** bu role işaret eder, böylece fonksiyonlarınız onun izinlerini devralır. +Notlar: + +* Uygulama başına tam olarak **bir** `defineApplicationRole(...)`a izin verilir — birden fazla bulursa manifest derlemesi başarısız olur. +* Uygulamanızın birlikte sunduğu **ek** roller için `defineApplicationRole()` değil, `defineRole()` kullanın. +* `defineApplication()` üzerinde `defaultRoleUniversalIdentifier` değerini açıkça ayarlamak geriye dönük uyumluluk için hâlâ desteklenmektedir, ancak `defineApplicationRole()` lehine kullanımdan kaldırılmıştır. ## En İyi Uygulamalar diff --git a/packages/twenty-docs/l/tr/developers/extend/apps/data/objects.mdx b/packages/twenty-docs/l/tr/developers/extend/apps/data/objects.mdx index 3a9b6ee670..c251facf72 100644 --- a/packages/twenty-docs/l/tr/developers/extend/apps/data/objects.mdx +++ b/packages/twenty-docs/l/tr/developers/extend/apps/data/objects.mdx @@ -83,11 +83,11 @@ export default defineObject({ * `yarn twenty add object` kullanarak, adlandırma, alanlar ve ilişkiler konusunda sizi yönlendirerek yeni nesneler oluşturabilirsiniz. [Mimari → Varlık iskeleti oluşturma](/l/tr/developers/extend/apps/getting-started/scaffolding) bölümüne bakın. -**Temel alanlar otomatik olarak eklenir.** Özel bir nesne tanımladığınızda Twenty, sizin için `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` ve `deletedAt` gibi standart alanlar oluşturur. Bunları `fields` dizinizde bildirmenize gerek yok — yalnızca özel alanlarınızı. Aynı ada sahip bir alan bildirerek varsayılan bir alanı geçersiz kılabilirsiniz, ancak bu nadiren iyi bir fikirdir. +**Temel alanlar otomatik olarak eklenir.** Özel bir nesne tanımladığınızda Twenty, sizin için `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` ve `deletedAt` gibi standart alanlar oluşturur. Bunları `fields` dizinizde bildirmenize gerek yok — yalnızca özel alanlarınızı ekleyin. Aynı ada sahip bir alan bildirerek varsayılan bir alanı geçersiz kılabilirsiniz, ancak bu nadiren iyi bir fikirdir. ## Sırada ne var * **Bu nesneyi diğerlerine bağlayın** — çift yönlü ilişki modeli için [İlişkiler](/l/tr/developers/extend/apps/data/relations) bölümüne bakın. -* **Diğer uygulamalardaki nesnelere alanlar ekleyin** — `defineField()` için [Nesimleri Genişletme](/l/tr/developers/extend/apps/data/extending-objects) bölümüne bakın. +* **Diğer uygulamalardaki nesnelere alanlar ekleyin** — `defineField()` için [Nesneleri Genişletme](/l/tr/developers/extend/apps/data/extending-objects) bölümüne bakın. * **Bu nesneyi arayüzde görüntüleyin** — kenar çubuğuna yerleştirmek için [Görünümler](/l/tr/developers/extend/apps/layout/views) ve [Gezinme Menüsü Öğeleri](/l/tr/developers/extend/apps/layout/navigation-menu-items) bölümlerine bakın. diff --git a/packages/twenty-docs/l/tr/developers/extend/apps/getting-started/quick-start.mdx b/packages/twenty-docs/l/tr/developers/extend/apps/getting-started/quick-start.mdx index 0826d700b0..831430f734 100644 --- a/packages/twenty-docs/l/tr/developers/extend/apps/getting-started/quick-start.mdx +++ b/packages/twenty-docs/l/tr/developers/extend/apps/getting-started/quick-start.mdx @@ -101,7 +101,7 @@ Daha ayrıntılı çıktı (derleme günlükleri, eşitleme istekleri, hata izle Your Apps listesinde My twenty app gösteriliyor -**My twenty app**'e tıklayarak **application registration**'ı görüntüleyin — uygulamanızı tanımlayan (ad, tanımlayıcı, OAuth kimlik bilgileri, kaynak) sunucu düzeyinde bir kayıttır. Tek bir kayıt, aynı sunucudaki birden çok çalışma alanına kurulabilir. +**My twenty app**'e tıklayarak **uygulama kaydını** görüntüleyin — uygulamanızı tanımlayan (ad, tanımlayıcı, OAuth kimlik bilgileri, kaynak) sunucu düzeyinde bir kayıttır. Tek bir kayıt, aynı sunucudaki birden çok çalışma alanına kurulabilir.
Uygulama kaydı ayrıntıları @@ -131,7 +131,7 @@ yarn twenty dev --once Her iki mod da geliştirme modunda bir sunucuya ve kimliği doğrulanmış bir uzak uca ihtiyaç duyar. -Geliştirme modu yalnızca geliştirme ortamında (`NODE_ENV=development`) çalışan Twenty örneklerinde kullanılabilir. Üretim örnekleri, geliştirme eşitleme isteklerini reddeder — üretim sunucularına dağıtmak için `yarn twenty deploy` kullanın. Bkz. [Publishing](/l/tr/developers/extend/apps/operations/publishing). +Geliştirme modu yalnızca geliştirme ortamında (`NODE_ENV=development`) çalışan Twenty örneklerinde kullanılabilir. Üretim örnekleri, geliştirme eşitleme isteklerini reddeder — üretim sunucularına dağıtmak için `yarn twenty deploy` kullanın. Bkz. [Yayımlama](/l/tr/developers/extend/apps/operations/publishing). --- @@ -144,7 +144,7 @@ Daha kapsamlı bir projeyle başlamak için `--example` kullanın (özel nesnele npx create-twenty-app@latest my-twenty-app --example postcard ``` -Örnekler [twenty-apps/examples](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/examples) dizininde yer alır. Ayrıca `yarn twenty add` ile mevcut bir projeye tek tek varlıklar için iskelet oluşturabilirsiniz — bkz. [Scaffolding](/l/tr/developers/extend/apps/getting-started/scaffolding). +Örnekler [twenty-apps/examples](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/examples) dizininde yer alır. Ayrıca `yarn twenty add` ile mevcut bir projeye tek tek varlıklar için iskelet oluşturabilirsiniz — bkz. [İskelet Oluşturma](/l/tr/developers/extend/apps/getting-started/scaffolding). --- @@ -154,14 +154,14 @@ Uygulamalar **varlıklardan** oluşur — her biri tek bir `export default` içe | Varlık | Ne yapar | | ------------------------- | --------------------------------------------------------------------------------------------------------- | -| **Nesneler ve Alanlar** | Özel veri modelleri (Post Card, Invoice vb.) tipli alanlarla | +| **Nesneler ve Alanlar** | Özel veri modelleri (Post Card, Invoice vb.) tiplendirilmiş alanlarla | | **Mantıksal işlevler** | HTTP rotaları, cron zamanlamaları veya veritabanı olayları tarafından tetiklenen sunucu tarafı TypeScript | | **Ön uç bileşenleri** | Twenty'nin arayüzünde görüntülenen React bileşenleri (yan panel, widget'lar, komut menüsü) | | **Beceriler ve Aracılar** | Yapay zeka yetenekleri — yeniden kullanılabilir yönergeler ve otonom asistanlar | | **Görünümler ve Gezinme** | Önceden yapılandırılmış liste görünümleri ve kenar çubuğu menü öğeleri | | **Sayfa düzenleri** | Sekmeler ve widget'lar içeren özel kayıt ayrıntı sayfaları | -Tam başvuru: [Concepts](/l/tr/developers/extend/apps/getting-started/concepts). +Tam başvuru: [Kavramlar](/l/tr/developers/extend/apps/getting-started/concepts). ## Sonraki adımlar @@ -173,12 +173,12 @@ Tam başvuru: [Concepts](/l/tr/developers/extend/apps/getting-started/concepts). Nesneler, alanlar ve çift yönlü ilişkiler. - Mantık fonksiyonları, beceriler, aracılar ve OAuth bağlantıları. + Mantık işlevleri, beceriler, aracılar ve OAuth bağlantıları. - Görünümler, gezinme, sayfa düzenleri, ön bileşenler. + Görünümler, gezinme, sayfa düzenleri, ön uç bileşenleri. - CLI, test, uzaklar, CI ve uygulamanızı yayımlama. + CLI, test, uzak uçlar, CI ve uygulamanızı yayımlama. diff --git a/packages/twenty-docs/l/tr/developers/extend/apps/layout/overview.mdx b/packages/twenty-docs/l/tr/developers/extend/apps/layout/overview.mdx index baf37d2ad4..e8277af891 100644 --- a/packages/twenty-docs/l/tr/developers/extend/apps/layout/overview.mdx +++ b/packages/twenty-docs/l/tr/developers/extend/apps/layout/overview.mdx @@ -1,6 +1,6 @@ --- title: Genel Bakış -description: Uygulamanızı Twenty'nin UI'sinin içine yerleştirin — kenar çubuğu girişleri, kaydedilmiş görünümler, kayıt sayfası sekmeleri ve yalıtılmış React bileşenleri. +description: Uygulamanızı Twenty'nin kullanıcı arayüzüne yerleştirin — kenar çubuğu öğeleri, kaydedilmiş görünümler, kayıt sayfası sekmeleri ve yalıtılmış React bileşenleri. icon: table-columns --- @@ -26,7 +26,7 @@ Bir Twenty uygulamasının **düzen katmanı**, kullanıcının gördüğü her ## Bu bölümde - + `defineView` — kaydedilmiş liste yapılandırmaları: görünür sütunlar, filtreler, gruplar. @@ -39,13 +39,13 @@ Bir Twenty uygulamasının **düzen katmanı**, kullanıcının gördüğü her `defineFrontComponent` — Twenty içinde oluşturulan yalıtılmış React bileşenleri. - `defineCommandMenuItem` — ön bileşenleri Cmd+K girişleri ve hızlı eylemler olarak kaydedin. + `defineCommandMenuItem` — ön uç bileşenlerini Cmd+K girişleri ve hızlı eylemler olarak kaydedin. ## Uygulamanın göründüğü yerler -| Yüzey | Neyi kontrol eder | Varlık | +| Görünüm alanı | Neyi kontrol eder | Varlık | | ------------------------------------------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------- | | **Kenar çubuğu** | Kaydedilmiş bir görünüme veya harici bir URL'ye bağlanan özel bir giriş | `defineNavigationMenuItem` | | **Kayıt listesi** | Bir nesne için kaydedilmiş yapılandırma — görünür sütunlar, sıralama, filtreler, gruplar | `defineView` | @@ -53,4 +53,4 @@ Bir Twenty uygulamasının **düzen katmanı**, kullanıcının gördüğü her | **Yukarıdakilerin herhangi birinin içinde** | Özel bir React bileşeni — butonlar, formlar, panolar, entegrasyonlar | `defineFrontComponent` | | **Komut menüsü (Cmd+K)** | Sabitlenmiş bir hızlı eylem veya gizli komut | `defineCommandMenuItem` | -Ön bileşenler, Remote DOM kullanan yalıtılmış bir Web Worker içinde çalışır — sayfada *yerel* olarak oluşturulurlar (bir iframe içinde değil), ancak ana sayfaya veya DOM'a doğrudan erişemezler. Twenty ile iletişim, mesaj iletimi yapan bir ana makine API'si aracılığıyla gerçekleşir. +Ön uç bileşenleri, Remote DOM kullanan yalıtılmış bir Web Worker içinde çalışır — sayfada *yerel* olarak oluşturulurlar (bir iframe içinde değil), ancak ana makine sayfasına veya DOM'a doğrudan erişemezler. Twenty ile iletişim, mesaj iletimi yapan bir ana makine API'si aracılığıyla gerçekleşir. diff --git a/packages/twenty-docs/l/tr/developers/extend/apps/logic/connections.mdx b/packages/twenty-docs/l/tr/developers/extend/apps/logic/connections.mdx index 6e5d33e9ad..5d36c5bd7a 100644 --- a/packages/twenty-docs/l/tr/developers/extend/apps/logic/connections.mdx +++ b/packages/twenty-docs/l/tr/developers/extend/apps/logic/connections.mdx @@ -52,7 +52,6 @@ export default defineApplication({ universalIdentifier: '...', displayName: 'Linear', description: 'Connect Linear to Twenty.', - defaultRoleUniversalIdentifier: '...', // OAuth client credentials live on the app registration (one OAuth app per // Twenty server, configured by the admin) — not per-workspace. Declare them // as serverVariables so the admin can fill them in once for all installs. diff --git a/packages/twenty-docs/l/tr/developers/extend/apps/logic/logic-functions.mdx b/packages/twenty-docs/l/tr/developers/extend/apps/logic/logic-functions.mdx index dc95236fc2..370ea7ab1a 100644 --- a/packages/twenty-docs/l/tr/developers/extend/apps/logic/logic-functions.mdx +++ b/packages/twenty-docs/l/tr/developers/extend/apps/logic/logic-functions.mdx @@ -7,9 +7,9 @@ icon: bolt Mantık işlevleri, Twenty platformunda çalışan sunucu tarafı TypeScript işlevleridir. HTTP istekleri, cron zamanlamaları veya veritabanı olayları tarafından tetiklenebilirler — ve ayrıca yapay zekâ ajanları için araçlar olarak sunulabilirler. - + -Her fonksiyon dosyası, bir işleyici ve isteğe bağlı tetikleyiciler içeren bir yapılandırmayı dışa aktarmak için `defineLogicFunction()` kullanır. +Her işlev dosyası, bir işleyici ve isteğe bağlı tetikleyiciler içeren bir yapılandırmayı dışa aktarmak için `defineLogicFunction()` kullanır. ```ts src/logic-functions/createPostCard.logic-function.ts import { defineLogicFunction } from 'twenty-sdk/define'; @@ -51,14 +51,14 @@ export default defineLogicFunction({ ``` Kullanılabilir tetikleyici türleri: -* **httpRoute**: Fonksiyonunuzu bir HTTP yolu ve yöntemiyle **`/s/` uç noktasının altında** kullanıma sunar: +* **httpRoute**: İşlevinizi bir HTTP yolu ve yöntemiyle **`/s/` uç noktasının altında** kullanıma sunar: > örn. `path: '/post-card/create'` `https://your-twenty-server.com/s/post-card/create` adresinden çağrılabilir -* **cron**: Bir CRON ifadesi kullanarak fonksiyonunuzu bir zamanlamayla çalıştırır. -* **databaseEvent**: Çalışma alanı nesnesi yaşam döngüsü olaylarında çalışır. Olay işlemi `updated` olduğunda, dinlenecek belirli alanlar `updatedFields` dizisinde belirtilebilir. Tanımsız veya boş bırakılırsa, herhangi bir güncelleme fonksiyonu tetikler. +* **cron**: Bir CRON ifadesi kullanarak işlevinizi bir zamanlamayla çalıştırır. +* **databaseEvent**: Çalışma alanı nesnesi yaşam döngüsü olaylarında çalışır. Olay işlemi `updated` olduğunda, dinlenecek belirli alanlar `updatedFields` dizisinde belirtilebilir. Tanımsız veya boş bırakılırsa, herhangi bir güncelleme işlevi tetikler. > örn. `person.updated`, `*.created`, `company.*` -Bir fonksiyonu CLI kullanarak manuel olarak da çalıştırabilirsiniz: +Bir işlevi CLI kullanarak manuel olarak da çalıştırabilirsiniz: ```bash filename="Terminal" yarn twenty exec -n create-new-post-card -p '{"key": "value"}' @@ -371,5 +371,5 @@ console.log(uploadedFile); * `TWENTY_API_URL` — Twenty API'nin temel URL'si * `TWENTY_APP_ACCESS_TOKEN` — Uygulamanızın varsayılan işlev rolü kapsamında kısa ömürlü bir anahtar - Bunları istemcilere iletmeniz gerekmez — otomatik olarak `process.env`'den okurlar. API anahtarının izinleri, `application-config.ts` içinde `defaultRoleUniversalIdentifier` ile referans verilen role göre belirlenir. + Bunları istemcilere iletmeniz gerekmez — otomatik olarak `process.env`'den okurlar. API anahtarının izinleri, `defineApplicationRole()` ile bildirilen role (veya `application-config.ts` içindeki `defaultRoleUniversalIdentifier` üzerinden referans verilen role) göre belirlenir. diff --git a/packages/twenty-docs/l/tr/developers/extend/apps/operations/publishing.mdx b/packages/twenty-docs/l/tr/developers/extend/apps/operations/publishing.mdx index ee1ccd69e3..9c49604b66 100644 --- a/packages/twenty-docs/l/tr/developers/extend/apps/operations/publishing.mdx +++ b/packages/twenty-docs/l/tr/developers/extend/apps/operations/publishing.mdx @@ -187,7 +187,6 @@ export default defineApplication({ universalIdentifier: '...', displayName: 'My App', description: 'A great app', - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, logoUrl: 'public/logo.png', screenshots: [ 'public/screenshot-1.png', diff --git a/packages/twenty-docs/l/tr/developers/extend/apps/operations/testing.mdx b/packages/twenty-docs/l/tr/developers/extend/apps/operations/testing.mdx index d445ad985e..12539ba52d 100644 --- a/packages/twenty-docs/l/tr/developers/extend/apps/operations/testing.mdx +++ b/packages/twenty-docs/l/tr/developers/extend/apps/operations/testing.mdx @@ -1,6 +1,6 @@ --- title: Test -description: Vitest kurulumu, gerçek bir Twenty sunucusuna karşı tümleştirme testleri, tür denetimi ve GitHub Actions ile CI. +description: Vitest kurulumu, gerçek bir Twenty sunucusunda entegrasyon testleri, tip denetimi ve GitHub Actions ile CI. icon: flask --- diff --git a/packages/twenty-docs/l/zh/developers/extend/apps/config/application.mdx b/packages/twenty-docs/l/zh/developers/extend/apps/config/application.mdx index 753c6179e3..871c507b45 100644 --- a/packages/twenty-docs/l/zh/developers/extend/apps/config/application.mdx +++ b/packages/twenty-docs/l/zh/developers/extend/apps/config/application.mdx @@ -13,7 +13,6 @@ icon: rocket ```ts src/application-config.ts import { defineApplication } from 'twenty-sdk/define'; -import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role'; export default defineApplication({ universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d', @@ -27,7 +26,6 @@ export default defineApplication({ isSecret: false, }, }, - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, }); ``` @@ -35,12 +33,13 @@ export default defineApplication({ * `universalIdentifier` 字段是你拥有的确定性 ID。 只需生成一次,并在多次同步过程中保持稳定不变。 * `applicationVariables` 会变成你的函数和前端组件可用的环境变量(例如,`DEFAULT_RECIPIENT_NAME` 可作为 `process.env.DEFAULT_RECIPIENT_NAME` 使用)。 -* `defaultRoleUniversalIdentifier` 必须引用使用 [`defineRole()`](/l/zh/developers/extend/apps/config/roles) 定义的角色。 +* 默认角色会根据使用 [`defineApplicationRole()`](/l/zh/developers/extend/apps/config/roles) 标记的角色文件自动检测——你不需要在 `defineApplication()` 中引用它。 * 在构建清单时会自动检测安装前/安装后函数——无需在 `defineApplication()` 中引用它们。 +* 显式传递 `defaultRoleUniversalIdentifier` 仍然受支持以保持向后兼容性,但已弃用,推荐改用 `defineApplicationRole()`。 ## 默认函数角色 -`defaultRoleUniversalIdentifier` 控制应用的逻辑函数和前端组件可以访问的内容: +使用 [`defineApplicationRole()`](/l/zh/developers/extend/apps/config/roles) 声明的角色控制应用的逻辑函数和前端组件可以访问的内容: * 作为 `TWENTY_APP_ACCESS_TOKEN` 注入的运行时令牌来源于该角色。 * 类型化 API 客户端将受限于授予该角色的权限。 diff --git a/packages/twenty-docs/l/zh/developers/extend/apps/config/roles.mdx b/packages/twenty-docs/l/zh/developers/extend/apps/config/roles.mdx index f70fefcafc..9cb2cec3d9 100644 --- a/packages/twenty-docs/l/zh/developers/extend/apps/config/roles.mdx +++ b/packages/twenty-docs/l/zh/developers/extend/apps/config/roles.mdx @@ -4,7 +4,7 @@ description: 声明你的应用的逻辑函数和前端组件可以读取和写 icon: shield-halved --- -**角色(role)** 是一组权限:应用可以读取或写入哪些对象,可以查看哪些字段,以及可以使用哪些平台级功能。 每个应用的逻辑函数和前端组件都会继承在 [`defineApplication`](/l/zh/developers/extend/apps/config/application) 中被声明为 `defaultRoleUniversalIdentifier` 的角色的权限。 +**角色(role)** 是一组权限:应用可以读取或写入哪些对象,可以查看哪些字段,以及可以使用哪些平台级能力。 每个应用的逻辑函数和前端组件都会继承使用 `defineApplicationRole()` 标记的角色的权限(参见下文的 [默认函数角色](#the-default-function-role))。 ```ts src/roles/restricted-company-role.ts import { @@ -51,15 +51,15 @@ export default defineRole({ ## 默认函数角色 -当你使用脚手架创建新应用时,CLI 会创建一个默认角色文件: +当你使用脚手架创建新应用时,CLI 会创建一个使用 `defineApplicationRole()` 声明的默认角色文件: ```ts src/roles/default-role.ts -import { defineRole, PermissionFlag } from 'twenty-sdk/define'; +import { defineApplicationRole, PermissionFlag } from 'twenty-sdk/define'; export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = 'b648f87b-1d26-4961-b974-0908fd991061'; -export default defineRole({ +export default defineApplicationRole({ universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, label: 'Default function role', description: 'Default role for function Twenty client', @@ -77,10 +77,13 @@ export default defineRole({ }); ``` -该角色的 `universalIdentifier` 会在 `application-config.ts` 中被引用为 `defaultRoleUniversalIdentifier`: +`defineApplicationRole()` 是 `defineRole()` 的一个轻量包装,它会标记在应用安装时用作应用默认角色的**该**角色。 验证与 `defineRole` 完全相同,但构建流水线会自动将其 `universalIdentifier` 注入到应用清单的 `defaultRoleUniversalIdentifier` 中——因此你无需在 [`defineApplication`](/l/zh/developers/extend/apps/config/application) 中自行引用它。 -* **`*.role.ts`** 声明该角色可以执行的操作。 -* **`application-config.ts`** 指向该角色,使你的函数继承其权限。 +备注: + +* 每个应用只允许有且仅有 **一个** `defineApplicationRole(...)`——如果发现多于一个,清单构建将失败。 +* 对于你的应用随附的任何**额外**角色,请使用 `defineRole()`(而不是 `defineApplicationRole()`)。 +* 在 `defineApplication()` 上显式设置 `defaultRoleUniversalIdentifier` 仍然受支持以保持向后兼容性,但已经弃用,推荐使用 `defineApplicationRole()`。 ## 最佳实践 diff --git a/packages/twenty-docs/l/zh/developers/extend/apps/getting-started/quick-start.mdx b/packages/twenty-docs/l/zh/developers/extend/apps/getting-started/quick-start.mdx index 3d807d0431..27015c4f40 100644 --- a/packages/twenty-docs/l/zh/developers/extend/apps/getting-started/quick-start.mdx +++ b/packages/twenty-docs/l/zh/developers/extend/apps/getting-started/quick-start.mdx @@ -123,10 +123,10 @@ yarn twenty dev yarn twenty dev --once ``` -| 命令 | 行为 | 适用场景 | -| ------------------------ | -------------------------------- | ------------------------------ | -| `yarn twenty dev` | 监视并在每次更改时重新同步。 持续运行,直到你将其停止。 | 交互式本地开发。 | -| `yarn twenty dev --once` | 单次构建与同步,成功时以 `0` 退出,失败时以 `1` 退出。 | CI、pre-commit 钩子、AI 代理、脚本化工作流。 | +| 命令 | 行为 | 适用场景 | +| ------------------------ | -------------------------------- | ------------------------------- | +| `yarn twenty dev` | 监视并在每次更改时重新同步。 持续运行,直到你将其停止。 | 交互式本地开发。 | +| `yarn twenty dev --once` | 单次构建与同步,成功时以 `0` 退出,失败时以 `1` 退出。 | CI、pre-commit 钩子、AI 智能体、脚本化工作流。 | 两种模式都需要处于开发模式的服务器和已认证的远程。 @@ -167,13 +167,13 @@ npx create-twenty-app@latest my-twenty-app --example postcard - 应用身份、默认角色、安装钩子、公共资源。 + 应用标识、默认角色、安装钩子、公共资源。 对象、字段和双向关系。 - 逻辑函数、技能、代理和 OAuth 连接。 + 逻辑函数、技能、智能体和 OAuth 连接。 视图、导航、页面布局、前端组件。 diff --git a/packages/twenty-docs/l/zh/developers/extend/apps/layout/overview.mdx b/packages/twenty-docs/l/zh/developers/extend/apps/layout/overview.mdx index b47cb3c425..77cee49a99 100644 --- a/packages/twenty-docs/l/zh/developers/extend/apps/layout/overview.mdx +++ b/packages/twenty-docs/l/zh/developers/extend/apps/layout/overview.mdx @@ -26,7 +26,7 @@ Twenty 应用的**布局层**是用户看到的一切:应用在侧边栏中的 ## 本节内容 - + `defineView` — 已保存的列表配置:可见列、筛选器、分组。 diff --git a/packages/twenty-docs/l/zh/developers/extend/apps/logic/connections.mdx b/packages/twenty-docs/l/zh/developers/extend/apps/logic/connections.mdx index 3d3dfb9d4c..a77142005c 100644 --- a/packages/twenty-docs/l/zh/developers/extend/apps/logic/connections.mdx +++ b/packages/twenty-docs/l/zh/developers/extend/apps/logic/connections.mdx @@ -52,7 +52,6 @@ export default defineApplication({ universalIdentifier: '...', displayName: 'Linear', description: 'Connect Linear to Twenty.', - defaultRoleUniversalIdentifier: '...', // OAuth client credentials live on the app registration (one OAuth app per // Twenty server, configured by the admin) — not per-workspace. Declare them // as serverVariables so the admin can fill them in once for all installs. diff --git a/packages/twenty-docs/l/zh/developers/extend/apps/logic/logic-functions.mdx b/packages/twenty-docs/l/zh/developers/extend/apps/logic/logic-functions.mdx index 2aa1ecf8f4..6e5267f81b 100644 --- a/packages/twenty-docs/l/zh/developers/extend/apps/logic/logic-functions.mdx +++ b/packages/twenty-docs/l/zh/developers/extend/apps/logic/logic-functions.mdx @@ -4,7 +4,7 @@ description: 定义具有 HTTP、cron 和数据库事件触发器的服务端 Ty icon: bolt --- -逻辑函数是在 Twenty 平台上运行的服务端 TypeScript 函数。 它们可以由 HTTP 请求、cron 调度或数据库事件触发——也可以作为工具暴露给 AI 代理。 +逻辑函数是在 Twenty 平台上运行的服务端 TypeScript 函数。 它们可以由 HTTP 请求、cron 调度或数据库事件触发——也可以作为工具暴露给 AI 智能体。 @@ -54,7 +54,7 @@ export default defineLogicFunction({ * **httpRoute**:在 **`/s/` 端点**下通过 HTTP 路径和方法公开你的函数: > 例如 `path: '/post-card/create'` 可在 `https://your-twenty-server.com/s/post-card/create` 调用 * **cron**:使用 CRON 表达式按计划运行你的函数。 -* **databaseEvent**:在工作空间对象生命周期事件上运行。 当事件操作为 `updated` 时,可以在 `updatedFields` 数组中指定要监听的特定字段。 如果未定义或为空,任何更新都会触发该函数。 +* **databaseEvent**:在工作区对象生命周期事件上运行。 当事件操作为 `updated` 时,可以在 `updatedFields` 数组中指定要监听的特定字段。 如果未定义或为空,任何更新都会触发该函数。 > 例如 `person.updated`、`*.created`、`company.*` @@ -185,7 +185,7 @@ export default defineLogicFunction({ 关键点: * 函数可以混用这些入口 — 同时声明 `toolTriggerSettings` 和 `workflowActionTriggerSettings`,即可在 chat 和工作流构建器中同时公开它。 -* `toolTriggerSettings.inputSchema` 和 `workflowActionTriggerSettings.inputSchema` 均为可选。 如果省略,清单构建器会根据处理器源代码进行推断(AI 工具使用 JSON Schema,工作流操作使用 Twenty 的 `InputSchema`)。 当你需要更丰富的类型时,可显式提供一个 — 例如,在工作流构建器中使用对 `FieldMetadataType` 友好的字段(如 `CURRENCY` 或 `RELATION`),或提供 AI 代理可读取的 `description` 字段: +* `toolTriggerSettings.inputSchema` 和 `workflowActionTriggerSettings.inputSchema` 均为可选。 如果省略,清单构建器会根据处理器源代码进行推断(AI 工具使用 JSON Schema,工作流操作使用 Twenty 的 `InputSchema`)。 当你需要更丰富的类型时,可显式提供一个 — 例如,在工作流构建器中使用对 `FieldMetadataType` 友好的字段(如 `CURRENCY` 或 `RELATION`),或提供 AI 智能体可读取的 `description` 字段: ```ts export default defineLogicFunction({ @@ -371,5 +371,5 @@ console.log(uploadedFile); * `TWENTY_API_URL`——Twenty API 的基础 URL * `TWENTY_APP_ACCESS_TOKEN`——作用域限定为你的应用默认函数角色的短期密钥 - 你无需将这些值传递给客户端——它们会自动从 `process.env` 读取。 API 密钥的权限由你的 `application-config.ts` 中 `defaultRoleUniversalIdentifier` 引用的角色决定。 + 你无需将这些值传递给客户端——它们会自动从 `process.env` 读取。 API 密钥的权限由使用 `defineApplicationRole()` 声明的角色(或在 `application-config.ts` 中通过 `defaultRoleUniversalIdentifier` 引用的角色)决定。 diff --git a/packages/twenty-docs/l/zh/developers/extend/apps/operations/publishing.mdx b/packages/twenty-docs/l/zh/developers/extend/apps/operations/publishing.mdx index 622c8e7fe8..3c507ed3d2 100644 --- a/packages/twenty-docs/l/zh/developers/extend/apps/operations/publishing.mdx +++ b/packages/twenty-docs/l/zh/developers/extend/apps/operations/publishing.mdx @@ -187,7 +187,6 @@ export default defineApplication({ universalIdentifier: '...', displayName: 'My App', description: 'A great app', - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, logoUrl: 'public/logo.png', screenshots: [ 'public/screenshot-1.png',