i18n - docs translations (#19928)

Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
This commit is contained in:
github-actions[bot] 2026-04-21 12:49:35 +02:00 committed by GitHub
parent 1db242d399
commit 8cdd2a3319
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
52 changed files with 990 additions and 510 deletions

View file

@ -1,5 +1,5 @@
---
title: '"الهيكلية"'
title: الهيكلية
description: How Twenty apps work — sandboxing, lifecycle, and the building blocks.
icon: sitemap
---

View file

@ -1,6 +1,6 @@
---
title: CLI & Testing
description: CLI commands, testing setup, public assets, npm packages, remotes, and CI configuration.
title: CLI والاختبار
description: أوامر CLI، إعداد الاختبار، الأصول العامة، حزم npm، المستودعات البعيدة، وتهيئة CI.
icon: terminal
---
@ -10,7 +10,7 @@ icon: terminal
الملفات الموضوعة في `public/` هي:
* **متاحة للعامة** — بمجرد مزامنتها إلى الخادم، تُقدَّم الأصول عبر عنوان URL عام. لا يلزم توثيق للوصول إليها.
* **متاحة للعامة** — بمجرد مزامنتها إلى الخادم، تُقدَّم الأصول عبر عنوان URL عام. لا حاجة إلى مصادقة للوصول إليها.
* **متاحة في المكوّنات الأمامية** — استخدم عناوين الأصول لعرض الصور أو الأيقونات أو أي وسائط داخل مكوّنات React لديك.
* **متاحة في الدوال المنطقية** — أشِر إلى عناوين الأصول في رسائل البريد الإلكتروني أو استجابات واجهات البرمجة أو أي منطق على جهة الخادم.
* **مستخدمة لبيانات تعريف السوق** — يشير حقلا `logoUrl` و`screenshots` في `defineApplication()` إلى ملفات من هذا المجلد (مثل `public/logo.png`). تُعرَض هذه عند نشر تطبيقك في السوق.

View file

@ -60,9 +60,9 @@ export default defineFrontComponent({
| `universalIdentifier` | نعم | معرّف فريد ثابت لهذا المكوّن |
| `component` | نعم | دالة مكوّن React |
| `name` | لا | اسم العرض |
| `الوصف` | لا | وصف لما يفعله المكوّن |
| `description` | لا | وصف لما يفعله المكوّن |
| `isHeadless` | لا | عيِّنه إلى `true` إذا كان المكوّن بلا واجهة مرئية (انظر أدناه) |
| `أمر` | لا | سجّل المكوّن كأمر (انظر [خيارات الأوامر](#command-options) أدناه) |
| `command` | لا | سجّل المكوّن كأمر (انظر [خيارات الأوامر](#command-options) أدناه) |
## وضع مكوّن أمامي على صفحة
@ -293,9 +293,9 @@ export default defineFrontComponent({
| الحقل | مطلوب | الوصف |
| --------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `universalIdentifier` | نعم | معرّف فريد ثابت للأمر |
| `التسمية` | نعم | التسمية الكاملة المعروضة في قائمة الأوامر (Cmd+K) |
| `label` | نعم | التسمية الكاملة المعروضة في قائمة الأوامر (Cmd+K) |
| `shortLabel` | لا | تسمية أقصر تُعرَض على زر الإجراء السريع المثبّت |
| `أيقونة` | لا | اسم الأيقونة المعروض بجانب التسمية (مثل `'IconBolt'` و`'IconSend'`) |
| `icon` | لا | اسم الأيقونة المعروض بجانب التسمية (مثل `'IconBolt'` و`'IconSend'`) |
| `isPinned` | لا | عند كونها `true`، يعرض الأمر كزر إجراء سريع في الزاوية العلوية اليمنى من الصفحة |
| `availabilityType` | لا | تتحكّم في مكان ظهور الأمر: `'GLOBAL'` (متاح دائمًا)، و`'RECORD_SELECTION'` (فقط عند تحديد سجلات)، أو `'FALLBACK'` (يُعرَض عند عدم تطابق أي أوامر أخرى) |
| `availabilityObjectUniversalIdentifier` | لا | تقييد الأمر بصفحات نوع كائن معيّن (مثل سجلات Company فقط) |
@ -337,16 +337,16 @@ export default defineFrontComponent({
| المتغيّر | النوع | الوصف |
| ------------------------------ | ------------- | --------------------------------------------------------------- |
| `pageType` | `string` | نوع الصفحة الحالي (مثل `'RecordIndexPage'` و`'RecordShowPage'`) |
| `isInSidePanel` | `قيمة منطقية` | ما إذا كان المكوّن معروضًا في لوحة جانبية |
| `numberOfSelectedRecords` | `رقم` | عدد السجلات المحدّدة حاليًا |
| `isSelectAll` | `قيمة منطقية` | ما إذا كان "تحديد الكل" مفعّلًا |
| `isInSidePanel` | `boolean` | ما إذا كان المكوّن معروضًا في لوحة جانبية |
| `numberOfSelectedRecords` | `number` | عدد السجلات المحدّدة حاليًا |
| `isSelectAll` | `boolean` | ما إذا كان "تحديد الكل" مفعّلًا |
| `selectedRecords` | `array` | كائنات السجلات المحدّدة |
| `favoriteRecordIds` | `array` | معرّفات السجلات المفضّلة |
| `objectPermissions` | `الكائن` | الأذونات الخاصة بنوع الكائن الحالي |
| `targetObjectReadPermissions` | `الكائن` | أذونات القراءة للكائن الهدف |
| `targetObjectWritePermissions` | `الكائن` | أذونات الكتابة للكائن الهدف |
| `featureFlags` | `الكائن` | أعلام الميزات المفعَّلة |
| `objectMetadataItem` | `الكائن` | بيانات التعريف لنوع الكائن الحالي |
| `objectPermissions` | `object` | الأذونات الخاصة بنوع الكائن الحالي |
| `targetObjectReadPermissions` | `object` | أذونات القراءة للكائن الهدف |
| `targetObjectWritePermissions` | `object` | أذونات الكتابة للكائن الهدف |
| `featureFlags` | `object` | أعلام الميزات المفعَّلة |
| `objectMetadataItem` | `object` | بيانات التعريف لنوع الكائن الحالي |
| `hasAnySoftDeleteFilterOnView` | `قيمة منطقية` | ما إذا كان العرض الحالي يحتوي على مرشّح حذف منطقي |
**المُشغِّلات** — جمّع المتغيّرات في تعابير منطقية:

View file

@ -99,8 +99,8 @@ const handler = async (event: RoutePayload) => {
| `headers` | `Record\<string, string \| undefined>` | رؤوس HTTP (فقط تلك المدرجة في `forwardedRequestHeaders`) | انظر القسم أدناه |
| `queryStringParameters` | `Record\<string, string \| undefined>` | معلمات سلسلة الاستعلام (تُضمّ القيم المتعددة باستخدام فواصل) | `/users?ids=1&ids=2&ids=3&name=Alice` -> `{ ids: '1,2,3', name: 'Alice' }` |
| `pathParameters` | `Record\<string, string \| undefined>` | معلمات المسار المستخرجة من نمط المسار | `/users/:id`, `/users/123` -> `{ id: '123' }` |
| `المحتوى` | `object \| null` | جسم الطلب المُحلَّل (JSON) | `{ id: 1 }` -> `{ id: 1 }` |
| `isBase64Encoded` | `قيمة منطقية` | ما إذا كان جسم الطلب مُرمَّزًا بترميز base64 | |
| `body` | `object \| null` | جسم الطلب المُحلَّل (JSON) | `{ id: 1 }` -> `{ id: 1 }` |
| `isBase64Encoded` | `boolean` | ما إذا كان جسم الطلب مُرمَّزًا بترميز base64 | |
| `requestContext.http.method` | `string` | طريقة HTTP (GET, POST, PUT, PATCH, DELETE) | |
| `requestContext.http.path` | `string` | المسار الخام للطلب | |

View file

@ -11,7 +11,7 @@ icon: robot
Apps can define AI capabilities that live inside the workspace — reusable skill instructions and agents with custom system prompts.
<AccordionGroup>
<Accordion title="defineSkill" description="عرّف مهارات وكيل الذكاء الاصطناعي">
<Accordion title="defineSkill" description="عرّف مهارات وكلاء الذكاء الاصطناعي">
تُحدِّد المهارات تعليمات وإمكانات قابلة لإعادة الاستخدام يمكن لوكلاء الذكاء الاصطناعي استخدامها داخل مساحة العمل لديك. استخدم `defineSkill()` لتعريف مهارات مع تحقّق مدمج:

View file

@ -5,26 +5,86 @@ icon: arrow-up-right-dots
## إرشادات عامة
**تأكد دائماً من عمل نسخة احتياطية لقاعدة بياناتك قبل بدء عملية الترقية** عن طريق تشغيل `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
**Always back up your database before starting the upgrade process** by running:
لاستعادة النسخة الاحتياطية، قم بتشغيل `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
```bash
docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql
```
إذا كنت تستخدم Docker Compose، اتبع الخطوات التالية:
To restore from backup:
1. في الطرفية، على الجهاز الذي يعمل فيه Twenty، قم بإيقاف Twenty: `docker compose down`
```bash
cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}
```
2. قم بترقية الإصدار عن طريق تغيير قيمة `TAG` في ملف .env بجانب docker-compose. ( نوصي باستخدام إصدار `major.minor` مثل `v0.53` )
If you use Docker Compose, follow these steps:
3. قم بإعادة تشغيل Twenty باستخدام `docker compose up -d`
1. Stop Twenty: `docker compose down`
2. Change the `TAG` value in the `.env` file next to your `docker-compose.yml`
3. Start Twenty: `docker compose up -d`
**تأكد من أن لديك نسخة احتياطية غير تالفة بعد كل إصدار تمت ترقيته.**
The server runs all required upgrade migrations automatically on startup. No manual command is needed.
## خطوات الترقية الخاصة بالإصدار
## Cross-version upgrades (v1.22+)
## After v1.21
Starting from **v1.22**, Twenty supports cross-version upgrades. You can jump directly from any supported version to the latest release without stepping through each intermediate version.
We know support sequential upgrades. You don't need to go through each version one by one.
For example, upgrading from v1.22 straight to v2.0 is fully supported.
## Before v1.21
## Checking upgrade status
Make sure to go through every major tagged version when upgrading (upgrade v1.6.x to v.7.y, then v.7.y to v.8.z, etc.).
The `upgrade:status` command lets you inspect the current state of your instance and workspace migrations. It is useful for debugging upgrade issues or when filing a support request.
Run it from the server container:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status
```
مثال على المخرجات:
```sh
APP_VERSION: v1.23.0
Instance
Inferred version: 1.23.0
Latest command: 1.23.0_DropWorkspaceVersionColumnFastInstanceCommand_1785000000000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:43:58.823Z
Workspace
Apple (20202020-1c25-4d02-bf25-6aeccf7ea419)
Inferred version: 1.23.0
Latest command: 1.23.0_UpdateGlobalObjectContextCommandMenuItemsCommand_1780000005000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:44:09.361Z
Summary
Instance: Up to date
Workspaces: 1 up to date, 0 behind, 0 failed (1 total)
```
### خيارات
| Flag | الوصف |
| ------------------------- | ---------------------------------------------------------------- |
| `-w, --workspace-id <id>` | Filter to a specific workspace. Can be passed multiple times. |
| `-f, --failed-only` | Hide up-to-date workspaces, only show behind and failed entries. |
## استكشاف الأخطاء وإصلاحها
If the upgrade fails on some workspaces, the server will not advance past the failing step. Restarting the server (`docker compose up -d`) will retry the upgrade from where it left off.
To quickly identify problems, run:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status --failed-only
```
This shows only workspaces that are behind or have failed, along with the error message for each failure.
## Before v1.22
If your instance is older than v1.22, you must upgrade incrementally through each major tagged version (v1.6 to v1.7, then v1.7 to v1.8, and so on) until you reach v1.22. From there, you can jump directly to the latest version.

View file

@ -32,8 +32,8 @@ import { CardTitle } from "/snippets/card-title.mdx"
</Card>
<Card href="/l/ar/user-guide/layout/overview" img="/images/user-guide/halftone/layout.png">
<CardTitle>Layout</CardTitle>
Navigation, views, and record page customization.
<CardTitle>التخطيط</CardTitle>
التنقل وطرق العرض وتخصيص صفحة السجل.
</Card>
<Card href="/l/ar/user-guide/dashboards/overview" img="/images/user-guide/halftone/dashboards.png">

View file

@ -1,32 +1,32 @@
---
title: التنقل
description: Customize the left sidebar to match how your team works.
description: خصص الشريط الجانبي الأيسر ليتوافق مع طريقة عمل فريقك.
---
The left sidebar is your primary way to move around Twenty. It's fully customizable — you can reorganize it to match your workflow without touching any settings page.
يعد الشريط الجانبي الأيسر طريقتك الأساسية للتنقل داخل Twenty. إنه قابل للتخصيص بالكامل — يمكنك إعادة تنظيمه ليتوافق مع سير عملك دون الحاجة إلى فتح أي صفحة إعدادات.
## Reordering items
## إعادة ترتيب العناصر
Drag and drop any item in the sidebar to change its position. The order is saved per user, so each team member can arrange their own sidebar.
اسحب وأفلت أي عنصر في الشريط الجانبي لتغيير موضعه. يحفظ الترتيب لكل مستخدم على حدة، لذا يمكن لكل عضو في الفريق ترتيب شريطه الجانبي الخاص.
## مجلدات
Group related items into folders. For example, you might create a "Sales" folder containing your pipeline views, a "Support" folder for tickets, or an "Operations" folder for internal objects.
اجمع العناصر ذات الصلة في مجلدات. على سبيل المثال، يمكنك إنشاء مجلد "المبيعات" يضم طرق عرض مسار المبيعات، ومجلد "الدعم" للتذاكر، أو مجلد "العمليات" للكائنات الداخلية.
To create a folder, right-click in the sidebar or use the `+` button.
لإنشاء مجلد، انقر بزر الماوس الأيمن في الشريط الجانبي أو استخدم زر `+`.
## Hiding objects
## إخفاء الكائنات
Objects you don't use can be hidden from the sidebar. They're not deleted — they're just out of the way. You can show them again anytime from Settings > Data Model.
يمكن إخفاء الكائنات التي لا تستخدمها من الشريط الجانبي. لا يتم حذفها — إنها فقط مخفية عن الأنظار. يمكنك إظهارها مرة أخرى في أي وقت من الإعدادات > نموذج البيانات.
## المفضلات
Pin views, records, or searches to the Favorites section at the top of the sidebar for one-click access. Favorites are personal — each user manages their own.
قم بتثبيت طرق العرض أو السجلات أو عمليات البحث في قسم المفضلات أعلى الشريط الجانبي للوصول بنقرة واحدة. المفضلات شخصية — يدير كل مستخدم قائمته الخاصة.
## Custom links
## روابط مخصصة
Add links to external tools directly in the sidebar. Useful for linking to your wiki, dashboards in other tools, or any URL your team uses regularly.
أضف روابط إلى الأدوات الخارجية مباشرة في الشريط الجانبي. مفيد لربط الويكي الخاص بك ولوحات المعلومات في أدوات أخرى أو أي عنوان URL يستخدمه فريقك بانتظام.
## Command menu
## قائمة الأوامر
Press `Cmd+K` (or `Ctrl+K`) to open the command menu — a quick-access search bar for jumping to any record, view, or action without navigating the sidebar.
اضغط `Cmd+K` (أو `Ctrl+K`) لفتح قائمة الأوامر — شريط بحث للوصول السريع يتيح لك الانتقال إلى أي سجل أو طريقة عرض أو إجراء دون التنقل عبر الشريط الجانبي.

View file

@ -1,9 +1,9 @@
---
title: صفحات السجل},{
description: خصص تخطيط صفحات تفاصيل كل سجل باستخدام علامات تبويب وعناصر واجهة.
title: صفحات السجل
description: خصص تخطيط صفحات تفاصيل السجلات باستخدام علامات تبويب وأدوات.
---
عند فتح سجل في Twenty، تتكون صفحة التفاصيل من **علامات تبويب** و**عناصر واجهة**. كلاهما قابل للتخصيص بالكامل حسب نوع الكائن.
عند فتح سجل في Twenty، تتكون صفحة التفاصيل من **علامات تبويب** و**أدوات**. كلاهما قابل للتخصيص بالكامل حسب نوع الكائن.
## علامات التبويب

View file

@ -1,45 +1,45 @@
---
title: التخطيط
description: Customize how you navigate, browse, and view records in Twenty.
description: خصص كيفية التنقل، والتصفح، وعرض السجلات في Twenty.
---
Twenty's layout is customizable at three levels: how you navigate the app, how you browse lists of records, and what you see when you open an individual record.
تخطيط Twenty قابل للتخصيص على ثلاثة مستويات: كيفية التنقل في التطبيق، وكيفية تصفح قوائم السجلات، وما تراه عند فتح سجل فردي.
## التنقل
The left sidebar is fully customizable. يمكنك:
الشريط الجانبي الأيسر قابل للتخصيص بالكامل. يمكنك:
* **Reorder items** by dragging and dropping
* **Create folders** to group related objects and views
* **Hide objects** you don't use
* **Add custom links** to external tools
* **Pin favorites** for quick access to views, records, or searches
* **إعادة ترتيب العناصر** عن طريق السحب والإفلات
* **إنشاء مجلدات** لتجميع الكائنات وطرق العرض ذات الصلة
* **إخفاء الكائنات** التي لا تستخدمها
* **إضافة روابط مخصصة** إلى الأدوات الخارجية
* **تثبيت المفضلات** للوصول السريع إلى طرق العرض، أو السجلات، أو عمليات البحث
[Navigation reference →](/l/ar/user-guide/layout/capabilities/navigation)
[مرجع التنقل →](/l/ar/user-guide/layout/capabilities/navigation)
## العروض
Views control how lists of records are displayed. Twenty supports three view types:
تتحكم طرق العرض في كيفية عرض قوائم السجلات. تدعم Twenty ثلاثة أنواع من طرق العرض:
| عرض | Best for |
| ------------ | ---------------------------------------------------------------------- |
| **Table** | Working with many records at once — spreadsheet-style rows and columns |
| **Kanban** | Pipeline tracking — drag-and-drop cards organized by stage |
| **Calendar** | Time-based planning — records plotted by a date field |
| عرض | الأفضل لـ |
| ----------- | ------------------------------------------------------------------------- |
| **جدول** | العمل مع العديد من السجلات دفعة واحدة — صفوف وأعمدة بأسلوب جداول البيانات |
| **كانبان** | تتبّع مسار الصفقات — بطاقات قابلة للسحب والإفلات مُنظَّمة حسب المرحلة |
| **التقويم** | التخطيط القائم على الوقت — سجلات موزَّعة وفق حقل التاريخ |
Each view saves its own filters, sorting, field visibility, and grouping configuration. Views can be shared with the workspace or kept private.
يحفظ كل عرض عوامل التصفية الخاصة به، والفرز، وظهور الحقول، وإعدادات التجميع. يمكن مشاركة طرق العرض مع مساحة العمل أو إبقاؤها خاصة.
[Table views →](/l/ar/user-guide/views-pipelines/capabilities/table-views) · [Kanban views →](/l/ar/user-guide/views-pipelines/capabilities/kanban-views) · [Calendar view →](/l/ar/user-guide/views-pipelines/capabilities/calendar-view)
[طرق عرض الجدول →](/l/ar/user-guide/views-pipelines/capabilities/table-views) · [طرق عرض كانبان →](/l/ar/user-guide/views-pipelines/capabilities/kanban-views) · [عرض التقويم →](/l/ar/user-guide/views-pipelines/capabilities/calendar-view)
## Record pages
## صفحات السجل
When you open a record, the detail page is built from configurable tabs and widgets. يمكنك:
عند فتح سجل، تتكوّن صفحة التفاصيل من علامات تبويب وعناصر واجهة قابلة للتهيئة. يمكنك:
* **Add, remove, and reorder tabs** on any record type
* **Configure widgets** — fields, related records, emails, timeline, calendar, tasks, notes, files, charts, iframes, and more
* **Drag and resize widgets** on a grid layout
* **Control field visibility** per widget
* **إضافة علامات التبويب وإزالتها وإعادة ترتيبها** على أي نوع من السجلات
* **تهيئة عناصر الواجهة** — الحقول، السجلات ذات الصلة، رسائل البريد الإلكتروني، الخط الزمني، التقويم، المهام، الملاحظات، الملفات، الرسوم البيانية، iframes، وغير ذلك
* **سحب عناصر الواجهة وتغيير حجمها** ضمن تخطيط شبكي
* **التحكم في ظهور الحقول** لكل عنصر واجهة
Enter layout customization mode from the command menu (`Cmd+K` → "Edit record page layout").
ادخل وضع تخصيص التخطيط من قائمة الأوامر (`Cmd+K` → "تعديل تخطيط صفحة السجل").
[Record pages reference →](/l/ar/user-guide/layout/capabilities/record-pages)
[مرجع صفحات السجل →](/l/ar/user-guide/layout/capabilities/record-pages)

View file

@ -1,6 +1,6 @@
---
title: CLI & Testing
description: CLI commands, testing setup, public assets, npm packages, remotes, and CI configuration.
title: CLI a testování
description: Příkazy CLI, nastavení testování, veřejné statické soubory, balíčky npm, vzdálené repozitáře a konfigurace CI.
icon: terminal
---
@ -14,7 +14,7 @@ Soubory umístěné v `public/` jsou:
* **Dostupné ve frontendových komponentách** — použijte URL prostředků k zobrazení obrázků, ikon či jiných médií uvnitř komponent Reactu.
* **Dostupné v logických funkcích** — odkazujte na URL prostředků v e-mailech, odpovědích API či jiné serverové logice.
* **Používány pro metadata Marketplace** — pole `logoUrl` a `screenshots` v `defineApplication()` odkazují na soubory z této složky (např. `public/logo.png`). Tyto se zobrazují v Marketplace, když je vaše aplikace zveřejněna.
* **Automaticky synchronizované ve vývojovém režimu** — když v `public/` přidáte, aktualizujete nebo smažete soubor, je automaticky synchronizován na server. Není potřeba restart.
* **Automaticky synchronizované ve vývojovém režimu** — když v `public/` přidáte, aktualizujete nebo smažete soubor, je automaticky synchronizován na server. Není potřeba restartovat.
* **Zahrnuté do buildů** — `yarn twenty build` zabalí všechny veřejné prostředky do distribučního výstupu.
### Přístup k veřejným prostředkům pomocí `getPublicAssetUrl`
@ -429,6 +429,6 @@ jobs:
TWENTY_API_KEY: ${{ steps.twenty.outputs.access-token }}
```
Není potřeba konfigurovat žádné secrets — akce `spawn-twenty-docker-image` spustí efemérní server Twenty přímo v runneru a vypíše podrobnosti připojení. Secret `GITHUB_TOKEN` je poskytován GitHubem automaticky.
Není potřeba konfigurovat žádné secrets — akce `spawn-twenty-docker-image` spustí dočasný server Twenty přímo v runneru a vypíše podrobnosti připojení. Secret `GITHUB_TOKEN` je poskytován GitHubem automaticky.
Chcete-li připnout konkrétní verzi Twenty místo `latest`, změňte proměnnou prostředí `TWENTY_VERSION` na začátku workflow.

View file

@ -5,26 +5,86 @@ icon: arrow-up-right-dots
## Obecné pokyny
**Před zahájením procesu upgradu se vždy ujistěte, že jste zálohovali svou databázi** spuštěním `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
**Always back up your database before starting the upgrade process** by running:
Pro obnovení zálohy spusťte `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
```bash
docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql
```
Pokud jste použili Docker Compose, postupujte takto:
To restore from backup:
1. V terminálu, na hostiteli, kde Twenty běží, vypněte Twenty: `docker compose down`
```bash
cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}
```
2. Upgradujte verzi změnou hodnoty `TAG` v souboru .env vedle vašeho docker-compose. (Doporučujeme zvážit verzi `major.minor`, jako je `v0.53`)
If you use Docker Compose, follow these steps:
3. Opětovně zapněte Twenty pomocí `docker compose up -d`
1. Stop Twenty: `docker compose down`
2. Change the `TAG` value in the `.env` file next to your `docker-compose.yml`
3. Start Twenty: `docker compose up -d`
**Ujistěte se, že máte po každém upgradu nepoškozenou zálohu.**
The server runs all required upgrade migrations automatically on startup. No manual command is needed.
## Kroky upgradu specifické pro danou verzi
## Cross-version upgrades (v1.22+)
## After v1.21
Starting from **v1.22**, Twenty supports cross-version upgrades. You can jump directly from any supported version to the latest release without stepping through each intermediate version.
We know support sequential upgrades. You don't need to go through each version one by one.
For example, upgrading from v1.22 straight to v2.0 is fully supported.
## Before v1.21
## Checking upgrade status
Make sure to go through every major tagged version when upgrading (upgrade v1.6.x to v.7.y, then v.7.y to v.8.z, etc.).
The `upgrade:status` command lets you inspect the current state of your instance and workspace migrations. It is useful for debugging upgrade issues or when filing a support request.
Run it from the server container:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status
```
Ukázkový výstup:
```sh
APP_VERSION: v1.23.0
Instance
Inferred version: 1.23.0
Latest command: 1.23.0_DropWorkspaceVersionColumnFastInstanceCommand_1785000000000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:43:58.823Z
Workspace
Apple (20202020-1c25-4d02-bf25-6aeccf7ea419)
Inferred version: 1.23.0
Latest command: 1.23.0_UpdateGlobalObjectContextCommandMenuItemsCommand_1780000005000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:44:09.361Z
Summary
Instance: Up to date
Workspaces: 1 up to date, 0 behind, 0 failed (1 total)
```
### Možnosti
| Flag | Popis |
| ------------------------- | ---------------------------------------------------------------- |
| `-w, --workspace-id <id>` | Filter to a specific workspace. Can be passed multiple times. |
| `-f, --failed-only` | Hide up-to-date workspaces, only show behind and failed entries. |
## Řešení potíží
If the upgrade fails on some workspaces, the server will not advance past the failing step. Restarting the server (`docker compose up -d`) will retry the upgrade from where it left off.
To quickly identify problems, run:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status --failed-only
```
This shows only workspaces that are behind or have failed, along with the error message for each failure.
## Before v1.22
If your instance is older than v1.22, you must upgrade incrementally through each major tagged version (v1.6 to v1.7, then v1.7 to v1.8, and so on) until you reach v1.22. From there, you can jump directly to the latest version.

View file

@ -32,8 +32,8 @@ import { CardTitle } from "/snippets/card-title.mdx"
</Card>
<Card href="/l/cs/user-guide/layout/overview" img="/images/user-guide/halftone/layout.png">
<CardTitle>Layout</CardTitle>
Navigation, views, and record page customization.
<CardTitle>Rozložení</CardTitle>
Navigace, zobrazení a přizpůsobení stránky záznamu.
</Card>
<Card href="/l/cs/user-guide/dashboards/overview" img="/images/user-guide/halftone/dashboards.png">

View file

@ -1,32 +1,32 @@
---
title: Navigace
description: Customize the left sidebar to match how your team works.
description: Přizpůsobte levý postranní panel tomu, jak váš tým pracuje.
---
The left sidebar is your primary way to move around Twenty. It's fully customizable — you can reorganize it to match your workflow without touching any settings page.
Levý postranní panel je váš hlavní způsob, jak se v Twenty orientovat. Je plně přizpůsobitelný — můžete jej přeuspořádat tak, aby odpovídal vašemu pracovnímu postupu, aniž byste museli otevřít jakoukoli stránku s nastavením.
## Reordering items
## Změna pořadí položek
Drag and drop any item in the sidebar to change its position. The order is saved per user, so each team member can arrange their own sidebar.
Přetáhněte a pusťte libovolnou položku v postranním panelu a změňte její pozici. Pořadí se ukládá pro každého uživatele zvlášť, takže si každý člen týmu může uspořádat svůj vlastní postranní panel.
## Složky
Group related items into folders. For example, you might create a "Sales" folder containing your pipeline views, a "Support" folder for tickets, or an "Operations" folder for internal objects.
Seskupujte související položky do složek. Například můžete vytvořit složku "Prodej" obsahující zobrazení pipeline, složku "Podpora" pro tikety nebo složku "Provoz" pro interní objekty.
To create a folder, right-click in the sidebar or use the `+` button.
Chcete-li vytvořit složku, klikněte v postranním panelu pravým tlačítkem nebo použijte tlačítko `+`.
## Hiding objects
## Skrývání objektů
Objects you don't use can be hidden from the sidebar. They're not deleted — they're just out of the way. You can show them again anytime from Settings > Data Model.
Objekty, které nepoužíváte, lze z postranního panelu skrýt. Nejsou smazány — jen nepřekážejí. Znovu je můžete kdykoli zobrazit v Nastavení > Datový model.
## Oblíbené
Pin views, records, or searches to the Favorites section at the top of the sidebar for one-click access. Favorites are personal — each user manages their own.
Připněte zobrazení, záznamy nebo vyhledávání do sekce Oblíbené v horní části postranního panelu pro přístup jedním kliknutím. Oblíbené jsou osobní — každý uživatel si je spravuje sám.
## Custom links
## Vlastní odkazy
Add links to external tools directly in the sidebar. Useful for linking to your wiki, dashboards in other tools, or any URL your team uses regularly.
Přidejte odkazy na externí nástroje přímo do postranního panelu. Užitečné pro odkazování na vaši wiki, řídicí panely v jiných nástrojích nebo na jakoukoli adresu URL, kterou váš tým pravidelně používá.
## Command menu
## Nabídka příkazů
Press `Cmd+K` (or `Ctrl+K`) to open the command menu — a quick-access search bar for jumping to any record, view, or action without navigating the sidebar.
Stiskněte `Cmd+K` (nebo `Ctrl+K`) pro otevření nabídky příkazů — rychlá vyhledávací lišta pro přechod na libovolný záznam, zobrazení nebo akci bez procházení postranního panelu.

View file

@ -1,45 +1,45 @@
---
title: Rozvržení
description: Customize how you navigate, browse, and view records in Twenty.
description: Přizpůsobte si, jak v Twenty navigujete, procházíte a zobrazujete záznamy.
---
Twenty's layout is customizable at three levels: how you navigate the app, how you browse lists of records, and what you see when you open an individual record.
Rozvržení Twenty je přizpůsobitelné na třech úrovních: jak v aplikaci navigujete, jak procházíte seznamy záznamů a co vidíte při otevření jednotlivého záznamu.
## Navigace
The left sidebar is fully customizable. Můžete:
Levý postranní panel je plně přizpůsobitelný. Můžete:
* **Reorder items** by dragging and dropping
* **Create folders** to group related objects and views
* **Hide objects** you don't use
* **Add custom links** to external tools
* **Pin favorites** for quick access to views, records, or searches
* **Změňte pořadí položek** přetažením
* **Vytvářejte složky** pro seskupení souvisejících objektů a zobrazení
* **Skryjte objekty**, které nepoužíváte
* **Přidejte vlastní odkazy** na externí nástroje
* **Připněte oblíbené** pro rychlý přístup k zobrazením, záznamům nebo vyhledáváním
[Navigation reference →](/l/cs/user-guide/layout/capabilities/navigation)
[Referenční příručka k navigaci →](/l/cs/user-guide/layout/capabilities/navigation)
## Zobrazení
Views control how lists of records are displayed. Twenty supports three view types:
Zobrazení určují, jak se zobrazují seznamy záznamů. Twenty podporuje tři typy zobrazení:
| Pohled | Best for |
| ------------ | ---------------------------------------------------------------------- |
| **Table** | Working with many records at once — spreadsheet-style rows and columns |
| **Kanban** | Pipeline tracking — drag-and-drop cards organized by stage |
| **Calendar** | Time-based planning — records plotted by a date field |
| Pohled | Vhodné pro |
| ------------ | ----------------------------------------------------------------- |
| **Tabulka** | Práce s mnoha záznamy najednou — řádky a sloupce ve stylu tabulky |
| **Kanban** | Sledování pipeline — karty přetahované a uspořádané podle fází |
| **Kalendář** | Plánování v čase — záznamy zobrazené podle pole s datem |
Each view saves its own filters, sorting, field visibility, and grouping configuration. Views can be shared with the workspace or kept private.
Každé zobrazení si ukládá vlastní filtry, řazení, viditelnost polí a nastavení seskupování. Zobrazení lze sdílet v pracovním prostoru nebo je ponechat soukromá.
[Table views →](/l/cs/user-guide/views-pipelines/capabilities/table-views) · [Kanban views →](/l/cs/user-guide/views-pipelines/capabilities/kanban-views) · [Calendar view →](/l/cs/user-guide/views-pipelines/capabilities/calendar-view)
[Zobrazení tabulky →](/l/cs/user-guide/views-pipelines/capabilities/table-views) · [Zobrazení Kanban →](/l/cs/user-guide/views-pipelines/capabilities/kanban-views) · [Zobrazení kalendáře →](/l/cs/user-guide/views-pipelines/capabilities/calendar-view)
## Record pages
## Stránky záznamů
When you open a record, the detail page is built from configurable tabs and widgets. Můžete:
Po otevření záznamu je stránka detailu tvořena konfigurovatelnými kartami a widgety. Můžete:
* **Add, remove, and reorder tabs** on any record type
* **Configure widgets** — fields, related records, emails, timeline, calendar, tasks, notes, files, charts, iframes, and more
* **Drag and resize widgets** on a grid layout
* **Control field visibility** per widget
* **Přidávejte, odebírejte a měňte pořadí karet** u libovolného typu záznamu
* **Nastavujte widgety** — pole, související záznamy, e-maily, časová osa, kalendář, úkoly, poznámky, soubory, grafy, iframes a další
* **Přetahujte a měňte velikost widgetů** v mřížkovém rozložení
* **Řiďte viditelnost polí** pro jednotlivé widgety
Enter layout customization mode from the command menu (`Cmd+K` → "Edit record page layout").
Přejděte do režimu přizpůsobení rozvržení z nabídky příkazů (`Cmd+K` → "Upravit rozvržení stránky záznamu").
[Record pages reference →](/l/cs/user-guide/layout/capabilities/record-pages)
[Referenční příručka ke stránkám záznamů →](/l/cs/user-guide/layout/capabilities/record-pages)

View file

@ -1,6 +1,6 @@
---
title: CLI & Testing
description: CLI commands, testing setup, public assets, npm packages, remotes, and CI configuration.
title: CLI & Tests
description: CLI-Befehle, Test-Setup, öffentliche Assets, npm-Pakete, Remotes und CI-Konfiguration.
icon: terminal
---

View file

@ -100,17 +100,17 @@ Notizen:
Wenn Sie planen, [Ihre App zu veröffentlichen](/l/de/developers/extend/apps/publishing), steuern diese optionalen Felder, wie Ihre App im Marktplatz erscheint:
| Feld | Beschreibung |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| `author` | Name des Autors oder des Unternehmens |
| `category` | App-Kategorie für die Filterung im Marktplatz |
| `logoUrl` | Pfad zu Ihrem App-Logo (z. B. `public/logo.png`) |
| `screenshots` | Array von Screenshot-Pfaden (z. B. `public/screenshot-1.png`) |
| `aboutDescription` | Längere Markdown-Beschreibung für den Tab "Info". Wenn weggelassen, verwendet der Marketplace die `README.md` des Pakets von npm |
| `websiteUrl` | Link zu Ihrer Website |
| `termsUrl` | Link zu den Nutzungsbedingungen |
| `emailSupport` | Support-E-Mail-Adresse |
| `issueReportUrl` | Link zum Issue-Tracker |
| Feld | Beschreibung |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------- |
| `author` | Name des Autors oder des Unternehmens |
| `category` | App-Kategorie für die Filterung im Marktplatz |
| `logoUrl` | Pfad zu Ihrem App-Logo (z. B. `public/logo.png`) |
| `screenshots` | Array von Screenshot-Pfaden (z. B. `public/screenshot-1.png`) |
| `aboutDescription` | Längere Markdown-Beschreibung für den Tab "Info". Wenn weggelassen, verwendet der Marktplatz die `README.md` des Pakets von npm |
| `websiteUrl` | Link zu Ihrer Website |
| `termsUrl` | Link zu den Nutzungsbedingungen |
| `emailSupport` | Support-E-Mail-Adresse |
| `issueReportUrl` | Link zum Issue-Tracker |
#### Rollen und Berechtigungen

View file

@ -4,7 +4,7 @@ description: Build React components that render inside Twenty's UI with sandboxe
icon: window-maximize
---
Frontend-Komponenten sind React-Komponenten, die direkt innerhalb der Twenty-UI gerendert werden. Sie laufen in einem **isolierten Web Worker** unter Verwendung von Remote DOM — Ihr Code wird in einer Sandbox ausgeführt, rendert jedoch nativ auf der Seite, nicht in einem iframe.
Front-Komponenten sind React-Komponenten, die direkt innerhalb der Twenty-UI gerendert werden. Sie laufen in einem **isolierten Web Worker** unter Verwendung von Remote DOM — Ihr Code wird in einer Sandbox ausgeführt, rendert jedoch nativ auf der Seite, nicht in einem iframe.
## Wo Front-Komponenten verwendet werden können
@ -15,7 +15,7 @@ Front-Komponenten können an zwei Stellen innerhalb von Twenty gerendert werden:
## Einfaches Beispiel
Der schnellste Weg, eine Frontend-Komponente in Aktion zu sehen, ist, sie als Befehl zu registrieren. Das Hinzufügen eines `command`-Felds mit `isPinned: true` lässt sie als Schnellaktionsschaltfläche oben rechts auf der Seite erscheinen — kein Seitenlayout erforderlich:
Der schnellste Weg, eine Front-Komponente in Aktion zu sehen, ist, sie als Befehl zu registrieren. Das Hinzufügen eines `command`-Felds mit `isPinned: true` lässt sie als Schnellaktionsschaltfläche oben rechts auf der Seite erscheinen — kein Seitenlayout erforderlich:
```tsx src/front-components/hello-world.tsx
import { defineFrontComponent } from 'twenty-sdk/define';
@ -64,9 +64,9 @@ Klicken Sie darauf, um die Komponente inline zu rendern.
| `isHeadless` | Nein | Auf `true` setzen, wenn die Komponente keine sichtbare UI hat (siehe unten) |
| `command` | Nein | Die Komponente als Befehl registrieren (siehe unten [Befehlsoptionen](#command-options)) |
## Eine Frontend-Komponente auf einer Seite platzieren
## Eine Front-Komponente auf einer Seite platzieren
Über Befehle hinaus können Sie eine Frontend-Komponente direkt in eine Datensatzseite einbetten, indem Sie sie als Widget in einem **Seitenlayout** hinzufügen. Details finden Sie im Abschnitt [definePageLayout](/l/de/developers/extend/apps/skills-and-agents#definepagelayout).
Über Befehle hinaus können Sie eine Front-Komponente direkt in eine Datensatzseite einbetten, indem Sie sie als Widget in einem **Seitenlayout** hinzufügen. Details finden Sie im Abschnitt [definePageLayout](/l/de/developers/extend/apps/skills-and-agents#definepagelayout).
## Headless vs. Nicht-Headless
@ -224,12 +224,12 @@ Verfügbare Hooks:
| --------------------------------------------- | -------------------- | --------------------------------------------------------------------------- |
| `useUserId()` | `string` oder `null` | Die ID des aktuellen Benutzers |
| `useRecordId()` | `string` oder `null` | Die ID des aktuellen Datensatzes (wenn auf einer Datensatzseite platziert) |
| `useFrontComponentId()` | `Zeichenkette` | Die ID dieser Komponenteninstanz |
| `useFrontComponentId()` | `string` | Die ID dieser Komponenteninstanz |
| `useFrontComponentExecutionContext(selector)` | variiert | Zugriff auf den vollständigen Ausführungskontext mit einer Selektorfunktion |
## Host-Kommunikations-API
Frontend-Komponenten können Navigation, Modals und Benachrichtigungen mittels Funktionen aus `twenty-sdk` auslösen:
Front-Komponenten können Navigation, Modals und Benachrichtigungen mittels Funktionen aus `twenty-sdk` auslösen:
| Funktion | Beschreibung |
| ----------------------------------------------- | ----------------------------------------- |
@ -334,20 +334,20 @@ export default defineFrontComponent({
**Kontextvariablen** — sie repräsentieren den aktuellen Zustand der Seite:
| Variable | Typ | Beschreibung |
| ------------------------------ | -------------- | --------------------------------------------------------------- |
| `pageType` | `Zeichenkette` | Aktueller Seitentyp (z. B. 'RecordIndexPage', 'RecordShowPage') |
| `isInSidePanel` | `boolean` | Ob die Komponente in einem Seitenpanel gerendert wird |
| `numberOfSelectedRecords` | `number` | Anzahl der aktuell ausgewählten Datensätze |
| `isSelectAll` | `boolean` | Ob „Alle auswählen“ aktiv ist |
| `selectedRecords` | `array` | Die ausgewählten Datensatzobjekte |
| `favoriteRecordIds` | `array` | IDs der favorisierten Datensätze |
| `objectPermissions` | `object` | Berechtigungen für den aktuellen Objekttyp |
| `targetObjectReadPermissions` | `object` | Leseberechtigungen für das Zielobjekt |
| `targetObjectWritePermissions` | `object` | Schreibberechtigungen für das Zielobjekt |
| `featureFlags` | `object` | Aktive Feature-Flags |
| `objectMetadataItem` | `object` | Metadaten des aktuellen Objekttyps |
| `hasAnySoftDeleteFilterOnView` | `boolean` | Ob die aktuelle Ansicht einen Soft-Delete-Filter hat |
| Variable | Typ | Beschreibung |
| ------------------------------ | --------- | --------------------------------------------------------------- |
| `pageType` | `string` | Aktueller Seitentyp (z. B. 'RecordIndexPage', 'RecordShowPage') |
| `isInSidePanel` | `boolean` | Ob die Komponente in einem Seitenpanel gerendert wird |
| `numberOfSelectedRecords` | `number` | Anzahl der aktuell ausgewählten Datensätze |
| `isSelectAll` | `boolean` | Ob „Alle auswählen“ aktiv ist |
| `selectedRecords` | `array` | Die ausgewählten Datensatzobjekte |
| `favoriteRecordIds` | `array` | IDs der favorisierten Datensätze |
| `objectPermissions` | `object` | Berechtigungen für den aktuellen Objekttyp |
| `targetObjectReadPermissions` | `object` | Leseberechtigungen für das Zielobjekt |
| `targetObjectWritePermissions` | `object` | Schreibberechtigungen für das Zielobjekt |
| `featureFlags` | `object` | Aktive Feature-Flags |
| `objectMetadataItem` | `object` | Metadaten des aktuellen Objekttyps |
| `hasAnySoftDeleteFilterOnView` | `boolean` | Ob die aktuelle Ansicht einen Soft-Delete-Filter hat |
**Operatoren** — Variablen zu booleschen Ausdrücken kombinieren:
@ -370,7 +370,7 @@ export default defineFrontComponent({
## Öffentliche Assets
Frontend-Komponenten können mit `getPublicAssetUrl` auf Dateien aus dem `public/`-Verzeichnis der App zugreifen:
Front-Komponenten können mit `getPublicAssetUrl` auf Dateien aus dem `public/`-Verzeichnis der App zugreifen:
```tsx
import { defineFrontComponent, getPublicAssetUrl } from 'twenty-sdk/define';
@ -388,7 +388,7 @@ Details finden Sie im Abschnitt [Öffentliche Assets](/l/de/developers/extend/ap
## Styling
Frontend-Komponenten unterstützen mehrere Styling-Ansätze. Sie können verwenden:
Front-Komponenten unterstützen mehrere Styling-Ansätze. Sie können verwenden:
* **Inline-Styles** — `style={{ color: 'red' }}`
* **Twenty-UI-Komponenten** — Import aus `twenty-sdk/ui` (Button, Tag, Status, Chip, Avatar und mehr)

View file

@ -535,12 +535,12 @@ console.log(uploadedFile);
// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' }
```
| Parameter | Typ | Beschreibung |
| ---------------------------------- | -------------- | --------------------------------------------------------------------- |
| `fileBuffer` | `Buffer` | Der Rohinhalt der Datei |
| `filename` | `Zeichenkette` | Der Name der Datei (wird für Speicherung und Anzeige verwendet) |
| `contentType` | `Zeichenkette` | MIME-Typ (standardmäßig `application/octet-stream`, wenn weggelassen) |
| `fieldMetadataUniversalIdentifier` | `Zeichenkette` | Der `universalIdentifier` des Dateityp-Felds in Ihrem Objekt |
| Parameter | Typ | Beschreibung |
| ---------------------------------- | -------- | --------------------------------------------------------------------- |
| `fileBuffer` | `Buffer` | Der Rohinhalt der Datei |
| `filename` | `string` | Der Name der Datei (wird für Speicherung und Anzeige verwendet) |
| `contentType` | `string` | MIME-Typ (standardmäßig `application/octet-stream`, wenn weggelassen) |
| `fieldMetadataUniversalIdentifier` | `string` | Der `universalIdentifier` des Dateityp-Felds in Ihrem Objekt |
Hauptpunkte:
* Sie verwendet den `universalIdentifier` des Feldes (nicht dessen arbeitsbereichsspezifische ID), sodass Ihr Upload-Code in jedem Arbeitsbereich funktioniert, in dem Ihre App installiert ist.

View file

@ -42,7 +42,7 @@ Hauptpunkte:
</Accordion>
<Accordion title="defineAgent" description="KI-Agenten mit benutzerdefinierten Prompts definieren">
Agenten sind KI-Assistenten, die innerhalb Ihres Workspaces leben. Verwenden Sie `defineAgent()`, um Agenten mit einem benutzerdefinierten System-Prompt zu erstellen:
Agenten sind KI-Assistenten, die innerhalb Ihres Arbeitsbereichs leben. Verwenden Sie `defineAgent()`, um Agenten mit einem benutzerdefinierten System-Prompt zu erstellen:
```ts src/agents/example-agent.ts
import { defineAgent } from 'twenty-sdk/define';
@ -58,7 +58,7 @@ export default defineAgent({
```
Hauptpunkte:
* `name` ist die eindeutige Kennzeichnungs-Zeichenfolge für den Agenten (kebab-case empfohlen).
* `name` ist eine eindeutige Kennung (als Zeichenfolge) für den Agenten (kebab-case empfohlen).
* `label` ist der in der UI angezeigte Anzeigename.
* `prompt` ist der System-Prompt, der das Verhalten des Agenten definiert.
* `description` (optional) liefert Kontext dazu, was der Agent tut.

View file

@ -5,26 +5,86 @@ icon: arrow-up-right-dots
## Allgemeine Richtlinien
**Stellen Sie immer sicher, dass Sie Ihre Datenbank sichern, bevor Sie mit dem Upgrade-Prozess beginnen**, indem Sie `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql` ausführen.
**Always back up your database before starting the upgrade process** by running:
Um das Backup wiederherzustellen, führen Sie `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}` aus.
```bash
docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql
```
Wenn Sie Docker Compose verwendet haben, befolgen Sie diese Schritte:
To restore from backup:
1. Schalten Sie Twenty in einem Terminal auf dem Host, auf dem Twenty läuft, mit `docker compose down` aus.
```bash
cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}
```
2. Aktualisieren Sie die Version, indem Sie den `TAG`-Wert in der .env-Datei in der Nähe Ihrer docker-compose ändern. (Wir empfehlen die Verwendung der Version `major.minor`, wie z.B. `v0.53`)
If you use Docker Compose, follow these steps:
3. Schalten Sie Twenty mit `docker compose up -d` wieder ein.
1. Stop Twenty: `docker compose down`
2. Change the `TAG` value in the `.env` file next to your `docker-compose.yml`
3. Start Twenty: `docker compose up -d`
**Stellen Sie sicher, dass Sie nach jeder aktualisierten Version ein nicht-korrumpiertes Backup haben.**
The server runs all required upgrade migrations automatically on startup. No manual command is needed.
## Versionsspezifische Upgrade-Schritte
## Cross-version upgrades (v1.22+)
## After v1.21
Starting from **v1.22**, Twenty supports cross-version upgrades. You can jump directly from any supported version to the latest release without stepping through each intermediate version.
We know support sequential upgrades. You don't need to go through each version one by one.
For example, upgrading from v1.22 straight to v2.0 is fully supported.
## Before v1.21
## Checking upgrade status
Make sure to go through every major tagged version when upgrading (upgrade v1.6.x to v.7.y, then v.7.y to v.8.z, etc.).
The `upgrade:status` command lets you inspect the current state of your instance and workspace migrations. It is useful for debugging upgrade issues or when filing a support request.
Run it from the server container:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status
```
Beispielausgabe:
```sh
APP_VERSION: v1.23.0
Instance
Inferred version: 1.23.0
Latest command: 1.23.0_DropWorkspaceVersionColumnFastInstanceCommand_1785000000000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:43:58.823Z
Workspace
Apple (20202020-1c25-4d02-bf25-6aeccf7ea419)
Inferred version: 1.23.0
Latest command: 1.23.0_UpdateGlobalObjectContextCommandMenuItemsCommand_1780000005000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:44:09.361Z
Summary
Instance: Up to date
Workspaces: 1 up to date, 0 behind, 0 failed (1 total)
```
### Optionen
| Flag | Beschreibung |
| ------------------------- | ---------------------------------------------------------------- |
| `-w, --workspace-id <id>` | Filter to a specific workspace. Can be passed multiple times. |
| `-f, --failed-only` | Hide up-to-date workspaces, only show behind and failed entries. |
## Fehlerbehebung
If the upgrade fails on some workspaces, the server will not advance past the failing step. Restarting the server (`docker compose up -d`) will retry the upgrade from where it left off.
To quickly identify problems, run:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status --failed-only
```
This shows only workspaces that are behind or have failed, along with the error message for each failure.
## Before v1.22
If your instance is older than v1.22, you must upgrade incrementally through each major tagged version (v1.6 to v1.7, then v1.7 to v1.8, and so on) until you reach v1.22. From there, you can jump directly to the latest version.

View file

@ -33,7 +33,7 @@ import { CardTitle } from "/snippets/card-title.mdx"
<Card href="/l/de/user-guide/layout/overview" img="/images/user-guide/halftone/layout.png">
<CardTitle>Layout</CardTitle>
Navigation, views, and record page customization.
Navigation, Ansichten und Anpassung der Datensatzseite.
</Card>
<Card href="/l/de/user-guide/dashboards/overview" img="/images/user-guide/halftone/dashboards.png">

View file

@ -1,32 +1,32 @@
---
title: Navigation
description: Customize the left sidebar to match how your team works.
description: Passen Sie die linke Seitenleiste an die Arbeitsweise Ihres Teams an.
---
The left sidebar is your primary way to move around Twenty. It's fully customizable — you can reorganize it to match your workflow without touching any settings page.
Die linke Seitenleiste ist Ihre wichtigste Möglichkeit, sich in Twenty zu bewegen. Sie ist vollständig anpassbar — Sie können sie neu organisieren, damit sie zu Ihrem Workflow passt, ohne eine Einstellungsseite zu öffnen.
## Reordering items
## Einträge neu anordnen
Drag and drop any item in the sidebar to change its position. The order is saved per user, so each team member can arrange their own sidebar.
Ziehen Sie beliebige Einträge in der Seitenleiste per Drag-and-drop, um ihre Position zu ändern. Die Reihenfolge wird pro Benutzer gespeichert, sodass jedes Teammitglied seine eigene Seitenleiste anordnen kann.
## Ordner
Group related items into folders. For example, you might create a "Sales" folder containing your pipeline views, a "Support" folder for tickets, or an "Operations" folder for internal objects.
Gruppieren Sie zusammengehörige Einträge in Ordnern. Sie könnten beispielsweise einen Ordner "Vertrieb" mit Ihren Pipeline-Ansichten erstellen, einen Ordner "Support" für Tickets oder einen Ordner "Betrieb" für interne Objekte.
To create a folder, right-click in the sidebar or use the `+` button.
Um einen Ordner zu erstellen, klicken Sie mit der rechten Maustaste in die Seitenleiste oder verwenden Sie die Schaltfläche `+`.
## Hiding objects
## Objekte ausblenden
Objects you don't use can be hidden from the sidebar. They're not deleted — they're just out of the way. You can show them again anytime from Settings > Data Model.
Objekte, die Sie nicht verwenden, können aus der Seitenleiste ausgeblendet werden. Sie werden nicht gelöscht — sie sind nur aus dem Weg. Sie können sie jederzeit unter Einstellungen > Datenmodell wieder einblenden.
## Favoriten
Pin views, records, or searches to the Favorites section at the top of the sidebar for one-click access. Favorites are personal — each user manages their own.
Heften Sie Ansichten, Datensätze oder Suchvorgänge im Bereich Favoriten oben in der Seitenleiste an, um mit einem Klick darauf zuzugreifen. Favoriten sind persönlich — jeder Nutzer verwaltet seine eigenen.
## Custom links
## Benutzerdefinierte Links
Add links to external tools directly in the sidebar. Useful for linking to your wiki, dashboards in other tools, or any URL your team uses regularly.
Fügen Sie Links zu externen Tools direkt in der Seitenleiste hinzu. Nützlich, um auf Ihr Wiki, Dashboards in anderen Tools oder eine beliebige URL zu verlinken, die Ihr Team regelmäßig verwendet.
## Command menu
## Befehlsmenü
Press `Cmd+K` (or `Ctrl+K`) to open the command menu — a quick-access search bar for jumping to any record, view, or action without navigating the sidebar.
Drücken Sie `Cmd+K` (oder `Ctrl+K`), um das Befehlsmenü zu öffnen — eine Suchleiste für den Schnellzugriff, mit der Sie zu jedem Datensatz, jeder Ansicht oder Aktion springen können, ohne durch die Seitenleiste zu navigieren.

View file

@ -1,45 +1,45 @@
---
title: Layout
description: Customize how you navigate, browse, and view records in Twenty.
description: Passen Sie die Navigation, das Durchsuchen und die Anzeige von Datensätzen in Twenty an.
---
Twenty's layout is customizable at three levels: how you navigate the app, how you browse lists of records, and what you see when you open an individual record.
Das Layout von Twenty ist auf drei Ebenen anpassbar: wie Sie in der App navigieren, wie Sie Listen von Datensätzen durchsuchen und was Sie sehen, wenn Sie einen einzelnen Datensatz öffnen.
## Navigation
The left sidebar is fully customizable. Sie können:
Die linke Seitenleiste ist vollständig anpassbar. Sie können:
* **Reorder items** by dragging and dropping
* **Create folders** to group related objects and views
* **Hide objects** you don't use
* **Add custom links** to external tools
* **Pin favorites** for quick access to views, records, or searches
* **Elemente neu anordnen** durch Ziehen und Ablegen
* **Ordner erstellen**, um verwandte Objekte und Ansichten zu gruppieren
* **Objekte ausblenden**, die Sie nicht verwenden
* **Benutzerdefinierte Links hinzufügen** zu externen Tools
* **Favoriten anheften** für schnellen Zugriff auf Ansichten, Datensätze oder Suchen
[Navigation reference →](/l/de/user-guide/layout/capabilities/navigation)
[Navigationsreferenz →](/l/de/user-guide/layout/capabilities/navigation)
## Ansichten
Views control how lists of records are displayed. Twenty supports three view types:
Ansichten steuern, wie Listen von Datensätzen angezeigt werden. Twenty unterstützt drei Ansichtstypen:
| Ansicht | Best for |
| ------------ | ---------------------------------------------------------------------- |
| **Table** | Working with many records at once — spreadsheet-style rows and columns |
| **Kanban** | Pipeline tracking — drag-and-drop cards organized by stage |
| **Calendar** | Time-based planning — records plotted by a date field |
| Ansicht | Am besten geeignet für |
| ------------ | -------------------------------------------------------------------------------------------------- |
| **Tabelle** | Arbeiten mit vielen Datensätzen gleichzeitig — Zeilen und Spalten wie in einer Tabellenkalkulation |
| **Kanban** | Pipeline-Verfolgung — Karten per Ziehen und Ablegen, organisiert nach Phase |
| **Kalender** | Zeitbasierte Planung — Datensätze anhand eines Datumsfelds angeordnet |
Each view saves its own filters, sorting, field visibility, and grouping configuration. Views can be shared with the workspace or kept private.
Jede Ansicht speichert ihre eigenen Filter, Sortierung, Feldsichtbarkeit und Gruppierungskonfiguration. Ansichten können mit dem Arbeitsbereich geteilt oder privat gehalten werden.
[Table views →](/l/de/user-guide/views-pipelines/capabilities/table-views) · [Kanban views →](/l/de/user-guide/views-pipelines/capabilities/kanban-views) · [Calendar view →](/l/de/user-guide/views-pipelines/capabilities/calendar-view)
[Tabellenansichten →](/l/de/user-guide/views-pipelines/capabilities/table-views) · [Kanban-Ansichten →](/l/de/user-guide/views-pipelines/capabilities/kanban-views) · [Kalenderansicht →](/l/de/user-guide/views-pipelines/capabilities/calendar-view)
## Record pages
## Datensatzseiten
When you open a record, the detail page is built from configurable tabs and widgets. Sie können:
Wenn Sie einen Datensatz öffnen, wird die Detailseite aus konfigurierbaren Registerkarten und Widgets aufgebaut. Sie können:
* **Add, remove, and reorder tabs** on any record type
* **Configure widgets** — fields, related records, emails, timeline, calendar, tasks, notes, files, charts, iframes, and more
* **Drag and resize widgets** on a grid layout
* **Control field visibility** per widget
* **Registerkarten hinzufügen, entfernen und neu anordnen** für jeden Datensatztyp
* **Widgets konfigurieren** — Felder, verwandte Datensätze, E-Mails, Zeitleiste, Kalender, Aufgaben, Notizen, Dateien, Diagramme, iframes und mehr
* **Widgets ziehen und in der Größe ändern** auf einem Rasterlayout
* **Feldsichtbarkeit pro Widget steuern**
Enter layout customization mode from the command menu (`Cmd+K` → "Edit record page layout").
Wechseln Sie in den Layout-Anpassungsmodus über das Befehlsmenü (`Cmd+K` → "Layout der Datensatzseite bearbeiten").
[Record pages reference →](/l/de/user-guide/layout/capabilities/record-pages)
[Referenz zu Datensatzseiten →](/l/de/user-guide/layout/capabilities/record-pages)

View file

@ -1,6 +1,6 @@
---
title: CLI & Testing
description: CLI commands, testing setup, public assets, npm packages, remotes, and CI configuration.
title: CLI e test
description: Comandi CLI, configurazione dei test, asset pubblici, pacchetti npm, remoti e configurazione CI.
icon: terminal
---

View file

@ -60,9 +60,9 @@ Fai clic per renderizzare il componente in linea.
| `universalIdentifier` | Sì | ID univoco stabile per questo componente |
| `component` | Sì | Una funzione di componente React |
| `name` | No | Nome visualizzato |
| `descrizione` | No | Descrizione di ciò che fa il componente |
| `description` | No | Descrizione di ciò che fa il componente |
| `isHeadless` | No | Imposta su `true` se il componente non ha una UI visibile (vedi sotto) |
| `comando` | No | Registra il componente come comando (vedi [opzioni del comando](#command-options) sotto) |
| `command` | No | Registra il componente come comando (vedi [opzioni del comando](#command-options) sotto) |
## Posizionare un componente front-end su una pagina
@ -293,9 +293,9 @@ Aggiungere un campo `command` a `defineFrontComponent` registra il componente ne
| Campo | Obbligatorio | Descrizione |
| --------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `universalIdentifier` | Sì | ID univoco stabile per il comando |
| `etichetta` | Sì | Etichetta completa mostrata nel menu comandi (Cmd+K) |
| `label` | Sì | Etichetta completa mostrata nel menu comandi (Cmd+K) |
| `shortLabel` | No | Etichetta breve visualizzata sul pulsante di azione rapida fissato |
| `icona` | No | Nome dell'icona visualizzato accanto all'etichetta (ad es. `'IconBolt'`, `'IconSend'`) |
| `icon` | No | Nome dell'icona visualizzato accanto all'etichetta (ad es. `'IconBolt'`, `'IconSend'`) |
| `isPinned` | No | Quando `true`, mostra il comando come pulsante di azione rapida nell'angolo in alto a destra della pagina |
| `availabilityType` | No | Controlla dove compare il comando: `'GLOBAL'` (sempre disponibile), `'RECORD_SELECTION'` (solo quando sono selezionati dei record) o `'FALLBACK'` (mostrato quando nessun altro comando corrisponde) |
| `availabilityObjectUniversalIdentifier` | No | Limita il comando alle pagine di uno specifico tipo di oggetto (ad es. solo sui record Company) |
@ -338,15 +338,15 @@ export default defineFrontComponent({
| ------------------------------ | --------- | ------------------------------------------------------------------------ |
| `pageType` | `string` | Tipo di pagina corrente (ad es. `'RecordIndexPage'`, `'RecordShowPage'`) |
| `isInSidePanel` | `boolean` | Indica se il componente è renderizzato in un pannello laterale |
| `numberOfSelectedRecords` | `numero` | Numero di record attualmente selezionati |
| `numberOfSelectedRecords` | `number` | Numero di record attualmente selezionati |
| `isSelectAll` | `boolean` | Indica se "seleziona tutto" è attivo |
| `selectedRecords` | `array` | Gli oggetti dei record selezionati |
| `favoriteRecordIds` | `array` | ID dei record aggiunti ai preferiti |
| `objectPermissions` | `oggetto` | Autorizzazioni per il tipo di oggetto corrente |
| `targetObjectReadPermissions` | `oggetto` | Autorizzazioni di lettura per l'oggetto di destinazione |
| `targetObjectWritePermissions` | `oggetto` | Autorizzazioni di scrittura per l'oggetto di destinazione |
| `featureFlags` | `oggetto` | Flag delle funzionalità attivi |
| `objectMetadataItem` | `oggetto` | Metadati del tipo di oggetto corrente |
| `objectPermissions` | `object` | Autorizzazioni per il tipo di oggetto corrente |
| `targetObjectReadPermissions` | `object` | Autorizzazioni di lettura per l'oggetto di destinazione |
| `targetObjectWritePermissions` | `object` | Autorizzazioni di scrittura per l'oggetto di destinazione |
| `featureFlags` | `object` | Flag delle funzionalità attivi |
| `objectMetadataItem` | `object` | Metadati del tipo di oggetto corrente |
| `hasAnySoftDeleteFilterOnView` | `boolean` | Indica se la vista corrente ha un filtro di soft-delete |
**Operatori** — combinano variabili in espressioni booleane:

View file

@ -11,7 +11,7 @@ icon: robot
Apps can define AI capabilities that live inside the workspace — reusable skill instructions and agents with custom system prompts.
<AccordionGroup>
<Accordion title="defineSkill" description="Definisci le competenze dell'agente IA">
<Accordion title="defineSkill" description="Definisci le skill degli agenti IA">
Le skill definiscono istruzioni e capacità riutilizzabili che gli agenti IA possono utilizzare all'interno del tuo spazio di lavoro. Usa `defineSkill()` per definire skill con convalida integrata:

View file

@ -5,26 +5,86 @@ icon: arrow-up-right-dots
## Linee guida generali
**Assicurati sempre di eseguire il backup del database prima di iniziare il processo di aggiornamento** eseguendo `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
**Always back up your database before starting the upgrade process** by running:
Per ripristinare il backup, esegui `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
```bash
docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql
```
Se hai utilizzato Docker Compose, segui questi passaggi:
To restore from backup:
1. In un terminale, sull'host dove Twenty è in esecuzione, spegni Twenty: `docker compose down`
```bash
cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}
```
2. Aggiorna la versione modificando il valore `TAG` nel file .env vicino al tuo docker-compose. ( Si consiglia di utilizzare la versione `major.minor`, ad esempio `v0.53` )
If you use Docker Compose, follow these steps:
3. Riporta Twenty online con `docker compose up -d`
1. Stop Twenty: `docker compose down`
2. Change the `TAG` value in the `.env` file next to your `docker-compose.yml`
3. Start Twenty: `docker compose up -d`
**Assicurati che dopo ogni versione aggiornata tu abbia un backup non corrotto.**
The server runs all required upgrade migrations automatically on startup. No manual command is needed.
## Passaggi di aggiornamento specifici per la versione
## Cross-version upgrades (v1.22+)
## After v1.21
Starting from **v1.22**, Twenty supports cross-version upgrades. You can jump directly from any supported version to the latest release without stepping through each intermediate version.
We know support sequential upgrades. You don't need to go through each version one by one.
For example, upgrading from v1.22 straight to v2.0 is fully supported.
## Before v1.21
## Checking upgrade status
Make sure to go through every major tagged version when upgrading (upgrade v1.6.x to v.7.y, then v.7.y to v.8.z, etc.).
The `upgrade:status` command lets you inspect the current state of your instance and workspace migrations. It is useful for debugging upgrade issues or when filing a support request.
Run it from the server container:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status
```
Esempio di output:
```sh
APP_VERSION: v1.23.0
Instance
Inferred version: 1.23.0
Latest command: 1.23.0_DropWorkspaceVersionColumnFastInstanceCommand_1785000000000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:43:58.823Z
Workspace
Apple (20202020-1c25-4d02-bf25-6aeccf7ea419)
Inferred version: 1.23.0
Latest command: 1.23.0_UpdateGlobalObjectContextCommandMenuItemsCommand_1780000005000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:44:09.361Z
Summary
Instance: Up to date
Workspaces: 1 up to date, 0 behind, 0 failed (1 total)
```
### Opzioni
| Flag | Descrizione |
| ------------------------- | ---------------------------------------------------------------- |
| `-w, --workspace-id <id>` | Filter to a specific workspace. Can be passed multiple times. |
| `-f, --failed-only` | Hide up-to-date workspaces, only show behind and failed entries. |
## Risoluzione dei problemi
If the upgrade fails on some workspaces, the server will not advance past the failing step. Restarting the server (`docker compose up -d`) will retry the upgrade from where it left off.
To quickly identify problems, run:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status --failed-only
```
This shows only workspaces that are behind or have failed, along with the error message for each failure.
## Before v1.22
If your instance is older than v1.22, you must upgrade incrementally through each major tagged version (v1.6 to v1.7, then v1.7 to v1.8, and so on) until you reach v1.22. From there, you can jump directly to the latest version.

View file

@ -1,45 +1,45 @@
---
title: Disposizione
description: Customize how you navigate, browse, and view records in Twenty.
description: Personalizza il modo in cui navighi, esplori e visualizzi i record in Twenty.
---
Twenty's layout is customizable at three levels: how you navigate the app, how you browse lists of records, and what you see when you open an individual record.
Il layout di Twenty è personalizzabile su tre livelli: come navighi nell'app, come consulti gli elenchi di record e cosa vedi quando apri un singolo record.
## Navigazione
The left sidebar is fully customizable. Puoi:
La barra laterale sinistra è completamente personalizzabile. Puoi:
* **Reorder items** by dragging and dropping
* **Create folders** to group related objects and views
* **Hide objects** you don't use
* **Add custom links** to external tools
* **Pin favorites** for quick access to views, records, or searches
* **Riordina gli elementi** trascinandoli e rilasciandoli
* **Crea cartelle** per raggruppare oggetti e viste correlati
* **Nascondi gli oggetti** che non usi
* **Aggiungi collegamenti personalizzati** a strumenti esterni
* **Aggiungi ai preferiti** per accedere rapidamente a viste, record o ricerche
[Navigation reference →](/l/it/user-guide/layout/capabilities/navigation)
[Riferimento alla navigazione →](/l/it/user-guide/layout/capabilities/navigation)
## Viste
Views control how lists of records are displayed. Twenty supports three view types:
Le viste determinano come vengono visualizzati gli elenchi di record. Twenty supporta tre tipi di vista:
| Vista | Best for |
| ------------ | ---------------------------------------------------------------------- |
| **Table** | Working with many records at once — spreadsheet-style rows and columns |
| **Kanban** | Pipeline tracking — drag-and-drop cards organized by stage |
| **Calendar** | Time-based planning — records plotted by a date field |
| Vista | Ideale per |
| -------------- | ----------------------------------------------------------------------------------------- |
| **Tabella** | Lavorare con molti record contemporaneamente — righe e colonne in stile foglio di calcolo |
| **Kanban** | Monitoraggio della pipeline — schede da trascinare e rilasciare organizzate per fase |
| **Calendario** | Pianificazione basata sul tempo — record posizionati in base a un campo data |
Each view saves its own filters, sorting, field visibility, and grouping configuration. Views can be shared with the workspace or kept private.
Ogni vista salva i propri filtri, l'ordinamento, la visibilità dei campi e la configurazione del raggruppamento. Le viste possono essere condivise con lo spazio di lavoro o mantenute private.
[Table views →](/l/it/user-guide/views-pipelines/capabilities/table-views) · [Kanban views →](/l/it/user-guide/views-pipelines/capabilities/kanban-views) · [Calendar view →](/l/it/user-guide/views-pipelines/capabilities/calendar-view)
[Viste tabella →](/l/it/user-guide/views-pipelines/capabilities/table-views) · [Viste Kanban →](/l/it/user-guide/views-pipelines/capabilities/kanban-views) · [Vista calendario →](/l/it/user-guide/views-pipelines/capabilities/calendar-view)
## Record pages
## Pagine dei record
When you open a record, the detail page is built from configurable tabs and widgets. Puoi:
Quando apri un record, la pagina dei dettagli è composta da schede e widget configurabili. Puoi:
* **Add, remove, and reorder tabs** on any record type
* **Configure widgets** — fields, related records, emails, timeline, calendar, tasks, notes, files, charts, iframes, and more
* **Drag and resize widgets** on a grid layout
* **Control field visibility** per widget
* **Aggiungi, rimuovi e riordina le schede** su qualsiasi tipo di record
* **Configura i widget** — campi, record correlati, email, timeline, calendario, attività, note, file, grafici, iframe e altro
* **Trascina e ridimensiona i widget** in un layout a griglia
* **Controlla la visibilità dei campi** per ciascun widget
Enter layout customization mode from the command menu (`Cmd+K` → "Edit record page layout").
Accedi alla modalità di personalizzazione del layout dal menu comandi (`Cmd+K` → "Modifica layout della pagina del record").
[Record pages reference →](/l/it/user-guide/layout/capabilities/record-pages)
[Riferimento alle pagine dei record →](/l/it/user-guide/layout/capabilities/record-pages)

View file

@ -1,6 +1,6 @@
---
title: CLI & Testing
description: CLI commands, testing setup, public assets, npm packages, remotes, and CI configuration.
title: CLI e Testes
description: Comandos de CLI, configuração de testes, assets públicos, pacotes do npm, remotes e configuração de CI.
icon: terminal
---

View file

@ -235,7 +235,7 @@ Componentes de front-end podem acionar navegação, modais e notificações usan
| ----------------------------------------------- | ------------------------------------- |
| `navigate(to, params?, queryParams?, options?)` | Navegar para uma página no app |
| `openSidePanelPage(params)` | Abrir um painel lateral |
| `closeSidePanel()` | Fecha o painel lateral |
| `closeSidePanel()` | Fechar o painel lateral |
| `openCommandConfirmationModal(params)` | Mostrar um diálogo de confirmação |
| `enqueueSnackbar(params)` | Mostrar uma notificação do tipo toast |
| `unmountFrontComponent()` | Desmontar o componente |

View file

@ -11,7 +11,7 @@ icon: robot
Apps can define AI capabilities that live inside the workspace — reusable skill instructions and agents with custom system prompts.
<AccordionGroup>
<Accordion title="defineSkill" description="Define habilidades de agente de IA">
<Accordion title="defineSkill" description="Defina habilidades de agentes de IA">
As habilidades definem instruções e capacidades reutilizáveis que os agentes de IA podem usar no seu espaço de trabalho. Use `defineSkill()` para definir habilidades com validação integrada:

View file

@ -5,26 +5,86 @@ icon: arrow-up-right-dots
## Diretrizes gerais
**Certifique-se sempre de fazer backup do banco de dados antes de iniciar o processo de atualização** executando `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
**Always back up your database before starting the upgrade process** by running:
Para restaurar o backup, execute `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
```bash
docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql
```
Se você usou o Docker Compose, siga estas etapas:
To restore from backup:
1. No terminal, no host onde o Twenty está em execução, desligue o Twenty: `docker compose down`
```bash
cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}
```
2. Atualize a versão alterando o valor `TAG` no arquivo .env próximo ao seu docker-compose. (Recomendamos consumir a versão `major.minor` como `v0.53`)
If you use Docker Compose, follow these steps:
3. Traga o Twenty de volta ao ar com `docker compose up -d`
1. Stop Twenty: `docker compose down`
2. Change the `TAG` value in the `.env` file next to your `docker-compose.yml`
3. Start Twenty: `docker compose up -d`
**Certifique-se de que após cada versão atualizada você tenha um backup não corrompido.**
The server runs all required upgrade migrations automatically on startup. No manual command is needed.
## Etapas de atualização específicas da versão
## Cross-version upgrades (v1.22+)
## After v1.21
Starting from **v1.22**, Twenty supports cross-version upgrades. You can jump directly from any supported version to the latest release without stepping through each intermediate version.
We know support sequential upgrades. You don't need to go through each version one by one.
For example, upgrading from v1.22 straight to v2.0 is fully supported.
## Before v1.21
## Checking upgrade status
Make sure to go through every major tagged version when upgrading (upgrade v1.6.x to v.7.y, then v.7.y to v.8.z, etc.).
The `upgrade:status` command lets you inspect the current state of your instance and workspace migrations. It is useful for debugging upgrade issues or when filing a support request.
Run it from the server container:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status
```
Exemplo de saída:
```sh
APP_VERSION: v1.23.0
Instance
Inferred version: 1.23.0
Latest command: 1.23.0_DropWorkspaceVersionColumnFastInstanceCommand_1785000000000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:43:58.823Z
Workspace
Apple (20202020-1c25-4d02-bf25-6aeccf7ea419)
Inferred version: 1.23.0
Latest command: 1.23.0_UpdateGlobalObjectContextCommandMenuItemsCommand_1780000005000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:44:09.361Z
Summary
Instance: Up to date
Workspaces: 1 up to date, 0 behind, 0 failed (1 total)
```
### Opções
| Flag | Descrição |
| ------------------------- | ---------------------------------------------------------------- |
| `-w, --workspace-id <id>` | Filter to a specific workspace. Can be passed multiple times. |
| `-f, --failed-only` | Hide up-to-date workspaces, only show behind and failed entries. |
## Resolução de Problemas
If the upgrade fails on some workspaces, the server will not advance past the failing step. Restarting the server (`docker compose up -d`) will retry the upgrade from where it left off.
To quickly identify problems, run:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status --failed-only
```
This shows only workspaces that are behind or have failed, along with the error message for each failure.
## Before v1.22
If your instance is older than v1.22, you must upgrade incrementally through each major tagged version (v1.6 to v1.7, then v1.7 to v1.8, and so on) until you reach v1.22. From there, you can jump directly to the latest version.

View file

@ -1,45 +1,45 @@
---
title: Layout
description: Customize how you navigate, browse, and view records in Twenty.
description: Personalize a forma como navega, explora e visualiza registos na Twenty.
---
Twenty's layout is customizable at three levels: how you navigate the app, how you browse lists of records, and what you see when you open an individual record.
O layout da Twenty é personalizável em três níveis: a forma como navega na aplicação, como consulta listas de registos, e o que vê ao abrir um registo individual.
## Navegação
The left sidebar is fully customizable. Pode:
A barra lateral esquerda é totalmente personalizável. Pode:
* **Reorder items** by dragging and dropping
* **Create folders** to group related objects and views
* **Hide objects** you don't use
* **Add custom links** to external tools
* **Pin favorites** for quick access to views, records, or searches
* **Reordenar itens** arrastando e largando
* **Criar pastas** para agrupar objetos e vistas
* **Ocultar objetos** que não utiliza
* **Adicionar ligações personalizadas** a ferramentas externas
* **Fixar favoritos** para acesso rápido a vistas, registos ou pesquisas
[Navigation reference →](/l/pt/user-guide/layout/capabilities/navigation)
[Referência de navegação →](/l/pt/user-guide/layout/capabilities/navigation)
## Visualizações
Views control how lists of records are displayed. Twenty supports three view types:
As vistas controlam como as listas de registos são apresentadas. A Twenty suporta três tipos de vista:
| Vista | Best for |
| ------------ | ---------------------------------------------------------------------- |
| **Table** | Working with many records at once — spreadsheet-style rows and columns |
| **Kanban** | Pipeline tracking — drag-and-drop cards organized by stage |
| **Calendar** | Time-based planning — records plotted by a date field |
| Vista | Melhor para |
| -------------- | -------------------------------------------------------------------------------------------- |
| **Tabela** | Trabalhar com muitos registos de uma só vez — linhas e colunas ao estilo de folha de cálculo |
| **Kanban** | Acompanhamento do pipeline — cartões organizados por etapa, com arrastar e largar |
| **Calendário** | Planeamento baseado no tempo — registos apresentados segundo um campo de data |
Each view saves its own filters, sorting, field visibility, and grouping configuration. Views can be shared with the workspace or kept private.
Cada vista guarda os seus próprios filtros, ordenação, visibilidade de campos e configuração de agrupamento. As vistas podem ser partilhadas com o espaço de trabalho ou mantidas privadas.
[Table views →](/l/pt/user-guide/views-pipelines/capabilities/table-views) · [Kanban views →](/l/pt/user-guide/views-pipelines/capabilities/kanban-views) · [Calendar view →](/l/pt/user-guide/views-pipelines/capabilities/calendar-view)
[Vistas de tabela →](/l/pt/user-guide/views-pipelines/capabilities/table-views) · [Vistas Kanban →](/l/pt/user-guide/views-pipelines/capabilities/kanban-views) · [Vista de calendário →](/l/pt/user-guide/views-pipelines/capabilities/calendar-view)
## Record pages
## Páginas de Registos
When you open a record, the detail page is built from configurable tabs and widgets. Pode:
Ao abrir um registo, a página de detalhes é construída a partir de separadores e widgets configuráveis. Pode:
* **Add, remove, and reorder tabs** on any record type
* **Configure widgets** — fields, related records, emails, timeline, calendar, tasks, notes, files, charts, iframes, and more
* **Drag and resize widgets** on a grid layout
* **Control field visibility** per widget
* **Adicionar, remover e reordenar separadores** em qualquer tipo de registo
* **Configurar widgets** — campos, registos relacionados, e-mails, cronologia, calendário, tarefas, notas, ficheiros, gráficos, iframes e muito mais
* **Arrastar e redimensionar widgets** num layout em grelha
* **Controlar a visibilidade dos campos** por widget
Enter layout customization mode from the command menu (`Cmd+K` → "Edit record page layout").
Introduza o modo de personalização do layout a partir do menu de comandos (`Cmd+K` → "Editar o layout da página de registo").
[Record pages reference →](/l/pt/user-guide/layout/capabilities/record-pages)
[Referência das páginas de registos →](/l/pt/user-guide/layout/capabilities/record-pages)

View file

@ -304,7 +304,7 @@ yarn twenty typecheck
### Выполнение функций (`yarn twenty exec`)
Запустите функцию логики вручную, не вызывая ее через HTTP, cron или событие базы данных:
Запустите логическую функцию вручную, не вызывая её через HTTP, cron или событие базы данных:
```bash filename="Terminal"
# Execute by function name
@ -322,7 +322,7 @@ yarn twenty exec --postInstall
### Просмотр логов функций (`yarn twenty logs`)
Потоковая передача журналов выполнения функций логики вашего приложения:
Потоковая передача журналов выполнения логических функций вашего приложения:
```bash filename="Terminal"
# Stream all function logs
@ -375,7 +375,7 @@ yarn twenty remote switch <name>
## CI с GitHub Actions
Скэффолдер генерирует готовый к использованию workflow GitHub Actions в `.github/workflows/ci.yml`. Он автоматически запускает ваши интеграционные тесты при каждом пуше в `main` и в pull request'ах.
Скэффолдер генерирует готовый к использованию рабочий процесс GitHub Actions в `.github/workflows/ci.yml`. Он автоматически запускает ваши интеграционные тесты при каждом пуше в `main` и в pull request'ах.
Рабочий процесс:
@ -431,4 +431,4 @@ jobs:
Вам не нужно настраивать секреты — экшен `spawn-twenty-docker-image` запускает эфемерный сервер Twenty прямо в раннере и выводит данные для подключения. Секрет `GITHUB_TOKEN` предоставляется GitHub автоматически.
Чтобы закрепить конкретную версию Twenty вместо `latest`, измените переменную окружения `TWENTY_VERSION` в начале workflow.
Чтобы закрепить конкретную версию Twenty вместо `latest`, измените переменную окружения `TWENTY_VERSION` в начале рабочего процесса.

View file

@ -340,8 +340,8 @@ export default defineFrontComponent({
| `isInSidePanel` | `boolean` | Указывает, рендерится ли компонент в боковой панели |
| `numberOfSelectedRecords` | `number` | Количество выбранных в данный момент записей |
| `isSelectAll` | `boolean` | Активен ли режим "выбрать все" |
| `selectedRecords` | `массив` | Объекты выбранных записей |
| `favoriteRecordIds` | `массив` | ID избранных записей |
| `selectedRecords` | `array` | Объекты выбранных записей |
| `favoriteRecordIds` | `array` | ID избранных записей |
| `objectPermissions` | `object` | Разрешения для текущего типа объекта |
| `targetObjectReadPermissions` | `object` | Права на чтение для целевого объекта |
| `targetObjectWritePermissions` | `object` | Права на запись для целевого объекта |

View file

@ -11,7 +11,7 @@ icon: robot
Apps can define AI capabilities that live inside the workspace — reusable skill instructions and agents with custom system prompts.
<AccordionGroup>
<Accordion title="defineSkill" description="Определение навыков агента ИИ">
<Accordion title="defineSkill" description="Определяйте навыки ИИ-агентов">
Навыки определяют многократно используемые инструкции и возможности, которые агенты ИИ могут использовать в вашем рабочем пространстве. Используйте `defineSkill()` для определения навыков со встроенной валидацией:

View file

@ -5,26 +5,86 @@ icon: arrow-up-right-dots
## Общие рекомендации
**Всегда убедитесь, что сделали резервную копию вашей базы данных перед началом процесса обновления**, запустив `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
**Always back up your database before starting the upgrade process** by running:
Чтобы восстановить резервную копию, выполните команду `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
```bash
docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql
```
Если вы использовали Docker Compose, выполните следующие шаги:
To restore from backup:
1. В терминале на хосте, где работает Twenty, отключите Twenty: `docker compose down`.
```bash
cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}
```
2. Обновите версию, изменив значение `TAG` в файле .env рядом с вашим docker-compose. ( Мы рекомендуем использовать версии `major.minor`, такие как `v0.53`. )
If you use Docker Compose, follow these steps:
3. Верните Twenty в сеть с `docker compose up -d`.
1. Stop Twenty: `docker compose down`
2. Change the `TAG` value in the `.env` file next to your `docker-compose.yml`
3. Start Twenty: `docker compose up -d`
**Убедитесь, что после каждой обновленной версии у вас есть не поврежденная резервная копия.**
The server runs all required upgrade migrations automatically on startup. No manual command is needed.
## Специфические для версии шаги обновления
## Cross-version upgrades (v1.22+)
## After v1.21
Starting from **v1.22**, Twenty supports cross-version upgrades. You can jump directly from any supported version to the latest release without stepping through each intermediate version.
We know support sequential upgrades. You don't need to go through each version one by one.
For example, upgrading from v1.22 straight to v2.0 is fully supported.
## Before v1.21
## Checking upgrade status
Make sure to go through every major tagged version when upgrading (upgrade v1.6.x to v.7.y, then v.7.y to v.8.z, etc.).
The `upgrade:status` command lets you inspect the current state of your instance and workspace migrations. It is useful for debugging upgrade issues or when filing a support request.
Run it from the server container:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status
```
Пример результата:
```sh
APP_VERSION: v1.23.0
Instance
Inferred version: 1.23.0
Latest command: 1.23.0_DropWorkspaceVersionColumnFastInstanceCommand_1785000000000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:43:58.823Z
Workspace
Apple (20202020-1c25-4d02-bf25-6aeccf7ea419)
Inferred version: 1.23.0
Latest command: 1.23.0_UpdateGlobalObjectContextCommandMenuItemsCommand_1780000005000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:44:09.361Z
Summary
Instance: Up to date
Workspaces: 1 up to date, 0 behind, 0 failed (1 total)
```
### Настройки
| Flag | Описание |
| ------------------------- | ---------------------------------------------------------------- |
| `-w, --workspace-id <id>` | Filter to a specific workspace. Can be passed multiple times. |
| `-f, --failed-only` | Hide up-to-date workspaces, only show behind and failed entries. |
## Устранение неполадок
If the upgrade fails on some workspaces, the server will not advance past the failing step. Restarting the server (`docker compose up -d`) will retry the upgrade from where it left off.
To quickly identify problems, run:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status --failed-only
```
This shows only workspaces that are behind or have failed, along with the error message for each failure.
## Before v1.22
If your instance is older than v1.22, you must upgrade incrementally through each major tagged version (v1.6 to v1.7, then v1.7 to v1.8, and so on) until you reach v1.22. From there, you can jump directly to the latest version.

View file

@ -23,7 +23,7 @@ description: Настройте макет отдельных страниц с
| Виджет | Что отображает |
| ------------------------- | --------------------------------------------------------- |
| **Поля** | Поля записи, сгруппированные или по отдельности |
| **Связанные записи** | Таблица записей, связанных через связь |
| **Связанные записи** | Таблица записей, связанных отношением |
| **Электронные письма** | История электронных писем из подключенных учетных записей |
| **Календарь** | События календаря, связанные с записью |
| **Временная шкала** | История активности и событий |

View file

@ -1,45 +1,45 @@
---
title: Макет
description: Customize how you navigate, browse, and view records in Twenty.
description: Настройте навигацию, просмотр и отображение записей в Twenty.
---
Twenty's layout is customizable at three levels: how you navigate the app, how you browse lists of records, and what you see when you open an individual record.
Макет Twenty настраивается на трёх уровнях: как вы перемещаетесь по приложению, как просматриваете списки записей и что видите при открытии отдельной записи.
## Навигация
The left sidebar is fully customizable. Вы можете:
Левая боковая панель полностью настраиваемая. Вы можете:
* **Reorder items** by dragging and dropping
* **Create folders** to group related objects and views
* **Hide objects** you don't use
* **Add custom links** to external tools
* **Pin favorites** for quick access to views, records, or searches
* **Изменяйте порядок элементов**, перетаскивая их
* **Создавайте папки**, чтобы группировать связанные объекты и представления
* **Скрывайте объекты**, которые вы не используете
* **Добавляйте пользовательские ссылки** на внешние инструменты
* **Закрепляйте избранное** для быстрого доступа к представлениям, записям или поисковым запросам
[Navigation reference →](/l/ru/user-guide/layout/capabilities/navigation)
[Справочник по навигации →](/l/ru/user-guide/layout/capabilities/navigation)
## Представления
Views control how lists of records are displayed. Twenty supports three view types:
Представления определяют, как отображаются списки записей. Twenty поддерживает три типа представлений:
| Представление | Best for |
| ------------- | ---------------------------------------------------------------------- |
| **Table** | Working with many records at once — spreadsheet-style rows and columns |
| **Kanban** | Pipeline tracking — drag-and-drop cards organized by stage |
| **Calendar** | Time-based planning — records plotted by a date field |
| Представление | Лучше всего подходит для |
| ------------- | ------------------------------------------------------------------------------------------------ |
| **Таблица** | Работа с большим количеством записей одновременно — строки и столбцы в стиле электронной таблицы |
| **Канбан** | Отслеживание воронки — перетаскиваемые карточки, организованные по этапам |
| **Календарь** | Планирование во времени — записи отображаются по полю даты |
Each view saves its own filters, sorting, field visibility, and grouping configuration. Views can be shared with the workspace or kept private.
Каждое представление хранит свои фильтры, сортировку, видимость полей и настройки группировки. Представления можно сделать доступными во всём рабочем пространстве или оставить приватными.
[Table views →](/l/ru/user-guide/views-pipelines/capabilities/table-views) · [Kanban views →](/l/ru/user-guide/views-pipelines/capabilities/kanban-views) · [Calendar view →](/l/ru/user-guide/views-pipelines/capabilities/calendar-view)
[Представления «Таблица» →](/l/ru/user-guide/views-pipelines/capabilities/table-views) · [Канбан-представления →](/l/ru/user-guide/views-pipelines/capabilities/kanban-views) · [Представление «Календарь» →](/l/ru/user-guide/views-pipelines/capabilities/calendar-view)
## Record pages
## Страницы записей
When you open a record, the detail page is built from configurable tabs and widgets. Вы можете:
Когда вы открываете запись, страница сведений формируется из настраиваемых вкладок и виджетов. Вы можете:
* **Add, remove, and reorder tabs** on any record type
* **Configure widgets** — fields, related records, emails, timeline, calendar, tasks, notes, files, charts, iframes, and more
* **Drag and resize widgets** on a grid layout
* **Control field visibility** per widget
* **Добавляйте, удаляйте и меняйте порядок вкладок** для любого типа записи
* **Настраивайте виджеты** — поля, связанные записи, электронные письма, ленту активности, календарь, задачи, заметки, файлы, диаграммы, iframes и многое другое
* **Перетаскивайте и изменяйте размер виджетов** в сетке
* **Управляйте видимостью полей** для каждого виджета
Enter layout customization mode from the command menu (`Cmd+K` → "Edit record page layout").
Перейдите в режим настройки макета через командное меню (`Cmd+K` → "Редактировать макет страницы записи").
[Record pages reference →](/l/ru/user-guide/layout/capabilities/record-pages)
[Справочник по страницам записей →](/l/ru/user-guide/layout/capabilities/record-pages)

View file

@ -38,7 +38,7 @@ your-app/
| ------------------------ | ----------------------------------------- | ------------------------------------------------------------- |
| **Application** | App identity, permissions, variables | [Data Model](/l/tr/developers/extend/apps/data-model) |
| **Role** | Permission sets for objects and fields | [Data Model](/l/tr/developers/extend/apps/data-model) |
| **Nesne** | Custom data tables with fields | [Data Model](/l/tr/developers/extend/apps/data-model) |
| **Object** | Custom data tables with fields | [Data Model](/l/tr/developers/extend/apps/data-model) |
| **Alan** | Extend existing objects, define relations | [Data Model](/l/tr/developers/extend/apps/data-model) |
| **Logic Function** | Server-side TypeScript with triggers | [Mantıksal İşlevler](/l/tr/developers/extend/apps/logic-functions) |
| **Front Component** | Sandboxed React UI in Twenty's page | [Front Components](/l/tr/developers/extend/apps/front-components) |
@ -92,7 +92,7 @@ your-app/
<Card title="Düzen" icon="table-columns" href="/l/tr/developers/extend/apps/layout">
Views, navigation items, and record page layouts.
</Card>
<Card title="Beceriler ve Aracılar" icon="robot" href="/l/tr/developers/extend/apps/skills-and-agents">
<Card title="Beceriler ve Ajanlar" icon="robot" href="/l/tr/developers/extend/apps/skills-and-agents">
AI skills and agents with custom prompts.
</Card>
<Card title="CLI & Testing" icon="terminal" href="/l/tr/developers/extend/apps/cli-and-testing">

View file

@ -65,7 +65,7 @@ export default defineRole({
Her uygulamanın, şunları tanımlayan tam olarak bir adet `defineApplication` çağrısı olmalıdır:
* **Kimlik**: tanımlayıcılar, görünen ad ve açıklama.
* **İzinler**: işlevlerinin ve ön bileşenlerinin hangi rolü kullandığı.
* **İzinler**: işlevlerinin ve ön bileşenlerinin hangi rolü kullandığı.
* **(İsteğe bağlı) Değişkenler**: fonksiyonlarınıza ortam değişkenleri olarak sunulan anahtardeğer çiftleri.
* **(İsteğe bağlı) Kurulum öncesi / kurulum sonrası fonksiyonlar**: kurulumdan önce veya sonra çalışan mantık fonksiyonları.
@ -92,7 +92,7 @@ export default defineApplication({
Notlar:
* `universalIdentifier` alanları, size ait deterministik kimliklerdir. Bunları bir kez oluşturun ve senkronizasyonlar boyunca kararlı tutun.
* `applicationVariables`, fonksiyonlarınız ve ön bileşenleriniz için ortam değişkenlerine dönüşür (örn. `DEFAULT_RECIPIENT_NAME`, `process.env.DEFAULT_RECIPIENT_NAME` olarak kullanılabilir).
* `applicationVariables`, fonksiyonlarınız ve ön 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()` ile tanımlanmış bir role referans vermelidir (yukarıya bakın).
* Kurulum öncesi ve kurulum sonrası fonksiyonlar manifest derlemesi sırasında otomatik olarak algılanır — bunlara `defineApplication()` içinde referans vermeniz gerekmez.
@ -114,7 +114,7 @@ Eğer [uygulamanızı yayımlamayı](/l/tr/developers/extend/apps/publishing) pl
#### Roller ve izinler
`application-config.ts` içindeki `defaultRoleUniversalIdentifier`, uygulamanızın mantık fonksiyonları ve ön bileşenleri tarafından kullanılan varsayılan rolü belirtir. Ayrıntılar için yukarıdaki `defineRole` bölümüne bakın.
`application-config.ts` içindeki `defaultRoleUniversalIdentifier`, uygulamanızın mantık fonksiyonları ve ön bileşenleri tarafından kullanılan varsayılan rolü belirtir. Ayrıntılar için yukarıdaki `defineRole` bölümüne bakın.
* `TWENTY_APP_ACCESS_TOKEN` olarak enjekte edilen çalışma zamanı belirteci bu rolden türetilir.
* Türlendirilmiş istemci, o role tanınan izinlerle sınırlandırılır.

View file

@ -1,5 +1,5 @@
---
title: Beceriler ve Aracılar
title: Beceriler ve Ajanlar
description: Define AI skills and agents for your app.
icon: robot
---

View file

@ -5,26 +5,86 @@ icon: arrow-up-right-dots
## Genel kılavuzlar
**Yükseltme işlemine başlamadan önce veritabanınızı yedeklediğinizden emin olun**. Bunun için `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql` komutunu çalıştırın.
**Always back up your database before starting the upgrade process** by running:
Yedeği geri yüklemek için `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}` komutunu çalıştırın.
```bash
docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql
```
Docker Compose kullandıysanız, aşağıdaki adımları izleyin:
To restore from backup:
1. Yirmi'nin çalıştığı sunucuda bir terminalde, Twenty'yi kapatın: `docker compose down`
```bash
cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}
```
2. Sürümü yükseltmek için .env dosyanızdaki `TAG` değerini değiştirin. ( `v0.53` gibi `major.minor` sürümler tüketmenizi öneririz )
If you use Docker Compose, follow these steps:
3. Twenty'yi `docker compose up -d` ile tekrar çevrimiçi hale getirin.
1. Stop Twenty: `docker compose down`
2. Change the `TAG` value in the `.env` file next to your `docker-compose.yml`
3. Start Twenty: `docker compose up -d`
**Her bir yükseltme sonrasında bozulmamış bir yedeğiniz olduğundan emin olun.**
The server runs all required upgrade migrations automatically on startup. No manual command is needed.
## Sürüme özel yükseltme adımları
## Cross-version upgrades (v1.22+)
## After v1.21
Starting from **v1.22**, Twenty supports cross-version upgrades. You can jump directly from any supported version to the latest release without stepping through each intermediate version.
We know support sequential upgrades. You don't need to go through each version one by one.
For example, upgrading from v1.22 straight to v2.0 is fully supported.
## Before v1.21
## Checking upgrade status
Make sure to go through every major tagged version when upgrading (upgrade v1.6.x to v.7.y, then v.7.y to v.8.z, etc.).
The `upgrade:status` command lets you inspect the current state of your instance and workspace migrations. It is useful for debugging upgrade issues or when filing a support request.
Run it from the server container:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status
```
Örnek çıktı:
```sh
APP_VERSION: v1.23.0
Instance
Inferred version: 1.23.0
Latest command: 1.23.0_DropWorkspaceVersionColumnFastInstanceCommand_1785000000000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:43:58.823Z
Workspace
Apple (20202020-1c25-4d02-bf25-6aeccf7ea419)
Inferred version: 1.23.0
Latest command: 1.23.0_UpdateGlobalObjectContextCommandMenuItemsCommand_1780000005000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:44:09.361Z
Summary
Instance: Up to date
Workspaces: 1 up to date, 0 behind, 0 failed (1 total)
```
### Seçenekler
| Flag | Açıklama |
| ------------------------- | ---------------------------------------------------------------- |
| `-w, --workspace-id <id>` | Filter to a specific workspace. Can be passed multiple times. |
| `-f, --failed-only` | Hide up-to-date workspaces, only show behind and failed entries. |
## Sorun Giderme
If the upgrade fails on some workspaces, the server will not advance past the failing step. Restarting the server (`docker compose up -d`) will retry the upgrade from where it left off.
To quickly identify problems, run:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status --failed-only
```
This shows only workspaces that are behind or have failed, along with the error message for each failure.
## Before v1.22
If your instance is older than v1.22, you must upgrade incrementally through each major tagged version (v1.6 to v1.7, then v1.7 to v1.8, and so on) until you reach v1.22. From there, you can jump directly to the latest version.

View file

@ -7,45 +7,45 @@ Twenty'de bir kaydı açtığınızda, ayrıntı sayfası **sekmeler** ve **widg
## Sekmeler
Each record page can have multiple tabs — similar to tabs in a browser. Use them to organize different aspects of a record. For example, a Company record might have tabs for Overview, Communication, Tasks, and Files.
Her kayıt sayfasında, bir tarayıcıdaki sekmelere benzer şekilde, birden fazla sekme olabilir. Bir kaydın farklı yönlerini düzenlemek için bunları kullanın. Örneğin, bir Şirket kaydında Genel Bakış, İletişim, Görevler ve Dosyalar için sekmeler olabilir.
Şunları yapabilirsiniz:
* Add and remove tabs
* Rename tabs
* Reorder tabs by dragging
* Set which tab shows by default
* Sekmeleri ekleyip kaldırın
* Sekmeleri yeniden adlandırın
* Sekmeleri sürükleyerek yeniden sıralayın
* Varsayılan olarak hangi sekmenin gösterileceğini ayarlayın
## Widget'lar
Widgets are the building blocks inside each tab. Available widget types include:
Widget'lar, her sekmenin içindeki yapı taşlarıdır. Kullanılabilir widget türleri şunlardır:
| Widget | What it shows |
| ------------------- | ------------------------------------------ |
| **Alan** | Record fields, grouped or individually |
| **Related records** | Table of records linked via a relation |
| **Emails** | Email history from connected accounts |
| **Calendar** | Calendar events associated with the record |
| **Timeline** | Activity and event history |
| **Tasks** | Associated tasks |
| **Notes** | Rich text notes |
| **Files** | Dosya ekleri |
| **Charts** | Visual data from related records |
| **iFrame** | Embedded external content |
| **Rich text** | Static content or descriptions |
| Widget | Ne gösterir |
| ------------------- | --------------------------------------------------- |
| **Alanlar** | Kayıt alanları, gruplanmış veya tek tek |
| **İlgili kayıtlar** | Bir ilişki aracılığıyla bağlanan kayıtların tablosu |
| **E-postalar** | Bağlı hesaplardan e-posta geçmişi |
| **Takvim** | Kayıtla ilişkili takvim etkinlikleri |
| **Zaman Çizelgesi** | Aktivite ve etkinlik geçmişi |
| **Görevler** | İlişkili görevler |
| **Notlar** | Zengin metin notları |
| **Dosyalar** | Dosya ekleri |
| **Grafikler** | İlgili kayıtlardan görsel veriler |
| **iFrame** | Gömülü harici içerik |
| **Zengin Metin** | Statik içerik veya açıklamalar |
## Customizing a record page
## Kayıt sayfasını özelleştirme
1. Open any record
2. Press `Cmd+K` and search for "Edit record page layout"
3. You're now in customization mode:
* **Add widgets** from the widget picker
* **Drag widgets** to reposition them on the grid
* **Resize widgets** by dragging their edges
* **Configure fields** shown within each widget
* **Manage tabs** — add, remove, rename, reorder
4. Save your changes — they apply to all records of that object type
1. Herhangi bir kaydıın
2. `Cmd+K` tuşlarına basın ve "Kayıt sayfası yerleşimini düzenle" ifadesini arayın
3. Artık özelleştirme modundasınız:
* **Widget ekleyin** widget seçicisinden
* **Widget'ları sürükleyin** ve ızgara üzerinde yeniden konumlandırın
* **Widget'ları yeniden boyutlandırın** kenarlarını sürükleyerek
* **Alanları yapılandırın** — her bir widget içinde gösterilen
* **Sekmeleri yönetin** — ekleyin, kaldırın, yeniden adlandırın, yeniden sıralayın
4. Değişikliklerinizi kaydedin — bu değişiklikler o nesne türündeki tüm kayıtlara uygulanır
## Field visibility
## Alan görünürlüğü
Within a Fields widget, you can control which fields are visible and in what order. This lets you create focused layouts — for example, showing only the most important fields on the Overview tab and putting detailed fields in a separate tab.
Alanlar widget'ında, hangi alanların görünür olacağını ve hangi sırayla görüneceğini kontrol edebilirsiniz. Bu sayede odaklanmış düzenler oluşturabilirsiniz — örneğin, Genel Bakış sekmesinde yalnızca en önemli alanları gösterip ayrıntılı alanları ayrı bir sekmeye koyabilirsiniz.

View file

@ -1,45 +1,45 @@
---
title: Düzen
description: Customize how you navigate, browse, and view records in Twenty.
description: Twenty'de gezinme, göz atma ve kayıtları görüntüleme biçiminizi özelleştirin.
---
Twenty's layout is customizable at three levels: how you navigate the app, how you browse lists of records, and what you see when you open an individual record.
Twenty'nin yerleşimi üç düzeyde özelleştirilebilir: uygulamada nasıl gezindiğiniz, kayıt listelerine nasıl göz attığınız ve tek bir kaydı açtığınızda ne gördüğünüz.
## Gezinme
The left sidebar is fully customizable. Şunları yapabilirsiniz:
Sol kenar çubuğu tamamen özelleştirilebilir. Şunları yapabilirsiniz:
* **Reorder items** by dragging and dropping
* **Create folders** to group related objects and views
* **Hide objects** you don't use
* **Add custom links** to external tools
* **Pin favorites** for quick access to views, records, or searches
* **Öğeleri sürükleyip bırakarak yeniden sıralayın**
* **Klasörler oluşturun** ilgili nesneleri ve görünümleri gruplamak için
* **Nesneleri gizleyin** — kullanmadıklarınızı
* **Özel bağlantılar ekleyin** harici araçlara
* **Favorileri sabitleyin** görünümlere, kayıtlara veya aramalara hızlı erişim için
[Navigation reference →](/l/tr/user-guide/layout/capabilities/navigation)
[Gezinme başvurusu →](/l/tr/user-guide/layout/capabilities/navigation)
## Görünümler
Views control how lists of records are displayed. Twenty supports three view types:
Görünümler, kayıt listelerinin nasıl görüntüleneceğini kontrol eder. Twenty üç görünüm türünü destekler:
| Görünüm | Best for |
| ------------ | ---------------------------------------------------------------------- |
| **Table** | Working with many records at once — spreadsheet-style rows and columns |
| **Kanban** | Pipeline tracking — drag-and-drop cards organized by stage |
| **Calendar** | Time-based planning — records plotted by a date field |
| Görünüm | En uygun |
| ---------- | ---------------------------------------------------------------------------- |
| **Tablo** | Birçok kayıtla aynı anda çalışmak — hesap tablosu tarzı satırlar ve sütunlar |
| **Kanban** | Pipeline takibi — aşamalara göre düzenlenen sürükle-bırak kartlar |
| **Takvim** | Zamana dayalı planlama — kayıtlar bir tarih alanına göre konumlandırılır |
Each view saves its own filters, sorting, field visibility, and grouping configuration. Views can be shared with the workspace or kept private.
Her görünüm kendi filtrelerini, sıralamasını, alan görünürlüğünü ve gruplama yapılandırmasını kaydeder. Görünümler çalışma alanıyla paylaşılabilir veya özel tutulabilir.
[Table views →](/l/tr/user-guide/views-pipelines/capabilities/table-views) · [Kanban views →](/l/tr/user-guide/views-pipelines/capabilities/kanban-views) · [Calendar view →](/l/tr/user-guide/views-pipelines/capabilities/calendar-view)
[Tablo görünümleri →](/l/tr/user-guide/views-pipelines/capabilities/table-views) · [Kanban görünümleri →](/l/tr/user-guide/views-pipelines/capabilities/kanban-views) · [Takvim görünümü →](/l/tr/user-guide/views-pipelines/capabilities/calendar-view)
## Record pages
## Kayıt Sayfaları
When you open a record, the detail page is built from configurable tabs and widgets. Şunları yapabilirsiniz:
Bir kaydı açtığınızda, ayrıntı sayfası yapılandırılabilir sekmeler ve widget'lardan oluşturulur. Şunları yapabilirsiniz:
* **Add, remove, and reorder tabs** on any record type
* **Configure widgets** — fields, related records, emails, timeline, calendar, tasks, notes, files, charts, iframes, and more
* **Drag and resize widgets** on a grid layout
* **Control field visibility** per widget
* **Sekmeleri ekleyin, kaldırın ve yeniden sıralayın** herhangi bir kayıt türünde
* **Widget'ları yapılandırın** — alanlar, ilişkili kayıtlar, e-postalar, zaman çizelgesi, takvim, görevler, notlar, dosyalar, grafikler, iframe'ler ve daha fazlası
* **Widget'ları sürükleyin ve yeniden boyutlandırın** ızgara düzeninde
* **Alan görünürlüğünü kontrol edin** widget bazında
Enter layout customization mode from the command menu (`Cmd+K` → "Edit record page layout").
Komut menüsünden yerleşim özelleştirme moduna girin (`Cmd+K` → "Kayıt sayfası yerleşimini düzenle").
[Record pages reference →](/l/tr/user-guide/layout/capabilities/record-pages)
[Kayıt sayfaları başvurusu →](/l/tr/user-guide/layout/capabilities/record-pages)

View file

@ -1,27 +1,27 @@
---
title: CLI & Testing
description: CLI commands, testing setup, public assets, npm packages, remotes, and CI configuration.
title: CLI 与测试
description: CLI 命令、测试设置、公共资源、npm 包、远程以及 CI 配置。
icon: terminal
---
## Public assets (`public/` folder)
## 公共资源(`public/` 文件夹)
The `public/` folder at the root of your app holds static files — images, icons, fonts, or any other assets your app needs at runtime. These files are automatically included in builds, synced during dev mode, and uploaded to the server.
应用根目录中的 `public/` 文件夹包含静态文件——图像、图标、字体,或应用在运行时所需的任何其他资源。 这些文件会在构建时自动包含、在开发模式下同步,并上传到服务器。
Files placed in `public/` are:
放置在 `public/` 中的文件:
* **Publicly accessible** — once synced to the server, assets are served at a public URL. No authentication is needed to access them.
* **Available in front components** — use asset URLs to display images, icons, or any media inside your React components.
* **Available in logic functions** — reference asset URLs in emails, API responses, or any server-side logic.
* **Used for marketplace metadata** — the `logoUrl` and `screenshots` fields in `defineApplication()` reference files from this folder (e.g., `public/logo.png`). These are displayed in the marketplace when your app is published.
* **Auto-synced in dev mode** — when you add, update, or delete a file in `public/`, it is synced to the server automatically. No restart needed.
* **Included in builds** — `yarn twenty build` bundles all public assets into the distribution output.
* **公开可访问**——同步到服务器后,资源将通过公共 URL 提供服务。 访问它们无需身份验证。
* **在前端组件中可用**——使用资源 URL 在 React 组件中显示图像、图标或任何媒体。
* **在逻辑函数中可用**——在电子邮件、API 响应或任何服务端逻辑中引用资源 URL。
* **用于市场元数据**——`defineApplication()` 中的 `logoUrl` 和 `screenshots` 字段引用此文件夹中的文件(例如,`public/logo.png`)。 应用发布后,这些内容会显示在市场中。
* **在开发模式下自动同步**——当在 `public/` 中添加、更新或删除文件时,会自动同步到服务器。 无需重启。
* **包含在构建中**——`yarn twenty build` 会将所有公共资源打包到分发产物中。
### Accessing public assets with `getPublicAssetUrl`
### 使用 `getPublicAssetUrl` 访问公共资源
Use the `getPublicAssetUrl` helper from `twenty-sdk` to get the full URL of a file in your `public/` directory. It works in both **logic functions** and **front components**.
使用来自 `twenty-sdk` 的 `getPublicAssetUrl` 辅助函数获取 `public/` 目录中文件的完整 URL。 它可在 **逻辑函数** 和 **前端组件** 中使用。
**In a logic function:**
**在逻辑函数中:**
```ts src/logic-functions/send-invoice.ts
import { defineLogicFunction, getPublicAssetUrl } from 'twenty-sdk/define';
@ -46,7 +46,7 @@ export default defineLogicFunction({
});
```
**In a front component:**
**在前端组件中:**
```tsx src/front-components/company-card.tsx
import { defineFrontComponent, getPublicAssetUrl } from 'twenty-sdk/define';
@ -58,19 +58,19 @@ export default defineFrontComponent(() => {
});
```
The `path` argument is relative to your app's `public/` folder. Both `getPublicAssetUrl('logo.png')` and `getPublicAssetUrl('public/logo.png')` resolve to the same URL — the `public/` prefix is stripped automatically if present.
`path` 参数是相对于应用的 `public/` 文件夹的。 `getPublicAssetUrl('logo.png')` 和 `getPublicAssetUrl('public/logo.png')` 均解析为相同的 URL——如果存在`public/` 前缀会被自动移除。
## Using npm packages
## 使用 npm 包
You can install and use any npm package in your app. Both logic functions and front components are bundled with [esbuild](https://esbuild.github.io/), which inlines all dependencies into the output — no `node_modules` are needed at runtime.
可以在应用中安装并使用任意 npm 包。 逻辑函数和前端组件都通过 [esbuild](https://esbuild.github.io/) 打包,所有依赖都会被内联到输出中——运行时不需要 `node_modules`。
### Installing a package
### 安装包
```bash filename="Terminal"
yarn add axios
```
Then import it in your code:
然后在代码中导入它:
```ts src/logic-functions/fetch-data.ts
import { defineLogicFunction } from 'twenty-sdk/define';
@ -91,7 +91,7 @@ export default defineLogicFunction({
});
```
The same works for front components:
前端组件同样适用:
```tsx src/front-components/chart.tsx
import { defineFrontComponent } from 'twenty-sdk/define';
@ -108,13 +108,13 @@ export default defineFrontComponent({
});
```
### How bundling works
### 打包的工作原理
构建步骤使用 esbuild 为每个逻辑函数和每个前端组件生成一个自包含文件。 All imported packages are inlined into the bundle.
构建步骤使用 esbuild 为每个逻辑函数和每个前端组件生成一个自包含文件。 所有导入的包都会被内联到打包产物中。
**Logic functions** run in a Node.js environment. Node built-in modules (`fs`, `path`, `crypto`, `http`, etc.) are available and do not need to be installed.
**逻辑函数** 运行在 Node.js 环境中。 Node 内置模块(`fs`、`path`、`crypto`、`http` 等) 可用且无需安装。
**Front components** run in a Web Worker. Node built-in modules are **not** available — only browser APIs and npm packages that work in a browser environment.
**前端组件** 运行在 Web Worker 中。 Node 内置模块不可用——仅可使用浏览器 API 以及可在浏览器环境中运行的 npm 包。
Both environments have `twenty-client-sdk/core` and `twenty-client-sdk/metadata` available as pre-provided modules — these are not bundled but resolved at runtime by the server.

View file

@ -90,7 +90,7 @@ export default defineApplication({
});
```
备注:
备注
* `universalIdentifier` 字段是你拥有的确定性 ID。 只需生成一次,并在多次同步过程中保持稳定不变。
* `applicationVariables` 会变成你的函数和前端组件可用的环境变量(例如,`DEFAULT_RECIPIENT_NAME` 可作为 `process.env.DEFAULT_RECIPIENT_NAME` 使用)。
* `defaultRoleUniversalIdentifier` 必须引用使用 `defineRole()` 定义的角色(见上文)。
@ -153,7 +153,7 @@ export default defineRole({
* **\*.role.ts** 定义该角色可以执行的操作。
* **application-config.ts** 指向该角色,使你的函数继承其权限。
备注:
备注
* 从脚手架生成的角色开始,然后按照最小权限原则逐步收紧权限。
* 将 `objectPermissions` 和 `fieldPermissions` 替换为你的函数所需的对象/字段。
* `permissionFlags` 控制对平台级能力的访问。 尽量保持最小化。

View file

@ -60,9 +60,9 @@ export default defineFrontComponent({
| `universalIdentifier` | 是 | 该组件的稳定唯一 ID |
| `component` | 是 | 一个 React 组件函数 |
| `name` | 否 | 显示名称 |
| `描述` | 否 | 组件的功能描述 |
| `description` | 否 | 组件的功能描述 |
| `isHeadless` | 否 | Set to `true` if the component has no visible UI (see below) |
| `命令` | 否 | Register the component as a command (see [command options](#command-options) below) |
| `command` | 否 | Register the component as a command (see [command options](#command-options) below) |
## Placing a front component on a page
@ -293,9 +293,9 @@ Adding a `command` field to `defineFrontComponent` registers the component in th
| 字段 | 必填 | 描述 |
| --------------------------------------- | -- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `universalIdentifier` | 是 | Stable unique ID for the command |
| `标签` | 是 | Full label shown in the command menu (Cmd+K) |
| `label` | 是 | Full label shown in the command menu (Cmd+K) |
| `shortLabel` | 否 | Shorter label displayed on the pinned quick-action button |
| `图标` | 否 | Icon name displayed next to the label (e.g. `'IconBolt'`, `'IconSend'`) |
| `icon` | 否 | Icon name displayed next to the label (e.g. `'IconBolt'`, `'IconSend'`) |
| `isPinned` | 否 | When `true`, shows the command as a quick-action button in the top-right corner of the page |
| `availabilityType` | 否 | Controls where the command appears: `'GLOBAL'` (always available), `'RECORD_SELECTION'` (only when records are selected), or `'FALLBACK'` (shown when no other commands match) |
| `availabilityObjectUniversalIdentifier` | 否 | Restrict the command to pages of a specific object type (e.g. only on Company records) |
@ -338,15 +338,15 @@ export default defineFrontComponent({
| ------------------------------ | --------- | ---------------------------------------------------------------- |
| `pageType` | `string` | Current page type (e.g. `'RecordIndexPage'`, `'RecordShowPage'`) |
| `isInSidePanel` | `boolean` | Whether the component is rendered in a side panel |
| `numberOfSelectedRecords` | `数字` | Number of currently selected records |
| `numberOfSelectedRecords` | `number` | Number of currently selected records |
| `isSelectAll` | `boolean` | Whether "select all" is active |
| `selectedRecords` | `array` | The selected record objects |
| `favoriteRecordIds` | `array` | IDs of favorited records |
| `objectPermissions` | `对象` | Permissions for the current object type |
| `targetObjectReadPermissions` | `对象` | Read permissions for the target object |
| `targetObjectWritePermissions` | `对象` | Write permissions for the target object |
| `featureFlags` | `对象` | Active feature flags |
| `objectMetadataItem` | `对象` | Metadata of the current object type |
| `objectPermissions` | `object` | Permissions for the current object type |
| `targetObjectReadPermissions` | `object` | Read permissions for the target object |
| `targetObjectWritePermissions` | `object` | Write permissions for the target object |
| `featureFlags` | `object` | Active feature flags |
| `objectMetadataItem` | `object` | Metadata of the current object type |
| `hasAnySoftDeleteFilterOnView` | `boolean` | Whether the current view has a soft-delete filter |
**Operators** — combine variables into boolean expressions:

View file

@ -5,26 +5,86 @@ icon: arrow-up-right-dots
## 通用指南
**在开始升级过程之前,请务必备份您的数据库**,通过运行 `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`。
**Always back up your database before starting the upgrade process** by running:
要恢复备份,运行 `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`。
```bash
docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql
```
如果您使用了 Docker Compose请按照以下步骤操作
To restore from backup:
1. 在 Twenty 运行的主机上打开终端,关闭 Twenty`docker compose down`
```bash
cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}
```
2. 通过更改 docker-compose 附近 .env 文件中的 `TAG` 值来升级版本。 (我们建议使用 `major.minor` 版本,例如 `v0.53`
If you use Docker Compose, follow these steps:
3. 用 `docker compose up -d` 重新启动 Twenty
1. Stop Twenty: `docker compose down`
2. Change the `TAG` value in the `.env` file next to your `docker-compose.yml`
3. Start Twenty: `docker compose up -d`
**确保每个升级后的版本都具有未损坏的备份。**
The server runs all required upgrade migrations automatically on startup. No manual command is needed.
## 特定版本的升级步骤
## Cross-version upgrades (v1.22+)
## After v1.21
Starting from **v1.22**, Twenty supports cross-version upgrades. You can jump directly from any supported version to the latest release without stepping through each intermediate version.
We know support sequential upgrades. You don't need to go through each version one by one.
For example, upgrading from v1.22 straight to v2.0 is fully supported.
## Before v1.21
## Checking upgrade status
Make sure to go through every major tagged version when upgrading (upgrade v1.6.x to v.7.y, then v.7.y to v.8.z, etc.).
The `upgrade:status` command lets you inspect the current state of your instance and workspace migrations. It is useful for debugging upgrade issues or when filing a support request.
Run it from the server container:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status
```
示例输出:
```sh
APP_VERSION: v1.23.0
Instance
Inferred version: 1.23.0
Latest command: 1.23.0_DropWorkspaceVersionColumnFastInstanceCommand_1785000000000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:43:58.823Z
Workspace
Apple (20202020-1c25-4d02-bf25-6aeccf7ea419)
Inferred version: 1.23.0
Latest command: 1.23.0_UpdateGlobalObjectContextCommandMenuItemsCommand_1780000005000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:44:09.361Z
Summary
Instance: Up to date
Workspaces: 1 up to date, 0 behind, 0 failed (1 total)
```
### 选项
| Flag | 描述 |
| ------------------------- | ---------------------------------------------------------------- |
| `-w, --workspace-id <id>` | Filter to a specific workspace. Can be passed multiple times. |
| `-f, --failed-only` | Hide up-to-date workspaces, only show behind and failed entries. |
## 故障排除
If the upgrade fails on some workspaces, the server will not advance past the failing step. Restarting the server (`docker compose up -d`) will retry the upgrade from where it left off.
To quickly identify problems, run:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status --failed-only
```
This shows only workspaces that are behind or have failed, along with the error message for each failure.
## Before v1.22
If your instance is older than v1.22, you must upgrade incrementally through each major tagged version (v1.6 to v1.7, then v1.7 to v1.8, and so on) until you reach v1.22. From there, you can jump directly to the latest version.

View file

@ -32,14 +32,14 @@ description: 使用选项卡和小部件自定义单个记录详情页的布局
| **文件** | 文件附件 |
| **图表** | 来自相关记录的可视化数据 |
| **iFrame** | 嵌入的外部内容 |
| **富文本** | 静态内容或说明 |
| **富文本** | 静态内容或描述 |
## 自定义记录页面
1. 打开任意记录
2. 按下 `Cmd+K`,搜索“编辑记录页面布局”
3. 你现在处于自定义模式:
* **添加小部件**,使用小部件选择器
* 从小部件选择器中**添加小部件**
* **拖动小部件**,在网格上重新定位它们
* **调整小部件大小**,通过拖动其边缘
* **配置字段**,设置每个小部件内显示的字段

View file

@ -1,45 +1,45 @@
---
title: 布局
description: Customize how you navigate, browse, and view records in Twenty.
description: 自定义您在 Twenty 中的导航、浏览和查看记录的方式。
---
Twenty's layout is customizable at three levels: how you navigate the app, how you browse lists of records, and what you see when you open an individual record.
Twenty 的布局可在三个层级进行自定义:在应用中的导航方式、浏览记录列表的方式,以及打开单条记录时看到的内容。
## 导航
The left sidebar is fully customizable. 您可以:
左侧边栏可完全自定义。 您可以:
* **Reorder items** by dragging and dropping
* **Create folders** to group related objects and views
* **Hide objects** you don't use
* **Add custom links** to external tools
* **Pin favorites** for quick access to views, records, or searches
* **重新排序项目**(通过拖放)
* **创建文件夹**,用于分组相关对象和视图
* **隐藏对象**(您不使用的)
* **添加自定义链接**到外部工具
* **固定收藏**,便于快速访问视图、记录或搜索
[Navigation reference →](/l/zh/user-guide/layout/capabilities/navigation)
[导航参考 →](/l/zh/user-guide/layout/capabilities/navigation)
## 视图
Views control how lists of records are displayed. Twenty supports three view types:
视图控制记录列表的显示方式。 Twenty 支持三种视图类型:
| 视图 | Best for |
| ------------ | ---------------------------------------------------------------------- |
| **Table** | Working with many records at once — spreadsheet-style rows and columns |
| **Kanban** | Pipeline tracking — drag-and-drop cards organized by stage |
| **Calendar** | Time-based planning — records plotted by a date field |
| 视图 | 最适合 |
| ------ | -------------------- |
| **表格** | 一次处理大量记录——类似电子表格的行和列 |
| **看板** | 管道跟踪——按阶段组织的可拖放卡片 |
| **日历** | 基于时间的规划——按日期字段排布记录 |
Each view saves its own filters, sorting, field visibility, and grouping configuration. Views can be shared with the workspace or kept private.
每个视图都会保存其筛选、排序、字段可见性和分组配置。 视图可以与工作区共享,或保持私密。
[Table views →](/l/zh/user-guide/views-pipelines/capabilities/table-views) · [Kanban views →](/l/zh/user-guide/views-pipelines/capabilities/kanban-views) · [Calendar view →](/l/zh/user-guide/views-pipelines/capabilities/calendar-view)
[表格视图 →](/l/zh/user-guide/views-pipelines/capabilities/table-views) · [看板视图 →](/l/zh/user-guide/views-pipelines/capabilities/kanban-views) · [日历视图 →](/l/zh/user-guide/views-pipelines/capabilities/calendar-view)
## Record pages
## 记录页面
When you open a record, the detail page is built from configurable tabs and widgets. 您可以:
打开记录时,详情页面由可配置的选项卡和小组件构成。 您可以:
* **Add, remove, and reorder tabs** on any record type
* **Configure widgets** — fields, related records, emails, timeline, calendar, tasks, notes, files, charts, iframes, and more
* **Drag and resize widgets** on a grid layout
* **Control field visibility** per widget
* 在任何记录类型中**添加、移除并重新排序选项卡**
* **配置小组件**——字段、相关记录、电子邮件、时间线、日历、任务、备注、文件、图表、iframe 等
* 在网格布局中**拖动并调整小组件大小**
* 为每个小组件**控制字段可见性**
Enter layout customization mode from the command menu (`Cmd+K` → "Edit record page layout").
从命令菜单进入布局自定义模式(`Cmd+K` → "编辑记录页面布局")。
[Record pages reference →](/l/zh/user-guide/layout/capabilities/record-pages)
[记录页面参考 →](/l/zh/user-guide/layout/capabilities/record-pages)