diff --git a/.gitignore b/.gitignore
index a7fb21ca..cbf21cc5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@
/images/_scratch/
/images/_tmp/
/images/_preview/
+AGENTS.md
\ No newline at end of file
diff --git a/en/about.mdx b/archive/en/about.mdx
similarity index 100%
rename from en/about.mdx
rename to archive/en/about.mdx
diff --git a/en/basic/automation/action.mdx b/archive/en/basic/automation/action.mdx
similarity index 100%
rename from en/basic/automation/action.mdx
rename to archive/en/basic/automation/action.mdx
diff --git a/en/basic/automation/actions/communication/send-email.mdx b/archive/en/basic/automation/actions/communication/send-email.mdx
similarity index 98%
rename from en/basic/automation/actions/communication/send-email.mdx
rename to archive/en/basic/automation/actions/communication/send-email.mdx
index c9dcf0eb..22040e94 100644
--- a/en/basic/automation/actions/communication/send-email.mdx
+++ b/archive/en/basic/automation/actions/communication/send-email.mdx
@@ -91,5 +91,5 @@ You can mix Markdown and dynamic variables in the same body. For complex email d
## Related
- [Set up SMTP and sender](/en/basic/automation/actions/communication/smtp-sender) — send emails from your own domain
-- [Loop (batch)](../logic/loop-run) — send emails in bulk by looping through a list of records
+- Loop (batch) — send emails in bulk by looping through a list of records
- [AI generate](/en/basic/automation/actions/ai/ai-generate) — generate personalized email content with AI
diff --git a/en/basic/automation/ai-action.mdx b/archive/en/basic/automation/ai-action.mdx
similarity index 100%
rename from en/basic/automation/ai-action.mdx
rename to archive/en/basic/automation/ai-action.mdx
diff --git a/en/basic/automation/ai-script.mdx b/archive/en/basic/automation/ai-script.mdx
similarity index 100%
rename from en/basic/automation/ai-script.mdx
rename to archive/en/basic/automation/ai-script.mdx
diff --git a/en/basic/automation/ai/scripting/sample-scripts.mdx b/archive/en/basic/automation/ai/scripting/sample-scripts.mdx
similarity index 98%
rename from en/basic/automation/ai/scripting/sample-scripts.mdx
rename to archive/en/basic/automation/ai/scripting/sample-scripts.mdx
index 2000a5f1..51e47230 100644
--- a/en/basic/automation/ai/scripting/sample-scripts.mdx
+++ b/archive/en/basic/automation/ai/scripting/sample-scripts.mdx
@@ -340,6 +340,6 @@ output.set("recordCount", records.length);
## Related
-- [Run script guide](/en/basic/automation/ai/scripting/ai-script-guide) — full reference for the scripting environment
+- Run script guide — full reference for the scripting environment
- [HTTP request](/en/basic/automation/actions/logic/http-request) — for simple API calls without scripting
-- [Loop (batch)](/en/basic/automation/actions/logic/loop-run) — for iterating without code
+- Loop (batch) — for iterating without code
diff --git a/en/basic/automation/example.mdx b/archive/en/basic/automation/example.mdx
similarity index 100%
rename from en/basic/automation/example.mdx
rename to archive/en/basic/automation/example.mdx
diff --git a/en/basic/automation/logic.mdx b/archive/en/basic/automation/logic.mdx
similarity index 100%
rename from en/basic/automation/logic.mdx
rename to archive/en/basic/automation/logic.mdx
diff --git a/en/basic/automation/trigger.mdx b/archive/en/basic/automation/trigger.mdx
similarity index 100%
rename from en/basic/automation/trigger.mdx
rename to archive/en/basic/automation/trigger.mdx
diff --git a/en/basic/field/ai/ai-field-practical-guide.mdx b/archive/en/basic/field/ai/ai-field-practical-guide.mdx
similarity index 100%
rename from en/basic/field/ai/ai-field-practical-guide.mdx
rename to archive/en/basic/field/ai/ai-field-practical-guide.mdx
diff --git a/en/basic/organization/organization.mdx b/archive/en/basic/organization/organization.mdx
similarity index 100%
rename from en/basic/organization/organization.mdx
rename to archive/en/basic/organization/organization.mdx
diff --git a/en/basic/organization/security.mdx b/archive/en/basic/organization/security.mdx
similarity index 100%
rename from en/basic/organization/security.mdx
rename to archive/en/basic/organization/security.mdx
diff --git a/en/basic/organization/setting.mdx b/archive/en/basic/organization/setting.mdx
similarity index 100%
rename from en/basic/organization/setting.mdx
rename to archive/en/basic/organization/setting.mdx
diff --git a/en/basic/organization/sso.mdx b/archive/en/basic/organization/sso.mdx
similarity index 100%
rename from en/basic/organization/sso.mdx
rename to archive/en/basic/organization/sso.mdx
diff --git a/en/basic/organization/user.mdx b/archive/en/basic/organization/user.mdx
similarity index 100%
rename from en/basic/organization/user.mdx
rename to archive/en/basic/organization/user.mdx
diff --git a/zh/about.mdx b/archive/zh/about.mdx
similarity index 100%
rename from zh/about.mdx
rename to archive/zh/about.mdx
diff --git a/zh/basic/automation/action.mdx b/archive/zh/basic/automation/action.mdx
similarity index 100%
rename from zh/basic/automation/action.mdx
rename to archive/zh/basic/automation/action.mdx
diff --git a/zh/basic/automation/actions/communication/send-email.mdx b/archive/zh/basic/automation/actions/communication/send-email.mdx
similarity index 98%
rename from zh/basic/automation/actions/communication/send-email.mdx
rename to archive/zh/basic/automation/actions/communication/send-email.mdx
index 009748df..83c89b60 100644
--- a/zh/basic/automation/actions/communication/send-email.mdx
+++ b/archive/zh/basic/automation/actions/communication/send-email.mdx
@@ -91,5 +91,5 @@ description: "在工作流中发送自定义邮件"
## 相关文档
- [配置 SMTP 和发件人](/zh/basic/automation/actions/communication/smtp-sender) — 从您自己的域名发送邮件
-- [循环执行](../logic/loop-run) — 遍历记录列表批量发送邮件
+- 循环执行 — 遍历记录列表批量发送邮件
- [AI 生成](/zh/basic/automation/actions/ai/ai-generate) — 使用 AI 生成个性化邮件内容
diff --git a/zh/basic/automation/ai-action.mdx b/archive/zh/basic/automation/ai-action.mdx
similarity index 100%
rename from zh/basic/automation/ai-action.mdx
rename to archive/zh/basic/automation/ai-action.mdx
diff --git a/zh/basic/automation/ai-script.mdx b/archive/zh/basic/automation/ai-script.mdx
similarity index 100%
rename from zh/basic/automation/ai-script.mdx
rename to archive/zh/basic/automation/ai-script.mdx
diff --git a/zh/basic/automation/ai/scripting/sample-scripts.mdx b/archive/zh/basic/automation/ai/scripting/sample-scripts.mdx
similarity index 98%
rename from zh/basic/automation/ai/scripting/sample-scripts.mdx
rename to archive/zh/basic/automation/ai/scripting/sample-scripts.mdx
index b4e0bb02..be513b58 100644
--- a/zh/basic/automation/ai/scripting/sample-scripts.mdx
+++ b/archive/zh/basic/automation/ai/scripting/sample-scripts.mdx
@@ -335,6 +335,6 @@ output.set("sent", res.ok);
## 相关文档
-- [运行脚本指南](/zh/basic/automation/ai/scripting/ai-script-guide)
+- 运行脚本指南
- [HTTP 请求](/zh/basic/automation/actions/logic/http-request)
-- [循环执行](/zh/basic/automation/actions/logic/loop-run)
+- 循环执行
diff --git a/zh/basic/automation/example.mdx b/archive/zh/basic/automation/example.mdx
similarity index 100%
rename from zh/basic/automation/example.mdx
rename to archive/zh/basic/automation/example.mdx
diff --git a/zh/basic/automation/logic.mdx b/archive/zh/basic/automation/logic.mdx
similarity index 100%
rename from zh/basic/automation/logic.mdx
rename to archive/zh/basic/automation/logic.mdx
diff --git a/zh/basic/automation/trigger.mdx b/archive/zh/basic/automation/trigger.mdx
similarity index 100%
rename from zh/basic/automation/trigger.mdx
rename to archive/zh/basic/automation/trigger.mdx
diff --git a/zh/basic/field/ai/ai-field-practical-guide.mdx b/archive/zh/basic/field/ai/ai-field-practical-guide.mdx
similarity index 100%
rename from zh/basic/field/ai/ai-field-practical-guide.mdx
rename to archive/zh/basic/field/ai/ai-field-practical-guide.mdx
diff --git a/zh/basic/organization/organization.mdx b/archive/zh/basic/organization/organization.mdx
similarity index 100%
rename from zh/basic/organization/organization.mdx
rename to archive/zh/basic/organization/organization.mdx
diff --git a/zh/basic/organization/security.mdx b/archive/zh/basic/organization/security.mdx
similarity index 100%
rename from zh/basic/organization/security.mdx
rename to archive/zh/basic/organization/security.mdx
diff --git a/zh/basic/organization/setting.mdx b/archive/zh/basic/organization/setting.mdx
similarity index 100%
rename from zh/basic/organization/setting.mdx
rename to archive/zh/basic/organization/setting.mdx
diff --git a/zh/basic/organization/user.mdx b/archive/zh/basic/organization/user.mdx
similarity index 100%
rename from zh/basic/organization/user.mdx
rename to archive/zh/basic/organization/user.mdx
diff --git a/docs.json b/docs.json
index d8d92b10..e8c9f7eb 100644
--- a/docs.json
+++ b/docs.json
@@ -27,6 +27,16 @@
"keywords": "database, app builder, AI, no-code, low-code, Airtable alternative, PostgreSQL, automation"
}
},
+ "redirects": [
+ {
+ "source": "/en/about",
+ "destination": "/en/basic/ai/overview"
+ },
+ {
+ "source": "/zh/about",
+ "destination": "/zh/basic/ai/overview"
+ }
+ ],
"navigation": {
"languages": [
{
@@ -60,6 +70,7 @@
"en/basic/ai/app-builder-practical-guide"
]
},
+ "en/basic/field/ai/ai-field",
"en/basic/ai/custom-model"
]
},
@@ -122,7 +133,8 @@
"en/basic/automation/actions/ai/ai-generate",
"en/basic/automation/actions/records/cross-base",
"en/basic/automation/actions/logic/loop-run",
- "en/basic/automation/actions/manual/conditional-logic"
+ "en/basic/automation/actions/manual/conditional-logic",
+ "en/basic/automation/ai/scripting/runscript"
]
}
]
@@ -165,15 +177,15 @@
{
"group": "Basic Field",
"pages": [
- "en/basic/field/basic/single-line-text",
- "en/basic/field/basic/long-text",
- "en/basic/field/basic/number",
- "en/basic/field/basic/single-select",
- "en/basic/field/basic/multiple-select",
- "en/basic/field/basic/date",
- "en/basic/field/basic/rating",
- "en/basic/field/basic/checkbox",
- "en/basic/field/basic/attachment"
+ "en/basic/field/single-line-text",
+ "en/basic/field/long-text",
+ "en/basic/field/number",
+ "en/basic/field/single-select",
+ "en/basic/field/multiple-select",
+ "en/basic/field/date",
+ "en/basic/field/rating",
+ "en/basic/field/checkbox",
+ "en/basic/field/attachment"
]
},
{
@@ -182,27 +194,27 @@
{
"group": "Formula",
"pages": [
- "en/basic/field/advanced/formula",
- "en/basic/field/advanced/formula/grammar",
- "en/basic/field/advanced/formula/cheat-sheet"
+ "en/basic/field/formula",
+ "en/basic/field/formula/grammar",
+ "en/basic/field/formula/cheat-sheet"
]
},
- "en/basic/field/advanced/link",
- "en/basic/field/advanced/rollup",
- "en/basic/field/advanced/lookup",
- "en/basic/field/advanced/conditional-rollup",
- "en/basic/field/advanced/conditional-lookup",
- "en/basic/field/advanced/user",
- "en/basic/field/advanced/created-by",
- "en/basic/field/advanced/last-modified-by",
- "en/basic/field/advanced/created-time",
- "en/basic/field/advanced/last-modified-time",
- "en/basic/field/advanced/auto-number",
+ "en/basic/field/link",
+ "en/basic/field/rollup",
+ "en/basic/field/lookup",
+ "en/basic/field/conditional-rollup",
+ "en/basic/field/conditional-lookup",
+ "en/basic/field/user",
+ "en/basic/field/created-by",
+ "en/basic/field/last-modified-by",
+ "en/basic/field/created-time",
+ "en/basic/field/last-modified-time",
+ "en/basic/field/auto-number",
{
"group": "Button",
"pages": [
- "en/basic/field/advanced/button",
- "en/basic/field/advanced/button-practical-guide"
+ "en/basic/field/button",
+ "en/basic/field/button-practical-guide"
]
}
]
@@ -218,7 +230,7 @@
]
},
{
- "group": "Record",
+ "group": "Records",
"pages": [
"en/basic/record",
"en/basic/record/comment",
@@ -233,16 +245,7 @@
"en/basic/view/kanban",
"en/basic/view/gallery",
"en/basic/view/calendar",
- {
- "group": "Toolbar",
- "pages": [
- "en/basic/view/toolbar/filter",
- "en/basic/view/toolbar/group",
- "en/basic/view/toolbar/sort",
- "en/basic/view/toolbar/share",
- "en/basic/view/toolbar/collaboration-mode"
- ]
- }
+ "en/basic/view/toolbar"
]
}
]
@@ -425,6 +428,7 @@
"zh/basic/ai/app-builder-practical-guide"
]
},
+ "zh/basic/field/ai/ai-field",
"zh/basic/ai/custom-model"
]
},
@@ -488,7 +492,8 @@
"zh/basic/automation/actions/ai/ai-generate",
"zh/basic/automation/actions/records/cross-base",
"zh/basic/automation/actions/logic/loop-run",
- "zh/basic/automation/actions/manual/conditional-logic"
+ "zh/basic/automation/actions/manual/conditional-logic",
+ "zh/basic/automation/ai/scripting/runscript"
]
}
]
@@ -531,15 +536,15 @@
{
"group": "基础字段",
"pages": [
- "zh/basic/field/basic/single-line-text",
- "zh/basic/field/basic/long-text",
- "zh/basic/field/basic/number",
- "zh/basic/field/basic/single-select",
- "zh/basic/field/basic/multiple-select",
- "zh/basic/field/basic/date",
- "zh/basic/field/basic/rating",
- "zh/basic/field/basic/checkbox",
- "zh/basic/field/basic/attachment"
+ "zh/basic/field/single-line-text",
+ "zh/basic/field/long-text",
+ "zh/basic/field/number",
+ "zh/basic/field/single-select",
+ "zh/basic/field/multiple-select",
+ "zh/basic/field/date",
+ "zh/basic/field/rating",
+ "zh/basic/field/checkbox",
+ "zh/basic/field/attachment"
]
},
{
@@ -548,27 +553,27 @@
{
"group": "公式",
"pages": [
- "zh/basic/field/advanced/formula",
- "zh/basic/field/advanced/formula/grammar",
- "zh/basic/field/advanced/formula/cheat-sheet"
+ "zh/basic/field/formula",
+ "zh/basic/field/formula/grammar",
+ "zh/basic/field/formula/cheat-sheet"
]
},
- "zh/basic/field/advanced/link",
- "zh/basic/field/advanced/rollup",
- "zh/basic/field/advanced/lookup",
- "zh/basic/field/advanced/conditional-rollup",
- "zh/basic/field/advanced/conditional-lookup",
- "zh/basic/field/advanced/user",
- "zh/basic/field/advanced/created-by",
- "zh/basic/field/advanced/last-modified-by",
- "zh/basic/field/advanced/created-time",
- "zh/basic/field/advanced/last-modified-time",
- "zh/basic/field/advanced/auto-number",
+ "zh/basic/field/link",
+ "zh/basic/field/rollup",
+ "zh/basic/field/lookup",
+ "zh/basic/field/conditional-rollup",
+ "zh/basic/field/conditional-lookup",
+ "zh/basic/field/user",
+ "zh/basic/field/created-by",
+ "zh/basic/field/last-modified-by",
+ "zh/basic/field/created-time",
+ "zh/basic/field/last-modified-time",
+ "zh/basic/field/auto-number",
{
"group": "按钮",
"pages": [
- "zh/basic/field/advanced/button",
- "zh/basic/field/advanced/button-practical-guide"
+ "zh/basic/field/button",
+ "zh/basic/field/button-practical-guide"
]
}
]
@@ -599,16 +604,7 @@
"zh/basic/view/kanban",
"zh/basic/view/gallery",
"zh/basic/view/calendar",
- {
- "group": "工具栏",
- "pages": [
- "zh/basic/view/toolbar/filter",
- "zh/basic/view/toolbar/group",
- "zh/basic/view/toolbar/sort",
- "zh/basic/view/toolbar/share",
- "zh/basic/view/toolbar/collaboration-mode"
- ]
- }
+ "zh/basic/view/toolbar"
]
}
]
diff --git a/en/basic/ai/ai-chat.mdx b/en/basic/ai/ai-chat.mdx
index ced42b09..bac584f8 100644
--- a/en/basic/ai/ai-chat.mdx
+++ b/en/basic/ai/ai-chat.mdx
@@ -12,7 +12,7 @@ AI prioritizes the current page. To reference other tables, views, apps, automat
## How to Open
-Open a table or view, then click the **Cuppy** icon in the top right corner to open AI Chat. Describe the question or task in the input box. If the task will modify data or create nodes, ask AI to list the plan first, then confirm before execution.
+Open a table or view, then click the in the top right corner to open AI Chat. Describe the question or task in the input box. If the task will modify data or create nodes, ask AI to list the plan first, then confirm before execution.
## What AI Can Reference
diff --git a/en/basic/ai/app-builder.mdx b/en/basic/ai/app-builder.mdx
index 2a214cc0..1052cdf4 100644
--- a/en/basic/ai/app-builder.mdx
+++ b/en/basic/ai/app-builder.mdx
@@ -24,6 +24,12 @@ There are two main ways to create an app:
The App Builder provides a dual-interface for both non-technical users and developers.
+
+
### 1. Chat Interface (AI-Driven)
The command center for your app.
- **Natural Language Editing**: Describe changes like *"Make the header blue"* or *"Add a submission form for new records"*.
@@ -40,6 +46,12 @@ For infinite customization, you have direct access to the code.
- **React Components**: Edit the underlying React code, Tailwind CSS classes, and logic.
- **File Tree**: Navigate through the project structure.
+
+
#### Download Code
You can download the entire app as a ZIP archive at any time:
1. Switch to the **Code** tab in the editor.
@@ -61,8 +73,6 @@ You can update the app's code by importing a ZIP:
- A root `.env` file in the ZIP is read into the app's custom environment variables. Other `.env*` variants, such as `.env.local`, are ignored.
-
-
## Publishing & Management
### Publishing Your App
@@ -70,16 +80,34 @@ When your app is ready, click the **Publish** button (arrow icon) in the top rig
- **Public URL**: Teable generates a secure, publicly accessible URL for your app.
- **Custom Domain**: Map your own domain to the app.
+
+
### Custom Domains
Use **Custom domain** to bind a domain to the published app. A subdomain is recommended, such as `app.yourdomain.com`. After you enter the domain, Teable shows the DNS records to add. Add the records with your DNS provider, wait for propagation, then verify the domain in Teable.
You can also use an available subdomain under `teable.app`, such as `your-name.teable.app`.
+
+
### App Login
Click **Add login** in the app header to require visitors to sign in before they can use the app. Once login is configured, the button changes to **Login settings**.
+
+
When you enable login:
1. Choose where to store app users. You can create a **Users** table or reuse an existing table with an email field. Each signed-in user is stored as one record, and the same user table can be reused by multiple apps.
@@ -93,6 +121,12 @@ Teable automatically tracks every deployment.
- Click the **History** (clock icon) button to view a list of all deployed versions.
- **One-Click Rollback**: If a new update causes issues, you can instantly revert the live app to any previous stable version.
+
+
### Auto-fix
If your custom code changes cause a build error, the deployment will fail.
- Teable provides an **Auto-fix** button alongside the error log.
diff --git a/en/basic/ai/custom-model.mdx b/en/basic/ai/custom-model.mdx
index 0ed6b288..8513a302 100644
--- a/en/basic/ai/custom-model.mdx
+++ b/en/basic/ai/custom-model.mdx
@@ -25,6 +25,12 @@ After setup, the models you add can be used by **AI Fields**, **Automations**, *
2. Click **Settings** in the top right corner.
3. Go to **AI settings**.
+
+
## Setup Steps
Under **AI Capabilities**, turn on what you need:
@@ -42,6 +48,12 @@ Click **Add LLM provider** and fill in the following:
- **API Key**: Enter the API key from the provider.
- **Models**: Enter the model names you want to connect. Separate multiple models with English commas.
+
+
#### Agent Support Scope
To use **AI Chat** and **App Builder** reliably, configure one of the supported models below. Models outside this list may still work for **AI Fields** or **Automations**, but they are not recommended for agent-based features. In **AI Chat** and **App Builder**, unsupported endpoints, providers, or models may produce weaker results, miss tool-use capabilities, or cause runtime errors. Teable does not provide troubleshooting or performance support for configurations outside this scope.
@@ -89,7 +101,6 @@ Common Base URL examples:
| XAI (Grok) | `https://api.x.ai/v1` |
| OpenRouter | `https://openrouter.ai/api/v1` |
| TogetherAI | `https://api.together.xyz/v1` |
-| Ollama (Local) | `http://localhost:11434` |
### Models
@@ -109,7 +120,6 @@ Common model examples:
| OpenRouter | `anthropic/claude-opus-4-6, google/gemini-3.1-pro-preview` |
| TogetherAI | `deepseek-ai/DeepSeek-R1, meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8` |
| Mistral | `mistral-large-latest, mistral-medium-latest, codestral-latest` |
-| Ollama | `qwen3.5:9b, gemma3:12b, llama3.2:8b` |
Notes:
diff --git a/en/basic/automation/actions/ai/ai-generate.mdx b/en/basic/automation/actions/ai/ai-generate.mdx
index b8e78ae5..904e5611 100644
--- a/en/basic/automation/actions/ai/ai-generate.mdx
+++ b/en/basic/automation/actions/ai/ai-generate.mdx
@@ -186,6 +186,6 @@ Text: {{Content}}
## Related
- [Loop (batch)](../logic/loop-run) — process multiple records with AI in a single automation run
-- [Run script guide](/en/basic/automation/ai/scripting/ai-script-guide) — for custom logic that goes beyond prompt-based generation
+- [Run script](/en/basic/automation/ai/scripting/runscript) — for custom logic that goes beyond prompt-based generation
- [Send email](/en/basic/automation/actions/communication/send-email-overview)
- [Update record](/en/basic/automation/actions/records/update-record)
diff --git a/en/basic/automation/actions/logic/http-request.mdx b/en/basic/automation/actions/logic/http-request.mdx
index 49dcb3ef..5968a179 100644
--- a/en/basic/automation/actions/logic/http-request.mdx
+++ b/en/basic/automation/actions/logic/http-request.mdx
@@ -131,4 +131,4 @@ This is useful for chaining API calls — for example, create something via POST
- [Loop (batch)](/en/basic/automation/actions/logic/loop-run) — make HTTP requests for each item in an array
- [When webhook received](/en/basic/automation/trigger/external/webhook-received) — the inbound counterpart: receive HTTP requests from external systems
-- [Run script guide](/en/basic/automation/ai/scripting/ai-script-guide) — for more complex API interactions with custom code
+- [Run script](/en/basic/automation/ai/scripting/runscript) — for more complex API interactions with custom code
diff --git a/en/basic/automation/actions/records/get-records.mdx b/en/basic/automation/actions/records/get-records.mdx
index ec3bd68e..2d2fb114 100644
--- a/en/basic/automation/actions/records/get-records.mdx
+++ b/en/basic/automation/actions/records/get-records.mdx
@@ -50,7 +50,7 @@ The output is an **array of records**. Each record in the array contains:
- **Reference a single record:** If you only expect one result (or want the first one), you can reference fields from the first record directly using the **+** variable picker.
- **Loop through all records:** Add a [Loop (Batch)](../logic/loop-run) action after Get Records and select the results array as the data source. Inside the loop, reference each item's fields.
-- **Process in a script:** Pass the array to a [Run script](/en/basic/automation/ai/scripting/ai-script-guide) step for custom processing, filtering, or transformation.
+- **Process in a script:** Pass the array to a [Run script](/en/basic/automation/actions/ai/ai-script) step for custom processing, filtering, or transformation.
## Pagination
diff --git a/en/basic/automation/ai/scripting/ai-script-guide.mdx b/en/basic/automation/ai/scripting/runscript.mdx
similarity index 96%
rename from en/basic/automation/ai/scripting/ai-script-guide.mdx
rename to en/basic/automation/ai/scripting/runscript.mdx
index afa35072..10876db8 100644
--- a/en/basic/automation/ai/scripting/ai-script-guide.mdx
+++ b/en/basic/automation/ai/scripting/runscript.mdx
@@ -1,9 +1,15 @@
---
-title: "Run script guide"
+title: "Run script"
description: "Run custom JavaScript in a secure sandbox for logic that goes beyond built-in actions"
---
{/* mintlify-resync: 2026-05-14 */}
+
+We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat.
+
+Please note: if you add actions manually, AI will not recognize or modify them later.
+
+
The Run script action lets you write custom JavaScript to handle logic that built-in actions cannot cover. You can transform data, call external APIs, perform calculations, implement conditional branching, and more — all within a secure sandbox environment.
Scripts receive data from previous steps via the `input` object and pass results to subsequent steps via the `output.set()` function.
@@ -274,6 +280,5 @@ output.set("isVIP", vipDomains.includes(domain));
## Related
-- [Sample scripts](/en/basic/automation/ai/scripting/sample-scripts) — ready-to-use examples for common tasks
- [AI generate](/en/basic/automation/actions/ai/ai-generate) — for prompt-based AI tasks that do not need custom code
- [HTTP request](/en/basic/automation/actions/logic/http-request) — for simple API calls that do not need scripting
diff --git a/en/basic/automation/trigger/external/webhook-received.mdx b/en/basic/automation/trigger/external/webhook-received.mdx
index f1ea4e9f..7282b2eb 100644
--- a/en/basic/automation/trigger/external/webhook-received.mdx
+++ b/en/basic/automation/trigger/external/webhook-received.mdx
@@ -126,5 +126,5 @@ Requests exceeding the rate limit will receive an HTTP 429 response. If your ext
## Related
- [HTTP request action](/en/basic/automation/actions/logic/http-request) — the outbound counterpart: call external APIs from your workflow
-- [Run script guide](/en/basic/automation/ai/scripting/ai-script-guide) — for advanced webhook payload processing
+- [Run script](/en/basic/automation/ai/scripting/runscript) — for advanced webhook payload processing
- [Loop (batch) action](/en/basic/automation/actions/logic/loop-run) — process arrays in webhook payloads
diff --git a/en/basic/base.mdx b/en/basic/base.mdx
index c5d50590..364075bf 100644
--- a/en/basic/base.mdx
+++ b/en/basic/base.mdx
@@ -8,24 +8,31 @@ A base is a tool for storing and processing all information for a specific proje
For users unfamiliar with bases, you can think of them as workbooks in Excel, where each workbook can contain multiple sheets.
+## Create and Manage Bases
+
### Adding a Base
1. Enter a space
2. Click "Create Base" in the upper right corner
-### Renaming a Base
-
-1. Enter a space
-2. Hover over a base
-3. Click the "···" button to open the menu
-4. Click "Rename"
+
-### Deleting a Base
+### Renaming/Deleting a Base
1. Enter a space
2. Hover over a base
3. Click the "···" button to open the menu
-4. Click "Delete"
+4. Click "Rename" or "Delete"
+
+
### Organize Resources in a Base
@@ -48,11 +55,13 @@ Step 3: In the popup, choose the target space. You need Creator permissions in t
For larger bases, Teable shows progress in the duplicate dialog while it copies the base structure, records, and attachments. Keep the dialog open until the copy finishes. Revision history and collaborators are not copied.
+## Import and Export Bases
+
### Import Base (Data Migration)
The `.tea` file format allows you to import a complete base with all its tables, fields, data, and configurations. This is useful for:
@@ -67,7 +76,7 @@ The `.tea` file format allows you to import a complete base with all its tables,
4. Upload the `.tea` file to confirm the import
@@ -86,20 +95,17 @@ Export your base to a `.tea` file for backup or migration purposes. The exported
7. Click **Download** in the export dialog to save the `.tea` file.
-
-**Data Migration Tip**: To migrate data between Teable instances, export your base from the source instance, then import the `.tea` file to the target instance. All data and configurations will be preserved.
-
-
-Teable converts cross-base relation fields to single-line text fields in the exported file.
+- To migrate data between Teable instances, export your base from the source instance, then import the `.tea` file to the target instance. All data and configurations will be preserved.
+- Teable converts cross-base relation fields to single-line text fields in the exported file.
-### Share a Base
+## Share a Base
Bases can be shared through public links. The sharing scope can be the entire base or the currently selected item.
@@ -108,6 +114,12 @@ Bases can be shared through public links. The sharing scope can be the entire ba
3. Turn on **Share to web**
4. Copy the share link or QR code
+
+
Sharing scopes include:
| Scope | Description |
@@ -117,9 +129,15 @@ Sharing scopes include:
In the share settings, you can configure link permissions, **Allow viewers to copy data**, password access, regenerate the link, delete the share link, or copy the embed config.
+
+
If the sharing scope includes an app, the app must be published before it can be accessed through the public link.
-### Features Within a Base
+## Features Within a Base
A base can contain multiple tables for recording and organizing work or business-related information.
diff --git a/en/basic/field.mdx b/en/basic/field.mdx
index ec43660e..42b05ac0 100644
--- a/en/basic/field.mdx
+++ b/en/basic/field.mdx
@@ -4,7 +4,18 @@ description: "Fields are the columns in a table. By combining different field ty
---
{/* mintlify-resync: 2026-05-14 */}
-### Adding Fields
+
+## Field Types
+
+Teable currently provides these field types:
+
+| Category | Field types |
+| --- | --- |
+| Basic fields | [Single line text](/en/basic/field/single-line-text), [Long text](/en/basic/field/long-text), [Number](/en/basic/field/number), [Single select](/en/basic/field/single-select), [Multiple select](/en/basic/field/multiple-select), [User](/en/basic/field/user), [Date](/en/basic/field/date), [Rating](/en/basic/field/rating), [Checkbox](/en/basic/field/checkbox), [Attachment](/en/basic/field/attachment) |
+| Advanced fields | [Formula](/en/basic/field/formula), [Link to record](/en/basic/field/link), [Lookup](/en/basic/field/lookup), [Rollup](/en/basic/field/rollup), [Conditional lookup](/en/basic/field/conditional-lookup), [Conditional rollup](/en/basic/field/conditional-rollup), [Button](/en/basic/field/button), [Auto number](/en/basic/field/auto-number) |
+| System fields | [Created time](/en/basic/field/created-time), [Last modified time](/en/basic/field/last-modified-time), [Created by](/en/basic/field/created-by), [Last modified by](/en/basic/field/last-modified-by) |
+
+## Adding Fields
In the table view, follow these steps to add a new field:
@@ -12,24 +23,26 @@ In the table view, follow these steps to add a new field:
2. Scroll the table to the rightmost side
3. Click the + icon on the far right of the field bar
-
+
+
4. Edit the field in the popup dialog
5. Click Save
-### Editing Fields
+## Editing Fields
Users can edit fields when adding them or edit existing fields when needed. To edit an existing field, follow these steps:
1. Right-click the field you want to edit
-
+
+
2. Click the Edit Field option in the expanded menu
3. Edit the field in the Edit Field dialog
4. Click Save
@@ -42,26 +55,20 @@ Users can edit fields when adding them or edit existing fields when needed. To e
For detailed information about each field type and its specific customization options, please refer to the documentation for each field type.
-### Deleting Fields
+## Deleting Fields
1. Right-click the field you want to edit
-
-
2. Click the Delete Field option in the expanded menu
3. Click Confirm in the confirmation dialog
-### Hiding Fields
+## Hiding Fields
-Users can hide fields through the field right-click menu or the hide tool. Hidden fields will not be displayed in the table view. Users can control field visibility at any time using the hide tool. For filtering, sorting, grouping, and other toolbar capabilities, see [Filter](/en/basic/view/toolbar/filter), [Sort](/en/basic/view/toolbar/sort), and [Group](/en/basic/view/toolbar/group).
+Users can hide fields through the field right-click menu or the hide tool. Hidden fields will not be displayed in the table view. Users can control field visibility at any time using the hide tool. For filtering, sorting, grouping, and other toolbar capabilities, see [View toolbar](/en/basic/view/toolbar).
In the hide tool, click a visible field name to scroll the grid to that column and briefly highlight it. Use the switch next to each field when you want to show or hide the field.
diff --git a/en/basic/field/advanced/auto-number.mdx b/en/basic/field/advanced/auto-number.mdx
deleted file mode 100644
index 53fbc85c..00000000
--- a/en/basic/field/advanced/auto-number.mdx
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: "Auto Number"
-description: "Auto Number fields provide a method to automatically generate unique sequence numbers when creating new records. This field type is particularly useful when you need to assign a sequential, non-repeating identifier to each record."
----
-
-## Creating Auto Number Fields
-
-To set up an Auto Number field in your table, follow these steps:
-
-* In the table view, click the "Add Field" button.
-
-* Name the new field and select "Auto Number" as the field type from the dropdown menu.
-
-Once created, this field will automatically assign a sequential number to each new record. These numbers are unique and won't be reordered even if records are deleted or other operations occur.
-
-## Configuration and Customization
-
-Auto Number fields currently have **no configurable options** in the field settings. The sequence is automatically generated by the system (typically starting from 1 and increasing by 1).
-
-## Use Cases
-
-### Order Tracking
-
-Auto Number fields are ideal for tracking orders, especially when you need to assign a unique order number to each order.
-
-### Member or Customer IDs
-
-Assign unique IDs to your members or customers, ensuring everyone has a distinct identifier.
-
-### Project Management
-
-Automatically assign a project number to each new project, ensuring all projects can be easily tracked and referenced.
-
-### Event or Ticketing Systems
-
-Assign unique reference numbers to event participants or tickets.
-
-## Important Notes
-
-1. Auto Number fields are unique, sequential, and cannot be modified. Even after a record is deleted, its number will remain occupied and won't be reused.
diff --git a/en/basic/field/advanced/button-practical-guide.mdx b/en/basic/field/advanced/button-practical-guide.mdx
deleted file mode 100644
index 3150b6c7..00000000
--- a/en/basic/field/advanced/button-practical-guide.mdx
+++ /dev/null
@@ -1,159 +0,0 @@
----
-title: "Button Practical Guide"
----
-
-Recurring, multi-step processes—like lead conversion, content approval pipelines, or project task reminders—often involve tedious manual work: copying, pasting, switching between apps, and sending notifications.
-
-The Button field is designed to eliminate this friction. Think of it as a "smart remote" for each row of your data, allowing you to trigger complex, pre-configured workflows with a single click.
-
-
-This guide will walk you through two key areas:
-1. **What can the Button field do?**—Unlock its full potential.
-2. **How do you use it?**—A step-by-step guide to configuring your first automation button.
-
-
----
-
-## What Can You Do With It?
-
-The core value of the Button field lies in its ability to connect and execute. It can link data within your tables and integrate with external systems, bundling a series of actions into a single click.
-
-### Use Case 1: One-Click Lead Conversion
-
-In a CRM, when a sales representative identifies a mature lead, they can simply click a "Convert to Opportunity" button.
-
-The automation instantly creates a new record in the "Opportunities Table," populates it with all the key information from the lead, and updates the original lead's status to "Converted."
-
-
-### Use Case 2: One-Click Content Scheduling
-
-Once a content draft is approved, an editor clicks the "Schedule for Publication" button.
-
-The system automatically creates a new post entry in the "Social Media Schedule Table" and sends an email notification to the social media manager: "A new draft [xxx] is ready for scheduling."
-
-
-
-### Use Case 3: One-Click Task Reminders
-
-When a project task is nearing its deadline but remains incomplete, the project manager clicks the "Send Reminder" button.
-
-The system immediately sends a notification via your team's preferred communication tool (e.g., Slack, Teams, Email): "[Task Reminder] The task 'XXX' assigned to you is due soon. Please prioritize its completion!" This seamlessly integrates your data table with your team's communication workflow.
-
-
----
-
-## How to Set It Up
-
-Let's walk through the classic "One-Click Lead Conversion" example to see how to configure a button.
-
-First, you'll need two tables: a **"Leads Table"** and an **"Opportunities Table"**.
-
-### Step 1: Create the Button Field
-
-In your "Leads Table," add a new field with the following settings:
-
-1. **Field Type**: Choose "Button".
-2. **Button Label**: Enter "Convert" and pick a distinct color, like blue.
-3. **Confirm Before Click** (Optional): If this step should not be triggered by mistake, turn on the confirmation dialog and fill in the title, content, and confirm-button text.
-
-
-
-### Step 2: Custom the Automation Workflow
-
-
-
-1. Click "Custom automation"
-
-2. **Configure Actions**: Define what happens when the button is clicked.
- - **Action 1: Create a new record in the "Opportunities Table"**
- - **Action Type**: Select "Create Record".
- - **Target Table**: Choose the "Opportunities Table".
- - **Field Mapping**: This is the most critical part, where you pass data from the lead to the new opportunity.
- > - `Opportunity Name` field = `Company Name` from the triggering record.
- > - `Related Contact` field = `Contact Name` from the triggering record.
- > - ... (map other relevant fields).
- - **Action 2: Update the current lead's status**
- - Add a second action of type "Update Record".
- - **Target Table**: "Leads Table".
- - **Record ID**: Select the ID "from the record that triggered the workflow".
- - **Field to Update**: Set the `Status` field to "Converted".
-
-And you're done! Your "Lead to Opportunity" workflow is now active.
-
-
-In the "Actions" step, you can add even more powerful integrations.
-
-#### Send an Email
-
-To notify a sales director of a new conversion, add a "Send Email" action. You can configure:
-- **Recipient**: Use a static email address or dynamically pull from a "User" field.
-- **Subject/Body**: Insert dynamic values from the triggering record.
- > Example: "New Opportunity: [Company Name] was converted by [Owner]."
-
-
-> Example of a task reminder email.
-
-#### Make an HTTP Request
-This advanced feature lets you communicate with any external system via API. For instance, you could sync a new customer's details to a separate accounting software.
-
-
-
-
----
-
-## Advanced Feature: Precise Control with Limit Clicks
-
-The Button field settings include two powerful options: "Max Clicks" and "Allow Reset".
-
-### Feature Breakdown
-- **Max Clicks**: Sets a maximum number of times the button can be clicked for each individual record. The button becomes disabled once the limit is reached.
-- **Allow Reset**: Allows a user to manually reset the click count, re-enabling a disabled button.
-
-### Use Case: Preventing Duplicate Lead Conversions
-
-
-This simple setting is crucial for maintaining data integrity. By setting the maximum clicks to `1`, you ensure a lead can only be converted into one opportunity, eliminating the risk of duplicate records from accidental double-clicks.
-
-
-- **Max Clicks**: Set to `1`.
-- **Allow Reset**: Keep this option disabled.
-
-
-
-With these granular controls, the Button field evolves from a simple trigger into a smart controller with built-in business logic, capable of handling more complex and sophisticated management scenarios.
diff --git a/en/basic/field/advanced/button.mdx b/en/basic/field/advanced/button.mdx
deleted file mode 100644
index c121b48b..00000000
--- a/en/basic/field/advanced/button.mdx
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: "Button"
----
-
-The Button field is a powerful, interactive field that turns each row in your table into an actionable element. With a single click, users can instantly trigger a pre-configured automation, accomplishing everything from simple status updates to complex system integrations.
-
-### **Feature Details**
-
-* **Trigger Automations with a Click**: A button serves as a manual trigger for your automations. This provides the perfect entry point for workflows that require a human decision to kick them off.
-
-* **Customizable Appearance**: Freely customize the button's label and color to make it visually intuitive and clearly communicate its purpose (e.g., "Submit for Approval," "Send Reminder," "Generate Report").
-
-### **Use Cases**
-
-The Button field is incredibly versatile, simplifying repetitive, multi-step manual tasks into a single click.
-
-* **Managing Statuses**: In a project management board, you can create buttons like "Start Task," "Mark as Complete," or "Archive." A single click can automatically update the "Status" field for that record, moving the workflow forward.
-
-* **Moving Data Between Tables**: In a CRM, when a lead is qualified, a "Convert to Opportunity" button can trigger an automation that copies key information from the lead record and creates a new entry in your "Opportunities" table.
-
-* **Sending Notifications**: Need to send a follow-up? A "Send Reminder" button can trigger an automation to send a customized message via email, Slack, or another service, complete with a link back to the specific record.
-
-* **Integrating with Other Systems**: By using an HTTP request as your automation's action, a button click can trigger actions in external services via their APIs.
-
-### **How to Use**
-
-1. **Add and Configure the Field**: Create a new field in your table and select the "Button" type.
- * **Label and Color**: Customize the text (e.g., "Send Email") and color of the button.
- * **Limit Click** (Optional): Enable the "Limit number of clicks" toggle to set a maximum number of times the button can be clicked for each record (e.g., once). You can also configure whether the click count can be reset.
- * **Confirm Before Click** (Optional): Turn this on to configure the confirmation dialog title, body, and confirm-button text for actions that should be confirmed before running.
-2. **Custom Automation**: Create a new automation using "When a button is clicked" as the trigger.
-3. **Define the Action**: In the "Actions" section of your automation, define what you want to happen when the button is clicked, such as updating the record, creating a new record, sending an email, and more.
-
-### **Important Notes**
-
-* **Automation Run Quotas**: Each successful button click that triggers an automation will count against your workspace's automation run quota. Please refer to our pricing and limits documentation for more details.
-* **Permissions are Separate**: The permission to click a button is separate from the permission to edit a record. **This means users with read-only access, or even visitors viewing a shared link, can click the button and trigger its automation as long as the button is visible to them.** This makes it a secure way to grant operational permissions for things like approvals, voting, or external feedback without granting access to edit the underlying data.
-* **Dependent on Automations**: A button does nothing on its own. Its functionality is entirely dependent on its linked automation. If the automation is disabled or deleted, clicking the button will have no effect.
diff --git a/en/basic/field/advanced/conditional-lookup.mdx b/en/basic/field/advanced/conditional-lookup.mdx
deleted file mode 100644
index feb2153f..00000000
--- a/en/basic/field/advanced/conditional-lookup.mdx
+++ /dev/null
@@ -1,117 +0,0 @@
----
-title: "Conditional Lookup"
-description: "Cross-table data query functionality that dynamically fetches records based on filter conditions without requiring pre-established table relationships."
----
-
-## Overview
-
-Conditional Lookup is a cross-table data query feature that allows you to dynamically fetch qualifying data records from other tables based on configured filter conditions, without the need to pre-establish relationships between tables.
-
-- **Flexible Filtering**: Support for complex condition combinations to precisely target relevant data
-- **Dynamic Matching**: Reference current table field values as filter conditions for intelligent queries
-- **Result Control**: Support for sorting and quantity limits to focus on key information
-
-## Procedure
-
-**Step 1: Create Conditional Lookup Field**
-1. Click the + icon on the right side of the field name
-2. Select "Conditional Lookup" field type
-3. Enter field title (e.g., "Related Orders")
-
-**Step 2: Select Target Table**
-1. Choose the data table to query from the "Target Table Selection" dropdown menu
-2. The system will display the field list of that table for subsequent configuration
-
-**Step 3: Configure Lookup Field**
-1. Select the data field to extract from the "Lookup Field"
-2. Determine the return data type (text, number, date, etc.)
-
-**Step 4: Set Filter Conditions**
-1. Click "Add Filter Condition"
-2. Select the field to filter
-3. Select condition type (equals, not equals, contains, greater than, less than, contains, not contains, etc.)
-4. Set comparison value:
- - Static value: Directly input specific numerical value
- - Field reference: Select current table field as dynamic value
-
-**Step 5: Configure Sorting and Limits (Optional)**
-1. Set sorting field and sorting method (ascending/descending)
-2. Set display record quantity limit
-
-**Note**: At least one filter condition must be configured. For multiple conditions, you can choose "All conditions met (AND)" or "Any condition met (OR)" logic.
-
-## Use Cases
-
-### Use Case 1: Sales Data Period-over-Period Analysis
-
-**Data Tables:**
-- Period Sales Summary Table (contains period, start date, end date, sales amount fields)
-- Sales Detail Table (contains sales amount, sales date fields)
-
-**Scenario:**
-Calculate period-over-period growth rates for each period in the period sales summary table. Obtain current and previous period sales amounts through conditional rollups, then use formulas to calculate period-over-period values for automated comparative analysis.
-
-**Procedure:**
-
-**Create Conditional Rollup Field for Current Period Sales**
-1. Create new conditional rollup field in period sales summary table, title "Current Period Sales"
-2. Target table: Sales Detail Table
-3. Rollup field: Sales Amount
-4. Filter conditions:
- - Field: Sales Date → Condition: Less than or equal → Value: End Date field of current table
- - Field: Sales Date → Condition: Greater than or equal → Value: Start Date field of current table
-5. Aggregate function: Sum
-
-**Create Conditional Lookup Field for Previous Period Sales**
-1. Create new conditional lookup field, title "Previous Period Sales"
-2. Target table: Period Sales Summary Table (this table)
-3. Field: Current Period Sales
-4. Filter conditions:
- - Field: End Date → Condition: Equals → Value: Previous Period End Date field of current table
-5. Aggregate function: Sum
-
-**Create Formula Field for Period-over-Period Calculation**
-1. Create new formula field, title "Period-over-Period Growth Rate"
-2. Formula: `(Current Period Sales - Previous Period Sales) / Previous Period Sales * 100`
-3. Format: Percentage, 2 decimal places
-
-### Use Case 2: Sales Data Product Analysis
-
-**Data Tables:**
-- Product Table (contains category ID, product name, sales volume fields)
-- Category Table (contains category ID, category name fields)
-
-**Scenario:**
-Find the top-selling products in each category within the category table to quickly understand star products across different categories.
-
-**Procedure:**
-
-**Top Selling Product**
-1. Create new conditional lookup field in category table, title "Top Selling Product"
-2. Target table: Product Table
-3. Lookup field: Product Name
-4. Filter conditions:
- - Field: Category ID → Condition: Equals → Value: Category ID field of current table
-5. Sorting: Sales Volume field → Descending
-6. Limit display: 1 record
-
-**Sales Volume**
-1. Create another conditional lookup field, title "Sales Volume"
-2. Target table: Product Table
-3. Lookup field: Sales Volume
-4. Filter conditions:
- - Field: Category ID → Condition: Equals → Value: Category ID field of current table
-5. Sorting: Sales Volume field → Descending
-6. Limit display: 1 record
-
-## FAQ
-
-
-Filter field availability depends on the following limitations:
-- **Field Type Limitations**: Certain complex field types (such as images, attachments) do not support filter conditions
-
-
-
-Key differences:
-- **Association Method**: Regular Lookup requires pre-established relationship fields, while Conditional Lookup can dynamically configure filter conditions
-
\ No newline at end of file
diff --git a/en/basic/field/advanced/conditional-rollup.mdx b/en/basic/field/advanced/conditional-rollup.mdx
deleted file mode 100644
index f9fe3950..00000000
--- a/en/basic/field/advanced/conditional-rollup.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: "Conditional Rollup"
-description: "Cross-table data query functionality that performs statistical calculations on filtered data, returning single aggregated result values."
----
-
-## Overview
-
-Conditional Rollup is a cross-table data query feature that performs statistical calculations on filtered data, returning a single aggregated result value. It allows you to obtain qualifying data from other tables based on configured filter conditions and perform statistical analysis without pre-establishing relationships between tables.
-
-- **Conditional Aggregation**: Only perform statistics on data that meets conditions, excluding irrelevant data
-- **Multi-dimensional Statistics**: Support for various calculation methods including sum, count, average, etc.
-- **Real-time Updates**: Automatically recalculate when source data changes to ensure data accuracy
-
-## Procedure
-
-**Step 1: Create Conditional Rollup Field**
-1. Click the + icon on the right side of the field name
-2. Select "Conditional Rollup" field type
-3. Enter field title (e.g., "Total Sales Amount")
-
-**Step 2: Select Target Table**
-1. Choose the data table to query from the "Target Table Selection" dropdown menu
-2. The system will display the field list of that table for subsequent configuration
-
-**Step 3: Configure Rollup Field**
-1. Select the data field to perform statistical calculations on from the "Rollup Field"
-2. Determine data type (number, text, date, etc.)
-
-**Step 4: Set Filter Conditions**
-1. Click "Add Filter Condition"
-2. Select the field to filter
-3. Select condition type (equals, not equals, contains, greater than, less than, before, after, etc.)
-4. Set comparison value:
- - Static value: Directly input specific numerical value
- - Field reference: Select current table field as dynamic value
-
-**Step 5: Select Aggregate Function**
-
-- Select appropriate calculation method based on data type: original value, unique, unique count, sum, count, average, maximum, minimum, etc.
-
-## Use Cases
-
-### Use Case 1: Team Task Volume Statistics
-
-**Tables:**
-- Task Table
-- Statistics Table
-
-**Scenario:**
-Team administrators need to count the number of tasks in different statuses for each employee, including in-progress and completed tasks, for workload management and progress tracking.
-
-**Procedure:**
-
-**In-Progress Tasks**
-1. Create new conditional rollup field in employee information table, title "In-Progress Tasks"
-2. Target table: Task Assignment Table
-3. Rollup field: Task ID
-4. Filter conditions:
- - Field: Assignee → Condition: Equals → Value: Employee field of current table
- - Field: Task Status → Condition: Equals → Value: "In Progress"
-5. Aggregate function: Count All
-
-**Completed Tasks**
-1. Create another conditional rollup field, title "Completed Tasks"
-2. Target table: Task Assignment Table
-3. Rollup field: Task ID
-4. Filter conditions:
- - Field: Assignee → Condition: Equals → Value: Employee field of current table
- - Field: Task Status → Condition: Equals → Value: "Completed"
-5. Aggregate function: Count All
-
-### Use Case 2: Find Duplicate Values
-
-**Tables:**
-- Customer Table (contains customer name, contact phone fields)
-
-**Scenario:**
-Find duplicate customer names in the customer table to identify duplicate customer records for data cleaning and customer information management.
-
-**Procedure:**
-1. Create new conditional rollup field in customer table, title "Customer Name Duplicate Count"
-2. Target table: Customer Table (this table)
-3. Rollup field: Customer Name
-4. Filter conditions:
- - Field: Customer Name → Condition: Equals → Value: Customer Name field of current table
-5. Aggregate function: Count All
-6. Create new formula field, title "Duplicate Flag"
-7. Formula: `IF(Customer Name Duplicate Count > 1, "❗️ Duplicate", BLANK())`
-
-**Result**: The customer table will display the occurrence count of each customer name, and show "❗️ Duplicate" flag next to duplicate records for quick identification and processing of duplicate data.
-
-## FAQ
-
-
-Key differences:
-1. **Return Results**: Conditional Rollup returns a single calculated value, while Conditional Lookup returns a list of multiple original values
-2. **Different Uses**: Conditional Rollup is used for statistical analysis, while Conditional Lookup is used for viewing detailed data
-3. **Calculation Method**: Conditional Rollup includes aggregate calculations, while Conditional Lookup only filters and extracts data
-
\ No newline at end of file
diff --git a/en/basic/field/advanced/created-by.mdx b/en/basic/field/advanced/created-by.mdx
deleted file mode 100644
index 4f3dc2e2..00000000
--- a/en/basic/field/advanced/created-by.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: "Created By"
-description: "The Created By field is a special field that automatically identifies and records the initial creator of a data entry. It provides teams with a powerful way to track and manage data origins, particularly valuable in contexts where knowing the data source or responsible person is important."
----
-
-### Data Filtering and Sorting
-
-* **Filter by Creator**: You can use the Created By field to filter data by its initial creator. This is particularly useful when you need to find all data entries created by a specific person.
-
-### Dynamic View Display
-
-* **Filter Based on Current Creator**: Similar to member fields, the Created By field also allows applications to dynamically display content based on the current user (if they are the data creator). This ensures each creator only sees the data entries they created.
-
-### Data Association
-
-* **Data-Creator Association**: This field clearly shows the creator of each data entry, ensuring that the origin of each entry can be easily identified within the team.
-
-### How to Use
-
-* **Automatic Recording**: The Created By field is automatically filled when a new data entry is created, recording the current user as the creator.
-* **Filtering Function**: In data views, select the Created By field as a filter condition, then choose specific creators to find all entries they created.
-
-### Important Notes
-
-* The Created By field is read-only, meaning it cannot be manually changed or edited.
diff --git a/en/basic/field/advanced/created-time.mdx b/en/basic/field/advanced/created-time.mdx
deleted file mode 100644
index 828ec70c..00000000
--- a/en/basic/field/advanced/created-time.mdx
+++ /dev/null
@@ -1,26 +0,0 @@
----
-title: "Created Time"
-description: "The Created Time field is a special field that automatically records when a data entry was created. This field provides users with an exact time reference, making it easy to understand and track when data was generated."
----
-
-### Automatic Recording
-
-* When a new data entry is created, this field automatically records the current date and time.
-
-### Data Filtering and Sorting
-
-* You can filter data entries based on creation time, helping to find data created within specific time periods.
-* Combined with other fields like "Modified By" or "Member Field," you can precisely find data created or modified by specific users within particular time periods.
-
-### Data Analysis
-
-* Particularly valuable for time series analysis of data, helping to understand data generation trends and cycles.
-
-### How to Use
-
-* **Auto-fill**: When creating new data entries, the Created Time field automatically records the current date and time without user intervention.
-* **Filter and Sort**: In data views, select the Created Time field as a filter or sort condition to find data entries created within specific time periods.
-
-### Important Notes
-
-* This field is automatically filled and cannot be modified. Any attempts to modify this field will be invalid.
diff --git a/en/basic/field/advanced/formula.mdx b/en/basic/field/advanced/formula.mdx
deleted file mode 100644
index 4c6a52c2..00000000
--- a/en/basic/field/advanced/formula.mdx
+++ /dev/null
@@ -1,76 +0,0 @@
----
-title: "Formula"
-description: "Through defining formulas in fields, developers and users can perform dynamic calculations on data"
----
-
-Formula fields allow you to perform calculations based on other field values. These calculations can be simple mathematical operations or complex string manipulations and logical evaluations.
-
-### Data Types and Formulas
-
-Before starting to write formulas, understanding data types is crucial for ensuring your formulas work correctly. Different data types support different operations and functions. Common data types include:
-
-* Numbers: Integers or decimals, supporting arithmetic operations.
-* Text: String values, supporting concatenation and partial text operations.
-* Dates: Specifically formatted dates, supporting date calculations.
-* Boolean: True (TRUE) or false (FALSE), used for logical operations.
-
-### Referencing Fields
-
-In formulas, you can reference other field values by their field names. Make sure to use the correct field names and note that field names are case-sensitive.
-
-### Formula Writing Practices
-
-When writing formulas, you'll use operators, functions, and field references. Here are some practical formula writing practices:
-
-#### Using Operators
-
-* **Addition** (`+`): Used for calculating sums of numbers or concatenating strings.
-* **Subtraction** (`-`): Used for calculating differences between numbers.
-* **Multiplication** (`*`): Used for calculating products of numbers.
-* **Division** (`/`): Used for calculating quotients of numbers.
-* **Modulo** (`%`): Used for calculating remainders of numbers.
-
-#### Applying Functions
-
-Functions are predefined formulas that perform specific operations. For example, the `SUM` function can calculate the total of multiple values, while the `LEFT` function can extract a certain number of characters from a text field. For text processing, you can also use `TEXTBEFORE` to extract the part before a delimiter, or `TEXTSPLIT` to split text by a delimiter.
-
-#### Handling Text
-
-When working with text, you might need to use the following operations:
-
-* **Concatenation**: Use the `&` operator or `CONCATENATE` function to join two or more text strings.
-* **Substrings**: Use `LEFT`, `RIGHT`, `MID`, or `TEXTBEFORE` functions to extract parts of strings.
-* **Splitting text**: Use `TEXTSPLIT` to split text into multiple values by a specified delimiter.
-
-#### Logical Evaluation
-
-Use the `IF` function for logical evaluation to return different values based on conditions. The format is:
-
-```js
-IF(condition, value_if_true, value_if_false)
-```
-
-To check whether a field is empty, compare it with `BLANK()`. For example, `IF({Weight}=BLANK(), 1, 2)` returns `1` when a number field is empty, otherwise it returns `2`.
-
-#### Complex Expressions
-
-You may need to write complex expressions involving multiple operations and functions. In such cases, ensure you use proper parentheses to control the order of operations.
-
-### Formatting and Interactive Display
-
-Formula results can also use [formatting](/en/basic/field/common/formatter) and [interactive display](/en/basic/field/common/show-as) settings, such as percentage formatting, progress bars, or icon styles. Because the result type is inferred while you write the formula, the available display options update along with it.
-
-## Debugging and Optimization
-
-Once a formula is written correctly, it should execute without errors and return expected results. If a formula isn't working as expected, you may need to debug it.
-
-### Debugging Tips
-
-* **Check Data Types**: Confirm that your operations and functions use the correct data types.
-* **Verify Field References**: Ensure referenced field names are correct.
-* **Step-by-Step Testing**: Break down complex formulas into smaller parts and test each part separately.
-
-### Performance Considerations
-
-* **Avoid Redundant Calculations**: If the same calculation is used in multiple places, consider storing its result in a separate field.
-* **Limit Complex Functions**: Some complex functions, such as those involving large data operations, may impact performance.
diff --git a/en/basic/field/advanced/formula/grammar.mdx b/en/basic/field/advanced/formula/grammar.mdx
deleted file mode 100644
index b9d18787..00000000
--- a/en/basic/field/advanced/formula/grammar.mdx
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: "Formula Grammar"
----
-
-### Basic Elements
-
-Our formula grammar consists of several basic elements:
-
-* **Strings**: Text surrounded by single or double quotes, such as 'Hello' or "World".
-* **Numbers**:
- * **Integers**: Pure numbers like 123 or -456.
- * **Decimals**: Numbers with decimal points like 12.34 or -45.67.
-* **Boolean Values**: These include `TRUE` and `FALSE`, representing true and false states.
-* **Field References**: Used to reference values from specific fields. They must be written with curly braces, such as `{age}`, and the field name must match the actual field exactly.
-
-### Operators
-
-Operators in formulas are used to connect or compare values:
-
-* **Mathematical Operations**:
- * Addition (+)
- * Subtraction (-)
- * Multiplication (*)
- * Division (/)
- * Modulo (%)
-
-* **Comparison Operations**:
- * Greater than (>)
- * Less than (\<)
- * Greater than or equal to (>=)
- * Less than or equal to (\<=)
- * Equal to (=)
- * Not equal to (!=)
-* **Logical Operations**:
- * Logical AND (&&)
- * Logical OR (||)
-
-### Function Calls
-
-You can call functions within formulas. A function call consists of a function name, a pair of parentheses, and parameters inside the parentheses. Parameters are separated by commas.
-
-For example: `sum(1, 2, 3)` calls a function named `sum` with three parameters: 1, 2, and 3.
-
-### Other Structures
-
-1. **Parentheses**: You can use parentheses to change operation precedence, such as `(1 + 2) * 3`.
-2. **Comments**: To improve formula readability or provide additional context for other users, you can add comments. Block comments are enclosed by `/*` and `*/`, while line comments start with `//`.
-3. **Whitespace**: In formulas, whitespace, line breaks, and comments are typically ignored, but they can help improve formula readability.
diff --git a/en/basic/field/advanced/last-modified-by.mdx b/en/basic/field/advanced/last-modified-by.mdx
deleted file mode 100644
index d443cf52..00000000
--- a/en/basic/field/advanced/last-modified-by.mdx
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: "Last Modified By"
-description: "The Last Modified By field automatically records the user who made the most recent changes to a specific data entry. This provides teams with a clear and accurate way to track the source of data modifications."
----
-
-### Feature Details
-
-#### Data Filtering
-
-* **Filter by Modifier**: You can use the filtering function to find all data entries modified by specific individuals.
-
-#### Dynamic View Display
-
-* **Filter Based on Last Modifier**: This field can configure applications to dynamically display content based on who last modified the data, ensuring teams can quickly find data updated by specific members.
-
-### How to Use
-
-* **Automatic Recording**: When a data entry is modified, the Last Modified By field automatically updates to record the current user as the last modifier.
-
-* **Filtering Function**: In data views, select the Last Modified By field as a filter condition, then choose specific modifiers to find all entries they modified.
-
-### Important Notes
-
-* The Last Modified By field updates automatically, and users cannot manually change the value of this field.
diff --git a/en/basic/field/advanced/last-modified-time.mdx b/en/basic/field/advanced/last-modified-time.mdx
deleted file mode 100644
index 5728b101..00000000
--- a/en/basic/field/advanced/last-modified-time.mdx
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: "Last Modified Time"
-description: "The Last Modified Time field is a special field that automatically records when a data entry was last updated. This field provides users with a timeline of data changes."
----
-
-### Feature Details
-
-#### Dynamic View Display
-
-* Automatically Updated Timestamp: Whenever a data entry is modified, this field automatically updates to the current date and time.
-
-#### Data Filtering
-
-* Filter by Modification Time: Users can filter data based on the last modification time, helping to find data entries updated within specific time periods.
-
-#### Data Sorting
-
-* Sort by Modification Time: Ability to sort data entries based on their most recent modification time, making it easy to find the newest or oldest entries.
-
-### How to Use
-
-* **Automatic Recording**: This field is automatically filled and requires no manual user operation. The timestamp automatically updates to the current time whenever a data entry is modified.
-
-* **Filter and Sort**: In data views, select the Last Modified Time field for filtering or sorting to find or organize data entries.
\ No newline at end of file
diff --git a/en/basic/field/advanced/link.mdx b/en/basic/field/advanced/link.mdx
deleted file mode 100644
index 56f20967..00000000
--- a/en/basic/field/advanced/link.mdx
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: "Link"
-description: "Link fields are powerful tools in data management that allow users to establish relationships between different tables. Through link fields, users can easily insert records from other tables into the current table and quickly view and navigate to linked data tables."
----
-
-## Creating Link Fields
-
-Open the table where you need to add a link field. Select "Add Field," then choose "Link Field." From the dropdown menu, select the table you want to link to.
-
-Select the link type: Open the table where you want to add a link field, click "Add Field," then select "Link Field." Choose the table you want to link to from the dropdown menu.
-
-One-way vs. Two-way Links: If you want data to update only in the current table, choose a one-way link. If you want both tables to reflect link changes, choose a two-way link. Two-way links create a symmetric link field in the linked table, and the data in both link fields is always mutually mapped.
-
-Define Link Relationship: Configure the current table field and corresponding link field, determining whether to **Allow Single Selection** or **Allow Multiple Selection**. Through the combination of configurations for both link fields, we can define the relationship between data, which is explained in detail below.
-
-## One-way vs. Two-way Links
-
-Users can choose whether to create two-way links based on their needs.
-
-### One-way Links
-
-Definition: A link created in one table does not automatically create a link in the other table. Example: Imagine following a celebrity on social media - you can see their updates, but they might not know who you are.
-
-### Two-way Links
-
-Definition: A link created in one table automatically creates a corresponding link in the other table. Example: Like Facebook friend requests - when you add someone as a friend, they also add you as a friend.
-
-## Link Relationships
-
-When building relationships in databases, we typically encounter several types of link relationships. These relationships help us better organize data and understand interactions between different tables.
-
-## Link Relationships and How to Establish Them
-| Relationship Type | Description | Example | How to Create in Table A |
-| ---------------- | ----------- | ------- | ----------------------- |
-| One-to-One | One record in Table A links to only one record in Table B. | An author and their unique autobiography. | Single select in Table A + Single select in symmetric Table B field |
-| One-to-Many | One record in Table A can link to multiple records in Table B. | An author and their multiple books. | Multiple select in Table A + Single select in symmetric Table B field |
-| Many-to-One | Multiple records in Table A might link to one record in Table B. | Multiple authors with one common publisher. | Single select in Table A + Multiple select in symmetric Table B field |
-| Many-to-Many | Multiple records in Table A can link to multiple records in Table B. | Multiple authors and multiple literary awards. | Multiple select in Table A + Multiple select in symmetric Table B field |
-
-### Relationship Examples Analysis
-
-To better understand these relationship types, let's use authors and their works as examples:
-
-1. **One-to-One Relationship**: If J.K. Rowling wrote only one autobiography, then there's a one-to-one relationship between her and this autobiography.
-2. **One-to-Many Relationship**: J.K. Rowling wrote multiple books in the "Harry Potter" series. Here, there's a relationship between one author and multiple books.
-3. **Many-to-One Relationship**: If we consider multiple authors like J.K. Rowling, George Orwell, and Jane Austen all working with one publisher "Classic Books," then the relationship between these authors and the publisher is many-to-one.
-4. **Many-to-Many Relationship**: Suppose "International Literary Award" and "Best Author of the Year" are two awards, and both J.K. Rowling and George Orwell have won both awards. In this case, there's a many-to-many relationship between the two authors and the two awards.
-
-### Important Notes
-
-In a one-to-many relationship in Table A, the same record from Table B can only be selected once in Table A. In other words, once a record from Table B is selected as a linked record in Table A, that record will not appear in the selection list in Table A again. This is determined by the nature of the link relationship.
-
-**Example**: Suppose we have an "Authors" table (Table A) and a "Books" table (Table B). In the "Authors" table, there's a one-to-many relationship field for selecting books written by each author. Now, when we select "Harry Potter and the Philosopher's Stone" for one author, this book won't appear in the selection list for other authors because it's already linked to one author. This ensures each book can only be linked to one author, following the one-to-many relationship rules.
-
-## Further Extensions
-
-After setting up link fields, we can proceed with advanced lookup and rollup operations. These features work together to achieve powerful automatic data lookup and aggregation calculation capabilities. Please see the Lookup and Rollup Field sections for details.
diff --git a/en/basic/field/advanced/lookup.mdx b/en/basic/field/advanced/lookup.mdx
deleted file mode 100644
index 77fee88c..00000000
--- a/en/basic/field/advanced/lookup.mdx
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: "Lookup"
-description: "A lookup field is an action for creating a field based on an existing link field. It allows you to reference specific data fields from another table through a link field. This not only enables cross-table data sharing but also ensures data consistency and integrity."
----
-
-> Unlike other products, our "Lookup" is not a field type. Lookup is considered a special action here. When you create a lookup, you're actually creating a field of the same type as the field you're referencing, with data obtained from the linked records of that field.
-
-## Relationship Between Lookup Fields and Link Fields
-
-To use lookup fields, you first need to create a link field to connect two tables. Once the link is established, you can use lookup fields in one table to reference any field from the other table.
-
-## How to Create a Lookup Field
-
-Ensure you have created a link field between the two tables you want to connect. In the table where you want to add the lookup field, select "Add Field," then choose "Lookup." Based on the existing link field, select the source table and specific field you want to reference.
-
-## Lookup Field Use Cases and Examples
-
-Consider the following bookstore scenario:
-
-First, we have two tables: "Author Details" and "Books."
-
-### Author Details Table
-
-| Author Name | Birth Year |
-| ---------------- | ---------- |
-| Steve McConnell | 1960 |
-| Martin Fowler | 1963 |
-| Erich Gamma | 1961 |
-
-In this table, we list each author's birth year.
-
-### Books Table
-
-| Book Title | Author Link | Author Birth Year (Lookup Field) |
-| ---------------- | ---------------- | ------------------------------- |
-| "Code Complete" | Steve McConnell | 1960 |
-| "Refactoring" | Martin Fowler | 1963 |
-| "Design Patterns" | Erich Gamma | 1961 |
-
-In the Books table, when we select an author, the author birth year lookup field automatically displays the selected author's birth year:
-
-* For "Code Complete", we selected author Steve McConnell, whose birth year is 1960, so the author birth year lookup field shows 1960.
-
-* For "Refactoring", we selected author Martin Fowler, whose birth year is 1963, so the author birth year lookup field shows 1963.
-
-* For "Design Patterns", we selected author Erich Gamma, whose birth year is 1961, so the author birth year lookup field shows 1961.
-
-Through using lookup fields, we can easily display each author's birth year in the "Books" table without having to repeatedly enter or manually look up the data for each book. This is a very useful feature that allows us to avoid duplicate data entry, ensure data consistency and accuracy, and simplify the data management process.
-
-## Formatting and Interactive Display
-
-The data type, [formatting](/en/basic/field/common/formatter), and [interactive display](/en/basic/field/common/show-as) of lookup fields are determined by the referenced field. This means if you reference a date type field, the lookup field will also be treated as a date type and can be formatted accordingly.
-
-## Formulas and Rollup Calculations
-
-When lookup fields are used in formulas or rollup calculations, their data type is also determined by the referenced field. For example, if you use a lookup field in a formula that references a number type field, that lookup field will behave like a number in the formula.
-
-## Important Notes
-
-**Data Integrity:** Ensure that your source table and fields exist and are valid. Deleting source tables or fields may prevent lookup fields from displaying data correctly. Display Format: Lookup fields can have the same display format as the referenced field, meaning if you modify the data display format in the source table, it will be reflected in the lookup field.
-
-**Single Value vs. Multiple Values:** Referenced fields may change from single-value to multiple-value types due to many-to-one relationships. For example, a single select field might appear as a "multiple select" after being referenced due to multiple linked records. This is normal logic. Please see the [Single Value vs. Multiple Value chapter](/en/basic/field/common/is-multiple-value) for further understanding.
-
-## Conclusion
-
-Lookup fields provide an efficient, streamlined method for cross-table data referencing and display. This flexibility allows users to easily share and calculate data between different tables without complex data synchronization or conversion. Understanding this concept will help users use the product more flexibly and efficiently, maximizing their data management and automation capabilities.
-
diff --git a/en/basic/field/advanced/rollup.mdx b/en/basic/field/advanced/rollup.mdx
deleted file mode 100644
index ede9d672..00000000
--- a/en/basic/field/advanced/rollup.mdx
+++ /dev/null
@@ -1,88 +0,0 @@
----
-title: "Rollup"
-description: "Rollup fields allow you to perform aggregate calculations on data in linked tables, such as sum, average, count, etc. This feature is particularly useful for scenarios requiring summarization of related data for analysis and reporting."
----
-
-{/* mintlify-resync: 2026-05-14 */}
-## Relationship Between Rollup Fields and Link Fields
-
-Rollup fields depend on previously created link fields. Through link fields, rollup fields can "see" related records in another table and perform various calculations on them.
-
-## Formatting Rollup Data
-
-After performing rollups, you can not only get calculation results but also [format](../common/formatter) these results and configure [interactive displays](../common/show-as) to make them more readable and understandable. Formatting allows you to present rollup data in specific styles and formats, while interactive displays let you configure different UI and interaction options for calculation results. This not only makes data more readable but also helps ensure data consistency across different contexts and application scenarios.
-
-## How to Create a Rollup Field?
-
-1. In a table with a link field, select "Add Field," then choose "Rollup Field."
-2. Select an existing link field to determine the data source for the rollup.
-3. Choose the field you want to roll up, then specify the aggregation operation to perform (complete list of operations below).
-
-## Rollup Field Use Cases and Examples
-
-Let's say you're managing a bookstore database with two tables:
-
-**Table A**: Orders
-
-**Table B**: Books
-
-The Orders table records customer purchase information, while the Books table contains pricing for each book.
-
-If you want to sum up the total amount for each order, you can:
-
-1. Create a link field in the "Orders" table linking to the "Books" table.
-2. Then, create a rollup field in the "Orders" table, selecting the link field created in the previous step.
-3. Specify "SUM" as the rollup operation and select the price field from the "Books" table as the target for rollup.
-
-Let's look at two tables: a "Book Details" table and an "Orders" table.
-
-### Book Details Table
-
-| Book Title | Price |
-| ---------------------- | ----- |
-| "Code Complete" | $60 |
-| "Design Patterns" | $40 |
-| "Refactoring" | $50 |
-
-In this table, we list the price of each book.
-
-### Orders Table
-
-| Order No. | Books (Link Field) | Total Amount (Rollup Field) |
-| --------- | ---------------------------------------- | -------------------------- |
-| 001 | "Code Complete", "Design Patterns" | $100 |
-| 002 | "Refactoring", "Design Patterns" | $90 |
-
-In the Orders table, when we select certain books, the rollup field automatically calculates the total price of the selected books:
-
-* For order 001, we selected "Code Complete" and "Design Patterns", priced at `$60` and `$40` respectively, so the total amount rollup field shows `$100`.
-* For order 002, we selected "Refactoring" and "Design Patterns", priced at `$50` and `$40` respectively, so the total amount rollup field shows `$90`.
-
-Through this combination of link fields and rollup fields, we can easily automatically calculate the total amount for each order in the Orders table without manual input or calculation.
-
-## Supported Rollup Formulas
-
-| Formula Name | Explanation |
-| -------------- | --------------------------------------------------------------------- |
-| COUNTALL | Counts all values, including text values and blanks |
-| COUNTA | Counts the number of non-empty values |
-| COUNT | Counts the number of numeric items |
-| SUM | Calculates the sum of all numeric values |
-| MAX | Returns the maximum value among all numbers |
-| MIN | Returns the minimum value among all numbers |
-| AND | Returns true if all values are true |
-| OR | Returns true if any value is true |
-| XOR | Returns true if an odd number of values are true |
-| ARRAY_JOIN | Joins all values in an array into a string |
-| ARRAY_UNIQUE | Removes duplicates from an array and returns a new array with unique values |
-| ARRAY_COMPACT | Removes all empty values from an array and returns a new array |
-| CONCATENATE | Joins multiple values into a string |
-
-## Important Notes
-
-* **Performance Considerations**: Large numbers of rollup operations may affect performance, especially when dealing with many data records. The system will provide the fastest possible calculation speed, but periodically optimizing and reviewing your rollup settings can better ensure application write performance.
-* **Rollup Formulas**: Rollup fields will automatically provide allowed rollup formulas based on the data type of your selected rollup field, so you won't always see all rollup formulas.
-
-## Conclusion
-
-Rollup fields are one of the powerful data analysis tools, reducing the burden of manual summarization and data updates through automated calculations. They provide a quick and flexible way to view and analyze aggregate information from related data.
diff --git a/en/basic/field/advanced/user.mdx b/en/basic/field/advanced/user.mdx
deleted file mode 100644
index 7211e48a..00000000
--- a/en/basic/field/advanced/user.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: "User"
-description: "The User field provides a powerful tool that allows you to specify, identify, and classify participants in your projects."
----
-
-### Data Filtering and Sorting
-
-* **Filter Participants**: You can use the User field to filter specific participants. This is particularly useful for finding all projects or tasks related to specific individuals.
-
-* **Multiple Filtering**: Combining filtering with other fields allows you to manage information more precisely, such as finding all tasks assigned to specific members within a particular department.
-
-### Dynamic View Display
-
-* **Current User-Based Filtering**: Using the User field, you can set up filters for [Current User] to dynamically display content based on the currently logged-in user. This means each user will see customized, relevant projects or tasks when they log in and access the system.
-
-### Data Association
-
-* **Project and User Association**: Through the User field, you can clearly identify which users are associated with which projects. This not only helps improve project transparency but also facilitates team collaboration.
-
-### Data Visualization
-
-* **Personalized Dashboards**: Combined with other features, the User field can be used to create customized dashboards for specific users or teams, displaying data and progress directly relevant to them.
-* **User Kanban**: Combined with the Kanban view feature, a single-select User field can serve as a Kanban grouping item, allowing you to conveniently assign tasks to users through card dragging.
-
-### How to Use
-
-1. **Add User Field**: When creating or editing a data table, select User as the field type.
-2. **Specify Participants**: In projects or tasks, click on the User field and select participants to associate from the dropdown list.
-3. **Filter and Sort**: In the data view, use the filtering function to select the User field, then choose specific users you want to filter results by.
diff --git a/en/basic/field/ai/ai-field.mdx b/en/basic/field/ai/ai-field.mdx
index 7d2cb32a..d7bad5bb 100644
--- a/en/basic/field/ai/ai-field.mdx
+++ b/en/basic/field/ai/ai-field.mdx
@@ -3,138 +3,148 @@ title: "AI Fields"
description: "AI fields can summarize text, classify tags, generate scores, or turn content into images."
---
-Available on all Cloud plans; Self-Hosted requires Business or higher.
+Available on all Cloud plans. Self-hosted deployments require the Business plan or higher.
## Main Use Cases
-AI fields work well when you want to turn raw content into a directly usable result. Common examples include:
-
-- Summarize a paragraph of text
-- Translate content into another language
-- Extract key information from text
-- Rewrite content to be shorter or more polished
-- Automatically classify a single select field or tag a multiple select field
-- Score a rating field or generate a new image from image-related content
+AI fields generate the current field value from other fields in the same row. Use them to turn raw content into summaries, translations, extracted details, categories, scores, dates, or images.
+
+
+
+ Summarize, translate, extract information, improve writing, or customize the output. Best for turning longer text into usable copy.
+
+
+ Smart classify or customize the output. Best for matching content to one existing category.
+
+
+ Smart tag or customize the output. Best for matching content to one or more existing tags.
+
+
+ Rate or customize the output. Best for generating scores or numeric results from source content.
+
+
+ Extract information or customize the output. Best for extracting dates or times from content.
+
+
+ Generate images or customize the output. Best for creating images from text or attachments.
+
+
+
+If you are not sure which action to use, start here:
+
+
+
+ - **Summarize**: Creates a summary from the source field.
+ - **Translate**: Translates the source field into the target language.
+ - **Extract Information**: Extracts specific information from text. Date fields can also use it to extract dates or times.
+
+
+ - **Improve Writing**: Rewrites content based on your additional requirements.
+ - **Smart Classify**: Matches a single select field to an existing option.
+ - **Smart Tag**: Matches a multiple select field to existing options.
+
+
+ - **Rate**: Generates a score or numeric value from the source content.
+ - **Generate Image**: Creates images in an attachment field. Some models support using an attachment field as a reference image.
+
+
+ Use a custom prompt when the default actions do not cover your case. Custom prompts can reference fields from the same row.
+
+
## Workflow
-### 1. Add the Field
-
-- Set the field name and field type first.
-- Then open **AI Configuration** and choose the AI action that fits this field.
-- Add source fields, instructions, and auto-update settings as needed.
+
+
+ Create a field, choose the field type, then expand **AI Configuration**. Each field type shows the AI actions it supports.
+
+
+ Choose the **AI Action Type** and **AI Model**. The action controls the task. The model controls which AI model generates the result.
+
+
+ Choose the field AI should read as input. The AI field generates its value from source fields in the same row.
+
+
+ Depending on the action, fill in **Additional Requirements**, **Target Language**, or a **Custom Prompt**. For image generation in attachment fields, use **Advanced Settings** to adjust image size, quality, count, aspect ratio, resolution, or reference images. Available settings depend on the selected model.
+
+
-- Common actions for text fields
- - Summarize
- - Translate
- - Extract Information
- - Improve Writing
- - Customize
-- Common actions for single select fields
- - Smart Classify
- - Customize
-- Common actions for multiple select fields
- - Smart Tag
- - Customize
-- Common actions for rating fields
- - Rating
- - Customize
-- Common actions for date fields
- - Extract Information
- - Customize
-- Common actions for attachment fields
- - Generate Image
+When you edit an AI field, you can change the action type, model, source fields, additional requirements, custom prompt, and auto-update setting. After you save, the new configuration applies to future generations. If an existing result is not what you want, regenerate it.
-### 2. Edit the Field
+## Auto-update and Batch Generation
-- Select the source fields.
-- Add additional requirements.
-- Choose the AI model.
-- **Auto-update**
- - When enabled, the result updates when the source content changes.
+When **Auto-update** is enabled, the AI field updates with the current configuration when source field content or the AI configuration changes. Use it when the result should stay in sync with source content, such as categories, summaries, scores, or tags generated from feedback.
-
+After you create a field or change its AI configuration, you can choose whether to process records in the current view right away:
-After you click save, the AI field is ready to use, as shown below.
+
+
+ Generate content only for empty cells. Existing values are not overwritten.
+
+
+ Regenerate results for records in the current view. Existing values are overwritten.
+
+
+ Save the field configuration without writing values to cells.
+
+
-If the result is not what you want, you can regenerate it.
+After you choose a generation option, Teable shows the task status while it processes records.
-#### Batch Shortcut
-
-Use **Update entire column** from the right-click menu to update a whole column at once. Whether it is available depends on the current view and permissions.
-
-## Action Types
-
-### Summarize
-
-Creates a summary from the source fields and your additional instructions.
-
-### Translate
+To run generation later, use the field menu instead of saving the configuration again.
-Translates content based on the source fields and your additional instructions.
-
-### Extract Information
-
-Extracts specific information from content based on the source fields and your instructions.
-
-For image or file input, make sure the target field uses the attachment type.
-
-### Improve Writing
-
-Rewrites content based on the source fields and your additional instructions.
-
-### Smart Classify
-
-- Single select fields can use Smart Classify.
-- Multiple select fields can use Smart Tag.
-- Both are useful for turning content into tags that are easy to browse and filter.
+You can also right-click the field and choose **Generate** to run batch generation for the current view. Availability depends on the current view and your permissions.
-### Customize
+## FAQ
-Combine multiple fields and your own prompt to generate the result you want.
+
+
+ After you create a field or change its AI configuration, you can choose **Fill empty cells only**, **Generate entire column**, or **Save configuration only**. You can also batch generate later from the field right-click menu by choosing **Generate**.
+
-
+
+ Enable **Auto-update** if you want the AI field to update when source field content changes. If you want to control when generation runs, leave it off and use **Generate** when needed.
+
-In addition to Teable's built-in models, Teable also supports [third-party model APIs](/en/basic/ai/custom-model), which you can configure in space settings.
+
+ AI actions depend on the field type. Text fields are suited for summarizing, translating, and extracting information. Single select fields are suited for Smart Classify. Multiple select fields are suited for Smart Tag. Attachment fields are suited for image generation.
+
-### Generate Image
+
+ The model list comes from models provided by Teable and AI models configured in the current space. To use a third-party model, add a custom AI model in space settings first.
+
-Attachment fields can use **Generate Image** to create images from text fields, attachment fields, or a combination of both.
+
+ Image size, quality, count, aspect ratio, resolution, and reference image options depend on the selected model.
+
+
diff --git a/en/basic/field/attachment.mdx b/en/basic/field/attachment.mdx
new file mode 100644
index 00000000..7aa74dc3
--- /dev/null
+++ b/en/basic/field/attachment.mdx
@@ -0,0 +1,75 @@
+---
+title: "Attachment"
+description: "Store images, PDFs, documents, and other files in records, with support for preview, download, and batch download."
+---
+
+{/* mintlify-resync: 2026-05-14 */}
+The **Attachment** field stores one or more files in a record. Common use cases include contracts, images, invoices, design files, resumes, reports, and images generated by AI fields.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| File archive | Contracts, invoices, reports, resumes, and other business files |
+| Image and asset management | Product images, campaign assets, design files, screenshots |
+| Form file collection | Resumes, reimbursement receipts, and files submitted by customers |
+| AI image output | Image results generated by AI fields |
+
+## Create and Configure
+
+
+
+ In a table, click `+` to add a field, then choose **Attachment**.
+
+
+ Enter a field name, such as "Files", "Images", or "Contract attachments".
+
+
+ After saving, each record can upload one or more files in this field.
+
+
+
+## Upload and View
+
+Attachment fields can store images, PDFs, documents, archives, and other file types.
+
+- **Upload files**: Click the attachment area in a cell or record detail, then choose local files to upload.
+- **Store multiple attachments**: One attachment cell can contain multiple files.
+- **Preview files**: Images and some file types can be previewed in the cell or record detail.
+- **Download one attachment**: Open an attachment, then download the file.
+
+
+Attachment fields store files, not plain text. When converting a text field to an attachment field, Teable cannot convert the original text into files. Check whether the data needs a backup before converting the field.
+
+
+## Batch Download Attachments
+
+From the attachment field menu, you can download attachments from the current field as a ZIP file. The download scope follows the current table search results:
+
+- If no search is active, Teable downloads downloadable attachments in this attachment field.
+- If the table is searching and hiding unmatched rows, Teable only downloads attachments from matching records.
+
+When downloading the ZIP, you can choose an attachment filename prefix:
+
+| Prefix option | Description |
+| --- | --- |
+| **Default index** | Uses a system-generated index as the prefix, which helps keep file order clear |
+| **Select a field as prefix** | Uses another field value as the filename prefix, useful for organizing files by ID, customer name, or project name |
+| **No prefix** | Keeps the original filename where possible |
+
+If duplicate filenames appear in the ZIP file, Teable adds suffixes so each filename stays unique.
+
+## Use with AI Fields
+
+AI fields can read attachments and write generated images to attachment fields.
+
+- **Read attachments**: In AI field settings, add the attachment field as an input field. Whether the AI field can recognize image or file content depends on the selected model.
+- **Save images**: Set the AI field output to an attachment field. Generated images are saved to that field.
+
+For more information, see [AI Field](/en/basic/field/ai/ai-field).
+
+## Upload Attachments Through API
+
+The attachment upload API supports local file upload and URL-based upload. New attachments are appended to the end of the target attachment field in the specified record.
+
+See [Upload Attachment API](/en/api-doc/record/upload-attachment).
diff --git a/en/basic/field/auto-number.mdx b/en/basic/field/auto-number.mdx
new file mode 100644
index 00000000..e5373454
--- /dev/null
+++ b/en/basic/field/auto-number.mdx
@@ -0,0 +1,39 @@
+---
+title: "Auto Number"
+description: "Generate increasing numbers when records are created. Useful for ticket numbers, order sequences, and internal IDs."
+---
+
+An **Auto Number** field automatically generates an increasing number for each record. After the field is created, Teable fills existing records and future records with numbers, so users do not need to maintain them by hand.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Ticket numbers | Generate short IDs for issues, feedback, or support requests |
+| Order and contract sequences | Create internal sequence numbers for orders, contracts, or applications |
+| Member or candidate IDs | Assign base IDs to members, candidates, or employees |
+| Conversation references | Refer to records with numbers such as `#45` in messages or comments |
+
+## Create and Configure
+
+
+
+ Click the `+` icon on the right side of the table header, then choose **Auto Number** from the field type list.
+
+
+ Enter a field name, such as "Order ID", "Member ID", or "Ticket Number".
+
+
+ After the field is created, Teable fills sequence numbers for existing records and future records.
+
+
+
+## Field Behavior
+
+- **Auto-incrementing**: Each new record receives the next number in the sequence.
+- **Read-only**: Auto numbers are record metadata. Users cannot edit specific values by hand.
+- **Stable across views**: After a number is generated, it stays with the record. Sorting, filtering, and switching views do not change it.
+
+## Notes
+
+- Auto numbers only move forward. If record `3` is deleted, Teable does not reuse that number. The next new record continues with a later number. Gaps can appear in the sequence so references to historical records stay stable.
diff --git a/en/basic/field/basic/attachment.mdx b/en/basic/field/basic/attachment.mdx
deleted file mode 100644
index 9c765f1d..00000000
--- a/en/basic/field/basic/attachment.mdx
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: "Attachment"
-description: "Store images, PDFs, documents, and other files in records, with support for preview, download, and batch download."
----
-
-{/* mintlify-resync: 2026-05-14 */}
-The **Attachment** field stores one or more files in a cell. Common use cases include contracts, images, invoices, design files, resumes, reports, or images generated by AI fields.
-
-## 1. Create an Attachment Field
-
-1. In a table, click `+` to add a field
-2. Select the **Attachment** field type
-3. Enter a field name, such as "Files", "Images", or "Contract attachments"
-4. Click `Save`
-
-After creation, each record can upload one or more attachments in this field.
-
-## 2. Upload and View Attachments
-
-Attachment fields can store multiple file types, such as images, PDFs, documents, and archives.
-
-- **Upload files**: Click the attachment area in a cell or record detail, then select local files to upload.
-- **Store multiple attachments**: One attachment cell can contain multiple files.
-- **Preview files**: Images and some file types can be previewed in the cell or record detail.
-- **Download a single attachment**: Open an attachment and download the corresponding file.
-
-
-Attachment fields store files, not plain text. When converting a text field to an attachment field, the original text content cannot be converted into files automatically. Confirm whether the data needs to be backed up before converting the field.
-
-
-## 3. Batch Download Attachments
-
-From the attachment field menu, you can batch-download attachments in the current field.
-
-Batch download creates a ZIP file and follows the current table search result scope:
-
-- If there is no active search, downloadable attachments in this attachment field are downloaded.
-- If the table is searching and hiding non-matching rows, only attachments from matching records are downloaded.
-
-When downloading the ZIP, you can choose **Attachment name prefix**:
-
-| Prefix option | Description |
-|------|------|
-| **Default: attachment index** | Uses the system-generated attachment index as the prefix |
-| **Select a field as prefix** | Uses the value of another field as the filename prefix |
-| **No prefix** | Keeps the original filename where possible |
-
-If duplicate filenames appear in the ZIP, Teable automatically appends suffixes to keep filenames unique.
-
-## 4. Use with AI Fields
-
-AI fields can read attachments and save generated images to attachment fields.
-
-- **Read attachments**: In AI field settings, add the attachment field as an input field. Whether images or file contents can be recognized depends on the selected model.
-- **Save images**: Set the AI field output to an attachment field. Generated images are saved to that attachment field.
-
-For more information, see [AI Field](/en/basic/field/ai/ai-field).
-
-## 5. Upload Attachments Through API
-
-The attachment upload API supports uploading local files or uploading files by URL, and appends new attachments to the end of the specified record's attachment field.
-
-See [Upload Attachment API](/en/api-doc/record/upload-attachment).
diff --git a/en/basic/field/basic/checkbox.mdx b/en/basic/field/basic/checkbox.mdx
deleted file mode 100644
index bcabd2f3..00000000
--- a/en/basic/field/basic/checkbox.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: "Checkbox"
-description: "Checkbox fields provide a clear way to mark the status of a record, such as whether it's completed or selected. They add a distinct binary state to your data, making it particularly easy to track and manage these states."
----
-
-## Creating Checkbox Fields
-
-When you want to add a clear yes/no, complete/incomplete, or any other binary state to your table, a checkbox field is an ideal choice. To add such a field, follow these steps:
-
-* Click the "Add Field" button in your table view.
-* Name the new field and select "Checkbox" as the field type from the dropdown menu.
-
-## Use Cases
-
-### Task Tracking
-
-Checkbox fields are perfect for task management and project tracking, allowing you to easily mark tasks as completed.
-
-### Data Validation
-
-When conducting data audits or reviews, checkbox fields can help you mark which data has been reviewed or verified.
-
-### Selection Options
-
-If you're creating a survey or form and want users to select certain options, checkbox fields are an excellent choice.
-
-## Interaction with Other Fields
-
-### Using Formula Fields for Counting
-
-You can use formula fields to count the number of checked records, which is particularly useful when tracking completed tasks or audited data.
-
-### Combining with Date Fields
-
-When used in conjunction with date fields, checkbox fields can represent the completion status of a task or activity, while the date field shows when it was completed.
diff --git a/en/basic/field/basic/date.mdx b/en/basic/field/basic/date.mdx
deleted file mode 100644
index fbf5edf5..00000000
--- a/en/basic/field/basic/date.mdx
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: "Date"
-description: "Store dates and times with support for date format, time format, time zone, and auto-fill with the current time."
----
-
-**Date** fields store specific points in time. They work well for project deadlines, meeting times, employee start dates, and similar data. They can also display time down to the minute, such as `2025-11-03 14:30`.
-
-## Setup
-
-### Adding a Date Field
-
-1. In table view, click **Add Field**.
-2. Name the field and choose **Date** as the field type from the dropdown.
-
-### Date Field Options
-
-- **Include time**: Add time information in addition to the date.
-- **Time zone**: Choose a specific time zone for dates and times. This matters when working across regions or teams.
-- **Formatting options**: Date fields support multiple display formats, for example:
- - `YYYY-MM-DD` (for example: 2023-11-03)
- - `DD/MM/YYYY` (for example: 03/11/2023)
- - `MM/DD/YYYY` (for example: 11/03/2023)
- - `D MMM YYYY` (for example: 3 Nov 2023)
- - ...and [many other format options](/en/basic/field/common/formatter)
-
-## Use Cases
-
-- **Project management**: Set clear start and end dates for tasks.
-- **Event planning**: Record dates and times for upcoming meetings or events.
-- **Timeline analysis**: Sort and analyze time-based data such as sales trends or user activity.
-- **Used with formulas**: Combine date fields with formula fields to calculate intervals or future dates.
-
-## Features
-
-- **Auto-fill current time**: When enabled, new records automatically get the current time.
-
-
-**Tip**:
-If you need to record when a record was created and the value should not be editable, do not use a **Date** field. Use **[Created Time](/en/basic/field/advanced/created-time)** instead.
-
diff --git a/en/basic/field/basic/long-text.mdx b/en/basic/field/basic/long-text.mdx
deleted file mode 100644
index c2c8230a..00000000
--- a/en/basic/field/basic/long-text.mdx
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: "Long Text"
-description: "Store long text with line breaks, with support for both plain text and Markdown display."
----
-
-**Long Text** fields are designed for longer, multi-paragraph content. They work well for notes, descriptions, logs, and detailed explanations.
-
-Unlike single-line text, they support line breaks to organize content. You can also switch the display mode to Markdown when you want the content to be easier to read.
-
-## Setup
-
-### Create a Long Text Field
-
-- **Steps**:
- 1. Click `+` in the table.
- 2. Choose **Long Text** as the field type.
- 3. Enter a field name such as "Description," "Notes," or "Details."
- 4. Configure the field options as needed.
- 5. Click `Save`.
-
-### Field Options
-
-- **Default value**: Pre-fill new records with default text.
-- **Display mode**: Switch between plain text and Markdown.
-- **Field description**: Add a short explanation to help your team understand the field.
-
-## Use Cases
-
-- **Detailed descriptions**: Task details, product descriptions, bug reproduction steps.
-- **Logs and notes**: Customer follow-ups, daily summaries, meeting notes.
-- **Supporting context**: Extra information that should not be split into separate fields.
-
-## Features
-
-### Line Breaks
-
-- **Manual line breaks**: Press `Shift + Enter` while editing to insert a line break.
-- **Automatic wrapping**: Cell height adjusts with column width so long text stays readable.
-- **Markdown**: Use Markdown display for headings, lists, and links.
-
-
-
-## Notes
-
-- Long Text does not support URL, Email, or Phone interactive display. It only supports plain text and Markdown.
diff --git a/en/basic/field/basic/multiple-select.mdx b/en/basic/field/basic/multiple-select.mdx
deleted file mode 100644
index 07721df2..00000000
--- a/en/basic/field/basic/multiple-select.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: "Multiple Select"
-description: "Choose one or more values from a predefined list. Useful for tags, categories, and multi-dimensional filtering."
----
-
-## Setup
-
-1. **Add options**
- - Enter an option name in the setup panel and press **Enter** to add it quickly.
- - The system assigns colors automatically, and you can adjust them manually if needed.
- - Drag the handle on the left side of an option to reorder it.
-
-2. **Default values and editing rules**
- - You can set default values so new records start with common tags already selected.
- - You can control whether users are allowed to create new options while editing. If this is turned off, they can only choose from the existing options.
-
-3. **Color management** (Optional)
- - Click the colored dot next to an option name to choose a color from the built-in palette.
- - Clear color choices make categories easier to scan in views such as kanban or calendar.
-
-## Use Cases
-
-- **Tags or keywords**: A content item might belong to multiple topics such as "Technology," "Design," and "Marketing."
-- **Skills or capabilities**: A person can have multiple skills such as "Programming," "Project Management," and "Public Relations."
-- **Departments involved**: A project can involve several departments, such as "Sales," "R&D," and "Finance."
-
-## Features
-
-- **Flexible filtering**: Multiple Select supports richer filter logic, for example:
- - **Contains any of**: Show records that include at least one selected option.
- - **Contains all of**: Show only records that include every selected option.
- - **Exactly equals**: The selected options must match exactly, with no more and no fewer.
-- **Compared with Single Select**: Single Select allows exactly **1** value, while Multiple Select allows **1 to N** values.
-- **Visual scanning**: Option colors make records easier to identify and categorize in the table.
-- **Default values**: You can preset a common group of tags for new records to reduce repetitive selection.
diff --git a/en/basic/field/basic/number.mdx b/en/basic/field/basic/number.mdx
deleted file mode 100644
index 28dde482..00000000
--- a/en/basic/field/basic/number.mdx
+++ /dev/null
@@ -1,89 +0,0 @@
----
-title: "Number"
-description: "Store numeric data such as prices, inventory, quantities, and ratios. Supports decimals, currency, percentage, and visual displays."
----
-
-Number fields do more than store raw numbers. They can also be used directly for analysis and presentation.
-
-## Setup
-
-### Create a Number Field
-
-- **Steps**:
- 1. Click the `+` at the right side of the table header and choose **Number** from the field type list.
- 2. Enter a field name such as "Price" or "Inventory."
- 3. **Format**: Choose how the value should be displayed based on your use case.
- - **Number**: Plain numeric display, suitable for counts such as `100` or `2.5`
- - **Currency**: Adds a currency symbol automatically, suitable for amounts such as `$100.00`
- - **Percentage**: Displays the value as a percentage, suitable for ratios such as `50%`
-
-
-
- 4. **Precision**: Set the number of decimal places to keep.
- - You can choose from **0** to **4** decimal places.
- - Displayed values are rounded according to the selected precision.
-
-
-
- 5. **Default value** (Optional): New records can be pre-filled with a number.
-
-### Display Settings
-
-In addition to plain numbers, Number fields can show values visually.
-
-- **Steps**:
- 1. Open the **Display Mode** section in field settings.
- 2. **Default**: Shows the numeric value as text only.
- 3. **Single-value fields**: Can be shown as a **Bar** or **Ring**.
- - **Target value**: Sets the value that fills the chart completely.
- - **Color**: Choose the chart color.
- - **Show number**: Displays the numeric value next to the chart.
- 4. **Multi-value fields**: Can be shown as a **Bar** or **Line**.
-
-
-
-## Use Cases
-
-### Scenario 1: Contract Amounts in Finance
-
-- **Table context**: Contract management table
-- **Scenario**: Record each contract amount with cent-level precision and a currency symbol
-- **Steps**:
- 1. Create a field named "Contract Amount"
- 2. Choose **Currency** and select the `$` symbol
- 3. Set precision to **2 decimal places** (for example: `$1,000.00`)
-
-### Scenario 2: Sales Performance Achievement Rate
-
-- **Table context**: Sales performance table
-- **Scenario**: Show how close each person is to the target
-- **Steps**:
- 1. Create a field named "Achievement Rate"
- 2. Choose **Percentage**
- 3. Set the display mode to **Bar**
- 4. Set the target value to **1** (that is, 100%) and use green as the bar color
-
-## Features
-
-Number fields support the following:
-
-- **Automatic validation**: Only integers and decimals are accepted, such as `12` and `3.14`.
-- **Flexible formatting**: Supports standard number, currency, and percentage display.
-- **Visual display**: Can show values as a bar, ring, or line for faster scanning.
-- **Works with derived values**: If a formula, rollup, or lookup result is numeric, it can use the same formatting options.
-
-## Notes
-
-- Percentages are stored as decimals. For example, entering `100%` stores `1`, and entering `50%` stores `0.5`.
diff --git a/en/basic/field/basic/rating.mdx b/en/basic/field/basic/rating.mdx
deleted file mode 100644
index 90c6e778..00000000
--- a/en/basic/field/basic/rating.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: "Rating"
-description: "Rating fields provide a simple way to add numerical ratings to records. This field type is commonly used for rating products, services, or other items, allowing users to quickly perform qualitative analysis of data."
----
-
-## Creating Rating Fields
-
-When you want to add rating data to a table, you can choose to add a rating field. Here's how:
-
-* Click the "Add Field" button in the table view.
-* Name the field and select "Rating" as the field type from the dropdown menu.
-
-## Configuration Options
-
-### Maximum Value Setting
-
-You can set the maximum value for ratings, such as common 5-star or 10-star ratings. This maximum value determines the range of ratings users can choose from.
-
-### Display Icons
-
-By default, rating fields use star icons for display, but depending on your needs, you can choose other icons or symbols.
-
-## Use Cases
-
-### Product Reviews
-
-If you're running an online store or app store, rating fields can help you quickly see user ratings for each product, helping you understand which products are popular.
-
-### Service Quality Feedback
-
-For service-based businesses, you can use rating fields to collect customer feedback on your services, making it easy to identify areas that need improvement.
-
-### Employee Performance Evaluation
-
-Rating fields can also be used for internal employee performance evaluations, allowing managers to quickly rate employee performance.
-
-## Using with Other Fields
-
-### Comment Fields
-
-Combined with long text fields as comment fields, users can provide specific feedback or suggestions along with their ratings.
-
-### Average Rating Formula
-
-Using formula fields, you can calculate a comprehensive average score based on multiple rating fields, which is useful for considering evaluations from multiple aspects.
-
-## Important Notes
-
-1. Rating fields should be used in conjunction with other fields like comment fields, so you can get both quantitative ratings and qualitative feedback.
-2. When setting the maximum rating value, ensure it aligns with your business or cultural context, as the interpretation of ratings may vary in different regions.
diff --git a/en/basic/field/basic/single-line-text.mdx b/en/basic/field/basic/single-line-text.mdx
deleted file mode 100644
index 12a626aa..00000000
--- a/en/basic/field/basic/single-line-text.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: "Single Line Text"
-description: "Use a text field when you need to input short text values in a table."
----
-
-
-When inputting, you can directly type text after clicking a cell with your mouse, or use common text editing operations like cut, copy, and paste.
-
-The input text content can be used for filtering and sorting, and supports text processing functions for operations like extraction. Users can also conveniently set default values for text fields to reduce repetitive input.
-
-### Interactive Display
-
-Text fields support four common interactive display modes:
-
-
-
- This is the default display format and most commonly used. The displayed text has no additional features.
-
-
-
- Text displayed as a URL will launch the user's default browser and automatically visit that web address when clicked.
-
-
-
- Text displayed as an Email will launch the user's default email application (such as Outlook, Mail, etc.) when clicked.
-
-
-
- Text displayed as a phone number will launch the user's default communication application (such as Facetime, Skype, etc.) when clicked.
-
-
-
-### Setting Display Mode
-
-1. Right-click the single-line text field
-2. Select Edit Field
-3. Choose the corresponding format in the opened Edit Field dialog and save
-
-
-
-Interactive display can be used not only in single-line text fields but also in formula fields, rollup fields, and references. For details, please see [Interactive Display](/en/basic/field/common/show-as)
-
diff --git a/en/basic/field/basic/single-select.mdx b/en/basic/field/basic/single-select.mdx
deleted file mode 100644
index 1988b7d8..00000000
--- a/en/basic/field/basic/single-select.mdx
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: "Single Select"
-description: "Choose one option from a predefined list. Useful for statuses, categories, and priorities."
----
-
-## Setup
-
-Using predefined options helps avoid typos from manual input and keeps data consistent.
-
-### 1. Add Options
-
-- **Steps**:
- 1. Click the `+` icon at the right side of the table header and choose **Single Select**.
- 2. Enter the field name.
- 3. Type an option name and press **Enter** to create it quickly.
- 4. If needed, set a default value so new records start with a common option.
-
-### 2. Colors and Option Order
-
-- **Colors**: Click the colored dot next to an option name to choose its color.
-- **Order**: Drag the handle on the left side of an option to reorder the dropdown list.
-- **Edit and delete**: Editing an option name updates existing records automatically. Use the trash icon to remove an option.
-- **Allow creating new options**: You can control whether users are allowed to create new options while editing. If this is off, input must come from the existing option list.
-
-## Use Cases
-
-### Scenario 1: Project Progress in Kanban View
-
-- **Scenario**: Clearly show each task stage and support drag-and-drop status changes.
-- **Steps**:
- 1. Create a "Task Status" field with options such as **Not Started** (gray), **In Progress** (blue), and **Completed** (green).
- 2. Create a **Kanban View** based on this field. Tasks are grouped into columns automatically, and dragging a card between columns updates its status.
-
-### Scenario 2: Customer Priority Grouping
-
-- **Scenario**: Classify customers by importance so high-value customers can be followed up first.
-- **Steps**:
- 1. Create a "Priority" field with options such as **High** (red), **Medium** (yellow), and **Low** (green).
- 2. In table view, click **Group** and group by "Priority" to review each customer segment separately.
-
----
-
-## Features
-
-- **Single value only**: A cell can contain only **1** option, which keeps mutually exclusive states consistent.
-- **Visual scanning**: Colors help users understand the value without reading every label.
-- **Core view dimension**: Single Select is the required field type for **Kanban View** and one of the most common ways to **group** and **filter** data.
-- **Data consistency**: Compared with text fields, Single Select limits the possible values and reduces data errors caused by typos.
-- **Default value**: You can preset a common status for new records to reduce repeated selection.
-
----
-
-## Notes
-
-- **Difference from Multiple Select**: Single Select allows only **1** value per record. If a record needs multiple tags, use **Multiple Select** instead.
-- **Type conversion risk**: Converting a **Multiple Select** field into **Single Select** may drop data. If a record currently has multiple options, the system usually keeps only the first one.
diff --git a/en/basic/field/button-practical-guide.mdx b/en/basic/field/button-practical-guide.mdx
new file mode 100644
index 00000000..bd189ac0
--- /dev/null
+++ b/en/basic/field/button-practical-guide.mdx
@@ -0,0 +1,109 @@
+---
+title: "Button Practical Guide"
+description: "Use a Button field to trigger automations and turn fixed workflows, such as lead conversion or task reminders, into one click."
+---
+
+Button fields are useful for fixed, repeated workflows that should run after a person confirms the action. Common examples include converting a lead to an opportunity, scheduling approved content, sending task reminders, or syncing the current record to an external system.
+
+This guide uses lead conversion as the main example and shows how to connect a button to an automation.
+
+## Use Cases
+
+| Scenario | What the button can do |
+| --- | --- |
+| Lead conversion | Create a record in the opportunities table and mark the original lead as converted |
+| Content scheduling | Create a publishing schedule and notify the teammate responsible for publishing |
+| Task reminders | Send an email or team message to the assignee |
+| External system sync | Send the current record to another system through an HTTP request |
+
+## Example: Convert a Lead to an Opportunity
+
+In a CRM table, a sales rep clicks the "Convert to opportunity" button after deciding that a lead is ready. The automation completes two actions:
+
+- Create a new record in the opportunities table with key information such as company and contact.
+- Update the original lead status in the leads table to "Converted".
+
+### Prepare the Tables
+
+This example uses two tables:
+
+| Table | Purpose | Example fields |
+| --- | --- | --- |
+| Leads table | Stores leads to follow up. This is where the button field is created | Company name, contact, owner, status |
+| Opportunities table | Stores converted opportunities | Opportunity name, related customer, owner, source lead |
+
+### Create the Button Field
+
+Add a button field in the leads table:
+
+
+
+ Create a field and choose **Button** as the field type.
+
+
+ Set the button text to "Convert to opportunity" and choose a color that is easy to recognize.
+
+
+ To avoid accidental clicks, enable **Confirm before click** and fill in the dialog title, message, and confirm-button text.
+
+
+
+### Configure Automation Actions
+
+After creating the button field, configure the automation that runs when the button is clicked.
+
+
+
+ In the button field settings, click **Custom automation** and create a workflow.
+
+
+ Add a **Create record** action and choose the opportunities table as the target table.
+
+
+ Write key lead fields into the new opportunity. For example:
+ - `Opportunity name` = `Company name` from the triggering record
+ - `Related customer` = `Contact` from the triggering record
+ - `Owner` = `Owner` from the triggering record
+
+
+ Add an **Update record** action. Choose the leads table as the target table, use the triggering record ID as the record ID, and update `Status` to "Converted".
+
+
+
+After saving the automation, the sales rep can click "Convert to opportunity" to create the opportunity and update the original lead status.
+
+### Add Notifications
+
+If a sales manager or opportunity owner needs to be notified after conversion, add a **Send email** action or a team message action to the automation.
+
+Common settings:
+
+- **Recipient**: A fixed email address, or a user field from the current record.
+- **Subject and body**: Insert field values from the triggering record, such as company name, owner, or lead source.
+
+Example email body:
+
+> New opportunity converted: [Company name] was converted by [Owner]. Please follow up.
+
+### Connect External Systems
+
+If converted opportunities also need to be synced to a CRM, finance system, or internal tool, add an HTTP request action to the automation.
+
+HTTP requests work best when the target system has a stable API. Before configuring the action, confirm the endpoint, request method, authentication method, and field format.
+
+### Limit Duplicate Clicks
+
+Lead conversion usually should not happen more than once for the same lead. Enable **Limit number of clicks** in the button field:
+
+| Setting | Recommendation |
+| --- | --- |
+| Max clicks | Set to `1` |
+| Allow reset | Usually keep this off to avoid duplicate opportunities |
+
+After the click limit is reached, the button on that record becomes disabled.
+
+## Notes
+
+- Whether a button click runs successfully depends on whether the linked automation is enabled and working.
+- Each successful automation trigger counts toward the workspace automation run quota.
+- If the button changes important data, enable click confirmation and limit the number of clicks.
diff --git a/en/basic/field/button.mdx b/en/basic/field/button.mdx
new file mode 100644
index 00000000..496c4663
--- /dev/null
+++ b/en/basic/field/button.mdx
@@ -0,0 +1,54 @@
+---
+title: "Button"
+description: "Add a clickable button to each record and use it to trigger an automation."
+---
+
+The Button field adds a clickable button to each record. When someone clicks the button, Teable can trigger a configured automation, such as updating a record, creating a record, sending a message, or calling an external system.
+
+## Use Cases
+
+| Scenario | Suitable actions |
+| --- | --- |
+| Status workflow | Start work, complete a task, submit for approval, archive a record |
+| Data workflow | Convert a lead to an opportunity, create a task from a request, write the current record to another table |
+| Notifications | Send email, team messages, or reminder notifications |
+| External integrations | Connect to external systems through an HTTP action in an automation |
+
+## Create and Configure
+
+
+
+ Create a field in the table and choose the **Button** type.
+
+
+ Customize the button text and color, such as "Send email", "Submit for approval", or "Generate report".
+
+
+ Enable **Limit number of clicks** or **Confirm before click** when needed.
+
+
+ Click **Custom automation** and set the actions that should run after the button is clicked.
+
+
+
+## Settings
+
+| Setting | Description |
+| --- | --- |
+| Button text and color | Controls how the button appears in the cell |
+| Limit number of clicks | Sets the maximum click count for each record, with an optional reset setting |
+| Confirm before click | Shows a confirmation dialog before running the button action |
+| Custom automation | Configures the automation triggered by the button |
+
+## Common Uses
+
+- **Status workflow**: Click "Complete task" to update the current record status to "Completed".
+- **Lead conversion**: Click "Convert to opportunity" to create a record in the opportunities table and update the lead status.
+- **Send reminders**: Click "Send reminder" to send an email or team message.
+- **External system integration**: Use an HTTP action in the automation to sync the current record to another system.
+
+## Notes
+
+- Each successful button click that triggers an automation counts toward the workspace automation run quota.
+- Permission to click a button is separate from permission to edit a record. If users can see the button, they may be able to click it and trigger the workflow, including read-only users or visitors with a shared link.
+- A button does not perform actions by itself. It depends on the linked automation. If the automation is disabled or deleted, clicking the button has no effect.
diff --git a/en/basic/field/checkbox.mdx b/en/basic/field/checkbox.mdx
new file mode 100644
index 00000000..a4d6953f
--- /dev/null
+++ b/en/basic/field/checkbox.mdx
@@ -0,0 +1,56 @@
+---
+title: "Checkbox"
+description: "Store binary states such as yes/no or done/not done."
+---
+
+A **Checkbox** field records a binary state, such as yes/no, on/off, or done/not done. Users can click a cell to switch between checked and unchecked.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Task completion | Done, processed, archived |
+| Quick flags | VIP, blocked, needs restock |
+| Process checkpoints | Image uploaded, copy reviewed, approval passed |
+| Automation triggers | Send a notification, update a status, or start the next step after a box is checked |
+
+## Create and Configure
+
+
+
+ Click the `+` on the right side of the table header, then choose **Checkbox** from the field type list.
+
+
+ Enter a field name, such as "Done", "VIP", or "Approved".
+
+
+ Choose whether new records should be checked or unchecked by default.
+
+
+ After saving, users can click cells to switch the state.
+
+
+
+## Common Uses
+
+- **Task status**: Use a "Done" field in a task table, then create an "Incomplete tasks" view that only shows unchecked records.
+- **Quick flags**: Mark "VIP" in a customer table or "Needs restock" in an inventory table.
+- **Process checkpoints**: Add fields such as "Image uploaded" or "Copy reviewed" in a content calendar so collaborators can see which steps are complete.
+
+## Use Checkbox Values in Formulas
+
+Checkbox fields can be used as boolean values in formulas. For example, return different text based on completion status:
+
+```js
+IF({Done}, "Done", "In progress")
+```
+
+## Statistics and Automation
+
+- **Track completion**: Use the summary bar to count checked values. With counts, you can calculate completion rates.
+- **Trigger automation**: When "Approved" is checked, automation can send an email or update other fields.
+
+## Notes
+
+- A Checkbox field only represents two states. If you need several states, such as "Not started", "In progress", and "Done", use a **Single Select** field.
+- Use Checkbox fields for clear switches. Do not use them for notes, reasons, or explanations.
diff --git a/en/basic/field/common/formatter.mdx b/en/basic/field/common/formatter.mdx
index 1fa31cbb..6d1f95d9 100644
--- a/en/basic/field/common/formatter.mdx
+++ b/en/basic/field/common/formatter.mdx
@@ -1,48 +1,49 @@
---
title: "Formatting"
-description: "Teable provides various formatting options, including number formatting, date/time formatting, and text formatting, to ensure data is displayed appropriately in different contexts."
+description: "Control how field values appear, such as decimal places, percentages, currency symbols, date formats, and time formats."
---
+Formatting controls how field values appear. It does not change the field's raw data. It only changes what users see in the table, such as decimal places, percentages, currency symbols, date formats, and time formats.
+
## Number Formatting
-When working with numerical data, we sometimes want to display it in specific ways. Teable offers the following number formatting options:
+Number fields can use display formats that match your work:
-* **Decimals**: You can choose how many decimal places to display, ranging from 0 to 5.
-* **Percentage**: Convert numbers to percentage format. For example, 0.25 will be displayed as 25%.
-* **Currency**: You can add currency symbols like "$" to numbers and select the number of decimal places.
+| Format | Description |
+| --- | --- |
+| Decimal | Set how many decimal places to show |
+| Percentage | Show a number as a percentage, such as `0.25` as `25%` |
+| Currency | Add a currency symbol and set decimal places |
## Date and Time Formatting
-In Teable, you can choose from various date and time display formats:
-
-* **Date Formats**: Based on your preference, you can select from the following date formats:
- * US Style: e.g., 12/31/2023
- * European Style: e.g., 31/12/2023
- * Asian Style: e.g., 2023/12/31
- * ISO Standard: e.g., 2023-12-31
- * Year-Month Only: e.g., 2023-12
- * Month-Day Only: e.g., 12-31
- * Year Only: e.g., 2023
- * Month Only: e.g., 12
- * Day Only: e.g., 31
-* **Time Formats**: Teable provides multiple time format options:
- * 24-hour format: e.g., 23:59
- * 12-hour format (with AM/PM): e.g., 11:59 PM
- * No time display
-* **Timezone Selection**: You can choose the appropriate timezone based on your location to ensure accurate time representation.
-
-These formatting options ensure you can select the most suitable date and time display format according to your preferences and requirements.
-
-## Field Basic Data Type List
-| Teable Field Type | Basic Data Type | Supports Formatting | Dynamic Type Flag |
-| ---------------- | --------------- | ------------------ | ----------------- |
-| SingleLineText | Text | No | No |
-| LongText | Text | No | No |
+Date and time fields can set the date format, time format, and timezone.
+
+| Setting | Example |
+| --- | --- |
+| US style | `12/31/2023` |
+| European style | `31/12/2023` |
+| Asian style | `2023/12/31` |
+| ISO standard | `2023-12-31` |
+| Year and month only | `2023-12` |
+| Month and day only | `12-31` |
+| Year only | `2023` |
+| Month only | `12` |
+| Day only | `31` |
+
+Time formats support 24-hour time, 12-hour time, or no time display. Timezones can use a fixed timezone or follow the viewer's location.
+
+## Field Basic Data Types
+
+| Teable field type | Basic data type | Supports formatting | Dynamic type flag |
+| --- | --- | --- | --- |
+| Single line text | Text | No | No |
+| Long text | Text | No | No |
| User | Text | No | No |
| Attachment | Text | No | No |
| Checkbox | Boolean | No | No |
-| MultipleSelect | Text | No | No |
-| SingleSelect | Text | No | No |
+| Multiple select | Text | No | No |
+| Single select | Text | No | No |
| Date | Date | Yes | No |
| Number | Number | Yes | No |
| Duration | Number | Yes | No |
@@ -51,13 +52,15 @@ These formatting options ensure you can select the most suitable date and time d
| Rollup* | Dynamic | Yes* | Yes |
| Count | Number | Yes | No |
| Link | Text | No | No |
-| CreatedTime | Date | Yes | No |
-| LastModifiedTime | Date | Yes | No |
-| CreatedBy | Text | No | No |
-| LastModifiedBy | Text | No | No |
-| AutoNumber | Number | Yes | No |
+| Created time | Date | Yes | No |
+| Last modified time | Date | Yes | No |
+| Created by | Text | No | No |
+| Last modified by | Text | No | No |
+| Auto number | Number | Yes | No |
| Button | Text | No | No |
-> Rating fields are displayed as interactive rating bars represented by a series of icons that can be illuminated. While they can't participate in number formatting, they are inherently numeric and can be used in numerical calculations.
-> Formula and Rollup field formatting depends on their output type. This means if a formula or rollup results in a date or number type, it can be formatted. If the result is text or boolean, formatting is not applicable.
-> All fields can be referenced, and when referenced, they maintain their basic value type.
+## Notes
+
+- Rating fields show an interactive rating bar. They do not use number formatting, but they are still number fields and can be used in numeric calculations.
+- Formula and rollup formatting depends on the output type. If the result is a date or number, it can be formatted. If the result is text or boolean, formatting does not apply.
+- Referenced fields still follow the basic value type of the original field.
diff --git a/en/basic/field/common/is-multiple-value.mdx b/en/basic/field/common/is-multiple-value.mdx
index c215ae95..0f854174 100644
--- a/en/basic/field/common/is-multiple-value.mdx
+++ b/en/basic/field/common/is-multiple-value.mdx
@@ -1,78 +1,62 @@
---
-title: "Single Value vs Multiple Values"
-description: "In table field design, you may have noticed the concepts of 'single value' and 'multiple values'. These describe whether a cell in a field stores a single value or a series of values (array). Each field type can exist in either single or multiple value states, and understanding these concepts is crucial for advanced usage."
+title: "Single Value and Multiple Values"
+description: "Explains whether a field cell stores one value or a group of values."
---
-## Basic Concepts: Single vs Multiple Values
+Single value and multiple values describe whether a cell stores one value or a group of values. After you understand this concept, it is easier to see why links, lookups, rollups, and formulas may return multiple results.
-* **Single Value**: A single, definite piece of information. For example, "today's date" or "John's phone number".
-* **Multiple Values**: Array values, a series of information. For example, "all dates this month" or "all of John's phone numbers".
+## Basic Concepts
+
+| Type | Description | Example |
+| --- | --- | --- |
+| Single value | One definite piece of information | "today's date", "John's phone number" |
+| Multiple values | A group of values, also understood as an array | "all dates this month", "all of John's phone numbers" |
## Default Single and Multiple Value States
-| Field Name | Description | Default State |
-| ---------- | ----------- | ------------- |
-| SingleLineText | Single Line Text | Single |
-| LongText | Long Text | Single |
-| User | User | Optional* |
-| Attachment | Attachment | Multiple |
-| Checkbox | Checkbox | Single |
-| MultipleSelect | Multiple Select | Multiple |
-| SingleSelect | Single Select | Single |
-| Date | Date | Single |
-| Number | Number | Single |
-| Duration | Duration | Single |
-| Rating | Rating | Single |
-| Formula | Formula | Dynamic* |
-| Rollup | Rollup | Dynamic* |
-| Count | Count | Single |
-| Link | Link | Optional* |
-| CreatedTime | Created Time | Single |
-| LastModifiedTime | Last Modified Time | Single |
-| CreatedBy | Created By | Single |
-| LastModifiedBy | Last Modified By | Single |
-| AutoNumber | Auto Number | Single |
-| Button | Button | Single |
-
-## State Changes Due to Links and References
-
-While most fields have their default single or multiple value states, these states can change due to linking and referencing mechanisms.
-
-* **Impact of Link Fields**: If a link field is multiple-valued, all fields referenced through this link field will become multiple-valued.
- **Example**: Imagine you have a "Tasks" table and an "Employees" table. If a task can be completed by multiple employees, the link field in the "Tasks" table connecting to the "Employees" table will be multiple-valued. Consequently, any fields referenced through this link (such as employee phone numbers) will also become multiple-valued.
-* **Formulas and Rollups**: Although they are typically single-valued, formulas can become multiple-valued when they reference multiple-value fields. Similarly, they can become multiple-valued when referenced through multiple-value link fields.
- **Example**: Suppose you have a formula field calculating each employee's total salary. If this formula references a multiple-value salary field (e.g., salaries for different projects), the formula field will also become multiple-valued.
-
-## Examples
-
-Understanding the distinction between single and multiple values is crucial for advanced users. It helps users understand why certain fields might contain multiple values and guides them in properly setting up and using these fields.
-
-### Employee Information and Project Tasks
-
-Consider managing a company using Teable with two tables: `Employee Information` and `Project Tasks`.
-
-1. **Employee Information** table:
+| Field type | Default state |
+| --- | --- |
+| Single line text, long text | Single |
+| Single select, checkbox, date, number, rating | Single |
+| Created time, last modified time, created by, last modified by, auto number, button | Single |
+| Multiple select, attachment | Multiple |
+| User | Optional |
+| Link | Optional |
+| Formula, rollup | Dynamic |
+
+Here, "default state" means the field's common state on its own. **Optional** means you can decide whether the field is single-value or multiple-value through field settings. **Dynamic** means the result depends on formula logic, rollup functions, and whether referenced fields are multiple-value fields. After a value passes through a link, lookup, rollup, or formula reference, its state may change.
+
+## State Changes from Links and References
+
+- **Link fields**: If a link field is multiple-value, fields referenced through that link may also become multiple-value. For example, if one task can be assigned to several employees, looking up employee phone numbers through that link may return several phone numbers.
+- **Formulas and rollups**: Formulas and rollups are often single-value, but they may become multiple-value when they reference multiple-value fields.
+
+### Example
+
+Suppose you manage a company in Teable with two tables: `Employee Information` and `Project Tasks`.
+
+**Employee Information table**
| Name | Phone | Email | Tasks |
-| ---- | ----- | ----- | ----- |
-| John | 123456 | john@company.com | Task1, Task2 |
-| Mary | 789012 | mary@company.com | Task3 |
+| --- | --- | --- | --- |
+| John | 123456 | john@company.com | Task 1, Task 2 |
+| Mary | 789012 | mary@company.com | Task 3 |
-2. **Project Tasks** table:
+**Project Tasks table**
-| Task Name | Assigned To | Due Date | Progress |
-| --------- | ----------- | -------- | -------- |
-| Task1 | John | 2023-11-20 | 50% |
-| Task2 | John | 2023-12-01 | 30% |
-| Task3 | Mary | 2023-11-15 | 80% |
+| Task name | Assignee | Due date | Progress |
+| --- | --- | --- | --- |
+| Task 1 | John | 2023-11-20 | 50% |
+| Task 2 | John | 2023-12-01 | 30% |
+| Task 3 | Mary | 2023-11-15 | 80% |
In this example:
-* The "Tasks" field in the **Employee Information** table is multiple-valued because one employee can be responsible for multiple tasks.
-* The "Assigned To" field in the **Project Tasks** table is single-valued because each task is assigned to one employee.
+- The "Tasks" field in the **Employee Information** table is multiple-value because one employee can be responsible for several tasks.
+- The "Assignee" field in the **Project Tasks** table is single-value because each task has one assignee.
-When you create a new task in the "Project Tasks" table and assign it to an employee, that employee's "Tasks" field automatically updates to include all tasks they're responsible for.
+When you create a new task in the "Project Tasks" table and assign it to an employee, that employee's "Tasks" field in the "Employee Information" table updates to include all assigned tasks.
### Number Mini Charts
-**Example**: You might wonder why a number field sometimes displays multiple lines or bars instead of just one. This occurs because it's actually a multiple-value field, likely due to previous linking or referencing operations.
+Number fields sometimes display multiple lines or bars instead of one number. This usually means the field has become multiple-value, often through a link, lookup, rollup, or formula reference.
diff --git a/en/basic/field/common/show-as.mdx b/en/basic/field/common/show-as.mdx
index 7149ba9d..151af2a9 100644
--- a/en/basic/field/common/show-as.mdx
+++ b/en/basic/field/common/show-as.mdx
@@ -1,26 +1,37 @@
---
title: "Interactive Display"
-description: "Choose more interactive display methods for specific fields to enhance data readability and operability."
+description: "Change field value display and click behavior, such as URLs, emails, phone numbers, and number charts."
---
-## Text Field Interactive Display
+Interactive display changes how field values appear and behave when clicked. It does not change the field type. It only changes how users view and interact with the field content.
-* **URL**: Display the text field content as a web address, which opens in a new tab when clicked.
-* **Email**: Display the text field content as an email address, which launches the default email application when clicked.
-* **Phone**: Display the text field content as a phone number, which initiates a phone call when clicked (depending on device support).
+## Interactive Display for Text Fields
-## Number Field Interactive Display
+| Display | Description |
+| --- | --- |
+| URL | Show text as a web address. Clicking it opens the link in a browser |
+| Email | Show text as an email address. Clicking it opens the default mail app |
+| Phone | Show text as a phone number. Clicking it starts a call action, depending on device support |
-For number fields, you can choose from the following display options:
+## Interactive Display for Number Fields
-**Single-Value Number Fields**:
+Number fields can show numeric status as charts.
-* **Bar Chart**: Numbers are displayed as bar charts. You can set the color, choose whether to show the specific value on the chart, and specify a reference number representing 100% (this doesn't set a hard limit but serves as a display reference).
-* **Ring Chart**: Numbers are displayed as ring charts. Similarly, you can set the color, choose whether to show the specific value on the chart, and specify a reference number representing 100%.
+### Single-Value Number Fields
-**Multi-Value Number Fields**:
+| Display | Description |
+| --- | --- |
+| Bar | Show the value with bar length. You can set the color, whether to show the value, and the target value that represents 100% |
+| Ring | Show the value as ring progress. You can set the color, whether to show the value, and the target value that represents 100% |
-* **Bar Chart**: Multiple numbers are displayed as side-by-side bar charts. You can set the color for these charts.
-* **Line Chart**: Multiple numbers are displayed as line charts. You can also set the color for these charts.
+### Multiple-Value Number Fields
-Using these interactive display features, you can view and understand your data more intuitively while making it more engaging and interesting.
+| Display | Description |
+| --- | --- |
+| Bar | Show multiple number values as side-by-side bars |
+| Line | Show multiple number values as a line chart |
+
+## Notes
+
+- The target value is a display reference. It does not set a hard upper limit.
+- Interactive display can also apply to some formula, rollup, and lookup results. Available options depend on the result type.
diff --git a/en/basic/field/conditional-lookup.mdx b/en/basic/field/conditional-lookup.mdx
new file mode 100644
index 00000000..9e63a7ed
--- /dev/null
+++ b/en/basic/field/conditional-lookup.mdx
@@ -0,0 +1,118 @@
+---
+title: "Conditional Lookup"
+description: "Look up data across tables with filter conditions and return matching record values."
+---
+
+Conditional Lookup can fetch matching data from a target table without creating a link relationship first. It is useful when the lookup needs to change based on field values in the current record, such as finding the top-selling product in the same category or looking up data for a matching period.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Category analysis | Find the top-selling product in the same category |
+| Period comparison | Look up the previous period's sales amount for period-over-period calculations |
+| Customer matching | Find customer details by phone number, email, or customer ID |
+| Detail lookup | Return matching detail records based on conditions from the current record |
+
+## Procedure
+
+
+
+ Click the `+` icon on the right side of a field name, choose **Conditional Lookup**, and enter a field title, such as "Related orders".
+
+
+ In the target table dropdown, choose the table to query.
+
+
+ Choose the field to extract and confirm the returned data type.
+
+
+ Add filter conditions, choose the field, condition type, and comparison value. The comparison value can be a static value or a field from the current table.
+
+
+ Set the sort field, sort direction, and number of records to show when needed.
+
+
+
+At least one filter condition is required. For multiple conditions, choose "All conditions are met (AND)" or "Any condition is met (OR)".
+
+## Scenario Practice
+
+### Sales Data Period-over-Period Analysis
+
+**Tables**
+
+- Period sales summary table, with fields such as period, start date, end date, and sales amount
+- Sales detail table, with fields such as sales amount and sales date
+
+In the period sales summary table, calculate period-over-period growth for each period. First use Conditional Rollup to calculate current period sales, then use Conditional Lookup to fetch previous period sales, and finally use a Formula field to calculate the growth rate.
+
+**Steps**
+
+**Create a conditional rollup field for current period sales**
+
+1. In the period sales summary table, create a Conditional Rollup field named "Current period sales"
+2. Target table: Sales detail table
+3. Rollup field: Sales amount
+4. Filter conditions:
+ - Field: Sales date -> Condition: Earlier than or equal to -> Value: End date field from the current table
+ - Field: Sales date -> Condition: Later than or equal to -> Value: Start date field from the current table
+5. Aggregate function: Sum
+
+**Create a conditional lookup field for previous period sales**
+
+1. Create a Conditional Lookup field named "Previous period sales"
+2. Target table: Period sales summary table (this table)
+3. Field: Current period sales
+4. Filter condition:
+ - Field: End date -> Condition: Equals -> Value: Previous period end date field from the current table
+5. Aggregate function: Sum
+
+**Create a formula field for period-over-period growth**
+
+1. Create a Formula field named "Period-over-period growth rate"
+2. Set the formula to `(Current period sales - Previous period sales) / Previous period sales * 100`
+3. Format it as a percentage with 2 decimal places
+
+### Sales Data Product Analysis
+
+**Tables**
+
+- Products table, with fields such as category ID, product name, and sales volume
+- Categories table, with fields such as category ID and category name
+
+In the categories table, find the top-selling product for each category to identify the main product in each category.
+
+**Steps**
+
+**Top-selling product**
+
+1. In the categories table, create a Conditional Lookup field named "Top-selling product"
+2. Target table: Products table
+3. Lookup field: Product name
+4. Filter condition:
+ - Field: Category ID -> Condition: Equals -> Value: Category ID field from the current table
+5. Sorting: Sales volume field -> Descending
+6. Limit display: 1 record
+
+**Sales volume**
+
+1. Create another Conditional Lookup field named "Sales volume"
+2. Target table: Products table
+3. Lookup field: Sales volume
+4. Filter condition:
+ - Field: Category ID -> Condition: Equals -> Value: Category ID field from the current table
+5. Sorting: Sales volume field -> Descending
+6. Limit display: 1 record
+
+## FAQ
+
+
+
+ Some complex field types, such as images and attachments, may not support filter conditions.
+
+
+
+ A regular Lookup field requires a Link field first. Conditional Lookup can match data in the target table directly with filter conditions.
+
+
diff --git a/en/basic/field/conditional-rollup.mdx b/en/basic/field/conditional-rollup.mdx
new file mode 100644
index 00000000..9f7c434e
--- /dev/null
+++ b/en/basic/field/conditional-rollup.mdx
@@ -0,0 +1,95 @@
+---
+title: "Conditional Rollup"
+description: "Calculate cross-table statistics with filter conditions and return one aggregated value."
+---
+
+Conditional Rollup filters matching records from a target table without creating a link relationship first, then calculates statistics on a selected field. It is useful for calculating counts, sums, averages, and other results based on field values in the current record.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Employee task statistics | Count in-progress tasks and completed tasks for an assignee |
+| Period sales statistics | Calculate sales amount, order count, or average order value by date range |
+| Duplicate data checks | Count duplicate names, phone numbers, or IDs |
+| Regional reports | Aggregate business data by region, store, or channel |
+
+## Procedure
+
+
+
+ Click the `+` icon on the right side of a field name, choose **Conditional Rollup**, and enter a field title, such as "Total sales amount".
+
+
+ In the target table dropdown, choose the table to query.
+
+
+ Choose the field to calculate and confirm the field type.
+
+
+ Add filter conditions, choose the field, condition type, and comparison value. The comparison value can be a static value or a field from the current table.
+
+
+ Choose a calculation method based on the data type, such as original value, unique values, unique count, sum, count, average, maximum, or minimum.
+
+
+
+## Scenario Practice
+
+### Team Task Volume Statistics
+
+**Tables**
+
+- Tasks table
+- Statistics table
+
+A team admin needs to count tasks in different statuses for each employee, such as in-progress and completed tasks, to understand workload distribution and completion progress.
+
+**In-progress tasks**
+
+1. In the employee information table, create a Conditional Rollup field named "In-progress tasks"
+2. Target table: Task assignments table
+3. Rollup field: Task ID
+4. Filter conditions:
+ - Field: Assignee -> Condition: Equals -> Value: Employee field from the current table
+ - Field: Task status -> Condition: Equals -> Value: "In progress"
+5. Aggregate function: Count all
+
+**Completed tasks**
+
+1. Create another Conditional Rollup field named "Completed tasks"
+2. Target table: Task assignments table
+3. Rollup field: Task ID
+4. Filter conditions:
+ - Field: Assignee -> Condition: Equals -> Value: Employee field from the current table
+ - Field: Task status -> Condition: Equals -> Value: "Completed"
+5. Aggregate function: Count all
+
+### Find Duplicate Values
+
+**Tables**
+
+- Customers table, with fields such as customer name and phone number
+
+In the customers table, find duplicate customer names before merging customer profiles.
+
+**Steps**
+
+1. In the customers table, create a Conditional Rollup field named "Customer name duplicate count"
+2. Target table: Customers table (this table)
+3. Rollup field: Customer name
+4. Filter condition:
+ - Field: Customer name -> Condition: Equals -> Value: Customer name field from the current table
+5. Aggregate function: Count all
+6. Create a Formula field named "Duplicate flag"
+7. Set the formula to `IF(Customer name duplicate count > 1, "Duplicate", BLANK())`
+
+The customers table shows how many times each customer name appears and marks duplicate records with "Duplicate", so you can filter and handle them later.
+
+## FAQ
+
+
+
+ Conditional Rollup returns one calculated value, which works well for totals, counts, and averages. Conditional Lookup returns a list of matching raw values, which works well for viewing detail data.
+
+
diff --git a/en/basic/field/created-by.mdx b/en/basic/field/created-by.mdx
new file mode 100644
index 00000000..b05f5985
--- /dev/null
+++ b/en/basic/field/created-by.mdx
@@ -0,0 +1,41 @@
+---
+title: "Created By"
+description: "Automatically record who created each record."
+---
+
+The **Created By** field automatically records who first created each record. Teable generates the value, so it works well for source tracking, workload analysis, and personal views.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Source tracking | See which member first created a record |
+| Workload statistics | Group by creator and count how many records each member added |
+| Personal views | Filter records created by the current user |
+| Accountability | Find the original source when data looks wrong |
+
+## Create and Configure
+
+
+
+ Click the `+` icon on the right side of the table header, then choose **Created By** from the field type list.
+
+
+ Enter a field name, such as "Submitted by" or "Registered by".
+
+
+ After the field is added, it automatically shows the avatar and name of the original creator.
+
+
+
+## Common Uses
+
+- **Workload statistics**: Group by the Created By field to see how many records each member created.
+- **Issue tracing**: When data looks wrong, check the Created By field to find the original source.
+- **Personal workspace**: Set a filter such as `Created By` `is` `current user`.
+
+## Notes
+
+- Created By records the person who created the record **first**. Later edits by other members do not change this field.
+- To track who last edited a record, use **Last Modified By**.
+- For records imported from Excel or CSV, Created By usually records the user who ran the import.
diff --git a/en/basic/field/created-time.mdx b/en/basic/field/created-time.mdx
new file mode 100644
index 00000000..c2cec3d8
--- /dev/null
+++ b/en/basic/field/created-time.mdx
@@ -0,0 +1,48 @@
+---
+title: "Created Time"
+description: "Automatically record when each record was first created."
+---
+
+The **Created Time** field automatically records when each record was first created. Teable writes the value, so it works well for sorting, filtering, and reporting by creation time.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| New record tracking | See when each record was created |
+| Latest record sorting | Sort by Created Time descending to handle the newest data first |
+| Period reporting | Filter data created this week, this month, or within a custom date range |
+| Read-only timestamp | Store a creation time that users cannot edit by hand |
+
+## Create and Configure
+
+
+
+ Click the `+` icon on the right side of the table header, then choose **Created Time** from the field type list.
+
+
+ Enter a field name, such as "Submitted at" or "Registered date".
+
+
+ After the field is added, Teable fills the creation time for existing records and future records.
+
+
+
+## Display Format
+
+| Setting | Description |
+| --- | --- |
+| Date format | Controls how dates are displayed for your business format |
+| Time format | Shows or hides time, and supports 12-hour or 24-hour time |
+| Time zone | Follows the viewer's system time zone or uses a fixed time zone |
+
+## Common Uses
+
+- **Show latest activity first**: Sort by Created Time descending so newly created records appear at the top.
+- **Report by period**: Set a filter such as `Created Time` `is` `this month` to see new records for the month.
+
+## Notes
+
+- Created Time is read-only and cannot be edited by hand.
+- When records are imported from Excel or CSV, the created time is usually the import time.
+- If you need to record a business date manually, use a **Date** field.
diff --git a/en/basic/field/date.mdx b/en/basic/field/date.mdx
new file mode 100644
index 00000000..7927f5a8
--- /dev/null
+++ b/en/basic/field/date.mdx
@@ -0,0 +1,57 @@
+---
+title: "Date"
+description: "Store dates and times, with support for date format, time format, time zone, and auto-fill current time."
+---
+
+A **Date** field stores a specific date or point in time, such as a project deadline, meeting time, or employee start date. It can show only the date, or include a time such as `2025-11-03 14:30`.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Project scheduling | Task start dates, deadlines, milestone dates |
+| Event planning | Meetings, events, appointments, release plans |
+| People and contract records | Start dates, signing dates, expiration dates |
+| Period reporting | Filter and report data by week, month, or quarter |
+
+## Create and Configure
+
+
+
+ In table view, add a field and choose **Date**.
+
+
+ Enter a field name, such as "Due Date", "Meeting Time", or "Start Date".
+
+
+ Set the date format, whether to include time, the time format, and the time zone as needed.
+
+
+ If new records should use the current time automatically, enable auto-fill current time.
+
+
+
+## Date Field Options
+
+| Option | Description |
+| --- | --- |
+| Include time | Store a specific time in addition to the date |
+| Date format | Controls date display, such as `YYYY-MM-DD`, `DD/MM/YYYY`, `MM/DD/YYYY`, or `D MMM YYYY` |
+| Time format | Controls whether time is shown, and whether it uses 12-hour or 24-hour time |
+| Time zone | Sets the time zone used for dates and times, useful for teams across regions |
+| Auto-fill current time | Fills new records with the current time when they are created |
+
+For more formats, see [Formatter](/en/basic/field/common/formatter).
+
+## Common Uses
+
+- **Task scheduling**: Record start dates and due dates, then sort or filter by due date.
+- **Event planning**: Record meeting and event times so important dates are easy to track.
+- **Period reporting**: Filter data for this week, this month, or a custom date range.
+- **Date calculations**: Reference Date fields in Formula fields to calculate intervals between dates.
+
+## Notes
+
+
+If you need to record when a record was created and keep that value read-only, use **[Created Time](/en/basic/field/created-time)**.
+
diff --git a/en/basic/field/formula.mdx b/en/basic/field/formula.mdx
new file mode 100644
index 00000000..b3860b2b
--- /dev/null
+++ b/en/basic/field/formula.mdx
@@ -0,0 +1,93 @@
+---
+title: "Formula"
+description: "Reference other fields and calculate text, numbers, dates, and logical conditions with formulas."
+---
+
+Formula fields calculate results from other fields in the same record. They can handle math operations, text joining, date calculations, and conditional logic. Use them to turn repeated calculation rules into fields.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Automatic calculation | Calculate total price, profit, or score from quantity, unit price, discount, and other fields |
+| Text processing | Join text, extract content, or parse information by delimiter |
+| Date processing | Calculate date differences, check time ranges, or generate future dates |
+| Conditional logic | Return different results based on conditions, such as status, hints, or categories |
+
+## Formula Basics
+
+### Data Types
+
+Before writing a formula, confirm the types of the fields used in the calculation. Different types support different operations and functions.
+
+| Type | Description | Common uses |
+| --- | --- | --- |
+| Number | Integers or decimals | Arithmetic, rollups, comparisons |
+| Text | String values | Joining, extracting, replacing, splitting |
+| Date | Date or date-time values | Calculating intervals, comparing dates |
+| Boolean | `TRUE` or `FALSE` | Conditions and logical operations |
+
+### Reference Fields
+
+In a formula, reference another field by its field name. Wrap the field name in `{}` and keep it consistent with the actual field name:
+
+```js
+{Unit price} * {Quantity}
+```
+
+### Operators
+
+| Operator | Use |
+| --- | --- |
+| `+` | Calculates the sum of numbers, or joins strings |
+| `-` | Calculates the difference between numbers |
+| `*` | Calculates the product of numbers |
+| `/` | Calculates the quotient of numbers |
+| `%` | Calculates the remainder |
+
+## Functions and Expressions
+
+### Common Functions
+
+Functions perform specific operations. For example, `SUM` calculates a total, `LEFT` extracts characters from the start of text, `TEXTBEFORE` extracts text before a delimiter, and `TEXTSPLIT` splits text by a delimiter.
+
+See the [formula cheat sheet](/en/basic/field/formula/cheat-sheet) for more functions.
+
+### Text Processing
+
+| Operation | Function examples | Description |
+| --- | --- | --- |
+| Join text | `&`, `CONCATENATE` | Joins two or more text values |
+| Extract text | `LEFT`, `RIGHT`, `MID`, `TEXTBEFORE` | Extracts part of a string |
+| Split text | `TEXTSPLIT` | Splits text into multiple values by delimiter |
+
+### Logical Conditions
+
+Use the `IF` function to return different values based on a condition:
+
+```js
+IF(condition, value_if_true, value_if_false)
+```
+
+When checking whether a field is empty, compare it with `BLANK()`. For example, `IF({Weight}=BLANK(), 1, 2)` returns `1` when a number field is empty, and `2` otherwise.
+
+### Complex Expressions
+
+A complex formula can include multiple functions, field references, and operators. Use parentheses to control calculation order:
+
+```js
+({Unit price} * {Quantity}) * (1 - {Discount})
+```
+
+## Result Display and Maintenance
+
+### Formatting and Interactive Display
+
+Formula results can also use [formatting](/en/basic/field/common/formatter) and [interactive display](/en/basic/field/common/show-as) settings, such as percentage, progress bar, or icon styles. Available options depend on the formula result type.
+
+### Debugging and Optimization
+
+- **Check data types**: Confirm that operations and functions use the correct data types.
+- **Verify field references**: Confirm that field names are written correctly.
+- **Test step by step**: Break complex formulas into smaller parts and test them separately.
+- **Avoid repeated calculations**: If the same calculation is used in several places, consider storing the result in a separate field.
diff --git a/en/basic/field/advanced/formula/cheat-sheet.mdx b/en/basic/field/formula/cheat-sheet.mdx
similarity index 92%
rename from en/basic/field/advanced/formula/cheat-sheet.mdx
rename to en/basic/field/formula/cheat-sheet.mdx
index 98054ad1..042d1906 100644
--- a/en/basic/field/advanced/formula/cheat-sheet.mdx
+++ b/en/basic/field/formula/cheat-sheet.mdx
@@ -1,12 +1,14 @@
---
title: "Function Cheat Sheet"
-description: "This section provides a quick reference for all available functions and their basic usage"
+description: "Quickly find formula functions, parameters, output types, and basic examples."
mode: "wide"
---
-### Numeric Functions
+The function cheat sheet helps you find available functions, parameters, output types, and examples. When writing a formula, use the function category to find the function you need.
-This section covers common numeric processing functions, including mathematical operations and statistical calculations.
+## Numeric Functions
+
+Numeric functions handle math operations, statistical calculations, and number formatting.
| Function Name | Description | Input | Output | Example |
| ------------ | ----------- | ----- | ------ | ------- |
@@ -30,9 +32,9 @@ This section covers common numeric processing functions, including mathematical
| MOD | Returns the remainder after dividing the first parameter by the second. | `value, divisor` | Number | `MOD(9, 2) => 1` `MOD(9, 3) => 0` |
| VALUE | Converts a text string to a number. | `text` | Number | `VALUE("$1,000,000") => 1000000` |
-### Text Functions
+## Text Functions
-Here you'll find common functions for text processing, such as string operations and formatting.
+Text functions handle joining, searching, replacing, extracting, and splitting strings.
| Function Name | Description | Input | Output | Example |
| ------------ | ----------- | ----- | ------ | ------- |
@@ -55,9 +57,9 @@ Here you'll find common functions for text processing, such as string operations
| T | Returns the parameter if it's text, otherwise returns empty. | `value` | Text or Empty | `T("Hello") => "Hello"` `T(100) => null` |
| ENCODE_URL_COMPONENT | Replaces certain characters with encoded equivalents for constructing URLs or URIs. Does not encode: - _ . ~ | `value` | Text | `ENCODE_URL_COMPONENT("Hello Teable") => "Hello%20Teable"` |
-### Logical Functions
+## Logical Functions
-Logical functions primarily deal with conditional judgments and logical operations. This section details the use of functions like `IF`, `AND`, `OR`, etc.
+Logical functions handle conditions and logical operations, such as `IF`, `AND`, and `OR`.
| Function Name | Description | Input | Output | Example |
| ------------ | ----------- | ----- | ------ | ------- |
@@ -71,9 +73,9 @@ Logical functions primarily deal with conditional judgments and logical operatio
| ERROR | Returns an error value. | `message` | Error | `IF(2 > 3, "Yes", ERROR("Calculation")) => "#ERROR: Calculation"` |
| IS_ERROR | Returns true if the expression causes an error. | `expr` | Boolean | `IS_ERROR(ERROR()) => true` |
-### Date Functions
+## Date Functions
-Date functions help users process and transform date and time data. This section covers operations like adding, subtracting, and formatting dates.
+Date functions handle and convert date and time values, such as getting the current date, calculating date differences, and comparing dates.
| Function Name | Description | Input | Output | Example |
| ------------ | ----------- | ----- | ------ | ------- |
@@ -95,9 +97,9 @@ Date functions help users process and transform date and time data. This section
| IS_SAME | Compares two dates to a unit and determines if they are the same. Returns true if they are, false otherwise. | `date1, date2, [unit]` | Boolean | `IS_SAME("2023-09-08", "2023-09-10") => false` |
| IS_AFTER | Determines if date1 is later than date2. Returns true if it is, false otherwise. | `date1, date2, [unit]` | Boolean | `IS_AFTER("2023-09-10", "2023-09-08") => true` `IS_AFTER("2023-09-10", "2023-09-08", "month") => false` |
-### Array and Other Functions
+## Array and Other Functions
-In addition to the above categories, this section introduces functions for handling arrays and other specific data types.
+Array and other functions handle rollup arrays, deduplication, joining, cleaning empty values, and record IDs.
| Function Name | Description | Input | Output | Example |
| ------------ | ----------- | ----- | ------ | ------- |
diff --git a/en/basic/field/formula/grammar.mdx b/en/basic/field/formula/grammar.mdx
new file mode 100644
index 00000000..16ba4693
--- /dev/null
+++ b/en/basic/field/formula/grammar.mdx
@@ -0,0 +1,39 @@
+---
+title: "Formula Grammar"
+---
+
+Formula grammar consists of basic values, field references, operators, functions, and parentheses. After you understand these elements, you can write formulas for calculations, conditions, and text processing.
+
+## Basic Elements
+
+| Element | Syntax | Description |
+| --- | --- | --- |
+| String | `'Hello'` or `"World"` | Text wrapped in single or double quotes |
+| Integer | `123`, `-456` | A number without a decimal point |
+| Decimal | `12.34`, `-45.67` | A number with a decimal point |
+| Boolean | `TRUE`, `FALSE` | A true or false value |
+| Field reference | `{age}` | A field name wrapped in `{}`. The name must match the actual field name |
+
+## Operators
+
+Operators in formulas are used to connect or compare values:
+
+| Type | Operators |
+| --- | --- |
+| Math | `+`, `-`, `*`, `/`, `%` |
+| Comparison | `>`, `<`, `>=`, `<=`, `=`, `!=` |
+| Logic | `&&`, `||` |
+
+## Function Calls
+
+You can call functions within formulas. A function call consists of a function name, a pair of parentheses, and parameters inside the parentheses. Parameters are separated by commas.
+
+For example, `sum(1, 2, 3)` calls the `sum` function with three parameters: 1, 2, and 3.
+
+## Other Structures
+
+| Structure | Description |
+| --- | --- |
+| Parentheses | Change operation precedence, such as `(1 + 2) * 3` |
+| Comments | Add context. Block comments use `/* */`, and line comments use `//` |
+| Whitespace and line breaks | Usually ignored, but they can make formulas easier to read |
diff --git a/en/basic/field/last-modified-by.mdx b/en/basic/field/last-modified-by.mdx
new file mode 100644
index 00000000..3fcce169
--- /dev/null
+++ b/en/basic/field/last-modified-by.mdx
@@ -0,0 +1,41 @@
+---
+title: "Last Modified By"
+description: "Automatically record the user who last edited a record."
+---
+
+The **Last Modified By** field automatically records the user who last edited a record. It helps track collaboration changes. Used with Last Modified Time, it shows who made the latest update and when.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Collaboration tracking | See which member last updated a record |
+| Accountability | Find the most recent editor when a record looks wrong |
+| Personal review | Filter records you recently updated |
+| Use with Last Modified Time | See both the last editor and last edit time |
+
+## Create and Configure
+
+
+
+ Click the `+` icon on the right side of the table header, then choose **Last Modified By** from the field type list.
+
+
+ Enter a field name, such as "Last editor" or "Updated by".
+
+
+ After the field is created, it updates to the current user when the record is edited.
+
+
+
+## Common Uses
+
+- **Track collaboration responsibility**: If a task status changes to "Canceled", check Last Modified By to see who made the last change.
+- **Review recent work**: Set a filter such as `Last Modified By` `is` `current user` to see records you recently handled.
+- **Use with Last Modified Time**: View **Last Modified By** and **Last Modified Time** together to confirm when the latest update happened and who made it.
+
+## Notes
+
+- Last Modified By updates automatically when record content changes.
+- This field is read-only. Users cannot choose or edit the value by hand.
+- If you only need to record the original creator, use **Created By**.
diff --git a/en/basic/field/last-modified-time.mdx b/en/basic/field/last-modified-time.mdx
new file mode 100644
index 00000000..a7b231a2
--- /dev/null
+++ b/en/basic/field/last-modified-time.mdx
@@ -0,0 +1,59 @@
+---
+title: "Last Modified Time"
+description: "Automatically record when a record was last edited."
+---
+
+The **Last Modified Time** field automatically records when a record was last edited. It can track all fields or only selected fields, which makes it useful for recent updates, inactive data cleanup, and collaboration review.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Recent updates | Sort by Last Modified Time to see records that changed recently |
+| Selected field tracking | Update the time only when key fields change, reducing noise from unrelated edits |
+| Inactive data cleanup | Filter records that have not been updated for a long time |
+| Collaboration review | Use with Last Modified By to see the latest edit time and editor |
+
+## Create and Configure
+
+
+
+ Click the `+` icon on the right side of the table header, then choose **Last Modified Time** from the field type list.
+
+
+ Enter a field name, such as "Last updated at" or "Recently maintained".
+
+
+ Choose whether to track all fields or only selected fields.
+
+
+ Set the date format, time format, and time zone as needed.
+
+
+
+## Tracking Options
+
+| Option | Description |
+| --- | --- |
+| Track all fields | Updates Last Modified Time when any field in the record changes |
+| Track selected fields | Updates Last Modified Time only when selected fields change |
+
+## Display Format
+
+| Setting | Description |
+| --- | --- |
+| Date format | Choose how dates are displayed, such as `2024-01-30` or `Jan 30, 2024` |
+| Time format | Controls whether a specific time is shown, and whether it uses 12-hour or 24-hour time |
+| Time zone | Uses a fixed time zone or follows the viewer's system time zone |
+
+## Common Uses
+
+- **Find recently updated tasks**: Sort by Last Modified Time descending so changed records appear at the top.
+- **Track key content changes**: Choose **Track selected fields**, then select key fields such as "Title" and "Status".
+- **Clean up inactive data**: Set a filter such as `Last Modified Time` `is before` `90 days ago` to find records that have not been maintained.
+
+## Notes
+
+- Last Modified Time is read-only and cannot be edited by hand.
+- If selected field tracking is enabled, changes to fields that are not selected do not update the time.
+- If you need to record when a record was first created, use **Created Time**.
diff --git a/en/basic/field/link.mdx b/en/basic/field/link.mdx
new file mode 100644
index 00000000..ca6cffa3
--- /dev/null
+++ b/en/basic/field/link.mdx
@@ -0,0 +1,60 @@
+---
+title: "Link"
+description: "Create relationships between tables and select records from another table in the current record."
+---
+
+The Link field connects two tables. With a Link field, you can select records from another table in the current table and open the linked records when needed. Link fields are also required before you can use **Lookup** and **Rollup** fields.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Customers and orders | Link customers in the orders table, and view related orders from the customer table |
+| Projects and tasks | Link a task to its project, and view all tasks under a project |
+| Students and courses | Track course enrollment, project members, or other many-to-many relationships |
+| Line items and parent records | Link order line items to an order, then look up prices or roll up totals |
+
+## Create and Configure
+
+
+
+ In the current table, click add field and choose **Link**.
+
+
+ In the configuration dialog, choose the table to link to, such as linking the orders table to the customers table.
+
+
+ Choose a one-way or two-way link as needed.
+
+
+ Use **Allow multiple selection** and **Allow duplicate values** to configure one-to-one, one-to-many, many-to-one, or many-to-many relationships.
+
+
+
+## One-Way and Two-Way Links
+
+| Mode | Description | Best for |
+| --- | --- | --- |
+| Two-way link | Enabled by default. When you create a link field, Teable creates a corresponding link field in the target table, and both sides stay in sync | Relationships that need to be viewed from both tables, such as orders and customers or projects and tasks |
+| One-way link | When the two-way option is off, only the current table shows the linked records. The target table does not get a reverse field | Cases where you only need to reference another table and do not want to change the target table structure |
+
+## Relationship Types
+
+Use **Allow multiple selection** and **Allow duplicate values** together to define four common relationship types:
+
+| Relationship | Business example | Configuration |
+| :--- | :--- | :--- |
+| **One-to-one (1:1)** | **Employee - Profile** One employee has one profile, and one profile belongs to one employee | ☐ Allow multiple selection ☐ Allow duplicate values *(both options off)* |
+| **One-to-many (1:N)** | **Department - Employee** One department has multiple employees, but each employee belongs to one department | ☑ Allow multiple selection ☐ Allow duplicate values *(only allow multiple selection)* |
+| **Many-to-one (N:1)** | **Task - Project** Multiple tasks belong to one project, but each task belongs to only one project | ☐ Allow multiple selection ☑ Allow duplicate values *(only allow duplicate values)* |
+| **Many-to-many (N:N)** | **Student - Course** One student can take multiple courses, and one course can have multiple students | ☑ Allow multiple selection ☑ Allow duplicate values *(both options on)* |
+
+## Common Uses
+
+- **CRM customer management**: In a `Companies` table, create a link field to a `Contacts` table so one company can link to multiple contacts.
+- **Project task assignment**: In a `Tasks` table, create a link field to a `Projects` table so each task belongs to one project, while the project table can show related tasks.
+- **Order line items**: In an `Orders` table, link to a `Products` table, then use lookup fields to show prices and rollup fields to calculate order totals.
+
+## Notes
+
+- **One-to-many limits**: In a strict one-to-many relationship, when multiple selection is off on the Table B side, a Table B record linked by one Table A record cannot be selected by other Table A records. This works for data that should not be reused, such as ID numbers or employee profiles.
diff --git a/en/basic/field/long-text.mdx b/en/basic/field/long-text.mdx
new file mode 100644
index 00000000..7b57822e
--- /dev/null
+++ b/en/basic/field/long-text.mdx
@@ -0,0 +1,50 @@
+---
+title: "Long Text"
+description: "Store long text with line breaks, with support for plain text and Markdown display."
+---
+
+**Long Text** is for longer content that needs line breaks, such as notes, instructions, logs, meeting notes, or detailed descriptions. Unlike Single Line Text, Long Text keeps paragraph structure and can be displayed as Markdown.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Detailed descriptions | Task details, product descriptions, bug reproduction steps |
+| Process notes | Customer follow-ups, daily summaries, meeting notes |
+| Supporting context | Notes or explanations that should not be split into separate fields |
+| Content drafts | Copy, announcements, and knowledge base snippets |
+
+## Create and Configure
+
+
+
+ In a table, click `+`, then choose **Long Text**.
+
+
+ Enter a field name, such as "Description", "Notes", or "Details".
+
+
+ Set **Default value**, **Display mode**, and **Field description** as needed.
+
+
+ After saving, users can enter multi-line content in cells.
+
+
+
+## Display Mode
+
+| Display mode | Good for | Description |
+| --- | --- | --- |
+| Plain text | Notes, logs, instructions | Keeps line breaks and is suitable for direct editing and reading |
+| Markdown | Document snippets, checklists, links | Displays content with Markdown formatting |
+
+## Common Uses
+
+- **Manual line breaks**: Press `Shift + Enter` while editing to insert a line break.
+- **Automatic wrapping**: Cells wrap content based on column width, which makes long text easier to read.
+- **Default text**: If every new record needs the same note, set a default value.
+
+## Notes
+
+- Long Text does not support URL, Email, or Phone interactive display. It only supports plain text and Markdown.
+- If the content does not need line breaks and should use URL, Email, or Phone display, use a **Single Line Text** field.
diff --git a/en/basic/field/lookup.mdx b/en/basic/field/lookup.mdx
new file mode 100644
index 00000000..bad04527
--- /dev/null
+++ b/en/basic/field/lookup.mdx
@@ -0,0 +1,51 @@
+---
+title: "Lookup"
+description: "Reference field values from a linked table through an existing link relationship and keep the data in sync."
+---
+
+Lookup fields are built on **Link** fields. A Lookup field references a selected field from a linked table, so the current table can display data from another table without entering it again.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Order line items | After linking a product, show its price, SKU, or category |
+| Ticket handling | After linking a customer, show phone number, customer tier, or owner |
+| Book management | In a books table, show the author's birthday, nationality, or bio |
+| Project management | From linked tasks, show assignee, due date, or status |
+
+## Create and Configure
+
+
+
+ Before using a Lookup field, create a **Link** field between the two tables.
+
+
+ In the table view, click `+` to add a field and choose **Lookup**.
+
+
+ Choose an existing link field in the current table as the lookup path.
+
+
+ Choose the field to read from the source table, such as an author's birth date, a customer's phone number, or a product price.
+
+
+
+## Automatic Sync
+
+After setup, Teable fills the lookup result based on the existing link relationship:
+
+- If the linked record changes, such as choosing a different author, the lookup value updates.
+- If source data changes, such as editing an author's birthday, the lookup value refreshes.
+
+## Common Uses
+
+- **Book management**: In a `Books` table, use an `Author` link field to look up `Birth date` from an author details table.
+- **Order calculation**: In an `Order line items` table, look up the product price and then use a formula to calculate the total.
+- **Customer information sync**: In a tickets table, link a customer and look up the customer's phone number, email, or tier.
+
+## Notes
+
+- **Read-only field**: Lookup fields are **read-only**. You cannot edit the looked-up value from the current table. To change the value, edit the original field in the source table.
+- **Single value and multiple values**: If the link relationship is one-to-one, the lookup result is a single value. If the relationship is one-to-many, the lookup result becomes a multi-value array and displays values separated by commas.
+- **Data dependencies**: Lookup fields depend on the link field and the source field. If the link field or target field in the source table is deleted, the lookup field stops working.
diff --git a/en/basic/field/multiple-select.mdx b/en/basic/field/multiple-select.mdx
new file mode 100644
index 00000000..c2a3cdbc
--- /dev/null
+++ b/en/basic/field/multiple-select.mdx
@@ -0,0 +1,61 @@
+---
+title: "Multiple Select"
+description: "Choose one or more values from a predefined list. Useful for tags, categories, and multi-dimensional filtering."
+---
+
+A **Multiple Select** field lets users choose one or more values from predefined options. It works well for tags, topics, skills, departments, and other categories that can apply at the same time.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Tags and topics | Multiple tags for articles, videos, customers, or tasks |
+| Skills and capabilities | Several skills or areas of experience for a member |
+| Cross-team work | Departments involved in a project, such as Sales, Engineering, and Finance |
+| Multi-dimensional categories | Records that belong to several topics, channels, or business lines |
+
+## Create and Configure
+
+
+
+ Click the `+` icon on the right side of the table header, then choose **Multiple Select** from the field type list.
+
+
+ Enter a field name, such as "Topics", "Skills", or "Departments".
+
+
+ Enter an option name in the setup panel and press **Enter** to add it quickly.
+
+
+ Set default values as needed, and choose whether users can create new options while editing.
+
+
+
+## Option Management
+
+| Setting | Description |
+| --- | --- |
+| Color | Teable assigns colors automatically. You can also click the dot on the left side of an option to change it |
+| Order | Drag the icon on the left side of an option to reorder the list |
+| Default value | New records can start with a common set of tags |
+| Allow creating new options | When turned off, users can only choose existing options while editing cells |
+
+## Filter by Multiple Select Values
+
+| Filter type | Description |
+| --- | --- |
+| Contains any of | Shows records that include at least one selected option |
+| Contains all of | Shows records that include every selected option |
+| Exactly equals | The selected options must match exactly, with no extra or missing options |
+
+## Common Uses
+
+- **Content tags**: Add topics such as "Technology", "Design", and "Marketing" to content records.
+- **People skills**: Record several skills for each member, then filter by skill combinations.
+- **Project departments**: Record which departments are involved in cross-team projects for grouping and reporting.
+
+## Notes
+
+- Multiple Select allows **1 to N** values. Single Select allows **1** value per record.
+- Colors help identify categories, but do not rely on color alone for key meaning.
+- If the value must be mutually exclusive, use a **Single Select** field.
diff --git a/en/basic/field/number.mdx b/en/basic/field/number.mdx
new file mode 100644
index 00000000..1c597827
--- /dev/null
+++ b/en/basic/field/number.mdx
@@ -0,0 +1,67 @@
+---
+title: "Number"
+description: "Store numeric data such as prices, inventory, quantities, and ratios. Supports decimals, currency, percentage, and visual displays."
+---
+
+A **Number** field stores values that can be calculated, such as prices, inventory, quantities, scores, and ratios. It supports number, currency, and percentage formats, and can show values as bars, rings, or lines.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Amounts and costs | Contract amounts, product prices, budgets, costs |
+| Quantities and inventory | Stock counts, order quantities, work hours, counts |
+| Ratios and progress | Achievement rate, conversion rate, completion rate |
+| Scores and metrics | Scores, weights, health scores, risk scores |
+
+## Create and Configure
+
+
+
+ Click the `+` on the right side of the table header, then choose **Number** from the field type list.
+
+
+ Enter a field name, such as "Product Price", "Inventory", or "Achievement Rate".
+
+
+ Choose **Number**, **Currency**, or **Percentage** based on the data.
+
+
+ Set decimal places, and add a default value for new records if needed.
+
+
+
+## Number Formats
+
+| Format | Good for | Example |
+| --- | --- | --- |
+| Number | Counts, quantities, scores | `100`, `2.5` |
+| Currency | Amounts, costs, budgets | `$100.00` |
+| Percentage | Ratios, progress, conversion rates | `50%` |
+
+Precision controls how many decimal places are shown. After precision is set, Teable rounds displayed values to that precision.
+
+## Display Settings
+
+Number fields can show values visually in addition to plain text.
+
+| Display mode | Good for | Description |
+| --- | --- | --- |
+| Default | Single-value and multi-value numbers | Shows the number directly |
+| Bar | Single-value and multi-value numbers | Uses bar length to show value size |
+| Ring | Single-value numbers | Uses a ring progress display to show proportion |
+| Line | Multi-value numbers | Uses a line to show changes across values |
+
+For Bar and Ring display, you can set a target value, color, and whether to show the number. The target value is the value that fills the visual display. For example, if the full score is `100`, set the target value to `100`.
+
+## Common Uses
+
+- **Contract amounts**: Create a "Contract Amount" field, choose **Currency**, select `$`, and set precision to 2 decimal places.
+- **Sales achievement rate**: Create an "Achievement Rate" field, choose **Percentage**, set display mode to **Bar**, and set the target value to `1`.
+- **Inventory management**: Create an "Inventory" field, choose **Number**, then use it for sorting, filtering, and summaries.
+
+## Notes
+
+- Number fields only accept integers and decimals, such as `12` and `3.14`.
+- Percentages are stored as decimals. Entering `100%` stores `1`; entering `50%` stores `0.5`.
+- If Formula, Rollup, or Lookup results are numeric, they can use Number field formatting and display modes.
diff --git a/en/basic/field/rating.mdx b/en/basic/field/rating.mdx
new file mode 100644
index 00000000..b585d601
--- /dev/null
+++ b/en/basic/field/rating.mdx
@@ -0,0 +1,52 @@
+---
+title: "Rating"
+description: "Add visual numeric ratings to records. Useful for quality, priority, satisfaction, and evaluation results."
+---
+
+A **Rating** field uses icons to show a score. It works well for customer satisfaction, product ratings, priority, idea scores, and performance reviews.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Product evaluation | Product, feature, or content ratings |
+| Service feedback | Customer satisfaction and service quality ratings |
+| Performance review | Employee, project, or vendor scores |
+| Priority judgment | Urgency, value, or risk |
+
+## Create and Configure
+
+
+
+ Click the `+` icon on the right side of the table header, then choose **Rating** from the field type list.
+
+
+ Enter a field name, such as "Customer Satisfaction", "Recommendation Score", or "Priority".
+
+
+ The default maximum is **5**. You can change it to **10** or another limit to set the available rating range.
+
+
+ Ratings use stars by default. You can choose another icon to match the meaning of the field.
+
+
+
+## Settings
+
+| Setting | Description |
+| --- | --- |
+| Maximum value | Controls the rating limit, such as a 5-point or 10-point scale |
+| Icon style | Controls the rating symbol, such as star, heart, thumbs-up, or lightbulb |
+
+## Common Uses
+
+- **Product review management**: Record product ratings, then filter for high-rated products.
+- **Service feedback**: Collect customer satisfaction in support records and review service quality.
+- **Employee performance review**: Score several capability areas in an HR review table.
+- **Rating plus comment**: Use with a **Long Text** field to capture both a score and written feedback.
+
+## Notes
+
+- Rating values can be referenced by **Formula** fields to calculate averages or totals.
+- Before setting the maximum value, align the team on what each score means.
+- If you lower the maximum value later, such as changing 10 to 5, existing scores above the new limit may not display correctly. Check historical data before changing it.
diff --git a/en/basic/field/rollup.mdx b/en/basic/field/rollup.mdx
new file mode 100644
index 00000000..f0a63cd6
--- /dev/null
+++ b/en/basic/field/rollup.mdx
@@ -0,0 +1,72 @@
+---
+title: "Rollup"
+description: "Aggregate values from linked records, such as sum, count, average, maximum, and minimum."
+---
+
+{/* mintlify-resync: 2026-05-14 */}
+Rollup fields calculate statistics from multiple linked records. A Rollup field usually starts from an existing **Link** field, selects a target field from linked records, and calculates the result with a chosen function.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Order amount | Roll up prices from order line items to calculate the order total |
+| Task progress | Count linked tasks, completed tasks, or average ratings |
+| Customer value | Roll up total spend or order count from customer orders |
+| Tag cleanup | Combine tags, participants, or source channels from linked records |
+
+## Create and Configure
+
+
+
+ Before creating a Rollup field, create a **Link** field.
+
+
+ Click `+` in the table header to add a field and choose **Rollup**.
+
+
+ Choose the link field that provides the data source, then choose the target field to calculate.
+
+
+ Choose a function based on the target field type, such as sum, count, average, maximum, or minimum.
+
+
+
+## Formatting and Display
+
+Rollup results can usually use formatting and interactive display settings:
+
+- **Formatting**: Set decimal precision, currency symbols, or percentages.
+- **Interactive display**: Show number results as bars, rings, or other display styles.
+
+See [formatting](/en/basic/field/common/formatter) and [interactive display](/en/basic/field/common/show-as) for details.
+
+## Common Uses
+
+- **Bookstore order totals**: In an `Orders` table, use the `Selected books` link field to roll up the `Price` field from the `Books` table. Choose **SUM** to calculate the order total.
+- **Project task statistics**: In a `Projects` table, count linked tasks or calculate task completion rate.
+- **Customer spending totals**: In a `Customers` table, roll up related order amounts to see each customer's total spend.
+
+## Supported Rollup Formulas
+
+| Formula name | Explanation |
+| --- | --- |
+| COUNTALL | Counts all values, including text values and blanks |
+| COUNTA | Counts non-empty values |
+| COUNT | Counts numeric items |
+| SUM | Calculates the sum of all numeric values |
+| MAX | Returns the largest numeric value |
+| MIN | Returns the smallest numeric value |
+| AND | Returns true if all values are true |
+| OR | Returns true if any value is true |
+| XOR | Returns true if an odd number of values are true |
+| ARRAY_JOIN | Joins all values in an array into a string |
+| ARRAY_UNIQUE | Removes duplicate values and returns an array with unique values |
+| ARRAY_COMPACT | Removes empty values and returns a new array |
+| CONCATENATE | Joins multiple values into a string |
+
+## Notes
+
+- **Dynamic updates**: Rollup fields calculate in real time. If source data or link relationships change, the rollup result refreshes.
+- **Data type limits**: Some functions only work with specific field types. For example, **SUM** only works with number fields. If you choose a text field, Teable does not offer sum as an option.
+- **Performance**: Many rollup fields can affect performance, especially when they involve many records. Plan link relationships carefully and review rollup settings from time to time.
diff --git a/en/basic/field/single-line-text.mdx b/en/basic/field/single-line-text.mdx
new file mode 100644
index 00000000..49c75ad5
--- /dev/null
+++ b/en/basic/field/single-line-text.mdx
@@ -0,0 +1,57 @@
+---
+title: "Single Line Text"
+description: "Store short text such as names, titles, IDs, URLs, email addresses, and phone numbers."
+---
+
+**Single Line Text** stores short content that does not need line breaks, such as customer names, task titles, order IDs, SKUs, URLs, email addresses, or phone numbers. Values can be sorted and filtered, and formula functions can reference them for extraction, concatenation, and text formatting.
+
+For notes, summaries, or descriptions that need line breaks, use **[Long Text](/en/basic/field/long-text)**. For fixed values such as status, category, or priority, **[Single Select](/en/basic/field/single-select)** or **[Multiple Select](/en/basic/field/multiple-select)** is usually a better fit.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Record names or titles | Customer names, task titles, product names, project names |
+| IDs or codes | Order IDs, contract IDs, SKUs, external system IDs |
+| Contact or access details | Company websites, email addresses, phone numbers |
+| Short free text | Short notes, labels, or identifiers that cannot be listed as fixed options |
+
+## Create and Configure
+
+
+
+ Click the **+** icon on the right side of the table header, then choose **Single Line Text** from the field type list.
+
+
+ Enter a field name, such as "Customer Name", "Order ID", or "Company Website".
+
+
+ If new records usually start with the same text, enter a **Default value**, such as "Pending review" or "New". The default value is filled only when a new record is created and can still be edited later.
+
+
+
+## Display Mode
+
+Single Line Text supports four display modes:
+
+| Display mode | Good for | Click behavior |
+| --- | --- | --- |
+| Default | Names, titles, IDs, and other plain text | No extra click behavior |
+| URL | Web addresses | Opens the URL in the default browser |
+| Email | Email addresses | Opens the default email app |
+| Phone | Phone numbers | Opens the communication app on the device. On mobile, users can call the number directly |
+
+Display mode changes how the value appears and behaves when clicked. It does not change the field type. Interactive display can also be used for Formula, Rollup, and Lookup fields. For details, see [Interactive Display](/en/basic/field/common/show-as).
+
+## Common Uses
+
+- **Customer contact management**: Create a "Company Website" field and set it to **URL** so the website opens when clicked. Create a "Phone" field and set it to **Phone** so mobile users can call in one tap.
+- **Order or contract management**: Create an "Order ID" or "Contract ID" field for search, filtering, and matching with external systems.
+- **Initial ticket status**: Create a "Current Stage" field and set the default value to "New". If the stage comes from a fixed workflow, use a **Single Select** field instead.
+- **Text extraction and concatenation**: Reference Single Line Text in formulas to extract ID segments, concatenate display names, or normalize text format.
+
+## Notes
+
+- Single Line Text is for short content. The Enter key usually confirms input. Use **Long Text** for notes, article summaries, and other long content.
+- URL, Email, and Phone are display modes. The field remains Single Line Text and can still be sorted, filtered, and processed with text functions.
+- Single Line Text does not limit values to predefined options. Use **Single Select** or **Multiple Select** for statuses, categories, and priorities that need consistent values.
diff --git a/en/basic/field/single-select.mdx b/en/basic/field/single-select.mdx
new file mode 100644
index 00000000..de73f72d
--- /dev/null
+++ b/en/basic/field/single-select.mdx
@@ -0,0 +1,60 @@
+---
+title: "Single Select"
+description: "Choose one option from a predefined list. Useful for statuses, categories, and priorities."
+---
+
+A **Single Select** field lets users choose one value from predefined options. It works well for mutually exclusive states, such as task stage, customer tier, priority, or approval result.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Status flow | Not started, in progress, done, and other mutually exclusive stages |
+| Category management | Customer tier, lead source, content type |
+| Priority management | High, medium, low, and other fixed priorities |
+| Approval result | Approved, rejected, needs more information |
+
+## Create and Configure
+
+
+
+ Click the `+` icon on the right side of the table header, then choose **Single Select** from the field type list.
+
+
+ Enter a field name, such as "Task Status", "Priority", or "Customer Tier".
+
+
+ Enter an option name in the input box and press **Enter** to create it quickly.
+
+
+ If new records usually use the same option, set it as the default value.
+
+
+
+## Option Management
+
+| Setting | Description |
+| --- | --- |
+| Color | Click the dot on the left side of an option name to choose a color from the palette |
+| Order | Drag the icon on the left side of an option to change its order in the dropdown |
+| Edit | Edit an option name directly. Existing records are updated with the new name |
+| Delete | Click the trash icon on the right side of an option to delete it |
+| Allow creating new options | When turned off, users can only choose existing options while editing cells |
+
+## Common Uses
+
+- **Project progress management**: Create a "Task Status" field with options such as "Not started", "In progress", and "Done", then create a **Kanban View** based on that field.
+- **Customer tier management**: Create a "Customer Tier" field with options such as "High", "Medium", and "Low", then group customers by tier.
+
+## Single Select vs. Multiple Select
+
+| Field type | Number of values | Good for |
+| --- | --- | --- |
+| Single Select | Each record can choose only 1 value | Status, stage, tier, priority |
+| Multiple Select | Each record can choose multiple values | Tags, skills, topics, departments |
+
+## Notes
+
+- Single Select allows only **1** value per record, so it is suitable for mutually exclusive states.
+- If a record needs multiple tags, use a **Multiple Select** field.
+- Before converting a Multiple Select field to Single Select, check the data. If a record has multiple options, Teable usually keeps only the first option, which may cause data loss.
diff --git a/en/basic/field/user.mdx b/en/basic/field/user.mdx
new file mode 100644
index 00000000..44dbb8f1
--- /dev/null
+++ b/en/basic/field/user.mdx
@@ -0,0 +1,49 @@
+---
+title: "User"
+description: "Select space members in records. Useful for assignees, participants, approvers, and collaborators."
+---
+
+A **User** field selects space members in a record. It works well for task assignees, project participants, approvers, and collaborators. It can also be used with filters, grouping, and Kanban views to build personal workspaces.
+
+## Use Cases
+
+| Scenario | Good for |
+| --- | --- |
+| Task owner | Assign one owner to each task |
+| Multi-person collaboration | Select multiple members on one record to show shared participation |
+| Approval and handoff | Record approvers, reviewers, or delivery owners |
+| Personal workspace | Filter records assigned to the current user |
+
+## Create and Configure
+
+
+
+ Click `+` in the table header to add a field, then choose **User**.
+
+
+ Enter a field name, such as "Owner", "Assignee", or "Approver".
+
+
+ When enabled, one record can select multiple members. When disabled, one record can select only one member.
+
+
+ Enable **Notify users when selected** if needed. Selected members receive a notification.
+
+
+
+## Settings
+
+| Setting | Description | Good for |
+| --- | --- | --- |
+| Allow multiple users | One record can select several members | Collaborative tasks, multi-person participation |
+| Do not allow multiple users | One record can select only one member | Clear ownership, single approver |
+| Notify users when selected | Selected members receive a notification | Task assignment, approval reminders |
+
+## Common Uses
+
+- **Task assignment and Kanban management**: Create an "Owner" field, usually with multiple users turned off, then create a Kanban view grouped by owner.
+- **My workspace**: In a table or Kanban view, set a filter such as `Owner` `is` `current user` so each member sees their own tasks.
+
+## Notes
+
+- If **Allow multiple users** is enabled, one record may appear under multiple member groups in grouped or Kanban views. For example, if a task is assigned to A and B, it appears in both A's column and B's column.
diff --git a/en/basic/record.mdx b/en/basic/record.mdx
index fd018ae1..c11a18dc 100644
--- a/en/basic/record.mdx
+++ b/en/basic/record.mdx
@@ -1,63 +1,74 @@
---
title: "Overview"
+description: "Records are the basic data units stored in a table. In a table view, each row usually represents one record."
---
-In Teable, a record is a single data entry in a table. In the table view, each record is represented as a row.
-### Record Structure
+Records store complete data entries. Each record is made up of multiple fields. For example, a customer record can include name, phone number, owner, and follow-up status. An order record can include order number, customer, amount, and delivery date.
-Each record consists of multiple fields, with each field representing a specific attribute or piece of information about that record. Fields can be of various types, such as text, numbers, dates, options, etc.
+## Basic Concepts
-### Record ID
+| Concept | Description |
+| --- | --- |
+| Record | A row of data in a table |
+| Field | An attribute in a record, corresponding to a table column |
+| Cell | The value of one record under one field |
+| Primary field | The main display name of a record, often used in mobile lists and linked record selectors |
-Each record has a unique ID. You can view a record's ID by following these steps:
+## Create Records
-1. Expand the record details
-2. Check the browser URL
-3. The ID is the string starting with "rec" in the URL
+You can create records in the following ways:
-### Creating New Records
+
-There are several ways to create new records:
+| Entry | Action |
+| --- | --- |
+| Bottom of the table | Click the `+` button at the bottom of the table view to add a record at the end |
+| Top toolbar | Click `+ Add record` on the left side of the toolbar |
+| Context menu | Right-click an existing record and insert a record above or below it |
-* Click the "+" button at the bottom of the table
-* Click the **Add record** button in the toolbar
-* Select a record, then right-click and insert a record above or below
+## Edit Records
-### Editing Records
+- **Edit a cell**: Click any cell and enter or change its content.
+- **Clear content**: Select one or more cells, then press `Delete` or `Backspace`.
+- **Bulk select**: Drag with the mouse to select multiple cells or records, then edit, delete, or copy them.
+- **Copy and paste**: Copy and paste one or more cells. If the pasted data has more rows than the current table, Teable automatically adds new rows.
-* Click directly on a field to edit it
-* Click the expand icon on the left to edit in form mode
+## Delete Records
-### Deleting Records
+
-* Select one or more records, right-click and choose "Delete"
-* Click the checkbox icon on the left, select one or more records, and click delete
+Select one or more records, then right-click and choose **Delete record**. For bulk deletion, you can select the checkboxes at the beginning of rows before deleting them.
-### Clearing Cells
+## Record Details
-Use the Delete or Backspace shortcut keys to clear the content of currently selected cells.
+
-### Bulk Operations
+Click the expand icon at the beginning of a record row, or select a record and press Space, to open the record detail card.
-Support for selecting multiple cells or records by dragging the mouse for bulk operations such as editing, deleting, etc.
+The detail card is useful for records with many fields. You can browse fields vertically on one page, reduce horizontal scrolling, edit fields, view comments, and check record history.
-### Copy and Paste
+## Collaboration and Tracking
-* Support for copying and pasting content from single or multiple cells
-* Support for automatic row and column expansion during copy and paste
+| Feature | Description |
+| --- | --- |
+| Comments | Each record has its own comment area for discussing specific data, @mentioning teammates, or adding context. See [Comments](/en/basic/record/comment). |
+| Record history | Teable records record changes so you can trace updates. See [Record History](/en/basic/record/record-history). |
+| Linked records | Use a **Link** field to connect records across tables. See [Link Field](/en/basic/field/link). |
-### Record History
+## Notes
-Teable automatically tracks record modification history for easy viewing of changes and rollback. For details, please see the [Record History section](/en/basic/record/record-history).
-
-### Record Permissions
-
-Through the authority matrix, you can configure users' record access scope and whether they can edit records. For details, please see the [Authority Matrix section](/en/basic/authority-matrix).
-
-### Record Linking
-
-You can link records from different tables through link fields to establish connections between data. The first field of each record will be displayed as the title in the link field. For details, please see the [Link Field section](/en/basic/field/advanced/link).
-
-### Record Comments
-
-Users can add comments to records to facilitate team collaboration and information exchange. For details, please see the [Record Comments section](/en/basic/record/comment).
+- The primary field is used as the main display name of a record. Put recognizable information such as a name, task title, or order number in the primary field, instead of note-style content.
+- Each record has a unique record ID. After opening the record detail card, the string in the browser URL that starts with `rec` is the record ID.
+- If you cannot edit some records, an administrator may have limited the editable scope through the **Authority Matrix**. See [Authority Matrix](/en/basic/authority-matrix).
diff --git a/en/basic/record/comment.mdx b/en/basic/record/comment.mdx
index 6d1dc559..3bca0d25 100644
--- a/en/basic/record/comment.mdx
+++ b/en/basic/record/comment.mdx
@@ -1,54 +1,68 @@
---
title: "Comments"
-description: "The comment feature provides a communication platform for each record, enabling team members to discuss, provide feedback, or add additional information about specific data"
+description: "Start discussions in records, @mention teammates, and add context to specific data."
---
-## Key Features
+Comments belong to specific records. Team members can discuss issues, add materials, explain why a change was made, and keep context with the data instead of spreading it across chat tools.
-* Real-time conversations
+## Use Comments
-* @mention support
+### Open Comments
-* Rich text editing
+
-* Support for images and links
+Open any record detail card, then click the **Comments** icon in the top-right corner to open the side comment panel.
-## Usage
+
-### Viewing Comments
+You can also right-click a record in the table view and select **Add comment**.
-Access comments through the comment button in the top-right corner of the expanded card
+### Send Comments
-### Editing Comments
+Enter content in the comment box and send it. Comments support images and pasted links, which are useful for adding screenshots, references, or external context.
-Hover over your comment to reveal an action bubble. Click the edit button to modify your comment. Edited comments will display "(edited)".
+
-### Deleting Comments
+### Mention Teammates
-Similarly, click the delete action to remove your own comments. Note that if the comment has been referenced, it will show as "Comment deleted".
+Type `@`, then choose a teammate from the dropdown. The mentioned member receives a notification and can jump directly to the related record.
-### @Mentioning Collaborators
+### Reply and React
-You can mention collaborators by typing @ in the editor. The mentioned user will receive a notification for this comment.
+| Action | Description |
+| --- | --- |
+| Reply | Click **Reply** below a comment to continue the discussion under that comment |
+| React | Click the emoji icon next to a comment to respond quickly |
+| Edit | Hover over a comment you sent, then click the action button to edit it |
+| Delete | Hover over a comment you sent, then click the action button to delete it |
-### Replying
+Edited comments display an "edited" label.
-You can reply to specific comments.
+## Notifications and Subscriptions
-### Reactions
+By default, notifications are sent only when:
-Click the reaction button to use preset emojis, adding feedback to the comment and making interactions more engaging.
+- Someone `@` mentions you.
+- Someone replies to your comment.
-### Notifications
+If you want to follow a record closely, click the bell icon in the top-right corner of the comment panel and switch to notifications for all comments.
-You can change the notification mode by clicking the bell icon in the top-right corner of the comment panel.
+New comment notifications usually appear in the notification center at the bottom-left corner of the interface. Clicking a notification opens the related record and locates the relevant comment.
-By default, to minimize unnecessary notifications, we only send notifications when:
+## Common Scenarios
-1. Your comment receives a reply.
-
-2. You are @mentioned.
-
-If you want to closely follow updates on a record, click subscribe to receive notifications whenever someone comments.
-
-Comment notifications appear in the bottom-left corner. Clicking them will automatically navigate to the relevant comment.
+- **Task clarification**: @mention a teammate under a requirement or task record to confirm details, with the discussion preserved in the record.
+- **Approval feedback**: Leave revision feedback under reimbursement, contract, or content review records so the requester can act on it directly.
+- **Change notes**: Add a reason after changing important fields so the context is available later.
diff --git a/en/basic/record/record-history.mdx b/en/basic/record/record-history.mdx
index ea9e4cba..f8fe7dc0 100644
--- a/en/basic/record/record-history.mdx
+++ b/en/basic/record/record-history.mdx
@@ -1,37 +1,56 @@
---
title: "Record History"
+description: "View table-level or single-record change history and track who changed data and when."
---
-Teable's record history allows you to track and manage changes made to data over time, making it convenient to search and trace historical data.
+Record history is used to view data changes. You can view changes across multiple records from the table level, or open one record to view its complete change history.
## Table Record History
-Table record history shows the history of all records in the current table. This feature allows users to view record changes from a global table perspective, understand which records have been modified, and helps recover accidentally deleted record data.
+Table record history shows changes across records in the current table. It is useful for checking which records were modified from a global table perspective, and it can also help find accidentally deleted records.
-### Access
+
-Click the record history icon in the top-right toolbar
+Click the **...** button in the top-right corner of the table, then choose **History** > **Table record history**.
-Open the table history dialog and click the "View Record" button to navigate to the corresponding record
+
-### Permission Notes
+In the table history dialog, click **View Record** next to a history entry to jump to the corresponding record.
-* When authority matrix is not enabled, users with table editing permissions can view the history.
-
-* When authority matrix is enabled, only users with administrator permissions can view the history.
+When the **Authority Matrix** is not enabled, users with table editing permission can view table record history. When it is enabled, only administrators can view it.
## Individual Record History
-This feature focuses on the detailed history of a single record. Users can select a specific record to view its complete change history.
+Individual record history only shows changes for the current record. It is useful for checking when a field in one record was changed and what changed before and after the update.
+
+
-### Access
+Open the record detail card, then click the record history icon in the top-right corner.
-Click the record history icon in the top-right corner of the expanded record card
+
-### Permission Notes
+You can also right-click a record in the table view and select **Show record history**.
-* In all cases, users only need edit permission for a specific record to view its history.
+Users only need editing permission for a specific record to view that record's history.
-## Important Notes
+## Notes
-The smallest unit in record history is a record's cell. Therefore, when performing bulk data operations, a large amount of historical data will be generated.
+- Record history stores changes at the cell level.
+- Bulk import, bulk paste, and bulk update operations can generate many history entries.
+- If you cannot see the history entry point, first confirm whether you have editing permission for the corresponding record or table.
diff --git a/en/basic/space.mdx b/en/basic/space.mdx
index bf8db265..ebf1905b 100644
--- a/en/basic/space.mdx
+++ b/en/basic/space.mdx
@@ -4,41 +4,57 @@ description: "Create, rename, delete, and manage spaces in Teable."
---
{/* mintlify-resync: 2026-05-14 */}
-### Creating a New Space
+## Creating a New Space
-After logging into Teable, users can easily create a space by clicking the "Create Space" button in the upper right corner. After creation, you'll automatically enter the new space to start working immediately.
+After logging into Teable, create a space from the space switcher:
Each user can own up to two free spaces. If you already own two free spaces, you cannot create another free space.
-
+1. Click the current space name in the upper-left corner
+2. Click **Create a space**
+3. Enter the space name and confirm
-### Renaming a Space
+
-Users can change the space name as needed:
+## Renaming a Space
-1. Click the "···" button in the upper right corner of the space to open the space menu
-2. Click Rename
-3. Set the new name
-4. Click outside the input box to save
+Users can change the space name from Space settings:
-### Deleting a Space
+1. Click **Settings** in the space sidebar
+2. Open **General** under **Space**
+3. Edit **Space name**
-When necessary, you can also delete a space:
+
+
+## Deleting a Space
-1. Click the "···" button in the upper right corner of the space to open the space menu
-2. Click Delete
+When necessary, you can also delete a space:
-
+1. Click **Settings** in the space sidebar
+2. Open **General** under **Space**
+3. Click **Delete space**
-### Space Trash
+## Space Trash
Deleted spaces will go to the trash, where you can choose to empty the trash to permanently delete data or restore spaces
-
+
-### Shared with Me
+## Shared with Me
When someone shares a base with you as a collaborator, the base appears under **Shared with me** in the space sidebar.
@@ -50,7 +66,7 @@ Bases shared with you are different from bases in your own spaces:
For public base sharing, see [Base](/en/basic/base).
-### Space Settings
+## Space Settings
* Click the "···" button in the upper right corner of the space to open the space menu
* Click Space Settings
@@ -59,7 +75,7 @@ Space settings now open in the same settings dialog as personal settings. Use th
**General**
-In the General page, you can rename or delete the space.
+In the General page, you can edit **Space name** and view the Space ID.
**Collaborators**
diff --git a/en/basic/space/base-invite.mdx b/en/basic/space/base-invite.mdx
index 4fe80a0e..89e28ce1 100644
--- a/en/basic/space/base-invite.mdx
+++ b/en/basic/space/base-invite.mdx
@@ -1,22 +1,54 @@
---
title: "Base Invitation"
-description: "If you want collaborators to have access to a specific base rather than all bases in the space, you can invite users to become base collaborators for that particular base"
+description: "Manage permissions at the base level — invite members to a specific base without granting access to the entire space, enabling more granular and secure data collaboration."
---
-### Adding Base Collaborators
+## What is a Base Collaborator?
-Enter the base and click the invite button to invite users to the base.
+A base collaborator is a member invited to a specific base only. Unlike space collaborators, they can only access the bases they've been invited to and cannot see other bases in the space.
-
+## Adding Base Collaborators
-In the base invitation interface, you can see all users who have permission to access the current base, including space collaborators, who will have "Space" indicated next to their names.
+Enter any base and click the `Invite` button in the top-right corner. Two methods are supported:
-### Permission Types
+- **Invite by email**: Enter the recipient's email address, set the base permission level (e.g. "Creator"), and click **Send Invitation**.
+- **Invite by link**: Switch to the "Invite via Link" tab to generate a dedicated invitation link. Copy and share the link — recipients can join by clicking it.
-Base collaborator permissions are divided into:
+
-* Creator: Can perform creation actions, modify table structure, edit automations, enable authority matrix.
-* Editor: Can modify data.
-* Commenter: Can comment on records but cannot modify data.
-* Viewer: Can view but cannot comment.
+In the invitation panel, you can view all users who currently have access to the base:
+- **Base collaborators**: Members invited directly to this base only.
+- **Space collaborators**: Shown with a "Space" badge next to their name, indicating they are space-level members who automatically inherit access to this base.
+
+
+
+The base offers four permission roles to support different levels of collaboration. For a detailed permission comparison, see [Permission Details](/en/basic/space/space-permission).
+
+For finer-grained control at the table, field, or record level, use the [Authority Matrix](/en/basic/authority-matrix) feature.
+
+| Role | Description |
+| ---- | ----------- |
+| Creator | Can perform creation actions, modify table structure, edit automations, and enable authority matrix. |
+| Editor | Can modify data. |
+| Commenter | Can comment on records but cannot modify data. |
+| Viewer | Can view but cannot comment. |
+
+## Use Cases
+
+Base invitation is designed for external collaborators. For example, a freelance designer hired to organize an asset library can be invited to that base alone with **Editor** permission, without seeing any other bases in the space.
+
+## Notes
+
+- **Permission inheritance**: A space Manager automatically has full access to all bases in that space and cannot be downgraded at the base level.
+- **Link security**: Anyone who obtains an invitation link can attempt to join the base. If a link is leaked, you can revoke it by clicking the X next to it in the invitation panel.
+
+When the [Authority Matrix](/en/basic/authority-matrix) and [Permission Details](/en/basic/space/space-permission) coexist, only **Manager** users are exempt from Authority Matrix restrictions — all other users are subject to it.
diff --git a/en/basic/space/billing.mdx b/en/basic/space/billing.mdx
index 15fe806e..e154e4d5 100644
--- a/en/basic/space/billing.mdx
+++ b/en/basic/space/billing.mdx
@@ -14,7 +14,7 @@ Only **Space Owners** have access to billing settings. To access:
2. Select **Billing** under **Space**
diff --git a/en/basic/space/space-invite.mdx b/en/basic/space/space-invite.mdx
index ad21f3cf..5282170a 100644
--- a/en/basic/space/space-invite.mdx
+++ b/en/basic/space/space-invite.mdx
@@ -3,43 +3,65 @@ title: "Space Invitation"
description: "Invite others to become space collaborators via email or link"
---
-### What is a Space Collaborator?
+## What is a Space Collaborator?
When you share a space with another user, they become a space collaborator with access to all bases within that space.
-> If someone only needs to work on specific bases in your space, consider making them [Base Collaborators](/en/basic/space/base-invite). You can learn more about collaborators and permission levels in the collaboration guide.
+## Adding Space Collaborators
-When adding new users to a space, you can assign the following roles:
-
-* Manager: Responsible for administration, has full permissions including user management, tables, automations, and enabling authority matrix.
-* Creator: Can perform creation actions, modify table structure, edit automations, and enable authority matrix.
-* Editor: Can modify data.
-* Commenter: Can comment on records but cannot modify data.
-* Viewer: Can view but cannot comment.
-
-### Adding Space Collaborators
-
-To perform these actions, you need owner or creator permissions.
+Creating an invitation link requires Manager or Creator space permissions.
1. Click the space where you want to add collaborators in the left sidebar.
2. Click the "Invite" button near the top of the space.
3. This opens the space invitation window, where you'll see options to invite via email or link. You'll also find previously configured "Invitation Links" and existing "Space Collaborators" in their respective sections.
-4. To invite via email, enter an email address or multiple addresses (separated by commas). Then, set the permission level you want users to have for all bases in the space. Finally, click send email to invite users to collaborate.
-5. To invite via link, click the "Invite via Link" option. Then, set the permission level that the invitation link will grant for all bases in the space. Finally, click create link. You can now click the clipboard icon next to the created link to share it however you see fit.
+4. **Email invitation**: Enter an email address or multiple addresses (separated by commas). Then, set the permission level you want users to have for all bases in the space. Finally, click send email to invite users to collaborate.
+
+
-
+5. **Link invitation**: Click the "Invite via Link" option. Then, set the permission level that the invitation link will grant for all bases in the space. Finally, click create link. You can now click the clipboard icon next to the created link to share it however you see fit.
-Remember that space collaborators will have full access to all bases and interfaces within the space. If you only want to share specific bases with someone, you might want to make them base collaborators instead.
+
-### Deleting Invitation Links
+Space collaborators have access to all bases in the space. If someone only needs to work on specific bases, consider making them [Base Collaborators](/en/basic/space/base-invite).
+
+## Deleting Invitation Links
To delete an invitation link, click the X on the right side of the link. This will invalidate the link, and anyone trying to use the old link will not be able to access the space.
-### Removing Space Collaborators
+
-You can remove space collaborators from the space sharing window. Click the X next to the user you want to remove. A few things to note:
+## Removing Space Collaborators
-* Only users with owner or creator space permissions can remove users with equal or lower permission levels.
-* You can only remove your own access if there is at least one other owner in the space.
-* Base collaborators cannot be removed from this window.
+You can remove space collaborators from the space sharing window. Click the X next to the user you want to remove. A few things to note:
+
+
+* **Permission restriction**: Only users with Manager or Creator permissions can remove other collaborators.
+* **Self-removal**: You can remove your own access if there is at least one other Manager in the space.
+* **Scope**: Base collaborators cannot be removed from this window.
+
+When adding new users to a space, you can assign the following roles (see [Permission Details](/en/basic/space/space-permission)):
+
+| Role | Description |
+| ---- | ----------- |
+| Manager | Responsible for administration, has full permissions including user management, tables, automations, and enabling authority matrix. |
+| Creator | Can perform creation actions, modify table structure, edit automations, and enable authority matrix. |
+| Editor | Can modify data. |
+| Commenter | Can comment on records but cannot modify data. |
+| Viewer | Can view but cannot comment. |
diff --git a/en/basic/table.mdx b/en/basic/table.mdx
index 0e178ca0..fba2b8ce 100644
--- a/en/basic/table.mdx
+++ b/en/basic/table.mdx
@@ -4,116 +4,160 @@ description: "Create, import, share, and manage tables in a base."
---
{/* mintlify-resync: 2026-05-14 */}
-Each base can contain multiple tables. A table is a structured data storage method used to store collections of related data within a base.
+Each base can contain multiple tables for storing and managing related data. Teable tables are equivalent to database tables — understanding [how they differ from spreadsheets](/en/compare/teable-vs-excel) will help you get the most out of Teable.
-Each table typically contains multiple rows and columns, where each column represents a field and its attributes, while each row represents a record or data item. Tables are core components of bases, used for collecting, storing, and processing data for subsequent retrieval, manipulation, and base construction.
-
-Teable's tables are equivalent to tables in a database, a concept that helps understand [the differences between Teable and traditional spreadsheets](/en/compare/teable-vs-excel) for better mastery of Teable.
+## Create and Manage Tables
### Adding Tables
-1. Enter a specific base
-2. Click the + button in the directory
-
-You can choose to:
+In a base, click the `+` button in the directory and choose to:
-1. Create a new table
-2. Import a table from a CSV file
-3. Import a table from an Excel file
+
-For specific import processes, see the [Import section](/en/basic/table/import)
+1. Create a new blank table
+2. Import from a CSV file
+3. Import from an Excel file
-### Modifying Table Names
+See the [Import section](/en/basic/table/import) for details.
-1. In the application, double-click the table name in the directory
-2. Modify the table name
-3. Click any area outside the input box
+### Renaming & Deleting
-### Deleting Tables
+- **Rename**: Double-click the table name in the directory, edit it, then click anywhere outside to save.
+- **Delete**: Hover over the table in the directory, click `...`, then select **Delete**.
-1. Hover over the table in the directory, click the "..." button to open the menu
-2. Click the delete button in the menu
+
### Trash
-Click the trash button in the upper left of the base to enter the table trash interface and perform the following operations.
+Click the trash icon in the upper left of the base to manage deleted tables.
-> Table data in the trash can still be accessed by database connections
+
-* Empty trash: Permanently delete all table data
-* Restore: Restore tables back to the base
+- **Restore**: Bring the table back to the base with all data intact
+- **Empty trash**: Permanently delete all trashed tables
-### Designing Tables
+## Design Tables
-Click the design button in the menu to enter the table design page, where you can view the table's basic properties, including:
+Click **Design** in the table menu to view the table's basic properties:
-**Table Related**
+
-* Base Schema the table belongs to
-* Table name and its name in the physical table
-* Table description
-* Modification time
+**Table Information**
-**Database Connection**
+Schema, physical table name, description, and last modified time
-This shows how to directly access the current database through database connections
+**Field Properties**
-* Database connection
-* Number of database connections
+| Property | Description |
+| :--- | :--- |
+| **id** | Field ID |
+| **name** | Field name |
+| **dbFieldName** | Field name in the physical database |
+| **type** | Field type |
+| **description** | Field description |
+| **graph** | View current field dependencies |
+| **cellValueType** | Current field value type |
+| **isLookup** | Whether it's a field looked up from a linked table |
+| **isMultipleCellValue** | Whether it's an [array value field](/en/basic/field/common/is-multiple-value) |
+| **isComputed** | Whether it's a computed field (record values of computed fields cannot be modified) |
+| **isPending** | Whether it's in calculation |
+| **hasError** | Whether there are calculation errors |
+| **notNull** | Whether non-null validation is enabled |
+| **unique** | Whether unique value validation is enabled |
-**Field Information**
+## Share and Access Tables
-Detailed field properties
+### Share a Table
-* id: Field ID
-* name: Field name
-* dbFieldName: Field name in the physical database
-* type: Field type
-* description: Field description
-* graph: View current field dependencies
-* cellValueType: Current field value type
-* isLookup: Whether it's a field looked up from a linked table
-* isMultipleCellValue: Whether it's an [array value field](/en/basic/field/common/is-multiple-value)
-* isComputed: Whether it's a computed field (record values of computed fields cannot be modified)
-* isPending: Whether it's in calculation
-* hasError: Whether there are calculation errors
-* notNull: Whether non-null validation is enabled
-* unique: Whether unique value validation is enabled
+In a table, click **Share** in the upper-right corner, switch to **Share table**, and turn on **Share to web** to generate a share link.
-
+
+
-### Share a Table
+After table sharing is enabled, the **Share** button appears in a gray shared state in every view in that table. This state comes from table sharing; it does not mean each view has been shared separately.
-In a table, click **Share** in the upper-right corner, switch to **Share table**, and turn on **Share to web** to generate a table share link.
+Link permissions:
-For table shares, you can configure these link permissions:
+
-- **Can view**: Anyone with the link can view table data.
-- **Can edit**: Logged-in users can edit records in the shared table.
-- **Can save as copy**: Anyone with the link can save a copy to their space.
+- **Can view**: Anyone with the link can view table data
+- **Can edit**: Logged-in users can edit records in the shared table
+- **Can save as copy**: Anyone with the link can save a copy to their space
-You can also configure **Allow viewers to copy data**, **Restrict by password**, regenerate the link, delete the share link, and copy the embed config.
+You can also configure **Allow viewers to copy data**, **Restrict by password**, regenerate or delete the link, and copy the embed config.
-If you only need to share the current view, switch to **Share view**. For details, see [Share view](/en/basic/view/toolbar/share).
+To share only the current view, switch to **Share view**. For details, see [View toolbar](/en/basic/view/toolbar).
### Ways to Access Tables
-Users can access tables in two ways on Teable Cloud:
+Tables default to a [Grid view](/en/basic/view/grid) and are also accessible via the [API](/en/api-doc/overview). You can create additional views — such as Kanban — to suit different workflow needs.
+
+## Search and Downloads
-* [Grid view](/en/basic/view/grid)
-* [API overview](/en/api-doc/overview)
+### Global Search
-Views are the most intuitive of these methods. Users can search, manipulate, and build complex applications through various views.
+
-Newly added tables will default to include a [Grid View](/en/basic/view/grid) for users to quickly start processing data.
+- **Date fields can be searched** in addition to text fields — search a date value to find matching records
+- When hiding non-matching rows, the visible result set narrows to matching records only
-### Global Search
+### Attachment Downloads
+
+Bulk attachment downloads respect the current search results and include only attachments from matching records.
+
+
+
+In the bulk download dialog, use **Attachment name prefix** to name ZIP files by default index, a chosen field, or **No prefix** to keep original filenames; duplicates get an auto-appended suffix.
-* Tables support global search. In addition to text fields, **date fields can also be searched**, so you can look up a specific date value to find matching records.
-* When you search and choose to hide non-matching rows, the visible result set narrows to the matching records.
-* If you bulk-download attachments from an attachment field menu, the download also respects the current search results and includes only attachments from matching records.
-* In the bulk attachment download dialog, use **Attachment name prefix** to choose how files are named in the ZIP. You can keep the default attachment index, choose another field as the prefix, or select **No prefix** to keep original filenames. If duplicate filenames appear, Teable adds a suffix to keep each ZIP entry unique.
+
-### Table Features
+## FAQ
-Creating Views: Users can create various views to operate on tables, with different views meeting different scenario needs. For example: Grid views have the highest data density and operate similar to spreadsheets, making them the easiest to learn. While Kanban provides better support for project management scenarios.
+
+
+ Teable is stricter than Excel — each column has a fixed data type, and a Number column only stores numbers. This constraint ensures data integrity and is the foundation for advanced filtering and automation. See [Teable vs Excel](/en/compare/teable-vs-excel) for details.
+
+
+ Check whether the table is referenced by **linked fields** in other tables. Deleting the source table may cause data display issues in linked tables.
+
+
diff --git a/en/basic/table/export.mdx b/en/basic/table/export.mdx
index d28f796a..2566d240 100644
--- a/en/basic/table/export.mdx
+++ b/en/basic/table/export.mdx
@@ -1,32 +1,41 @@
---
title: "Export"
+description: "Export an entire table or the data currently shown in a view as a CSV file."
---
-{/* mintlify-resync: 2026-05-14 */}
-## Basic operations
+Teable supports exporting an entire table or only the data currently shown in a view. Exported files use CSV format.
-Teable supports two export scopes to fit different data export needs.
+
+
+ Export the entire table when you need the full raw data. Export a specific view when you only need the data currently shown in that view.
+
+
+ To export an entire table, open the target table menu in the left directory. To export a view, switch to the target view and open the view menu.
+
+
+ Select **Download CSV**. Teable generates the file according to the selected export scope.
+
+
-- Format: CSV (Comma-Separated Values)
+## Export Flow
-### 1. Export an entire table (all data)
+To export an entire table, hover over the target table name in the left directory, click the `...` button on the right, then select **Download CSV**.
-Use table export when you need all raw data in the table, including hidden fields and records.
+
-- **Steps**:
- 1. In the left sidebar, hover over the target table name
- 2. Click the `...` button that appears on the right
- 3. Select **Download CSV**
+To export a specific view, switch to the target view, confirm the filters, sorting, and hidden-field settings, then click the `...` menu next to the view name and select **Download CSV**.
-
+
-### 2. Export a specific view (filtered data)
+## Notes
-Use view export when you only want to export the data currently shown in a view, such as "Orders this month" or "Completed tasks".
-
-- **Steps**:
- 1. Switch to the target view, making sure the desired filters, sorting, or hidden fields are applied
- 2. Click the `...` menu next to the view name, or the view settings button
- 3. Select **Download CSV**
-
-
+- **Entire table export**: Includes the raw table data, including hidden fields and records.
+- **View export**: Exports only the data currently shown in the view. Use it for filtered, sorted, or hidden-field results.
diff --git a/en/basic/table/import.mdx b/en/basic/table/import.mdx
index 91a20fad..1d69d83c 100644
--- a/en/basic/table/import.mdx
+++ b/en/basic/table/import.mdx
@@ -1,46 +1,63 @@
---
title: "Import"
+description: "Import CSV or Excel files to create a new table or append data to an existing table."
---
{/* mintlify-resync: 2026-05-14 */}
-Teable makes it easy to import data from CSV and Excel files into tables. This article will guide you through the process of importing spreadsheet files into tables.
+Use import to initialize a new table or append new data to an existing table.
Excel files are limited to **5MB**. If you need to import a larger dataset, save it as **CSV** first and then import it.
-## Importing a New Table
-
-Step 1: Click the + Button in the Left Menu and Select File Type
-
-Step 2: Configure Field Types
-
-After uploading the file, Teable will automatically predict and match field types based on the first 5,000 rows of data. You can also manually adjust these types according to your needs.
-
-
-
-Step 3: Import Success
-
-> Important: During the import process (before receiving success or failure notification), please do not delete columns or change column types to avoid affecting the import results.
-
-Click import, and Teable will asynchronously import the data in the background. You will be notified of success or failure (including the reason for failure).
-
-
-
-## Incremental Import
-
-For existing tables, Teable also supports incremental data import.
-
-Step 1: Click Table Options, Select Import Data, and Choose File Type
-
-
-
-Step 2: Map Import Fields
-
-After uploading your file, select which columns should map to which fields in your table. Once configured, click import to proceed.
-
-
-
-Step 3: Import Success
-
-
+
+
+ To create a new table, click `+` at the top of the left directory and choose `From CSV` or `From Excel`. To append data to an existing table, choose `Import data` from the target table menu.
+
+
+ Select the CSV or Excel file you want to import. Excel files must be **5MB** or smaller.
+
+
+ Review the preview after upload. When creating a new table, you can adjust field types. When appending to an existing table, confirm how file columns map to target fields.
+
+
+ Click **Import**. Teable processes the data in the background and notifies you when the import succeeds or fails.
+
+
+
+
+Before the completion notification arrives, do not delete the table being generated, delete fields, or change field types. These changes may affect the import result.
+
+
+## Import Flow
+
+Click `+` at the top of the left directory and select CSV or Excel according to your file type.
+
+
+
+After upload, Teable predicts field types from the first 5,000 rows of data. You can adjust them before importing.
+
+
+
+To append data to an existing table, open the table menu, select **Import data**, and choose the file type.
+
+
+
+After upload, map file columns to fields in the target table, then click **Import**. Teable processes the data in the background and notifies you when the import succeeds or fails.
+
+## Notes
+
+- **First row detection**: Teable treats the first row as the header row by default. Make sure the first row contains clear column names, not data.
+- **Date format**: Teable can recognize common date formats such as `YYYY-MM-DD`. For unusual formats, standardize them before import, or import them as text and convert the field type later.
diff --git a/en/basic/view/calendar.mdx b/en/basic/view/calendar.mdx
index 443f100b..fed6bad8 100644
--- a/en/basic/view/calendar.mdx
+++ b/en/basic/view/calendar.mdx
@@ -1,58 +1,67 @@
---
title: "Calendar"
-description: "The Calendar view displays your data in a calendar format, allowing you to visually view and manage date-based records. It's particularly suitable for managing meeting schedules, project timelines, event planning, and other time-related content. Through the Calendar view, you can easily view task distribution and manage time effectively."
+description: "View and manage records by date, such as meetings, events, schedules, and project timelines."
---
-### Creating a Calendar View
+Calendar view displays records on a calendar. If a table has a single-value date field, you can use Calendar view to track tasks, meetings, events, publishing plans, or project milestones.
-1. Click the "+" button in the top left corner.
+## Use Cases
-2. Select Calendar view from the dropdown menu.
+| Scenario | Good for |
+| --- | --- |
+| Meetings and appointments | Meeting times, customer visits, interviews |
+| Project scheduling | Start dates, due dates, milestones |
+| Content planning | Publish dates, campaign dates, marketing schedules |
+| Multi-day items | Projects, events, leave requests, or work with start and end dates |
-### Basic Calendar View Settings
+## Create a Calendar View
-#### Configure Date Field
+
+
+ Click `+` next to the view tabs.
+
+
+ Select **Calendar view** from the view types.
+
+
+ Teable selects suitable date fields when available. Open **Calendar config** to change the **Start date field**, **End date field**, or **Title field**.
+
+
-1. Click the "Start Date Field" dropdown menu on the left.
+## Date Field Settings
-2. Select the date field to use as the event start time.
+| Setting | Description |
+| --- | --- |
+| Start date field | Controls which day the record appears on |
+| End date field | Shows records that span multiple days or have a duration |
+| Title field | Controls the text shown on calendar records |
-3. Optionally select an "End Date Field" to display spanning events.
+If the table does not have a date field, Teable may prompt you to add start and end date fields.
-#### Color Configuration
+## Color Settings
-1. Click the "Color Display" option on the left.
+Calendar records can use colors to separate different types of work.
-2. You can choose:
- - Custom Color: Select a fixed color from the color palette
- - By Field: Display different colors based on field values
+| Color display | Description |
+| --- | --- |
+| Customize color | Uses one fixed color for this Calendar view |
+| Align with records | Uses colors from a Single Select field, such as status or type |
-### Calendar Interface Operations
+## Navigate the Calendar
-#### View Navigation
-- Use left and right arrows to switch months
-- Click "Today" to quickly return to the current date
-- Display current year and month
+- Use the left and right arrows to switch months.
+- Click **Today** to return to the current date.
+- Click a record on the calendar to open its details.
-#### Event Operations
+## Create and Adjust Events
-##### Create New Event
+- Hover over a date cell and click `+` to create a new record on that date.
+- To create a multi-day item, set an end date in the record details, or drag the event edge when separate start and end date fields are configured.
+- Drag an existing record to another date to update its date fields.
+- Right-click a record to duplicate or delete it.
-1. Click directly on a date cell to create a new event.
+## Notes
-2. Drag to select a time period to create multi-day events.
-
-##### Edit Event
-
-1. Click an existing event to edit it.
-
-2. You can:
- - Modify event content
- - Adjust dates
- - Update other field information
-
-##### Move Events
-
-You can drag and drop to:
-- Move events to other dates
-- Adjust event duration (if end date is set)
+- Calendar view depends on single-value date fields. If a configured date field is deleted or changed, review **Calendar config**.
+- Calendar view changes how records are displayed. It does not change existing fields unless you choose to add date fields from the Calendar prompt.
+- Create, edit, delete, drag, and resize actions depend on your view, record, and field permissions.
diff --git a/en/basic/view/form.mdx b/en/basic/view/form.mdx
index 33ef8bb4..0a4dda40 100644
--- a/en/basic/view/form.mdx
+++ b/en/basic/view/form.mdx
@@ -1,69 +1,73 @@
---
title: "Form"
-description: "Learn how to use Teable forms to collect information from anyone and automatically save it to your Teable base. Each form submission creates a new record in the table where the form view was created."
+description: "Use a Form view to collect submissions and save each response as a new record in the current table."
---
-### Overview
+Form views are generated from the current table. Each submission creates a new record in the table where the form view was created. Use forms to collect feedback, registrations, reimbursement requests, customer details, and other structured data.
-Forms are perfect for various purposes like recording expenses, collecting feedback, creating polls and quizzes, gathering customer information, and more. Teable forms support file attachments, work well on mobile devices, and connect to the Teable API. Unlike other products that require building forms from scratch, Teable's form views are automatically generated from your existing tables, then allow you to rearrange and remove fields.
+
+
+ Use App Builder for conditional logic, multi-step flows, branded pages, or more complex interactions.
+
+
+ Use a Form view when you only need field names, subtitles, required fields, and basic sharing.
+
+
-#### Step 1: Add a New Form View
+You can also describe your collection needs in [AI Chat](/en/basic/ai/ai-chat) and let AI generate a form view from the current table.
-To create a new form view, navigate to the table where you'll collect new data. Open the view sidebar and click the form option under the create heading. If your view creation section is collapsed, you'll need to expand it first.
+## Use Cases
-#### Step 2: Initial View Settings
+| Scenario | Good for |
+| --- | --- |
+| Information collection | Customer details, registration forms, surveys, feedback |
+| Internal requests | Reimbursements, purchasing, leave requests, access requests |
+| File submission | Resumes, receipts, contracts, screenshots |
+| Lightweight workflow entry | Save external submissions directly as table records |
-You'll have the opportunity to give your form view a unique title and set the view as collaborative or personal. Note that you can lock the form view only after completing the initial form view settings. After setting the title and view permissions, click create new view.
+## Create a Form View
-#### Step 3: Add, Hide, and Reorder Fields
+
+
+ Go to the table that should store form submissions.
+
+
+ Open the view sidebar, click `+`, and choose **Form view**.
+
+
+ Enter a form view name.
+
+
+ After creating the view, Teable opens the form builder for field setup.
+
+
-This opens the form builder where you can further customize your form before sharing it with others. Advanced plans offer the ability to add cover images or logos to forms. You can add a description to your form by clicking the header area and adding a description.
+## Configure Form Fields
-Fields on the form are automatically populated based on all fields shown in the first grid view of the table.
+Form fields are generated from the table fields. In the form builder, you can adjust what submitters see.
-To change the order of fields on your form, click a field and use its drag handle to move it. To hide a field from the form, you can click the hide button in the top right corner of the field you wish to hide, or drag and drop the field to the left side of the form builder. To add a field to the form, drag it from the left side onto the form. If you realize you want to add a field to your form that doesn't yet exist in your table, you can click the + Add field to this table button in the fields sidebar. Sometimes you may need to return to the form later to add or remove fields. Simply return to the form's view and adjust the settings. You can also customize field settings by clicking the field, clicking the dropdown arrow next to the field name, and selecting customize field type from the dropdown menu. This opens the same field customization menu you see when customizing fields in grid view.
+| Action | Description |
+| --- | --- |
+| Reorder fields | Drag fields to change their order on the form |
+| Hide fields | Click the hide button on a field, or drag the field to the hidden area on the left |
+| Add fields | Drag a field from the left sidebar, or click `+ Add field to this table` |
+| Rename field | Click a field and rename it. The name shown on the form updates with the field name |
+| Field description | Add a field description to explain what the submitter should enter |
+| Require a field | Turn on required so the form cannot be submitted without that field |
-#### Step 4: Customize Form Fields
+## Form Appearance
-Beyond customizing which fields will appear on your form and their order, you can adjust how fields display to end users. Clicking any field in the form builder will pop up numerous display options. For all field types, you can change the name that displays on the form and add a subtitle to provide helpful context. Some field types offer additional display setting options, which are covered in the sections below.
+Form appearance supports a cover image, logo, and submit button text. The cover area uses a fixed height, so avoid placing important text or key information in an image that may be cropped.
-You can also toggle the required option to make filling out a field necessary before submitting the form. Note that if you make a checkbox field required, the checkbox must be checked to submit the form.
+## Share the Form
-#### Step 5: Share Form URL
+After configuring the form, click **Share form** in the top-right corner of the table, copy the form link, and send it to submitters. You can also click preview to open the public form page in your browser.
-Once you've finished building your form, you can click the share form button in the view bar. This will give you a link you can copy and paste. Clicking the preview button will also take you directly to the form share link in your browser. The sections below will cover more form sharing options.
+## Submission Settings
-### Additional Form Configuration Options
+| Setting | Description |
+| --- | --- |
+| Password protection | Submitters must enter the correct password before submitting |
+| Track form submitters | Requires submitters to log in to Teable and records submitter information in the Created By field |
-#### Adding a Cover Image
-
-To add a cover image (requires an advanced plan), click add cover image in the gray area and upload your desired image. You can also crop or rotate the image in the file picker. Note that the form cover image area is always 240px tall and the width of your browser window. It's best to use cover images as background graphics that add an interesting feel to your form rather than for important information that might get cropped.
-
-#### Adding Password Protection
-
-When sharing a form, you can choose to set a password. In this case, the form can only be submitted after entering the correct password.
-
-#### Track Form Submitters
-
-Enabling this feature will automatically collect form submitter information so form responses can be traced to specific individuals. A few notes about expected behavior:
-
-* Form submitters will be asked to log into Teable (if they aren't already logged in on their browser) or create a Teable user account so their name and email address can be collected with their form submission.
-
-* The responder's information will appear in the "Created By" field in the table where the form was created.
-
-### Conditional logic Form
-
-#### Choosing the Right Approach
-
-- **Form View (basics)**: Best for lightweight collection with basic field presentation and required fields (see Step 4 above for details).
-
-- **App Builder (advanced, recommended)**: Best for a richer submission experience—conditional logic, multi-step flows, branded pages, and more complex interaction.
- - **Conditional Logic**: To show or hide follow-up fields based on conditions, build the submission experience in [Teable AI App Builder](/en/basic/ai/app-builder). Start from a short prompt, generate a first version, then refine the flow and UI.
- - **Prompt to App**: Describe what you want, generate a working first draft, then iterate.
- - **Start from your Base**: Click **Create App** to generate an app linked to your data.
- - **Start from AI Chat**: Open [AI Chat](/en/basic/ai/ai-chat) and ask AI to create an app for your table (for example: "Create an intake app for this table"). After the app is created, continue editing in App Builder.
- - **Publish & share**: When ready, publish your app to get a secure public URL.
-
-> **When to use App Builder vs AI Chat**: Use App Builder to create custom interfaces and standalone apps. For interactive data analysis and ad-hoc questions within the database, use [AI Chat](/en/basic/ai/ai-chat).
-
-To explore more AI-powered workflows, see the [AI overview](/en/basic/ai/overview).
+When submitter tracking is enabled, visitors who are not logged in must log in or create a Teable account before submitting.
diff --git a/en/basic/view/gallery.mdx b/en/basic/view/gallery.mdx
index 53340e82..be49436c 100644
--- a/en/basic/view/gallery.mdx
+++ b/en/basic/view/gallery.mdx
@@ -1,61 +1,63 @@
---
title: "Gallery"
-description: "Gallery view is a view type that displays data in a grid of images, particularly suited for managing and showcasing image-based content. It allows you to browse all records with images in a visual way, making it perfect for managing design portfolios, product catalogs, photo libraries, and similar scenarios."
+description: "Display records as image cards for product catalogs, asset libraries, and portfolios."
---
-### Creating a Gallery View
+Gallery view displays records as image cards. Use it when images are the main content of the table, such as product photos, design drafts, campaign assets, photo libraries, or portfolios.
-1. Click the button to create a new view.
+## Use Cases
-2. Select Gallery View from the dropdown menu.
+| Scenario | Good for |
+| --- | --- |
+| Product catalogs | Product images, models, prices, status |
+| Asset management | Design drafts, campaign assets, ads, screenshots |
+| Portfolios | Project covers, case images, design work |
+| Image review | Filter image records by status, owner, or tags |
-3. Configure gallery view settings including card settings, filters, and sorting options.
+## Create a Gallery View
-### Basic Operations in Gallery View
+
+
+ Click `+` next to the view tabs.
+
+
+ Select **Gallery view** from the view types.
+
+
+ After the view opens, use **Customize cards**, filters, and sorting to adjust how records appear.
+
+
-#### Configuring Cover Images
+## Set the Cover Image
-1. Click the "Card Settings" button in the toolbar.
+Gallery view can use an attachment field as the card cover. If the table already has an attachment field, Teable selects one by default.
-2. Select the attachment field to display as the cover.
+| Setting | Description |
+| --- | --- |
+| Cover field | Choose an attachment field to use as the card cover, or choose **No image** |
+| Multiple files | If the selected attachment field has multiple files, the first file is shown first on the card; users can switch between files from the card carousel |
+| Fit | When enabled, the whole image fits inside the cover area; when disabled, the image fills the cover area and may be cropped |
-3. If a record contains multiple images, the first image will be used as the cover by default.
+## Configure Card Information
-#### Adjusting Image Size
+Click **Customize cards** in the toolbar to choose which fields appear on cards, reorder fields, and turn **Hide field name** on or off.
-You can adjust the display size of images through view settings:
+Keep only fields that help identify the record, such as name, status, owner, price, or tags. Too many fields make Gallery view harder to scan.
-1. Click the "Card Settings" button in the toolbar.
+## View and Edit Images
-2. Toggle the "Fit" switch on or off
+- Click a cover image to open the preview.
+- In preview mode, switch between files, zoom or rotate images, or download the file.
+- Click the card body to open the record.
-#### Customizing Card Information
+## Manage Records
-1. Click the "Card Settings" button in the toolbar.
+- Click **Add record** in the toolbar to add a record. If an attachment field is available, you can upload files from the record editor.
+- Right-click a card to delete the record or use other record actions.
+- Use filters and sorting to manage image records by status, category, or owner.
-2. Select which field information to display below the images.
+## Notes
-3. You can adjust the display order of fields and whether to show field names.
-
-#### Image Operations
-
-1. Click an image to view it in full size.
-
-2. In full-size mode, you can:
- - Swipe left or right to browse other images
- - Use zoom functionality to examine image details
- - Download the original image
-
-#### Record Management
-
-1. Adding new records:
- - Click the "New" button at the bottom of the interface
- - Upload images and fill in related information
-
-2. Editing records:
- - Click the information area below the image
- - Modify content in the popup editor
-
-3. Deleting records:
- - Right-click the image and select "Delete Record"
- - Or use the delete option in edit mode
+- Gallery view works best when attachment images are central to the table. If records are mostly text or numbers, Grid view is usually faster.
+- Field display settings in Gallery view only affect the current view. They do not delete field content.
+- Create, edit, delete, and file actions depend on your view, record, and field permissions.
diff --git a/en/basic/view/grid.mdx b/en/basic/view/grid.mdx
index b98ff6fc..9ed066ab 100644
--- a/en/basic/view/grid.mdx
+++ b/en/basic/view/grid.mdx
@@ -1,83 +1,106 @@
---
title: "Grid"
-description: "Grid view is a data presentation format in Teable where data is displayed in a spreadsheet-like layout, with each record occupying a row and each field occupying a column. Grid view can be used for viewing, editing, and analyzing data."
+description: "Display records in rows and columns for structured viewing, editing, and data cleanup."
---
{/* mintlify-resync: 2026-05-14 */}
-### Creating a Grid View
+Grid view is the most common view in Teable. Each record appears as a row, and each field appears as a column. Use it for daily data entry, bulk editing, sorting, filtering, and quick checks.
-As mentioned at the beginning, every table must have at least one grid view by default. Therefore, the system automatically creates a grid view whenever you add a new table. To create a new grid view in an existing table, follow these steps:
+## Use Cases
-1. Navigate to your space, select the base, then select the table where you want to add a new grid view.
+| Scenario | Recommended setup |
+| --- | --- |
+| Maintain data day to day | Enter, edit, copy, and paste records directly in the grid |
+| Clean up many records | Combine filters, groups, sorts, and hidden fields |
+| Check numeric data | Use selection statistics for average, filled count, and sum |
+| Work with wide tables | Freeze key columns so identifying fields stay visible |
-2. Click the "Views" option near the top left of the screen. This will open the view sidebar. In some tables, the view sidebar may already be open, in which case you can proceed to the next step.
+## Create a Grid View
-3. Find and click the "Grid+" option under the "Create..." section.
+Every new table includes a grid view by default. To create another grid view for a specific workflow:
-4. This opens a popup where you can name your new grid view and set view editing permissions (collaborative, personal, or locked).
+
+
+ Go to the target table and open the view list on the left.
+
+
+ Click `+` at the top of the view sidebar and choose **Grid view**.
+
+
+ Enter a view name, set the collaboration mode if needed, and create the view.
+
+
-5. After configuring these settings, click "Create New View."
+## Display Settings
-6. At this point, you can further configure the view by hiding fields, filtering records, grouping records, sorting records, and more.
+### Manage Field Display
-### Adjusting Row Height in Grid View
+
-By default, grid view displays records with a short row height to maximize record density. In the short row height setting, each record shows one line of text and small attachment thumbnails. If you want to see more text and larger images, you can adjust the row height from the default short setting.
+| Action | Description |
+| --- | --- |
+| Hide fields | Click **Hidden fields** in the toolbar and turn fields on or off |
+| Reorder fields | Drag field headers left or right |
+| Find fields | Search field names in the hidden fields panel when the table has many fields |
-There are four different row height options:
+Hidden fields only change the current view. They do not delete fields or record data.
-* Short (most compact option, also the default height for new views)
+### Adjust Row Height and Field Name Height
-* Medium
+Click **Row height** in the toolbar to adjust the display density of the table view.
-* Tall
+
-* Extra Tall (most spacious option)
+- **Row height**: Choose Short, Medium, Tall, or Extra tall to adjust record row height.
+- **Field name**: Choose 1 line, 2 lines, or 3 lines to control the display height of column names in the table header.
-To change the row height in the current view, click the row height toggle in the view bar and select your desired height.
+### Freeze Columns
-Shorter row heights allow you to see more records at once, while larger row heights let you see more information for each record. Specifically, larger row heights will show multiple lines of text in text fields, multiple lines in linked records, multiple select options, collaborator fields, and display larger images.
+When a table has many fields, freeze key columns so they stay visible while you scroll horizontally.
-Changing row height does not affect field header height, which cannot be adjusted.
+
-If you want to ensure your preferred row height configuration isn't accidentally changed, you can lock the view (coming soon), which will prevent all collaborators from changing the view's configuration until someone with creator permissions unlocks it.
+- Drag the freeze divider to freeze the columns on its left.
-### Selection Statistics
-
-When you select a range in grid view, Teable shows **Average**, **Filled**, and **Sum** for numeric field values in the selected range.
-
-### Hiding Fields in Grid View
-
-To hide fields in grid view (or show hidden fields), click the "Hide Fields" button in the view bar to open the hide fields dialog. If there are no hidden fields in the current view, the "Hide Fields" button will appear as an eye icon with a line through it and display "Hide Fields."
-
-If there are hidden fields in the current view, the "Hide Fields" button will have a blue background and (if the window is wide enough) show the specific number of hidden fields, such as "12 Hidden Fields."
-
-When the hide fields dialog is open, you can see which fields are showing (toggle switch is green and moved to the right) and which fields are hidden (toggle switch is gray and moved to the left).
+
-Click the toggle switch next to a field name to show or hide that field.
+- Right-click a field header and choose **Freeze up to this field** to freeze that field and all fields to its left.
-The "Hide All" and "Show All" buttons allow you to quickly hide/show all fields (except the primary field, which cannot be hidden).
+## Edit and Review Data
-If you have many fields, you can type search terms in the "Find Fields" search box to more easily find the field you're looking for.
+### Edit and Work in Bulk
-Another way to hide a field is to click on the field header and select "Hide Field" from the dropdown menu.
+- **Edit a cell**: Click any cell and enter or change content.
+- **View long content**: Double-click a cell, or select it and press Space, to open the full content.
+- **Fill by dragging**: Drag the fill handle at the bottom-right corner of a selected cell to copy values downward.
-You can also hide or show individual fields in grid view by opening the expanded record.
-
-### Reordering Fields in Grid View
-
-You can quickly rearrange the order of fields in your view by clicking and dragging the drag handle on field names.
-
-You can also move fields directly by clicking and dragging field headers in the grid view.
-
-Fields cannot be reordered in expanded records.
-
-### Wrapping Text in Individual Cells
+### Selection Statistics
-By default, new grid views display rows with a fixed single-line height. However, by expanding the row height, fields containing text will wrap to the next line.
+
-Shorter row heights allow you to see more records at once, while larger row heights let you see more information for each record. Specifically, larger row heights will show multiple lines of text in text fields, multiple lines in linked records, multiple select options, collaborator fields, and display larger images.
+When you select a range of cells, Teable shows **Average**, **Filled**, and **Sum** for numeric values. Use this for quick checks on amounts, counts, and scores.
-To expand a single row at a time, you can press the spacebar when any cell in the selected row is focused.
+## Notes
-You can also view the full content of the current cell by clicking on it, then use arrow keys to quickly move between different cells.
+- Hidden fields, sorting, filtering, grouping, and similar settings apply only to the current view.
+- To prevent accidental configuration changes, lock the view. Only users with permission can unlock or change it.
diff --git a/en/basic/view/kanban.mdx b/en/basic/view/kanban.mdx
index 0a4ef5af..371b16cd 100644
--- a/en/basic/view/kanban.mdx
+++ b/en/basic/view/kanban.mdx
@@ -1,107 +1,76 @@
---
title: "Kanban"
-description: "The Kanban view provides a dynamic way to manage data by displaying records as cards on a board. This intuitive layout clearly reflects task status or priority. Overall, the Kanban view helps visualize your work content and maximize efficiency, making it ideal for project management and workflow tracking."
+description: "Display records as cards grouped by a field, useful for tracking status, stages, and workflows."
---
-### Creating a Kanban View
+Kanban view displays records as cards and groups them into columns by field value. Use it for task status, sales stages, content workflows, recruiting pipelines, and other stage-based work.
-1. Click the button to create a new view.
+## Use Cases
-2. Select Kanban view from the dropdown menu.
+| Scenario | Good for |
+| --- | --- |
+| Project tasks | Track tasks by Not started, In progress, Done |
+| Sales pipeline | Manage customers by Lead, Opportunity, Negotiation, Closed |
+| Content workflow | Track content by Idea, Writing, Review, Published |
+| Hiring pipeline | Manage candidates by Screening, Interview, Offer, Hired |
-3. Now you can configure the Kanban view settings, including grouping settings, card settings, filters, and sorting.
+## Create a Kanban View
-### Group-Related Operations
+
+
+ Click `+` next to the view tabs.
+
+
+ Select **Kanban view** from the view types.
+
+
+ Choose the field used to create stacks, such as status, stage, owner, or date.
+
+
-#### Change Grouping Field
+## Stack Settings
-All fields except attachments are supported as grouping fields.
+Kanban view can stack records by most fields. Attachment and Button fields are not available as stacking fields.
-1. Click the dropdown icon next to the group title.
+| Action | Description |
+| --- | --- |
+| Change stacking field | Click **Stacked by [field]** in the toolbar and choose another stacking field |
+| Hide empty stacks | Turn on **Hide empty stack** in stacking field settings |
+| Collapse stacks | Choose **Collapse stack** from the stack menu to show the stack as a vertical bar |
+| Sort stacks | When stacked by a Single Select field, drag stacks to reorder them |
-2. Select a grouping field from the popup dialog or create a new grouping field.
+## Manage Stacks
-3. If you want to hide empty groups, enable the "Hide Empty Groups" option.
+When the stacking field is a Single Select field, you can manage options directly from the board:
-4. Click "Done" to save changes.
+- Click **Add stack** to create a new option.
+- Choose **Rename stack** from the stack menu to rename an option.
+- Choose **Delete stack** from the stack menu to delete an option.
-#### Collapse Groups
+These actions change the options in the corresponding Single Select field. Confirm the impact before changing stacks used by other views or workflows.
-1. Click the dropdown icon next to the group title.
+## Configure Cards
-2. Select "Collapse Group" from the dropdown menu.
+Click **Customize cards** in the toolbar to control what appears on each card.
-3. Collapsed groups will be displayed as vertical bars in the Kanban view.
+| Setting | Description |
+| --- | --- |
+| Visible fields | Choose which fields appear on cards |
+| Field order | Adjust the order of fields on cards |
+| Cover | Choose an attachment field as the card cover |
+| Hide field name | Show only field values to reduce card density |
-#### Add New Group
+Show only fields needed to understand the record status, such as title, owner, due date, priority, and key tags.
-When the grouping field is a single-select field, you can add new groups.
+## Move and Edit Cards
-1. Click the "Add Group" button.
+- Drag a card to change its order or move it to another stack.
+- Click `+` at the bottom of a stack to open the create-record dialog. Set the stacking field value if you want the new record to appear in that stack.
+- Right-click a card to insert a card above or below, expand the card, or delete it.
+- Click a card, or choose **Expand card**, to open the record details.
-2. Fill in the new group information and click outside the focus area or press Enter to complete the addition.
-
-#### Rename Group
-
-When the grouping field is a single-select field, you can rename groups.
-
-1. Click the dropdown icon next to the group title.
-
-2. Select "Rename Group" from the dropdown menu.
-
-#### Delete Group
-
-When the grouping field is a single-select field, you can delete groups.
-
-1. Click the dropdown icon next to the group title.
-
-2. Select "Delete Group" from the dropdown menu.
-
-#### Sort Groups
-
-When the grouping field is a single-select field, you can reorder groups.
-
-You can reorder groups by dragging them to the desired position.
-
-### Card-Related Operations
-
-#### Customize Card Configuration
-
-1. Click the "Card Configuration" menu in the toolbar.
-
-2. In the popup, toggle fields on or off to show or hide them on each card.
-
-3. You can use the "Find Fields" box to search for fields.
-
-4. You can click "Hide All" or "Show All" to show or hide all fields.
-
-5. Additionally, you can set the cover display and "Hide Field Names" option at the bottom of the popup dialog.
-
-#### Move Cards
-
-You can sort or switch groups by dragging and dropping cards.
-
-#### Add New Card
-
-1. Click the "+" button at the bottom of a group.
-
-2. After clicking, the new record's card details will expand, where you can enter data to save changes.
-
-#### Insert New Card
-
-1. Right-click a card to access the card menu.
-
-2. Select "Insert Card Above" or "Insert Card Below" option.
-
-#### Edit Card
-
-1. Click directly on the card or right-click to bring up the menu, then select "Expand Card" option.
-
-2. Now you can edit the current card's data in the expanded card view.
-
-#### Delete Card
-
-1. Right-click a card to access the card menu.
-
-2. Select "Delete Card" option.
+## Notes
+- When you drag a card to another stack, Teable updates the value of the stacking field.
+- Create, edit, delete, and drag actions depend on your view, record, and field permissions; cards also cannot be dragged between stacks when the stacking field is computed or read-only.
+- For team workflows, consider locking important views so grouping and card settings are not changed by accident.
diff --git a/en/basic/view/toolbar.mdx b/en/basic/view/toolbar.mdx
new file mode 100644
index 00000000..d8d495b7
--- /dev/null
+++ b/en/basic/view/toolbar.mdx
@@ -0,0 +1,233 @@
+---
+title: "View Toolbar"
+description: "Use filters, groups, sorting, sharing, and view collaboration settings in the current view."
+---
+
+The view toolbar controls how the current view displays and shares records. Filters, groups, sorts, visible fields, row height, and related settings affect the current view only. They do not delete records or change other views.
+
+Filter, group, and sort settings are independent in each view. Changes in one view do not affect other views.
+
+## Toolbar Overview
+
+| Tool | Use it for | Common scenarios |
+| --- | --- | --- |
+| Filter | Show only records that match conditions | Open tasks, your own records, records in a date range |
+| Group | Group records by field values | Workload by owner, progress by status, records by date |
+| Sort | Reorder records by field values | Recently updated records, task priority, sales ranking |
+| Share | Publish the current view as a link | Share a filtered, sorted, grouped, hidden-field, or layout-specific result |
+| View Collaboration | Choose whether view settings sync to everyone or only apply to you | Temporary view changes, or a team view everyone uses |
+
+## Filter
+
+Filters show records that match specific conditions in the current view. They hide records that do not match. They do not delete records.
+
+
+
+ Click `Filter` in the view toolbar.
+
+
+ Choose a field, an operator, and a comparison value.
+
+
+ For multiple conditions, choose **Meeting all conditions** or **Meeting any conditions**.
+
+
+
+| Relationship | Description |
+| --- | --- |
+| Meeting all conditions | A record appears only when every condition in that level is met |
+| Meeting any conditions | A record appears when any condition in that level is met |
+
+
+
+### Condition Groups
+
+Use **condition groups** for more complex filter logic. For example, "A and B, or C and D" can be expressed as two groups.
+
+- Click `Add condition group` to create a group.
+- Groups can use **Meeting all conditions** or **Meeting any conditions**.
+- A group can contain nested groups.
+- Condition groups support up to **3 levels**.
+
+
+
+### Common Filter Operators
+
+| Field type | Common operators | Input |
+| --- | --- | --- |
+| Single Line Text, Long Text | Equals, Does not equal, Contains, Does not contain, Is empty, Is not empty | Text input |
+| User | Equals, Does not equal, Contains any, Does not contain any, Is empty, Is not empty | User list, current user |
+| Attachment | Is empty, Is not empty | No input |
+| Multiple Select | Contains any, Contains all, Exactly matches, Does not contain any, Is empty, Is not empty | Option list |
+| Single Select | Equals, Does not equal, Contains any, Does not contain any | Option list |
+| Date, Created Time, Last Modified Time | Equals, Does not equal, Within, Before, After, On or before, On or after, Is empty, Is not empty | Preset range or exact date |
+| Number, Rating, Auto Number | `=`, `≠`, `>`, `≥`, `<`, `≤`, Is empty, Is not empty | Number |
+| Link | Equals, Does not equal, Contains, Does not contain, Contains any, Contains all, Exactly matches, Does not contain any, Is empty, Is not empty | Linked record selector |
+| Created By, Last Modified By | Equals, Does not equal | User list, current user |
+
+Formula and Rollup operators depend on the result type.
+
+### Invalid Condition Warnings
+
+If a field type changes, a field is deleted, or an older filter setup is no longer compatible, Teable ignores the invalid condition so the view can still open.
+
+- The `Filter` button in the toolbar shows a warning icon.
+- After you open the filter panel, the invalid condition shows a warning icon.
+- Hover over the icon to see the reason and fix the condition.
+
+## Group
+
+Grouping records by field values helps you review distribution, summaries, and hierarchy.
+
+
+
+ Click `Group` in the view toolbar.
+
+
+ Choose the field you want to group by.
+
+
+ Click `Add another group` when you need multiple grouping levels.
+
+
+
+| Field type | Recommended use |
+| --- | --- |
+| Single Select, Multiple Select | Group by fixed options such as status, priority, or type |
+| User | Group by owner, collaborator, or submitter |
+| Date | Group records by time period |
+| Checkbox, Link, Number, Rating | Group by clear values or results |
+
+- Grouping supports up to **3 levels**.
+- You can collapse or expand groups. Records inside each group still follow the current sort order.
+- Each group shows a summary bar at the top so you can review its summary results.
+- Empty values are placed into separate uncategorized, unassigned, or empty groups depending on the field type.
+
+## Sort
+
+Sorting reorders records by field values. It changes the display order in the current view and does not edit record content.
+
+
+
+ Click `Sort` in the view toolbar.
+
+
+ Choose the field you want to sort by.
+
+
+ Choose ascending or descending. Add more sort conditions when you need multi-level sorting.
+
+
+
+Multi-level sorting follows the order of the conditions. Teable sorts by the first condition first; if records have the same value, it then applies the next condition.
+
+| Field type | Sort behavior |
+| --- | --- |
+| Text, Attachment | Sort alphabetically or in reverse order. Attachments are sorted by filename |
+| Number, Duration, Rating | Sort by value in ascending or descending order |
+| Date, Created Time, Last Modified Time | Sort from earliest to latest, or latest to earliest |
+| Checkbox | Sort from unchecked to checked, or in the reverse order |
+| Single Select, Multiple Select | Sort by the option order in the field configuration, or in the reverse order |
+
+Formula and Rollup fields are sorted according to their result type.
+
+Use the `Auto-sort records` toggle in the sort menu.
+
+| Status | Behavior |
+| --- | --- |
+| On | Records stay sorted by the current rules. When a field value changes, the record moves to its new position. You cannot manually drag records while auto-sort is on |
+| Off | Records are sorted again only after you reapply sorting. You can manually drag records, and data updates do not move them automatically |
+
+## Share View
+
+**Share view** publishes the current view as a link. Visitors see the data and layout in that view. This is not the same as inviting them as base collaborators.
+
+To share an entire base, a specific table, or a folder, use base sharing in [Base](/en/basic/base).
+
+| Share option | Best for |
+| --- | --- |
+| Share table | Giving external people broader access to the current table |
+| Share view | Publishing only the current view, such as a filtered, sorted, grouped, hidden-field, or layout-specific result |
+
+A view share link follows the current view configuration. If you later change filters, sorting, grouping, hidden fields, or layout, the shared page changes as well.
+
+
+
+ Go to the view you want to share.
+
+
+ Click **Share** in the view toolbar.
+
+
+ Switch to **Share view**.
+
+
+ Turn on **Share view to web**.
+
+
+ Copy the generated link, or share the QR code.
+
+
+
+If you do not have permission to share the view, the sharing switch is unavailable. After **Share view to web** is turned off, existing share links can no longer be opened.
+
+Public links can be forwarded. Before enabling sharing, confirm that the current view does not include fields or records that should not be public.
+
+Different view types show different advanced options.
+
+| Option | Applies to | Description |
+| --- | --- | --- |
+| Allow viewers to copy data out of this view | Grid view | Controls whether visitors can copy data from the shared grid view |
+| Show all fields in expanded records | Grid view | Controls whether visitors can see hidden fields when opening record details |
+| Restrict by password | All view shares | Adds a password to the share link. Visitors must enter the correct password before opening it |
+| Require login to submit | Form view | Requires visitors to log in before submitting the form |
+
+Share views can be embedded in other webpages. Click **Embed config** to preview the embed, copy iframe code, hide the toolbar, and choose a theme.
+
+```html
+
+```
+
+| Embed option | Description |
+| --- | --- |
+| Hide toolbar | Adds `hideToolBar=true` to the link and hides filter, sort, search, and other toolbar controls. This does not apply to Form view |
+| Theme | Supports system, light, and dark themes |
+
+## View Collaboration
+
+View collaboration controls whether view settings are shared with everyone or kept as your own personal adjustments. It affects filters, sorts, groups, visible fields, row height, and other view settings. It does not affect record data.
+
+| Mode | Use case | Setting behavior |
+| --- | --- | --- |
+| Collaboration mode | The team needs to use the same view setup | View settings are synced to everyone using this view |
+| Personal mode | You want a temporary view setup, or you want to view data in your own way | Filters, sorts, groups, visible fields, and row height apply only to you |
+
+Click `Personal` in the toolbar to switch between collaboration mode and personal mode.
+
+If the view is not locked and you have permission to update the view, turning off personal mode gives you two choices.
+
+| Option | Result |
+| --- | --- |
+| `Exit and sync` | Sync your personal-mode view settings to everyone |
+| `Confirm exit` | Discard your personal-mode view settings and leave personal mode |
+
+If the view is locked, or you do not have permission to edit the view, you can still use personal mode for your own temporary adjustments, but you cannot sync those changes to others.
+
+## Notes
+
+- Changing filters, groups, sorts, visible fields, or row height affects everyone using the current view, unless you are in personal mode.
+- Share view publishes the current view result, not full base permissions. For ongoing collaboration, use member permissions or base sharing.
+- In either mode, edits to cell values are still synced to everyone.
diff --git a/en/basic/view/toolbar/collaboration-mode.mdx b/en/basic/view/toolbar/collaboration-mode.mdx
deleted file mode 100644
index 9c6e2d20..00000000
--- a/en/basic/view/toolbar/collaboration-mode.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: "View Collaboration"
-description: "In collaboration mode, view settings are shared with everyone. In personal mode, they only apply to you."
----
-
-- **Collaboration mode**: View settings are synced in real time to everyone using the same view.
-- **Personal mode**: Your filters, sorts, groups, visible fields, and row height apply only to you.
-
-## 1. Switch Modes
-
-- Click `Personal` in the toolbar to switch between the two modes.
-- If the view is not locked and you have permission to update the view, turning off personal mode gives you two choices:
- - `Exit and sync`: Apply your personal-mode changes to everyone.
- - `Confirm exit`: Discard the personal-mode changes and just leave personal mode.
-- If the view is locked, or you do not have permission to edit the view, you can still use personal mode for your own temporary adjustments, but you cannot sync those changes to others.
-
-> If the current view is **locked**, Teable prompts you to use personal mode so you can still adjust the view for yourself without unlocking it.
-
-## 2. Notes
-
-- This mode affects only view settings, not the underlying records.
-- In either mode, edits to cell values are still synced to everyone.
diff --git a/en/basic/view/toolbar/filter.mdx b/en/basic/view/toolbar/filter.mdx
deleted file mode 100644
index 247c5af5..00000000
--- a/en/basic/view/toolbar/filter.mdx
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: "Filter"
-description: "Use filters to set conditions and quickly find the records that match what you need."
----
-
-Sort, filter, and grouping settings are independent in each view. Changes in one view do not affect other views.
-
-## 1. Add Filters
-
-### 1. Add Filter Conditions
-
-- Click `Filter` in the toolbar to set filter conditions.
-- When you add multiple conditions, choose how they relate:
- - **AND**: all conditions must be met
- - **OR**: any one condition can be met
-
-
-
-### 2. Condition Groups
-
-For more complex logic such as “A and B, or C and D,” use **condition groups**.
-
-- Click `Add condition group` to create a group and connect conditions with **AND** or **OR**.
-- Groups can contain more groups to build more complex logic.
-- Condition groups support up to **3 levels** of nesting.
-
-
-
-### 3. Invalid Condition Warnings
-
-If an existing filter becomes invalid because a field type changed, a field was deleted, or an older setup is no longer compatible, Teable automatically ignores that invalid condition so the view can still open normally.
-
-- The `Filter` button in the toolbar shows a warning icon when there are filter conditions that need attention.
-- After you open the filter panel, the affected condition also shows a warning icon. Hover over it to see the explanation and fix the condition.
-
-## 2. Field Types and Operators
-
-Different field types support different filter logic. Here is a quick reference:
-
-| Field Type | Supported Operators | Input Data |
-| ---- | ---- | ---- |
-| Single Line Text | Equals, Does not equal, Contains, Does not contain, Is empty, Is not empty | Text input |
-| Long Text | Equals, Does not equal, Contains, Does not contain, Is empty, Is not empty | Text input |
-| User | Equals, Does not equal, Contains any, Does not contain any, Is empty, Is not empty | User selection list, and current user |
-| Attachment | Is empty, Is not empty | - |
-| Multiple Select | Contains any, Contains all, Exactly matches, Does not contain any, Is empty, Is not empty | Option selection list |
-| Single Select | Equals, Does not equal, Contains any, Does not contain any | Option selection list |
-| Date | Equals, Does not equal, Within, Before, After, On or before, On or after, Is empty, Is not empty | Preset range list, precise date picker |
-| Number | =, ≠, >, ≥, \<, ≤, Is empty, Is not empty | Number |
-| Rating | Equals, Does not equal, Greater than, Greater than or equal to, Less than, Less than or equal to, Is empty, Is not empty | Number |
-| Link | Equals, Does not equal, Contains, Does not contain, Contains any, Contains all, Exactly matches, Does not contain any, Is empty, Is not empty | Linked value selector |
-| Created Time | Equals, Does not equal, Within, Before, After, On or before, On or after, Is empty, Is not empty | Preset range list, precise date picker |
-| Last Modified Time | Equals, Does not equal, Within, Before, After, On or before, On or after, Is empty, Is not empty | Preset range list, precise date picker |
-| Created By | Equals, Does not equal | User selection list, and current user |
-| Last Modified By | Equals, Does not equal | User selection list, and current user |
-| Auto Number | =, ≠, >, ≥, \<, ≤ | Number |
-| Button | - | - |
-
-Operators for Formula and Rollup fields depend on their result type, which may include any of the operators above.
diff --git a/en/basic/view/toolbar/group.mdx b/en/basic/view/toolbar/group.mdx
deleted file mode 100644
index 4e29d689..00000000
--- a/en/basic/view/toolbar/group.mdx
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: "Group"
-description: "Group records by field values to quickly see distribution, summaries, and hierarchy."
----
-
-Sort, filter, and grouping settings are independent in each view. Changes in one view do not affect other views.
-
-## 1. Entry Point
-
-- Click `Group` in the toolbar.
-- In the grouping panel, click `Add another group` if you want to stack more grouping conditions.
-
-## 2. What You Get
-
-- Grouping supports up to **3 levels** of nesting.
-- You can collapse or expand groups, while records inside each group still follow the current sort order.
-- Each group shows a summary bar at the top so you can review distribution and summary results directly.
-
-## 3. Best-Suited Field Types
-
-- Single Select, Multiple Select, User, Date, Checkbox, Link, Number, and Rating fields all work well for grouping.
-- Empty values are placed into separate uncategorized, unassigned, or empty groups depending on the field type.
-- Text fields can also be grouped, but they usually create too many groups and are not ideal for large tables.
diff --git a/en/basic/view/toolbar/share.mdx b/en/basic/view/toolbar/share.mdx
deleted file mode 100644
index 312d722c..00000000
--- a/en/basic/view/toolbar/share.mdx
+++ /dev/null
@@ -1,89 +0,0 @@
----
-title: "Share"
-description: "Publish the current view as a public link and configure copy, password, login, embed, and theme options."
----
-
-{/* mintlify-resync: 2026-05-14 */}
-**Share view** is used to publish the current view as a public link. Anyone with the link can access the data in this view, but cannot directly modify the original table records.
-
-
-To share an entire base, a specific table, or a folder instead of only the current view, use base sharing in [Base](/en/basic/base).
-
-
-## 1. Share View and Share Table
-
-In the table share entry, the current table usually shows both **Share table** and **Share view**:
-
-| Share option | Use case |
-|------|------|
-| **Share table** | Share the current table when visitors need broader access to table content. |
-| **Share view** | Share only the current view when you want to publish a filtered, sorted, grouped, hidden-field, or layout-specific result. |
-
-A view share link only allows access to the current view. If you later change the view configuration, such as filters, sorting, grouping, hidden fields, or layout, the shared link reflects those changes.
-
-## 2. Enable Sharing
-
-1. Open the view you want to share
-2. Click **Share** in the view toolbar
-3. Switch to **Share view**
-4. Turn on **Share view to web**
-5. Copy the generated share link, or share the QR code
-
-If you do not have permission to share the view, the sharing switch is unavailable.
-
-After **Share view to web** is turned off, existing share links can no longer be accessed.
-
-## 3. Link Management
-
-After sharing is enabled, you can manage the link in the share panel:
-
-- **Copy link**: Copy the current share link.
-- **QR code**: Generate a QR code for the current share link.
-- **Generate new link**: Regenerate the share link. After generation, distribute the new link instead of continuing to use the old one.
-
-
-Public links can be forwarded. Before enabling sharing, confirm that the current view does not include fields or records that should not be public.
-
-
-## 4. Advanced Options
-
-Different view types show different advanced options.
-
-| Option | Applies to | Description |
-|------|------|------|
-| **Allow viewers to copy data out of this view** | Grid view | Controls whether visitors can copy data from the shared grid view. |
-| **Show all fields in expanded records** | Grid view | Controls whether visitors can see fields hidden from the current view when opening record details. |
-| **Restrict by password** | All view shares | Adds password protection to the share link. Visitors must enter the correct password before opening the share page. |
-| **Require login to submit** | Form view | Requires visitors to log in before submitting the form. |
-
-## 5. Embed in Another Page
-
-Share views can be embedded in other webpages. Click **Embed config** to:
-
-- Preview the embed
-- Copy iframe code
-- Configure whether to hide the toolbar
-- Configure the theme
-
-Example:
-
-```html
-
-```
-
-### Hide Toolbar
-
-**Hide toolbar** adds `hideToolBar=true` to the link and hides the filter, sort, search, and other toolbar controls on the share page. This option does not apply to Form view.
-
-### Theme
-
-Theme is controlled through link parameters:
-
-- **System**
-- **Light**
-- **Dark**
diff --git a/en/basic/view/toolbar/sort.mdx b/en/basic/view/toolbar/sort.mdx
deleted file mode 100644
index 512973a5..00000000
--- a/en/basic/view/toolbar/sort.mdx
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: "Sort"
-description: "In specific views, you can sort records based on values in particular fields to display them in a specific order. Sorting records in one view does not affect the order of records in other views—sorting only applies to the view you are currently viewing."
----
-
-### Configure New Sort
-
-To configure a new sort, follow these steps:
-
-1. Click the "Sort" option in the view toolbar.
-2. Then, select a field to sort from the field list.
-3. To easily find the field you want to sort by, you can also type in the search bar.
-4. Depending on the type of field you're sorting, there will be an additional option to choose the sort order. For example, in text-based fields, you can choose to sort alphabetically or reverse alphabetically, and in date fields, you can sort from earliest to latest or latest to earliest. We'll cover this in more detail in the "Field Types and Sorting" section below.
-5. After selecting your first sort field, you can add more fields to sort by. Simply click the "Add another sort" option.
-
-Once configured, you can:
-
-* Remove any sorts you've applied by clicking the X button next to the specific field you've chosen.
-
-* Reorder using the drag handles. We'll discuss reordering more in the next section, but remember that the sort order is hierarchical and will depend on the order of the fields chosen.
-
-#### Reordering Sort Order:
-
-1. Click the "Sort" option in the view toolbar.
-2. Locate the 6-dot icon next to the field you want to move.
-3. A hand icon should appear when you hover over the icon.
-4. Click, drag, and drop the field to where you want it in the sort order.
-
-Different field types can be sorted in different ways. Note that in almost all cases, empty values are placed first when sorting in ascending order.
-
-* Text field types, such as single-line text fields, long text fields, or formula fields that return text, can be sorted alphabetically (A → Z) or reverse alphabetically (Z → A). Teable uses natural sort order for text, so multi-digit numbers in text fields are sorted as single characters. For example, this means "z2" would sort before "z11" because 2 is considered less than 11. Attachment fields can also be sorted alphabetically or reverse alphabetically by filename.
-* Number field types, such as numbers and duration, can be sorted in ascending numerical order (1 → 9) or descending numerical order (9 → 1). Rating fields can also be sorted in ascending or descending numerical order.
-* Date and time fields can be sorted using ascending (1 → 9), from earliest date to latest date, or descending (9 → 1), from latest date to earliest date.
-* Checkbox fields can be sorted by whether or not the box is checked, so either (▢ → ✓) or the reverse (✓ → ▢).
-* Single select and multiple select fields sort based on the order of options in the field customization menu, either (First → Last) or (Last → First). If you're sorting on a single select or multiple select field, you can change the order in which records are sorted by going into that field's customization menu (and sorting the options alphabetically if you wish).
-
-### Automatic and Manual View Sorting
-
-By default, when you create a new view, it will have the "Auto-sort records" toggle enabled.
-
-If this toggle is on, records will automatically sort if changes to records would result in them being sorted differently. You will not be able to manually reorder records using the record drag handles. In grid view, if the "Auto-sort records" toggle is on, all fields that have sorts applied (as well as the sort menu button) will have a light orange background to clearly indicate that field is being auto-sorted.
-
-If this toggle is off, records will only sort themselves when sorts are reapplied, and you can use the record drag handles to manually reorder records as you prefer. Turning off the "Auto-sort records" toggle will cause a sort button to appear in the sort menu. After manually reordering records in your view, you can always reapply sorts by manually clicking this sort option.
-
-### Sorting Behavior from View Share Links
-
-If you create a view share link to provide non-collaborator access to a view, the sorting criteria applied to the view will be preserved in the shared view. However, viewers will have the option to change any sort criteria (along with other view configuration options) - this only affects how they view records through the view share link and does not adjust any view configuration options in your table.
-
diff --git a/images/2025-02-14-14-43-57.png b/images/2025-02-14-14-43-57.png
deleted file mode 100644
index 091cf259..00000000
Binary files a/images/2025-02-14-14-43-57.png and /dev/null differ
diff --git a/images/2025-02-14-14-44-28.png b/images/2025-02-14-14-44-28.png
deleted file mode 100644
index 019fdf91..00000000
Binary files a/images/2025-02-14-14-44-28.png and /dev/null differ
diff --git a/images/2025-02-14-14-51-22.png b/images/2025-02-14-14-51-22.png
deleted file mode 100644
index ac76a63b..00000000
Binary files a/images/2025-02-14-14-51-22.png and /dev/null differ
diff --git a/images/2025-02-14-14-52-57.png b/images/2025-02-14-14-52-57.png
deleted file mode 100644
index 0776ba93..00000000
Binary files a/images/2025-02-14-14-52-57.png and /dev/null differ
diff --git a/images/2025-02-14-15-15-36.png b/images/2025-02-14-15-15-36.png
deleted file mode 100644
index 5fecff9e..00000000
Binary files a/images/2025-02-14-15-15-36.png and /dev/null differ
diff --git a/images/2025-11-25-21-46-31.png b/images/2025-11-25-21-46-31.png
deleted file mode 100644
index 8ae9bcb3..00000000
Binary files a/images/2025-11-25-21-46-31.png and /dev/null differ
diff --git a/images/2025-11-25-23-17-27.png b/images/2025-11-25-23-17-27.png
deleted file mode 100644
index 7aaef389..00000000
Binary files a/images/2025-11-25-23-17-27.png and /dev/null differ
diff --git a/images/2025-11-25-23-20-43.png b/images/2025-11-25-23-20-43.png
deleted file mode 100644
index 958881a6..00000000
Binary files a/images/2025-11-25-23-20-43.png and /dev/null differ
diff --git a/images/2025-12-01-23-33-11.png b/images/2025-12-01-23-33-11.png
deleted file mode 100644
index cfe001c0..00000000
Binary files a/images/2025-12-01-23-33-11.png and /dev/null differ
diff --git a/images/2025-12-01-23-34-44.png b/images/2025-12-01-23-34-44.png
deleted file mode 100644
index e1fde81f..00000000
Binary files a/images/2025-12-01-23-34-44.png and /dev/null differ
diff --git a/images/2026-02-28-18-14-08.png b/images/2026-02-28-18-14-08.png
deleted file mode 100644
index 1460d557..00000000
Binary files a/images/2026-02-28-18-14-08.png and /dev/null differ
diff --git a/images/2026-02-28-18-23-27.png b/images/2026-02-28-18-23-27.png
deleted file mode 100644
index 7d1b9856..00000000
Binary files a/images/2026-02-28-18-23-27.png and /dev/null differ
diff --git a/images/2026-05-09-billing-overview-en.png b/images/2026-05-09-billing-overview-en.png
deleted file mode 100644
index decba7b8..00000000
Binary files a/images/2026-05-09-billing-overview-en.png and /dev/null differ
diff --git a/images/2026-05-09-billing-overview-zh.png b/images/2026-05-09-billing-overview-zh.png
deleted file mode 100644
index 0b0b19c7..00000000
Binary files a/images/2026-05-09-billing-overview-zh.png and /dev/null differ
diff --git a/images/docs/ai/2026-05-21-app-builder-code-editor-en.png b/images/docs/ai/2026-05-21-app-builder-code-editor-en.png
new file mode 100644
index 00000000..951c3b08
Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-code-editor-en.png differ
diff --git a/images/docs/ai/2026-05-21-app-builder-code-editor-zh.png b/images/docs/ai/2026-05-21-app-builder-code-editor-zh.png
new file mode 100644
index 00000000..d29d7d70
Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-code-editor-zh.png differ
diff --git a/images/docs/ai/2026-05-21-app-builder-custom-domain.png b/images/docs/ai/2026-05-21-app-builder-custom-domain.png
new file mode 100644
index 00000000..5fa8ea84
Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-custom-domain.png differ
diff --git a/images/docs/ai/2026-05-21-app-builder-editor-interface.png b/images/docs/ai/2026-05-21-app-builder-editor-interface.png
new file mode 100644
index 00000000..7d0b9607
Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-editor-interface.png differ
diff --git a/images/docs/ai/2026-05-21-app-builder-login-settings.png b/images/docs/ai/2026-05-21-app-builder-login-settings.png
new file mode 100644
index 00000000..a8041312
Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-login-settings.png differ
diff --git a/images/docs/ai/2026-05-21-app-builder-publish-app.png b/images/docs/ai/2026-05-21-app-builder-publish-app.png
new file mode 100644
index 00000000..8ca4f608
Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-publish-app.png differ
diff --git a/images/docs/ai/2026-05-21-app-builder-version-history.png b/images/docs/ai/2026-05-21-app-builder-version-history.png
new file mode 100644
index 00000000..be6832c9
Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-version-history.png differ
diff --git a/images/docs/ai/2026-05-21-custom-model-add-provider.png b/images/docs/ai/2026-05-21-custom-model-add-provider.png
new file mode 100644
index 00000000..45078850
Binary files /dev/null and b/images/docs/ai/2026-05-21-custom-model-add-provider.png differ
diff --git a/images/docs/ai/2026-05-21-custom-model-ai-settings.png b/images/docs/ai/2026-05-21-custom-model-ai-settings.png
new file mode 100644
index 00000000..fffae65e
Binary files /dev/null and b/images/docs/ai/2026-05-21-custom-model-ai-settings.png differ
diff --git a/images/docs/ai/cuppy-icon.svg b/images/docs/ai/cuppy-icon.svg
new file mode 100644
index 00000000..27d3c0ba
--- /dev/null
+++ b/images/docs/ai/cuppy-icon.svg
@@ -0,0 +1,8 @@
+
diff --git a/images/docs/base/2026-05-22-ai-field-create-config.png b/images/docs/base/2026-05-22-ai-field-create-config.png
new file mode 100644
index 00000000..6644bbc0
Binary files /dev/null and b/images/docs/base/2026-05-22-ai-field-create-config.png differ
diff --git a/images/docs/base/2026-05-22-ai-field-edit-config.png b/images/docs/base/2026-05-22-ai-field-edit-config.png
new file mode 100644
index 00000000..c7a19f0b
Binary files /dev/null and b/images/docs/base/2026-05-22-ai-field-edit-config.png differ
diff --git a/images/docs/base/2026-05-22-ai-field-generate-menu.png b/images/docs/base/2026-05-22-ai-field-generate-menu.png
new file mode 100644
index 00000000..010b7a8f
Binary files /dev/null and b/images/docs/base/2026-05-22-ai-field-generate-menu.png differ
diff --git a/images/docs/base/2026-05-22-ai-field-generation-status.png b/images/docs/base/2026-05-22-ai-field-generation-status.png
new file mode 100644
index 00000000..5fa98488
Binary files /dev/null and b/images/docs/base/2026-05-22-ai-field-generation-status.png differ
diff --git a/images/docs/base/2026-05-22-ai-field-save-options.png b/images/docs/base/2026-05-22-ai-field-save-options.png
new file mode 100644
index 00000000..98054212
Binary files /dev/null and b/images/docs/base/2026-05-22-ai-field-save-options.png differ
diff --git a/images/docs/base/2026-05-22-base-create.png b/images/docs/base/2026-05-22-base-create.png
new file mode 100644
index 00000000..1e985687
Binary files /dev/null and b/images/docs/base/2026-05-22-base-create.png differ
diff --git a/images/docs/base/2026-05-22-base-duplicate.png b/images/docs/base/2026-05-22-base-duplicate.png
new file mode 100644
index 00000000..ec208c5d
Binary files /dev/null and b/images/docs/base/2026-05-22-base-duplicate.png differ
diff --git a/images/docs/base/2026-05-22-base-export.png b/images/docs/base/2026-05-22-base-export.png
new file mode 100644
index 00000000..e02d52a3
Binary files /dev/null and b/images/docs/base/2026-05-22-base-export.png differ
diff --git a/images/docs/base/2026-05-22-base-import.png b/images/docs/base/2026-05-22-base-import.png
new file mode 100644
index 00000000..2b288c27
Binary files /dev/null and b/images/docs/base/2026-05-22-base-import.png differ
diff --git a/images/docs/base/2026-05-22-base-rename-delete.png b/images/docs/base/2026-05-22-base-rename-delete.png
new file mode 100644
index 00000000..91f5fe65
Binary files /dev/null and b/images/docs/base/2026-05-22-base-rename-delete.png differ
diff --git a/images/docs/base/2026-05-22-base-share-entry.png b/images/docs/base/2026-05-22-base-share-entry.png
new file mode 100644
index 00000000..ae5a8f40
Binary files /dev/null and b/images/docs/base/2026-05-22-base-share-entry.png differ
diff --git a/images/docs/base/2026-05-22-base-share-settings.png b/images/docs/base/2026-05-22-base-share-settings.png
new file mode 100644
index 00000000..b003dcdf
Binary files /dev/null and b/images/docs/base/2026-05-22-base-share-settings.png differ
diff --git a/images/docs/base/2026-05-22-field-add.png b/images/docs/base/2026-05-22-field-add.png
new file mode 100644
index 00000000..8b2b0ab6
Binary files /dev/null and b/images/docs/base/2026-05-22-field-add.png differ
diff --git a/images/docs/base/2026-05-22-field-hide-tool.png b/images/docs/base/2026-05-22-field-hide-tool.png
new file mode 100644
index 00000000..724ae265
Binary files /dev/null and b/images/docs/base/2026-05-22-field-hide-tool.png differ
diff --git a/images/docs/base/2026-05-22-field-menu-actions.png b/images/docs/base/2026-05-22-field-menu-actions.png
new file mode 100644
index 00000000..20a5ac0f
Binary files /dev/null and b/images/docs/base/2026-05-22-field-menu-actions.png differ
diff --git a/images/docs/base/2026-05-22-table-attachment-download-menu.png b/images/docs/base/2026-05-22-table-attachment-download-menu.png
new file mode 100644
index 00000000..ba63a485
Binary files /dev/null and b/images/docs/base/2026-05-22-table-attachment-download-menu.png differ
diff --git a/images/docs/base/2026-05-22-table-attachment-download-options.png b/images/docs/base/2026-05-22-table-attachment-download-options.png
new file mode 100644
index 00000000..ced6819a
Binary files /dev/null and b/images/docs/base/2026-05-22-table-attachment-download-options.png differ
diff --git a/images/docs/base/2026-05-22-table-create-menu.png b/images/docs/base/2026-05-22-table-create-menu.png
new file mode 100644
index 00000000..281d6708
Binary files /dev/null and b/images/docs/base/2026-05-22-table-create-menu.png differ
diff --git a/images/docs/base/2026-05-22-table-design.png b/images/docs/base/2026-05-22-table-design.png
new file mode 100644
index 00000000..0b40c1b7
Binary files /dev/null and b/images/docs/base/2026-05-22-table-design.png differ
diff --git a/images/docs/base/2026-05-22-table-export-table.png b/images/docs/base/2026-05-22-table-export-table.png
new file mode 100644
index 00000000..e708e3ee
Binary files /dev/null and b/images/docs/base/2026-05-22-table-export-table.png differ
diff --git a/images/docs/base/2026-05-22-table-export-view.png b/images/docs/base/2026-05-22-table-export-view.png
new file mode 100644
index 00000000..4ef6fc30
Binary files /dev/null and b/images/docs/base/2026-05-22-table-export-view.png differ
diff --git a/images/docs/base/2026-05-22-table-global-search.png b/images/docs/base/2026-05-22-table-global-search.png
new file mode 100644
index 00000000..4a8d27be
Binary files /dev/null and b/images/docs/base/2026-05-22-table-global-search.png differ
diff --git a/images/docs/base/2026-05-22-table-import-data-menu.png b/images/docs/base/2026-05-22-table-import-data-menu.png
new file mode 100644
index 00000000..8efdac6a
Binary files /dev/null and b/images/docs/base/2026-05-22-table-import-data-menu.png differ
diff --git a/images/docs/base/2026-05-22-table-import-preview.png b/images/docs/base/2026-05-22-table-import-preview.png
new file mode 100644
index 00000000..61a3e097
Binary files /dev/null and b/images/docs/base/2026-05-22-table-import-preview.png differ
diff --git a/images/docs/base/2026-05-22-table-rename-delete.png b/images/docs/base/2026-05-22-table-rename-delete.png
new file mode 100644
index 00000000..4ae7f1d8
Binary files /dev/null and b/images/docs/base/2026-05-22-table-rename-delete.png differ
diff --git a/images/docs/base/2026-05-22-table-share-entry.png b/images/docs/base/2026-05-22-table-share-entry.png
new file mode 100644
index 00000000..9f9aabb3
Binary files /dev/null and b/images/docs/base/2026-05-22-table-share-entry.png differ
diff --git a/images/docs/base/2026-05-22-table-share-permissions.png b/images/docs/base/2026-05-22-table-share-permissions.png
new file mode 100644
index 00000000..242c03d9
Binary files /dev/null and b/images/docs/base/2026-05-22-table-share-permissions.png differ
diff --git a/images/docs/base/2026-05-22-table-share-web.png b/images/docs/base/2026-05-22-table-share-web.png
new file mode 100644
index 00000000..bbe6c88e
Binary files /dev/null and b/images/docs/base/2026-05-22-table-share-web.png differ
diff --git a/images/docs/base/2026-05-22-table-trash.png b/images/docs/base/2026-05-22-table-trash.png
new file mode 100644
index 00000000..9ea92d69
Binary files /dev/null and b/images/docs/base/2026-05-22-table-trash.png differ
diff --git a/images/docs/base/2026-05-26-field-conditional-lookup-period-growth-zh.png b/images/docs/base/2026-05-26-field-conditional-lookup-period-growth-zh.png
new file mode 100644
index 00000000..180956db
Binary files /dev/null and b/images/docs/base/2026-05-26-field-conditional-lookup-period-growth-zh.png differ
diff --git a/images/docs/base/2026-05-26-field-conditional-lookup-product-analysis-zh.png b/images/docs/base/2026-05-26-field-conditional-lookup-product-analysis-zh.png
new file mode 100644
index 00000000..553ff4cf
Binary files /dev/null and b/images/docs/base/2026-05-26-field-conditional-lookup-product-analysis-zh.png differ
diff --git a/images/docs/base/2026-05-26-field-conditional-rollup-duplicate-count-zh.png b/images/docs/base/2026-05-26-field-conditional-rollup-duplicate-count-zh.png
new file mode 100644
index 00000000..b1dcebfb
Binary files /dev/null and b/images/docs/base/2026-05-26-field-conditional-rollup-duplicate-count-zh.png differ
diff --git a/images/docs/base/2026-05-26-field-conditional-rollup-task-count-zh.png b/images/docs/base/2026-05-26-field-conditional-rollup-task-count-zh.png
new file mode 100644
index 00000000..21da4188
Binary files /dev/null and b/images/docs/base/2026-05-26-field-conditional-rollup-task-count-zh.png differ
diff --git a/images/docs/base/2026-05-26-field-long-text-display-mode-zh.png b/images/docs/base/2026-05-26-field-long-text-display-mode-zh.png
new file mode 100644
index 00000000..ae520502
Binary files /dev/null and b/images/docs/base/2026-05-26-field-long-text-display-mode-zh.png differ
diff --git a/images/docs/base/2026-05-26-field-number-display-mode-zh.png b/images/docs/base/2026-05-26-field-number-display-mode-zh.png
new file mode 100644
index 00000000..1b18eadd
Binary files /dev/null and b/images/docs/base/2026-05-26-field-number-display-mode-zh.png differ
diff --git a/images/docs/base/2026-05-26-field-number-format-zh.png b/images/docs/base/2026-05-26-field-number-format-zh.png
new file mode 100644
index 00000000..014ad2f8
Binary files /dev/null and b/images/docs/base/2026-05-26-field-number-format-zh.png differ
diff --git a/images/docs/base/2026-05-26-field-number-precision-zh.png b/images/docs/base/2026-05-26-field-number-precision-zh.png
new file mode 100644
index 00000000..b78e12ed
Binary files /dev/null and b/images/docs/base/2026-05-26-field-number-precision-zh.png differ
diff --git a/images/docs/base/2026-05-26-grid-freeze-divider.png b/images/docs/base/2026-05-26-grid-freeze-divider.png
new file mode 100644
index 00000000..714a6af1
Binary files /dev/null and b/images/docs/base/2026-05-26-grid-freeze-divider.png differ
diff --git a/images/docs/base/2026-05-26-grid-freeze-field-menu.png b/images/docs/base/2026-05-26-grid-freeze-field-menu.png
new file mode 100644
index 00000000..f02ed213
Binary files /dev/null and b/images/docs/base/2026-05-26-grid-freeze-field-menu.png differ
diff --git a/images/docs/base/2026-05-26-grid-row-height-menu.png b/images/docs/base/2026-05-26-grid-row-height-menu.png
new file mode 100644
index 00000000..73cb7835
Binary files /dev/null and b/images/docs/base/2026-05-26-grid-row-height-menu.png differ
diff --git a/images/docs/base/2026-05-26-grid-selection-statistics.png b/images/docs/base/2026-05-26-grid-selection-statistics.png
new file mode 100644
index 00000000..69d2bc67
Binary files /dev/null and b/images/docs/base/2026-05-26-grid-selection-statistics.png differ
diff --git a/images/docs/base/2026-05-26-record-bulk-delete-menu.png b/images/docs/base/2026-05-26-record-bulk-delete-menu.png
new file mode 100644
index 00000000..e6d7d4df
Binary files /dev/null and b/images/docs/base/2026-05-26-record-bulk-delete-menu.png differ
diff --git a/images/docs/base/2026-05-26-record-comment-editor.png b/images/docs/base/2026-05-26-record-comment-editor.png
new file mode 100644
index 00000000..5925f214
Binary files /dev/null and b/images/docs/base/2026-05-26-record-comment-editor.png differ
diff --git a/images/docs/base/2026-05-26-record-create-context-menu.png b/images/docs/base/2026-05-26-record-create-context-menu.png
new file mode 100644
index 00000000..5835e31a
Binary files /dev/null and b/images/docs/base/2026-05-26-record-create-context-menu.png differ
diff --git a/images/docs/base/2026-05-26-record-detail-card-actions.png b/images/docs/base/2026-05-26-record-detail-card-actions.png
new file mode 100644
index 00000000..59380009
Binary files /dev/null and b/images/docs/base/2026-05-26-record-detail-card-actions.png differ
diff --git a/images/docs/base/2026-05-26-record-detail-expand-entry.png b/images/docs/base/2026-05-26-record-detail-expand-entry.png
new file mode 100644
index 00000000..96b33f61
Binary files /dev/null and b/images/docs/base/2026-05-26-record-detail-expand-entry.png differ
diff --git a/images/docs/base/2026-05-26-record-row-context-history-comment.png b/images/docs/base/2026-05-26-record-row-context-history-comment.png
new file mode 100644
index 00000000..5a0afec2
Binary files /dev/null and b/images/docs/base/2026-05-26-record-row-context-history-comment.png differ
diff --git a/images/docs/base/2026-05-26-record-table-history-dialog.png b/images/docs/base/2026-05-26-record-table-history-dialog.png
new file mode 100644
index 00000000..e24acd44
Binary files /dev/null and b/images/docs/base/2026-05-26-record-table-history-dialog.png differ
diff --git a/images/docs/base/2026-05-26-record-table-history-menu.png b/images/docs/base/2026-05-26-record-table-history-menu.png
new file mode 100644
index 00000000..19af36b2
Binary files /dev/null and b/images/docs/base/2026-05-26-record-table-history-menu.png differ
diff --git a/images/docs/base/2026-05-26-view-filter-condition-groups-zh.png b/images/docs/base/2026-05-26-view-filter-condition-groups-zh.png
new file mode 100644
index 00000000..cfa44dd5
Binary files /dev/null and b/images/docs/base/2026-05-26-view-filter-condition-groups-zh.png differ
diff --git a/images/docs/base/2026-05-26-view-filter-condition-groups.png b/images/docs/base/2026-05-26-view-filter-condition-groups.png
new file mode 100644
index 00000000..1b7c7402
Binary files /dev/null and b/images/docs/base/2026-05-26-view-filter-condition-groups.png differ
diff --git a/images/docs/base/2026-05-26-view-filter-conditions-zh.png b/images/docs/base/2026-05-26-view-filter-conditions-zh.png
new file mode 100644
index 00000000..d7cd743e
Binary files /dev/null and b/images/docs/base/2026-05-26-view-filter-conditions-zh.png differ
diff --git a/images/docs/base/2026-05-26-view-filter-conditions.png b/images/docs/base/2026-05-26-view-filter-conditions.png
new file mode 100644
index 00000000..263b75c3
Binary files /dev/null and b/images/docs/base/2026-05-26-view-filter-conditions.png differ
diff --git a/images/docs/space/2026-05-21-base-invite-collaborators.png b/images/docs/space/2026-05-21-base-invite-collaborators.png
new file mode 100644
index 00000000..2c6000bc
Binary files /dev/null and b/images/docs/space/2026-05-21-base-invite-collaborators.png differ
diff --git a/images/docs/space/2026-05-21-base-invite-methods.png b/images/docs/space/2026-05-21-base-invite-methods.png
new file mode 100644
index 00000000..bf59be29
Binary files /dev/null and b/images/docs/space/2026-05-21-base-invite-methods.png differ
diff --git a/images/docs/space/2026-05-21-space-invite-delete-link.png b/images/docs/space/2026-05-21-space-invite-delete-link.png
new file mode 100644
index 00000000..cd8fe8d3
Binary files /dev/null and b/images/docs/space/2026-05-21-space-invite-delete-link.png differ
diff --git a/images/docs/space/2026-05-21-space-invite-email.png b/images/docs/space/2026-05-21-space-invite-email.png
new file mode 100644
index 00000000..7e124fe0
Binary files /dev/null and b/images/docs/space/2026-05-21-space-invite-email.png differ
diff --git a/images/docs/space/2026-05-21-space-invite-entry.png b/images/docs/space/2026-05-21-space-invite-entry.png
new file mode 100644
index 00000000..5109eba5
Binary files /dev/null and b/images/docs/space/2026-05-21-space-invite-entry.png differ
diff --git a/images/docs/space/2026-05-21-space-invite-link.png b/images/docs/space/2026-05-21-space-invite-link.png
new file mode 100644
index 00000000..fcab8425
Binary files /dev/null and b/images/docs/space/2026-05-21-space-invite-link.png differ
diff --git a/images/docs/space/2026-05-21-space-invite-remove-collaborator.png b/images/docs/space/2026-05-21-space-invite-remove-collaborator.png
new file mode 100644
index 00000000..74bbc740
Binary files /dev/null and b/images/docs/space/2026-05-21-space-invite-remove-collaborator.png differ
diff --git a/images/docs/space/2026-05-22-billing-overview-en.png b/images/docs/space/2026-05-22-billing-overview-en.png
new file mode 100644
index 00000000..81cba2a9
Binary files /dev/null and b/images/docs/space/2026-05-22-billing-overview-en.png differ
diff --git a/images/docs/space/2026-05-22-billing-overview-zh.png b/images/docs/space/2026-05-22-billing-overview-zh.png
new file mode 100644
index 00000000..0234e053
Binary files /dev/null and b/images/docs/space/2026-05-22-billing-overview-zh.png differ
diff --git a/images/docs/space/2026-05-26-space-create-en.png b/images/docs/space/2026-05-26-space-create-en.png
new file mode 100644
index 00000000..d77fde59
Binary files /dev/null and b/images/docs/space/2026-05-26-space-create-en.png differ
diff --git a/images/docs/space/2026-05-26-space-create-zh.png b/images/docs/space/2026-05-26-space-create-zh.png
new file mode 100644
index 00000000..7c562a75
Binary files /dev/null and b/images/docs/space/2026-05-26-space-create-zh.png differ
diff --git a/images/docs/space/2026-05-26-space-rename-en.png b/images/docs/space/2026-05-26-space-rename-en.png
new file mode 100644
index 00000000..d2126915
Binary files /dev/null and b/images/docs/space/2026-05-26-space-rename-en.png differ
diff --git a/images/docs/space/2026-05-26-space-rename-zh.png b/images/docs/space/2026-05-26-space-rename-zh.png
new file mode 100644
index 00000000..1094a2ea
Binary files /dev/null and b/images/docs/space/2026-05-26-space-rename-zh.png differ
diff --git a/images/docs/space/2026-05-26-space-trash-menu-en.png b/images/docs/space/2026-05-26-space-trash-menu-en.png
new file mode 100644
index 00000000..95cfbd7f
Binary files /dev/null and b/images/docs/space/2026-05-26-space-trash-menu-en.png differ
diff --git a/images/docs/space/2026-05-26-space-trash-menu-zh.png b/images/docs/space/2026-05-26-space-trash-menu-zh.png
new file mode 100644
index 00000000..7a6aef04
Binary files /dev/null and b/images/docs/space/2026-05-26-space-trash-menu-zh.png differ
diff --git a/images/ji-ben-gong-neng/153d7315e2dd2110.png b/images/ji-ben-gong-neng/153d7315e2dd2110.png
deleted file mode 100644
index 007709fc..00000000
Binary files a/images/ji-ben-gong-neng/153d7315e2dd2110.png and /dev/null differ
diff --git a/images/ji-ben-gong-neng/30558ca439f98335.png b/images/ji-ben-gong-neng/30558ca439f98335.png
deleted file mode 100644
index 0399e3ad..00000000
Binary files a/images/ji-ben-gong-neng/30558ca439f98335.png and /dev/null differ
diff --git a/images/ji-ben-gong-neng/734748fc4f0382cb.png b/images/ji-ben-gong-neng/734748fc4f0382cb.png
deleted file mode 100644
index 78efca50..00000000
Binary files a/images/ji-ben-gong-neng/734748fc4f0382cb.png and /dev/null differ
diff --git a/images/ji-ben-gong-neng/800e5de85dc0652b.png b/images/ji-ben-gong-neng/800e5de85dc0652b.png
deleted file mode 100644
index 7c447f39..00000000
Binary files a/images/ji-ben-gong-neng/800e5de85dc0652b.png and /dev/null differ
diff --git a/images/ji-ben-gong-neng/cbdaf3771db020a9.png b/images/ji-ben-gong-neng/cbdaf3771db020a9.png
deleted file mode 100644
index 13c9633d..00000000
Binary files a/images/ji-ben-gong-neng/cbdaf3771db020a9.png and /dev/null differ
diff --git a/images/ji-ben-gong-neng/fe89775652df41b6.png b/images/ji-ben-gong-neng/fe89775652df41b6.png
deleted file mode 100644
index cd5125c2..00000000
Binary files a/images/ji-ben-gong-neng/fe89775652df41b6.png and /dev/null differ
diff --git a/images/ji-ben-gong-neng/shu-ju-biao/07d7e382b0ecbaf3.png b/images/ji-ben-gong-neng/shu-ju-biao/07d7e382b0ecbaf3.png
deleted file mode 100644
index 58f0662d..00000000
Binary files a/images/ji-ben-gong-neng/shu-ju-biao/07d7e382b0ecbaf3.png and /dev/null differ
diff --git a/images/ji-ben-gong-neng/shu-ju-biao/227900d6ec43a16e.png b/images/ji-ben-gong-neng/shu-ju-biao/227900d6ec43a16e.png
deleted file mode 100644
index e2def792..00000000
Binary files a/images/ji-ben-gong-neng/shu-ju-biao/227900d6ec43a16e.png and /dev/null differ
diff --git a/images/ji-ben-gong-neng/shu-ju-biao/39fb770b88257a59.png b/images/ji-ben-gong-neng/shu-ju-biao/39fb770b88257a59.png
deleted file mode 100644
index b89274cd..00000000
Binary files a/images/ji-ben-gong-neng/shu-ju-biao/39fb770b88257a59.png and /dev/null differ
diff --git a/images/ji-ben-gong-neng/shu-ju-biao/6ecf5efee4ca8c93.png b/images/ji-ben-gong-neng/shu-ju-biao/6ecf5efee4ca8c93.png
deleted file mode 100644
index 0cd2d90b..00000000
Binary files a/images/ji-ben-gong-neng/shu-ju-biao/6ecf5efee4ca8c93.png and /dev/null differ
diff --git a/images/ji-ben-gong-neng/shu-ju-biao/8c22b9e21ce63584.png b/images/ji-ben-gong-neng/shu-ju-biao/8c22b9e21ce63584.png
deleted file mode 100644
index e751f1cf..00000000
Binary files a/images/ji-ben-gong-neng/shu-ju-biao/8c22b9e21ce63584.png and /dev/null differ
diff --git "a/images/orphans/\n[\345\233\276\347\211\207].png" "b/images/orphans/\n[\345\233\276\347\211\207].png"
deleted file mode 100644
index 148d070a..00000000
Binary files "a/images/orphans/\n[\345\233\276\347\211\207].png" and /dev/null differ
diff --git a/images/orphans/2025-02-12-18-40-29.png b/images/orphans/2025-02-12-18-40-29.png
deleted file mode 100644
index 73cc0bed..00000000
Binary files a/images/orphans/2025-02-12-18-40-29.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-12-24-15.png b/images/orphans/2025-02-14-12-24-15.png
deleted file mode 100644
index e9d666eb..00000000
Binary files a/images/orphans/2025-02-14-12-24-15.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-14-30-31.png b/images/orphans/2025-02-14-14-30-31.png
deleted file mode 100644
index 59d86cd8..00000000
Binary files a/images/orphans/2025-02-14-14-30-31.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-14-48-33.png b/images/orphans/2025-02-14-14-48-33.png
deleted file mode 100644
index 61e490b8..00000000
Binary files a/images/orphans/2025-02-14-14-48-33.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-14-49-08.png b/images/orphans/2025-02-14-14-49-08.png
deleted file mode 100644
index 7067f035..00000000
Binary files a/images/orphans/2025-02-14-14-49-08.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-15-20-33.png b/images/orphans/2025-02-14-15-20-33.png
deleted file mode 100644
index 6f2e4e60..00000000
Binary files a/images/orphans/2025-02-14-15-20-33.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-16-19-22.png b/images/orphans/2025-02-14-16-19-22.png
deleted file mode 100644
index f642b79a..00000000
Binary files a/images/orphans/2025-02-14-16-19-22.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-16-20-12.png b/images/orphans/2025-02-14-16-20-12.png
deleted file mode 100644
index 6ab79319..00000000
Binary files a/images/orphans/2025-02-14-16-20-12.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-16-21-14.png b/images/orphans/2025-02-14-16-21-14.png
deleted file mode 100644
index c0f24878..00000000
Binary files a/images/orphans/2025-02-14-16-21-14.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-16-22-00.png b/images/orphans/2025-02-14-16-22-00.png
deleted file mode 100644
index f4907518..00000000
Binary files a/images/orphans/2025-02-14-16-22-00.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-16-23-58.png b/images/orphans/2025-02-14-16-23-58.png
deleted file mode 100644
index db44086f..00000000
Binary files a/images/orphans/2025-02-14-16-23-58.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-16-24-13.png b/images/orphans/2025-02-14-16-24-13.png
deleted file mode 100644
index 1fe47ae8..00000000
Binary files a/images/orphans/2025-02-14-16-24-13.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-16-24-32.png b/images/orphans/2025-02-14-16-24-32.png
deleted file mode 100644
index aae517b2..00000000
Binary files a/images/orphans/2025-02-14-16-24-32.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-16-32-57.png b/images/orphans/2025-02-14-16-32-57.png
deleted file mode 100644
index 463e8b28..00000000
Binary files a/images/orphans/2025-02-14-16-32-57.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-16-36-31.png b/images/orphans/2025-02-14-16-36-31.png
deleted file mode 100644
index 17e1a52e..00000000
Binary files a/images/orphans/2025-02-14-16-36-31.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-16-39-52.png b/images/orphans/2025-02-14-16-39-52.png
deleted file mode 100644
index b9b9722b..00000000
Binary files a/images/orphans/2025-02-14-16-39-52.png and /dev/null differ
diff --git a/images/orphans/2025-02-14-18-12-34.png b/images/orphans/2025-02-14-18-12-34.png
deleted file mode 100644
index eaf15bac..00000000
Binary files a/images/orphans/2025-02-14-18-12-34.png and /dev/null differ
diff --git a/images/orphans/2025-04-07-19-16-39.png b/images/orphans/2025-04-07-19-16-39.png
deleted file mode 100644
index be6cc727..00000000
Binary files a/images/orphans/2025-04-07-19-16-39.png and /dev/null differ
diff --git a/images/orphans/2025-04-07-19-20-32.png b/images/orphans/2025-04-07-19-20-32.png
deleted file mode 100644
index bc99fe68..00000000
Binary files a/images/orphans/2025-04-07-19-20-32.png and /dev/null differ
diff --git a/images/orphans/2025-04-09-11-17-12.png b/images/orphans/2025-04-09-11-17-12.png
deleted file mode 100644
index 448c6e6c..00000000
Binary files a/images/orphans/2025-04-09-11-17-12.png and /dev/null differ
diff --git a/images/orphans/2025-04-09-11-17-18.png b/images/orphans/2025-04-09-11-17-18.png
deleted file mode 100644
index 026795b8..00000000
Binary files a/images/orphans/2025-04-09-11-17-18.png and /dev/null differ
diff --git a/images/orphans/2025-04-09-11-17-55.png b/images/orphans/2025-04-09-11-17-55.png
deleted file mode 100644
index 6f7a6683..00000000
Binary files a/images/orphans/2025-04-09-11-17-55.png and /dev/null differ
diff --git a/images/orphans/2025-04-09-11-20-48.png b/images/orphans/2025-04-09-11-20-48.png
deleted file mode 100644
index 1e768892..00000000
Binary files a/images/orphans/2025-04-09-11-20-48.png and /dev/null differ
diff --git a/images/orphans/2025-04-09-11-30-06.png b/images/orphans/2025-04-09-11-30-06.png
deleted file mode 100644
index 2ee5c6c4..00000000
Binary files a/images/orphans/2025-04-09-11-30-06.png and /dev/null differ
diff --git a/images/orphans/2025-04-09-12-08-34.png b/images/orphans/2025-04-09-12-08-34.png
deleted file mode 100644
index 26ab816f..00000000
Binary files a/images/orphans/2025-04-09-12-08-34.png and /dev/null differ
diff --git a/images/orphans/2025-04-09-12-09-12.png b/images/orphans/2025-04-09-12-09-12.png
deleted file mode 100644
index 4362728d..00000000
Binary files a/images/orphans/2025-04-09-12-09-12.png and /dev/null differ
diff --git a/images/orphans/2025-04-09-12-10-49.png b/images/orphans/2025-04-09-12-10-49.png
deleted file mode 100644
index 59a373f8..00000000
Binary files a/images/orphans/2025-04-09-12-10-49.png and /dev/null differ
diff --git a/images/orphans/2025-04-09-12-13-06.png b/images/orphans/2025-04-09-12-13-06.png
deleted file mode 100644
index 2a47326b..00000000
Binary files a/images/orphans/2025-04-09-12-13-06.png and /dev/null differ
diff --git a/images/orphans/2025-04-09-12-13-56.png b/images/orphans/2025-04-09-12-13-56.png
deleted file mode 100644
index e9d4fe83..00000000
Binary files a/images/orphans/2025-04-09-12-13-56.png and /dev/null differ
diff --git a/images/orphans/2025-04-09-12-14-40.png b/images/orphans/2025-04-09-12-14-40.png
deleted file mode 100644
index 2c1eedd2..00000000
Binary files a/images/orphans/2025-04-09-12-14-40.png and /dev/null differ
diff --git a/images/orphans/2025-04-09-12-17-29.png b/images/orphans/2025-04-09-12-17-29.png
deleted file mode 100644
index e75b2243..00000000
Binary files a/images/orphans/2025-04-09-12-17-29.png and /dev/null differ
diff --git a/images/orphans/2025-04-11-15-05-26.png b/images/orphans/2025-04-11-15-05-26.png
deleted file mode 100644
index de23c2d5..00000000
Binary files a/images/orphans/2025-04-11-15-05-26.png and /dev/null differ
diff --git a/images/orphans/2025-04-11-16-13-28.png b/images/orphans/2025-04-11-16-13-28.png
deleted file mode 100644
index 5482ce19..00000000
Binary files a/images/orphans/2025-04-11-16-13-28.png and /dev/null differ
diff --git a/images/orphans/2025-04-11-16-13-47.png b/images/orphans/2025-04-11-16-13-47.png
deleted file mode 100644
index c89fee3e..00000000
Binary files a/images/orphans/2025-04-11-16-13-47.png and /dev/null differ
diff --git a/images/orphans/2025-04-11-16-14-50.png b/images/orphans/2025-04-11-16-14-50.png
deleted file mode 100644
index 5e489b59..00000000
Binary files a/images/orphans/2025-04-11-16-14-50.png and /dev/null differ
diff --git a/images/orphans/2025-04-14-18-04-30.png b/images/orphans/2025-04-14-18-04-30.png
deleted file mode 100644
index f0c4ff98..00000000
Binary files a/images/orphans/2025-04-14-18-04-30.png and /dev/null differ
diff --git a/images/orphans/2025-04-16-16-13-42.png b/images/orphans/2025-04-16-16-13-42.png
deleted file mode 100644
index 63c19dbb..00000000
Binary files a/images/orphans/2025-04-16-16-13-42.png and /dev/null differ
diff --git a/images/orphans/2025-04-17-15-19-22.png b/images/orphans/2025-04-17-15-19-22.png
deleted file mode 100644
index aeb38df6..00000000
Binary files a/images/orphans/2025-04-17-15-19-22.png and /dev/null differ
diff --git a/images/orphans/2025-04-17-16-08-04.png b/images/orphans/2025-04-17-16-08-04.png
deleted file mode 100644
index 7f8f14f9..00000000
Binary files a/images/orphans/2025-04-17-16-08-04.png and /dev/null differ
diff --git a/images/orphans/2025-06-09-10-57-08.png b/images/orphans/2025-06-09-10-57-08.png
deleted file mode 100644
index 70c370ff..00000000
Binary files a/images/orphans/2025-06-09-10-57-08.png and /dev/null differ
diff --git a/images/orphans/2025-06-09-11-59-43.png b/images/orphans/2025-06-09-11-59-43.png
deleted file mode 100644
index b5c6cc50..00000000
Binary files a/images/orphans/2025-06-09-11-59-43.png and /dev/null differ
diff --git a/images/orphans/2025-06-09-12-02-05.png b/images/orphans/2025-06-09-12-02-05.png
deleted file mode 100644
index 8f2a4595..00000000
Binary files a/images/orphans/2025-06-09-12-02-05.png and /dev/null differ
diff --git a/images/orphans/2025-07-18-15-54-01.png b/images/orphans/2025-07-18-15-54-01.png
deleted file mode 100644
index 860c8ff7..00000000
Binary files a/images/orphans/2025-07-18-15-54-01.png and /dev/null differ
diff --git a/images/orphans/2025-07-18-16-03-01.gif b/images/orphans/2025-07-18-16-03-01.gif
deleted file mode 100644
index 4f755f20..00000000
Binary files a/images/orphans/2025-07-18-16-03-01.gif and /dev/null differ
diff --git a/images/orphans/2025-07-18-16-03-02.gif b/images/orphans/2025-07-18-16-03-02.gif
deleted file mode 100644
index 4d5f26ce..00000000
Binary files a/images/orphans/2025-07-18-16-03-02.gif and /dev/null differ
diff --git a/images/orphans/2025-07-18-16-03-03.gif b/images/orphans/2025-07-18-16-03-03.gif
deleted file mode 100644
index 808480a0..00000000
Binary files a/images/orphans/2025-07-18-16-03-03.gif and /dev/null differ
diff --git a/images/orphans/2025-07-18-16-03-04.gif b/images/orphans/2025-07-18-16-03-04.gif
deleted file mode 100644
index 0f1c35df..00000000
Binary files a/images/orphans/2025-07-18-16-03-04.gif and /dev/null differ
diff --git a/images/orphans/2025-07-18-16-03-59.png b/images/orphans/2025-07-18-16-03-59.png
deleted file mode 100644
index 83a7ded9..00000000
Binary files a/images/orphans/2025-07-18-16-03-59.png and /dev/null differ
diff --git a/images/orphans/2025-07-18-16-04-22.png b/images/orphans/2025-07-18-16-04-22.png
deleted file mode 100644
index 7a953899..00000000
Binary files a/images/orphans/2025-07-18-16-04-22.png and /dev/null differ
diff --git a/images/orphans/2025-07-18-16-06-08.png b/images/orphans/2025-07-18-16-06-08.png
deleted file mode 100644
index 420d15d5..00000000
Binary files a/images/orphans/2025-07-18-16-06-08.png and /dev/null differ
diff --git a/images/orphans/2025-07-18-16-06-31.png b/images/orphans/2025-07-18-16-06-31.png
deleted file mode 100644
index be0e73e1..00000000
Binary files a/images/orphans/2025-07-18-16-06-31.png and /dev/null differ
diff --git a/images/orphans/2025-07-18-16-11-59.png b/images/orphans/2025-07-18-16-11-59.png
deleted file mode 100644
index be0e73e1..00000000
Binary files a/images/orphans/2025-07-18-16-11-59.png and /dev/null differ
diff --git a/images/orphans/2025-07-18-17-36-38.png b/images/orphans/2025-07-18-17-36-38.png
deleted file mode 100644
index e5d5b4ea..00000000
Binary files a/images/orphans/2025-07-18-17-36-38.png and /dev/null differ
diff --git a/images/orphans/2025-08-01-16-30-52.png b/images/orphans/2025-08-01-16-30-52.png
deleted file mode 100644
index c79b7fad..00000000
Binary files a/images/orphans/2025-08-01-16-30-52.png and /dev/null differ
diff --git a/images/orphans/2025-08-01-16-43-32.png b/images/orphans/2025-08-01-16-43-32.png
deleted file mode 100644
index c0a26ac6..00000000
Binary files a/images/orphans/2025-08-01-16-43-32.png and /dev/null differ
diff --git a/images/orphans/2025-08-01-16-51-11.png b/images/orphans/2025-08-01-16-51-11.png
deleted file mode 100644
index eab459a7..00000000
Binary files a/images/orphans/2025-08-01-16-51-11.png and /dev/null differ
diff --git a/images/orphans/2025-08-01-16-56-21.png b/images/orphans/2025-08-01-16-56-21.png
deleted file mode 100644
index 84c29e2d..00000000
Binary files a/images/orphans/2025-08-01-16-56-21.png and /dev/null differ
diff --git a/images/orphans/2025-08-01-17-13-02.gif b/images/orphans/2025-08-01-17-13-02.gif
deleted file mode 100644
index 396ef60f..00000000
Binary files a/images/orphans/2025-08-01-17-13-02.gif and /dev/null differ
diff --git a/images/orphans/2025-08-01-17-26-15.png b/images/orphans/2025-08-01-17-26-15.png
deleted file mode 100644
index 4bbdab93..00000000
Binary files a/images/orphans/2025-08-01-17-26-15.png and /dev/null differ
diff --git a/images/orphans/2025-08-01-17-28-13.png b/images/orphans/2025-08-01-17-28-13.png
deleted file mode 100644
index 53cd078a..00000000
Binary files a/images/orphans/2025-08-01-17-28-13.png and /dev/null differ
diff --git a/images/orphans/2025-08-01-17-30-16.gif b/images/orphans/2025-08-01-17-30-16.gif
deleted file mode 100644
index 17160bc9..00000000
Binary files a/images/orphans/2025-08-01-17-30-16.gif and /dev/null differ
diff --git a/images/orphans/2025-08-01-17-32-02.gif b/images/orphans/2025-08-01-17-32-02.gif
deleted file mode 100644
index eb77ff4b..00000000
Binary files a/images/orphans/2025-08-01-17-32-02.gif and /dev/null differ
diff --git a/images/orphans/2025-08-01-17-46-33.png b/images/orphans/2025-08-01-17-46-33.png
deleted file mode 100644
index d56f52df..00000000
Binary files a/images/orphans/2025-08-01-17-46-33.png and /dev/null differ
diff --git a/images/orphans/2025-08-12-20-22-29.png b/images/orphans/2025-08-12-20-22-29.png
deleted file mode 100644
index b00ee2f1..00000000
Binary files a/images/orphans/2025-08-12-20-22-29.png and /dev/null differ
diff --git a/images/orphans/2025-09-25-21-21-06.png b/images/orphans/2025-09-25-21-21-06.png
deleted file mode 100644
index bdc67a4d..00000000
Binary files a/images/orphans/2025-09-25-21-21-06.png and /dev/null differ
diff --git a/images/orphans/2025-09-25-21-36-33.png b/images/orphans/2025-09-25-21-36-33.png
deleted file mode 100644
index 88ee37a9..00000000
Binary files a/images/orphans/2025-09-25-21-36-33.png and /dev/null differ
diff --git a/images/orphans/2025-09-25-21-36-58.png b/images/orphans/2025-09-25-21-36-58.png
deleted file mode 100644
index eef81f5e..00000000
Binary files a/images/orphans/2025-09-25-21-36-58.png and /dev/null differ
diff --git a/images/orphans/2025-09-25-21-37-58.png b/images/orphans/2025-09-25-21-37-58.png
deleted file mode 100644
index 66cb0716..00000000
Binary files a/images/orphans/2025-09-25-21-37-58.png and /dev/null differ
diff --git a/images/orphans/2025-09-29-23-13-17.png b/images/orphans/2025-09-29-23-13-17.png
deleted file mode 100644
index 1c70b7a4..00000000
Binary files a/images/orphans/2025-09-29-23-13-17.png and /dev/null differ
diff --git a/images/orphans/2025-09-29-23-13-31.png b/images/orphans/2025-09-29-23-13-31.png
deleted file mode 100644
index ac227aed..00000000
Binary files a/images/orphans/2025-09-29-23-13-31.png and /dev/null differ
diff --git a/images/orphans/2025-09-29-23-16-11.png b/images/orphans/2025-09-29-23-16-11.png
deleted file mode 100644
index c18f541c..00000000
Binary files a/images/orphans/2025-09-29-23-16-11.png and /dev/null differ
diff --git a/images/orphans/2025-09-29-23-18-02.png b/images/orphans/2025-09-29-23-18-02.png
deleted file mode 100644
index a224930a..00000000
Binary files a/images/orphans/2025-09-29-23-18-02.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-19-36-09.png b/images/orphans/2025-10-10-19-36-09.png
deleted file mode 100644
index 77f5593e..00000000
Binary files a/images/orphans/2025-10-10-19-36-09.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-19-38-21.png b/images/orphans/2025-10-10-19-38-21.png
deleted file mode 100644
index f0dddf78..00000000
Binary files a/images/orphans/2025-10-10-19-38-21.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-19-44-41.png b/images/orphans/2025-10-10-19-44-41.png
deleted file mode 100644
index 58dc00fe..00000000
Binary files a/images/orphans/2025-10-10-19-44-41.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-20-18-29.png b/images/orphans/2025-10-10-20-18-29.png
deleted file mode 100644
index 221ff2a3..00000000
Binary files a/images/orphans/2025-10-10-20-18-29.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-20-50-14.png b/images/orphans/2025-10-10-20-50-14.png
deleted file mode 100644
index f4bfd826..00000000
Binary files a/images/orphans/2025-10-10-20-50-14.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-20-50-42.png b/images/orphans/2025-10-10-20-50-42.png
deleted file mode 100644
index 60d763d0..00000000
Binary files a/images/orphans/2025-10-10-20-50-42.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-20-51-59.png b/images/orphans/2025-10-10-20-51-59.png
deleted file mode 100644
index 2e033bea..00000000
Binary files a/images/orphans/2025-10-10-20-51-59.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-20-52-37.png b/images/orphans/2025-10-10-20-52-37.png
deleted file mode 100644
index 3d1d4da3..00000000
Binary files a/images/orphans/2025-10-10-20-52-37.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-20-53-33.png b/images/orphans/2025-10-10-20-53-33.png
deleted file mode 100644
index 297fcb9e..00000000
Binary files a/images/orphans/2025-10-10-20-53-33.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-20-57-05.png b/images/orphans/2025-10-10-20-57-05.png
deleted file mode 100644
index 628335d3..00000000
Binary files a/images/orphans/2025-10-10-20-57-05.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-21-03-46.png b/images/orphans/2025-10-10-21-03-46.png
deleted file mode 100644
index 520c2040..00000000
Binary files a/images/orphans/2025-10-10-21-03-46.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-21-04-09.png b/images/orphans/2025-10-10-21-04-09.png
deleted file mode 100644
index 863d7981..00000000
Binary files a/images/orphans/2025-10-10-21-04-09.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-21-04-33.png b/images/orphans/2025-10-10-21-04-33.png
deleted file mode 100644
index 7302862e..00000000
Binary files a/images/orphans/2025-10-10-21-04-33.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-21-04-44.png b/images/orphans/2025-10-10-21-04-44.png
deleted file mode 100644
index 0d42069b..00000000
Binary files a/images/orphans/2025-10-10-21-04-44.png and /dev/null differ
diff --git a/images/orphans/2025-10-10-21-04-57.png b/images/orphans/2025-10-10-21-04-57.png
deleted file mode 100644
index 2271872e..00000000
Binary files a/images/orphans/2025-10-10-21-04-57.png and /dev/null differ
diff --git a/images/orphans/2025-11-30-22-31-01.png b/images/orphans/2025-11-30-22-31-01.png
deleted file mode 100644
index e2673df4..00000000
Binary files a/images/orphans/2025-11-30-22-31-01.png and /dev/null differ
diff --git a/images/orphans/2025-11-30-22-40-45.png b/images/orphans/2025-11-30-22-40-45.png
deleted file mode 100644
index a236fc4b..00000000
Binary files a/images/orphans/2025-11-30-22-40-45.png and /dev/null differ
diff --git a/images/orphans/2025-11-30-22-51-26.png b/images/orphans/2025-11-30-22-51-26.png
deleted file mode 100644
index 2d3a5308..00000000
Binary files a/images/orphans/2025-11-30-22-51-26.png and /dev/null differ
diff --git a/images/orphans/2025-11-30-22-54-29.png b/images/orphans/2025-11-30-22-54-29.png
deleted file mode 100644
index fbce8adf..00000000
Binary files a/images/orphans/2025-11-30-22-54-29.png and /dev/null differ
diff --git a/images/orphans/2025-12-03-01-27-59.png b/images/orphans/2025-12-03-01-27-59.png
deleted file mode 100644
index 9fa9c737..00000000
Binary files a/images/orphans/2025-12-03-01-27-59.png and /dev/null differ
diff --git a/images/orphans/2025-12-03-18-19-56.png b/images/orphans/2025-12-03-18-19-56.png
deleted file mode 100644
index 9cfd5f54..00000000
Binary files a/images/orphans/2025-12-03-18-19-56.png and /dev/null differ
diff --git a/images/orphans/94b64982f27826a6.png b/images/orphans/94b64982f27826a6.png
deleted file mode 100644
index 3303c773..00000000
Binary files a/images/orphans/94b64982f27826a6.png and /dev/null differ
diff --git a/images/orphans/af529f12781fdef5.png b/images/orphans/af529f12781fdef5.png
deleted file mode 100644
index 68c712d6..00000000
Binary files a/images/orphans/af529f12781fdef5.png and /dev/null differ
diff --git a/images/orphans/b87e569010f9b6d6.png b/images/orphans/b87e569010f9b6d6.png
deleted file mode 100644
index a61cbb12..00000000
Binary files a/images/orphans/b87e569010f9b6d6.png and /dev/null differ
diff --git a/images/orphans/basic/121f15d4ce4ec2c0.png b/images/orphans/basic/121f15d4ce4ec2c0.png
deleted file mode 100644
index c46bcab6..00000000
Binary files a/images/orphans/basic/121f15d4ce4ec2c0.png and /dev/null differ
diff --git a/images/orphans/basic/1685253aac7425c2.png b/images/orphans/basic/1685253aac7425c2.png
deleted file mode 100644
index 129c0883..00000000
Binary files a/images/orphans/basic/1685253aac7425c2.png and /dev/null differ
diff --git a/images/orphans/basic/2957241a218c70d8.png b/images/orphans/basic/2957241a218c70d8.png
deleted file mode 100644
index af5416dd..00000000
Binary files a/images/orphans/basic/2957241a218c70d8.png and /dev/null differ
diff --git a/images/orphans/basic/30b53d0786df60f0.png b/images/orphans/basic/30b53d0786df60f0.png
deleted file mode 100644
index d187170d..00000000
Binary files a/images/orphans/basic/30b53d0786df60f0.png and /dev/null differ
diff --git a/images/orphans/basic/3363a0e6a74006ad.png b/images/orphans/basic/3363a0e6a74006ad.png
deleted file mode 100644
index 9c23d14d..00000000
Binary files a/images/orphans/basic/3363a0e6a74006ad.png and /dev/null differ
diff --git a/images/orphans/basic/3e0dc36fb6c5f104.png b/images/orphans/basic/3e0dc36fb6c5f104.png
deleted file mode 100644
index 2f1bedf1..00000000
Binary files a/images/orphans/basic/3e0dc36fb6c5f104.png and /dev/null differ
diff --git a/images/orphans/basic/4627a433dbd07d3f.png b/images/orphans/basic/4627a433dbd07d3f.png
deleted file mode 100644
index 16cbb481..00000000
Binary files a/images/orphans/basic/4627a433dbd07d3f.png and /dev/null differ
diff --git a/images/orphans/basic/73c0fa55b0ca862b.png b/images/orphans/basic/73c0fa55b0ca862b.png
deleted file mode 100644
index 255b03db..00000000
Binary files a/images/orphans/basic/73c0fa55b0ca862b.png and /dev/null differ
diff --git a/images/orphans/basic/79895683e901fa9d.png b/images/orphans/basic/79895683e901fa9d.png
deleted file mode 100644
index 75d6b4d8..00000000
Binary files a/images/orphans/basic/79895683e901fa9d.png and /dev/null differ
diff --git a/images/orphans/basic/cb23e28c58fe2991.png b/images/orphans/basic/cb23e28c58fe2991.png
deleted file mode 100644
index d6659377..00000000
Binary files a/images/orphans/basic/cb23e28c58fe2991.png and /dev/null differ
diff --git a/images/orphans/basic/d264dc76e7d1f2f7.png b/images/orphans/basic/d264dc76e7d1f2f7.png
deleted file mode 100644
index fba65a1d..00000000
Binary files a/images/orphans/basic/d264dc76e7d1f2f7.png and /dev/null differ
diff --git a/images/orphans/basic/d804cc36629aea42.png b/images/orphans/basic/d804cc36629aea42.png
deleted file mode 100644
index cf86c4e7..00000000
Binary files a/images/orphans/basic/d804cc36629aea42.png and /dev/null differ
diff --git a/images/orphans/basic/ed3930c38e51679e.png b/images/orphans/basic/ed3930c38e51679e.png
deleted file mode 100644
index 89f184af..00000000
Binary files a/images/orphans/basic/ed3930c38e51679e.png and /dev/null differ
diff --git a/images/orphans/basic/fb5eeef11f2ea3a4.png b/images/orphans/basic/fb5eeef11f2ea3a4.png
deleted file mode 100644
index f790ad8e..00000000
Binary files a/images/orphans/basic/fb5eeef11f2ea3a4.png and /dev/null differ
diff --git a/images/orphans/basic/fe637cdf26bbd5e1.png b/images/orphans/basic/fe637cdf26bbd5e1.png
deleted file mode 100644
index 79e643f2..00000000
Binary files a/images/orphans/basic/fe637cdf26bbd5e1.png and /dev/null differ
diff --git a/images/orphans/basic/field/basic-field/6707e6f0d74b4508.png b/images/orphans/basic/field/basic-field/6707e6f0d74b4508.png
deleted file mode 100644
index e3cbbd72..00000000
Binary files a/images/orphans/basic/field/basic-field/6707e6f0d74b4508.png and /dev/null differ
diff --git a/images/orphans/basic/field/basic-field/9b9dff4ca1d72ab6.png b/images/orphans/basic/field/basic-field/9b9dff4ca1d72ab6.png
deleted file mode 100644
index 9cd2adab..00000000
Binary files a/images/orphans/basic/field/basic-field/9b9dff4ca1d72ab6.png and /dev/null differ
diff --git a/images/orphans/basic/field/basic-field/a0002474aed86c72.png b/images/orphans/basic/field/basic-field/a0002474aed86c72.png
deleted file mode 100644
index fd5306c2..00000000
Binary files a/images/orphans/basic/field/basic-field/a0002474aed86c72.png and /dev/null differ
diff --git a/images/orphans/basic/field/basic-field/dfd15d0ce947ea3b.png b/images/orphans/basic/field/basic-field/dfd15d0ce947ea3b.png
deleted file mode 100644
index 5796190d..00000000
Binary files a/images/orphans/basic/field/basic-field/dfd15d0ce947ea3b.png and /dev/null differ
diff --git a/images/orphans/basic/record/0568186abb541c03.png b/images/orphans/basic/record/0568186abb541c03.png
deleted file mode 100644
index f5707717..00000000
Binary files a/images/orphans/basic/record/0568186abb541c03.png and /dev/null differ
diff --git a/images/orphans/basic/record/09280e87f37444da.png b/images/orphans/basic/record/09280e87f37444da.png
deleted file mode 100644
index 08eedd64..00000000
Binary files a/images/orphans/basic/record/09280e87f37444da.png and /dev/null differ
diff --git a/images/orphans/basic/record/3c973bc6ffedcca9.png b/images/orphans/basic/record/3c973bc6ffedcca9.png
deleted file mode 100644
index 557adcb7..00000000
Binary files a/images/orphans/basic/record/3c973bc6ffedcca9.png and /dev/null differ
diff --git a/images/orphans/basic/record/641ef0da9a2e8114.png b/images/orphans/basic/record/641ef0da9a2e8114.png
deleted file mode 100644
index 28999c32..00000000
Binary files a/images/orphans/basic/record/641ef0da9a2e8114.png and /dev/null differ
diff --git a/images/orphans/basic/record/e5e2559495368c6b.png b/images/orphans/basic/record/e5e2559495368c6b.png
deleted file mode 100644
index 6434dabd..00000000
Binary files a/images/orphans/basic/record/e5e2559495368c6b.png and /dev/null differ
diff --git a/images/orphans/basic/record/e7240cacdc090d6a.png b/images/orphans/basic/record/e7240cacdc090d6a.png
deleted file mode 100644
index 84520adf..00000000
Binary files a/images/orphans/basic/record/e7240cacdc090d6a.png and /dev/null differ
diff --git a/images/orphans/basic/record/fcc8b88d89dcdb4b.png b/images/orphans/basic/record/fcc8b88d89dcdb4b.png
deleted file mode 100644
index 9e4dc737..00000000
Binary files a/images/orphans/basic/record/fcc8b88d89dcdb4b.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/0212e940e492680a.png b/images/orphans/basic/view/data-tools/0212e940e492680a.png
deleted file mode 100644
index 08786fd1..00000000
Binary files a/images/orphans/basic/view/data-tools/0212e940e492680a.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/03a08cf72997676b.png b/images/orphans/basic/view/data-tools/03a08cf72997676b.png
deleted file mode 100644
index f5f1278b..00000000
Binary files a/images/orphans/basic/view/data-tools/03a08cf72997676b.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/32da63290178330c.png b/images/orphans/basic/view/data-tools/32da63290178330c.png
deleted file mode 100644
index 1a92bfc7..00000000
Binary files a/images/orphans/basic/view/data-tools/32da63290178330c.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/3c460216b8ab84e2.png b/images/orphans/basic/view/data-tools/3c460216b8ab84e2.png
deleted file mode 100644
index a3e3e0f4..00000000
Binary files a/images/orphans/basic/view/data-tools/3c460216b8ab84e2.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/43ab5019721bf03b.png b/images/orphans/basic/view/data-tools/43ab5019721bf03b.png
deleted file mode 100644
index ac3b58b8..00000000
Binary files a/images/orphans/basic/view/data-tools/43ab5019721bf03b.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/4c1332cabb06d3e1.png b/images/orphans/basic/view/data-tools/4c1332cabb06d3e1.png
deleted file mode 100644
index f9988c23..00000000
Binary files a/images/orphans/basic/view/data-tools/4c1332cabb06d3e1.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/4ebc20280e8277df.png b/images/orphans/basic/view/data-tools/4ebc20280e8277df.png
deleted file mode 100644
index a868b9f0..00000000
Binary files a/images/orphans/basic/view/data-tools/4ebc20280e8277df.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/7383faa5568da1ac.png b/images/orphans/basic/view/data-tools/7383faa5568da1ac.png
deleted file mode 100644
index 034a6d46..00000000
Binary files a/images/orphans/basic/view/data-tools/7383faa5568da1ac.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/8019afe92de4be1f.png b/images/orphans/basic/view/data-tools/8019afe92de4be1f.png
deleted file mode 100644
index 067b8f88..00000000
Binary files a/images/orphans/basic/view/data-tools/8019afe92de4be1f.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/8120e34a54c492bc.png b/images/orphans/basic/view/data-tools/8120e34a54c492bc.png
deleted file mode 100644
index 0f31bbd3..00000000
Binary files a/images/orphans/basic/view/data-tools/8120e34a54c492bc.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/812929f226f9a449.png b/images/orphans/basic/view/data-tools/812929f226f9a449.png
deleted file mode 100644
index 3f38c893..00000000
Binary files a/images/orphans/basic/view/data-tools/812929f226f9a449.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/848352cbe43065b5.png b/images/orphans/basic/view/data-tools/848352cbe43065b5.png
deleted file mode 100644
index 7383318a..00000000
Binary files a/images/orphans/basic/view/data-tools/848352cbe43065b5.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/932f086eaf565182.png b/images/orphans/basic/view/data-tools/932f086eaf565182.png
deleted file mode 100644
index c5941b09..00000000
Binary files a/images/orphans/basic/view/data-tools/932f086eaf565182.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/9e7d85d75a8a3416.png b/images/orphans/basic/view/data-tools/9e7d85d75a8a3416.png
deleted file mode 100644
index e225fd9b..00000000
Binary files a/images/orphans/basic/view/data-tools/9e7d85d75a8a3416.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/aa09118daa8eb936.png b/images/orphans/basic/view/data-tools/aa09118daa8eb936.png
deleted file mode 100644
index 5ff3f583..00000000
Binary files a/images/orphans/basic/view/data-tools/aa09118daa8eb936.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/c26b0dc795cf9194.png b/images/orphans/basic/view/data-tools/c26b0dc795cf9194.png
deleted file mode 100644
index c32369e0..00000000
Binary files a/images/orphans/basic/view/data-tools/c26b0dc795cf9194.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/cae053ab673e05e4.png b/images/orphans/basic/view/data-tools/cae053ab673e05e4.png
deleted file mode 100644
index 5d0ad4cc..00000000
Binary files a/images/orphans/basic/view/data-tools/cae053ab673e05e4.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/d7a548bc0e9a5b5d.png b/images/orphans/basic/view/data-tools/d7a548bc0e9a5b5d.png
deleted file mode 100644
index 2872367b..00000000
Binary files a/images/orphans/basic/view/data-tools/d7a548bc0e9a5b5d.png and /dev/null differ
diff --git a/images/orphans/basic/view/data-tools/fa9ab917d6b59fe9.png b/images/orphans/basic/view/data-tools/fa9ab917d6b59fe9.png
deleted file mode 100644
index c5504275..00000000
Binary files a/images/orphans/basic/view/data-tools/fa9ab917d6b59fe9.png and /dev/null differ
diff --git a/images/orphans/developer/api/17f341d5b0b07ff4.png b/images/orphans/developer/api/17f341d5b0b07ff4.png
deleted file mode 100644
index 08c0e6d4..00000000
Binary files a/images/orphans/developer/api/17f341d5b0b07ff4.png and /dev/null differ
diff --git a/images/orphans/developer/api/262744d8f8c9d0a3.png b/images/orphans/developer/api/262744d8f8c9d0a3.png
deleted file mode 100644
index 2fd1f657..00000000
Binary files a/images/orphans/developer/api/262744d8f8c9d0a3.png and /dev/null differ
diff --git a/images/orphans/developer/api/3a3abbbb21e81c7c.png b/images/orphans/developer/api/3a3abbbb21e81c7c.png
deleted file mode 100644
index b31f3d26..00000000
Binary files a/images/orphans/developer/api/3a3abbbb21e81c7c.png and /dev/null differ
diff --git a/images/orphans/developer/api/830177806519ba17.png b/images/orphans/developer/api/830177806519ba17.png
deleted file mode 100644
index 0a9858ee..00000000
Binary files a/images/orphans/developer/api/830177806519ba17.png and /dev/null differ
diff --git a/images/orphans/developer/api/88aefa10b5ffe372.png b/images/orphans/developer/api/88aefa10b5ffe372.png
deleted file mode 100644
index a8710a36..00000000
Binary files a/images/orphans/developer/api/88aefa10b5ffe372.png and /dev/null differ
diff --git a/images/orphans/developer/api/99efd16eae04feac.png b/images/orphans/developer/api/99efd16eae04feac.png
deleted file mode 100644
index 72f4780e..00000000
Binary files a/images/orphans/developer/api/99efd16eae04feac.png and /dev/null differ
diff --git a/images/orphans/developer/api/9f35f5ecaf38f264.png b/images/orphans/developer/api/9f35f5ecaf38f264.png
deleted file mode 100644
index c863c350..00000000
Binary files a/images/orphans/developer/api/9f35f5ecaf38f264.png and /dev/null differ
diff --git a/images/orphans/developer/api/a2c6a5f136767885.png b/images/orphans/developer/api/a2c6a5f136767885.png
deleted file mode 100644
index f7f60c2e..00000000
Binary files a/images/orphans/developer/api/a2c6a5f136767885.png and /dev/null differ
diff --git a/images/orphans/developer/api/a7813345bcd4a8e3.png b/images/orphans/developer/api/a7813345bcd4a8e3.png
deleted file mode 100644
index cbe7e1b4..00000000
Binary files a/images/orphans/developer/api/a7813345bcd4a8e3.png and /dev/null differ
diff --git a/images/orphans/developer/api/b7c3b29073bc6768.png b/images/orphans/developer/api/b7c3b29073bc6768.png
deleted file mode 100644
index d8386ee8..00000000
Binary files a/images/orphans/developer/api/b7c3b29073bc6768.png and /dev/null differ
diff --git a/images/orphans/developer/api/d7139d0c9c0960b5.png b/images/orphans/developer/api/d7139d0c9c0960b5.png
deleted file mode 100644
index f8b8cfca..00000000
Binary files a/images/orphans/developer/api/d7139d0c9c0960b5.png and /dev/null differ
diff --git a/images/orphans/developer/api/fa9fb4d225e32565.png b/images/orphans/developer/api/fa9fb4d225e32565.png
deleted file mode 100644
index 8d2a45a8..00000000
Binary files a/images/orphans/developer/api/fa9fb4d225e32565.png and /dev/null differ
diff --git a/images/orphans/developer/dd60fcb2becb23c5.png b/images/orphans/developer/dd60fcb2becb23c5.png
deleted file mode 100644
index f0481430..00000000
Binary files a/images/orphans/developer/dd60fcb2becb23c5.png and /dev/null differ
diff --git a/images/orphans/developer/integration/sso/d9e424732c7bd9c7.png b/images/orphans/developer/integration/sso/d9e424732c7bd9c7.png
deleted file mode 100644
index 3e822b9b..00000000
Binary files a/images/orphans/developer/integration/sso/d9e424732c7bd9c7.png and /dev/null differ
diff --git a/images/orphans/image.png.png b/images/orphans/image.png.png
deleted file mode 100644
index f809c685..00000000
Binary files a/images/orphans/image.png.png and /dev/null differ
diff --git a/images/orphans/pending-configuration.png b/images/orphans/pending-configuration.png
deleted file mode 100644
index ed8335d0..00000000
Binary files a/images/orphans/pending-configuration.png and /dev/null differ
diff --git a/images/orphans/self-hosting/77a397abbfab3574.png b/images/orphans/self-hosting/77a397abbfab3574.png
deleted file mode 100644
index c251a579..00000000
Binary files a/images/orphans/self-hosting/77a397abbfab3574.png and /dev/null differ
diff --git a/images/orphans/self-hosting/a49c922f34692e28.png b/images/orphans/self-hosting/a49c922f34692e28.png
deleted file mode 100644
index ffd3ba30..00000000
Binary files a/images/orphans/self-hosting/a49c922f34692e28.png and /dev/null differ
diff --git a/images/orphans/self-hosting/a7eb9716b365ddaf.png b/images/orphans/self-hosting/a7eb9716b365ddaf.png
deleted file mode 100644
index eca59c9e..00000000
Binary files a/images/orphans/self-hosting/a7eb9716b365ddaf.png and /dev/null differ
diff --git a/images/staged-base-preview/2026-05-11-base-en-duplicate-base.png b/images/staged-base-preview/2026-05-11-base-en-duplicate-base.png
deleted file mode 100644
index 3c5319d4..00000000
Binary files a/images/staged-base-preview/2026-05-11-base-en-duplicate-base.png and /dev/null differ
diff --git a/images/staged-base-preview/2026-05-11-base-en-export-base.png b/images/staged-base-preview/2026-05-11-base-en-export-base.png
deleted file mode 100644
index 8f96cf90..00000000
Binary files a/images/staged-base-preview/2026-05-11-base-en-export-base.png and /dev/null differ
diff --git a/images/staged-base-preview/2026-05-11-base-en-import-base.png b/images/staged-base-preview/2026-05-11-base-en-import-base.png
deleted file mode 100644
index c9b9d81c..00000000
Binary files a/images/staged-base-preview/2026-05-11-base-en-import-base.png and /dev/null differ
diff --git a/images/staged-field-preview/2026-05-11-field-35-4c671faa180b1fe6.png b/images/staged-field-preview/2026-05-11-field-35-4c671faa180b1fe6.png
deleted file mode 100644
index ef0ce763..00000000
Binary files a/images/staged-field-preview/2026-05-11-field-35-4c671faa180b1fe6.png and /dev/null differ
diff --git a/images/staged-field-preview/2026-05-11-field-36-738cf1737dbdd0c1.png b/images/staged-field-preview/2026-05-11-field-36-738cf1737dbdd0c1.png
deleted file mode 100644
index 7f0b131b..00000000
Binary files a/images/staged-field-preview/2026-05-11-field-36-738cf1737dbdd0c1.png and /dev/null differ
diff --git a/images/staged-field-preview/2026-05-11-field-37-7ab6c9660947e51e.png b/images/staged-field-preview/2026-05-11-field-37-7ab6c9660947e51e.png
deleted file mode 100644
index b8cc28b5..00000000
Binary files a/images/staged-field-preview/2026-05-11-field-37-7ab6c9660947e51e.png and /dev/null differ
diff --git a/images/staged-field-preview/2026-05-11-field-38-9483a401484f3026.png b/images/staged-field-preview/2026-05-11-field-38-9483a401484f3026.png
deleted file mode 100644
index 1973f0a6..00000000
Binary files a/images/staged-field-preview/2026-05-11-field-38-9483a401484f3026.png and /dev/null differ
diff --git a/style.css b/style.css
index 6a6c6ff4..4ccebe57 100644
--- a/style.css
+++ b/style.css
@@ -180,6 +180,18 @@ html.dark[data-current-path$="/changelog"] #table-of-contents .toc-item[data-act
border-color: rgba(255, 255, 255, 0.12);
}
+.docs-inline-icon {
+ display: inline-block;
+ width: 1.4em;
+ height: 1.4em;
+ margin: 0 0.1em;
+ vertical-align: -0.35em;
+}
+
+.dark .docs-inline-icon {
+ filter: invert(1);
+}
+
@media (max-width: 640px) {
.docs-screenshot {
margin: 1.25rem auto;
diff --git a/zh/basic/ai/ai-chat.mdx b/zh/basic/ai/ai-chat.mdx
index 2a4462aa..edc25ada 100644
--- a/zh/basic/ai/ai-chat.mdx
+++ b/zh/basic/ai/ai-chat.mdx
@@ -12,7 +12,7 @@ AI 会优先参考当前页面。需要跨表格、视图、应用、自动化
## 打开方式
-打开表格或视图后,点击右上角的 **Cuppy** 图标,即可打开 AI 对话。在输入框中描述问题或任务;如果任务会修改数据或创建节点,建议先让 AI 列出计划,再确认执行。
+打开表格或视图后,点击右上角的 ,即可打开 AI 对话。在输入框中描述问题或任务;如果任务会修改数据或创建节点,建议先让 AI 列出计划,再确认执行。
## AI 会参考哪些内容
diff --git a/zh/basic/ai/app-builder.mdx b/zh/basic/ai/app-builder.mdx
index 42ca9e8a..9e5c2f8f 100644
--- a/zh/basic/ai/app-builder.mdx
+++ b/zh/basic/ai/app-builder.mdx
@@ -24,6 +24,12 @@ Teable 应用构建器 (App Builder) 允许您在不编写代码的情况下,
应用构建器为非技术用户和开发者提供了双重界面。
+
+
### 1. 对话界面 (AI 驱动)
这是您的应用控制中心。
@@ -69,7 +75,11 @@ Teable 应用构建器 (App Builder) 允许您在不编写代码的情况下,
- ZIP 中的根目录 `.env` 会被读取为应用的自定义环境变量。其他 `.env*` 变体(如 `.env.local`)会被忽略。
-
+
## 发布与管理
@@ -80,16 +90,34 @@ Teable 应用构建器 (App Builder) 允许您在不编写代码的情况下,
- **公开链接**:Teable 会为您的应用生成一个安全的、可公开访问的 URL。
- **自定义域名**:支持绑定您自己的域名。
+
+
### 自定义域名
在 **自定义域名** 中可以为已发布应用绑定访问域名。建议使用子域名,例如 `app.yourdomain.com`。输入域名后,Teable 会显示需要添加的 DNS 记录;在域名服务商处添加记录,等待生效后回到 Teable 完成验证。
也可以使用 `teable.app` 下可用的子域名,例如 `your-name.teable.app`。
+
+
### 应用登录
在应用顶部点击 **添加登录**,可以要求访问者登录后再使用应用。配置后,该按钮会变为 **登录设置**。
+
+
启用登录时:
1. 选择登录用户的存储位置。可以创建 **用户** 表,也可以复用已有的、包含邮箱字段的表。每位登录用户会作为一条记录保存,同一用户表可被多个应用复用。
@@ -105,6 +133,12 @@ Teable 自动跟踪每一次部署。
- 点击 **历史** 按钮(时钟图标)查看所有已部署的版本列表。
- **一键回滚**:如果新的更新出现问题,您可以即时将线上应用恢复到任何之前的稳定版本。
+
+
### 自动修复 (Auto-fix)
如果您的自定义代码导致构建错误,部署将会失败。
diff --git a/zh/basic/ai/custom-model.mdx b/zh/basic/ai/custom-model.mdx
index 3502de89..016cb983 100644
--- a/zh/basic/ai/custom-model.mdx
+++ b/zh/basic/ai/custom-model.mdx
@@ -25,6 +25,12 @@ description: 在空间中开启 AI 能力并添加模型提供商,用于 AI
2. 点击右上角 **设置**。
3. 进入 **AI 配置**。
+
+
## 配置步骤
在 **AI 能力** 中按需开启:
@@ -42,6 +48,12 @@ description: 在空间中开启 AI 能力并添加模型提供商,用于 AI
- **API 密钥**:填写服务商提供的 API 密钥。
- **模型**:填写要接入的模型名称,多个模型之间使用英文逗号分隔。
+
+
#### Agent 支持范围
为保证体验,请在 **AI Chat** 和 **App Builder** 中使用下方支持的模型。列表外模型可能在 **AI 字段** 或**自动化**等部分 AI 功能中可用。对于 **AI Chat** 和 **App Builder**,不支持的模型更容易出现 Agent 效果不稳定、工具能力缺失或运行时报错。如您使用范围外的端点、提供商或模型,Teable 不提供故障排查或效果支持。
diff --git a/zh/basic/automation/actions/ai/ai-generate.mdx b/zh/basic/automation/actions/ai/ai-generate.mdx
index 11507812..348e5a20 100644
--- a/zh/basic/automation/actions/ai/ai-generate.mdx
+++ b/zh/basic/automation/actions/ai/ai-generate.mdx
@@ -174,6 +174,6 @@ AI 会为你处理一切:选择合适的触发器和操作,映射字段,
## 相关文档
- [循环执行](/zh/basic/automation/actions/logic/loop-run)
-- [运行脚本指南](/zh/basic/automation/ai/scripting/ai-script-guide)
+- [运行脚本](/zh/basic/automation/ai/scripting/runscript)
- [发送邮件](/zh/basic/automation/actions/communication/send-email-overview)
- [更新记录](/zh/basic/automation/actions/records/update-record)
diff --git a/zh/basic/automation/actions/communication/smtp-sender.mdx b/zh/basic/automation/actions/communication/smtp-sender.mdx
index 808106ca..3a0546f5 100644
--- a/zh/basic/automation/actions/communication/smtp-sender.mdx
+++ b/zh/basic/automation/actions/communication/smtp-sender.mdx
@@ -87,5 +87,5 @@ description: "配置自定义 SMTP 服务器和发件人信息用于自动化邮
## 相关文档
-- [发送邮件](/zh/basic/automation/actions/communication/send-email)
+- [发送邮件](/zh/basic/automation/actions/communication/send-email-overview)
- [邮件接收时](/zh/basic/automation/trigger/email/email-received-overview)
diff --git a/zh/basic/automation/actions/logic/http-request.mdx b/zh/basic/automation/actions/logic/http-request.mdx
index 11b53d61..a46e22eb 100644
--- a/zh/basic/automation/actions/logic/http-request.mdx
+++ b/zh/basic/automation/actions/logic/http-request.mdx
@@ -172,4 +172,4 @@ HTTP 请求执行后,响应数据可供后续步骤引用。通常包括:
- [循环执行](/zh/basic/automation/actions/logic/loop-run)
- [Webhook 接收时](/zh/basic/automation/trigger/external/webhook-received)
-- [运行脚本指南](/zh/basic/automation/ai/scripting/ai-script-guide)
+- [运行脚本](/zh/basic/automation/ai/scripting/runscript)
diff --git a/zh/basic/automation/ai/scripting/ai-script-guide.mdx b/zh/basic/automation/ai/scripting/runscript.mdx
similarity index 95%
rename from zh/basic/automation/ai/scripting/ai-script-guide.mdx
rename to zh/basic/automation/ai/scripting/runscript.mdx
index a4b589b0..96ab5168 100644
--- a/zh/basic/automation/ai/scripting/ai-script-guide.mdx
+++ b/zh/basic/automation/ai/scripting/runscript.mdx
@@ -1,9 +1,15 @@
---
-title: "运行脚本指南"
+title: "运行脚本"
description: "在安全沙箱中运行自定义 JavaScript,处理内置操作无法覆盖的逻辑"
---
{/* mintlify-resync: 2026-05-14 */}
+
+我们强烈建议使用运行脚本来搭建自动化,因为它可以覆盖所有操作行为,包括原本需要手动搭建的操作。你只需在 AI 对话中描述需求即可。
+
+请注意:如果你手动添加操作,AI 后续将无法识别或修改它们。
+
+
运行脚本操作允许你编写自定义 JavaScript 代码,在安全沙箱环境中运行。当内置操作无法满足你的需求时,例如复杂的数据转换、条件分支逻辑或多步 API 调用,可以使用运行脚本处理。
## 何时使用运行脚本 vs 内置操作
@@ -207,7 +213,6 @@ try {
## 相关文档
-- [示例脚本](/zh/basic/automation/ai/scripting/sample-scripts)
- [HTTP 请求](/zh/basic/automation/actions/logic/http-request)
- [AI 生成](/zh/basic/automation/actions/ai/ai-generate)
- [循环执行](/zh/basic/automation/actions/logic/loop-run)
diff --git a/zh/basic/base.mdx b/zh/basic/base.mdx
index b6c08c07..365eabb6 100644
--- a/zh/basic/base.mdx
+++ b/zh/basic/base.mdx
@@ -8,34 +8,29 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te
对于不熟悉数据库的用户来说,可以将数据库类比为Excel中的工作簿,每个工作簿可以有多张表。
+## 创建和管理数据库
+
### 添加数据库
1. 进入空间
2. 点击右上角`创建数据库`
-### 重命名数据库
+### 重命名/删除数据库
1. 进入空间
2. 将鼠标悬停在目标数据库上
3. 点击`···`按钮打开菜单
-4. 点击`重命名`
-
-### 删除数据库
-
-1. 进入空间
-2. 鼠标悬浮在目标数据库上
-3. 点击`···`按钮打开菜单
-4. 点击`删除`
+4. 点击`重命名`或`删除`
@@ -60,15 +55,17 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te
如果数据库较大,复制窗口会显示复制进度。请等复制完成后再关闭窗口。记录修改历史和协作者不会被复制。
+## 导入和导出数据库
+
### 导入数据库(数据迁移)
`.tea` 文件格式支持导入完整的数据库,包括所有表格、字段、数据和配置。适用于以下场景:
-- **数据迁移**:在不同 Teable 实例之间迁移数据库(如从 Cloud 迁移到私有化部署)
+- **数据迁移**:在不同 Teable 实例之间迁移数据库(如从 Teable Cloud 迁移到私有化部署)
- **备份恢复**:恢复之前导出的数据库
- **模板共享**:与其他团队共享完整的数据库结构
@@ -79,7 +76,7 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te
4. 上传 `.tea` 文件确认导入
@@ -98,20 +95,17 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te
7. 导出完成后,在导出窗口中点击 **下载** 保存 `.tea` 文件
-
-**数据迁移提示**:要在 Teable 实例之间迁移数据,从源实例导出数据库,然后将 `.tea` 文件导入到目标实例。所有数据和配置都会保留。
-
-
-跨数据库关联字段会在导出文件中转换为单行文本。
+- 要在 Teable 实例之间迁移数据,从源实例导出数据库,然后将 `.tea` 文件导入到目标实例。所有数据和配置都会保留。
+- 跨数据库关联字段会在导出文件中转换为单行文本。
-### 分享数据库
+## 分享数据库
数据库可以通过公开链接分享。分享范围可以是整个数据库,也可以是当前选中的某个节点。
@@ -120,6 +114,12 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te
3. 开启 **公开分享到网络**
4. 复制分享链接或二维码
+
+
分享范围包括:
| 范围 | 说明 |
@@ -129,9 +129,15 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te
分享设置中可以配置链接权限、允许查看者复制数据、访问密码,也可以重新生成链接、删除分享链接或复制嵌入配置。
+
+
如果分享范围中包含应用节点,应用需要先发布后才能通过公开链接访问。
-### 数据库内的功能
+## 数据库内的功能
数据库可包含多个表格,用于组织和管理工作相关的各类信息。
diff --git a/zh/basic/field.mdx b/zh/basic/field.mdx
index 5f9a879d..9d8f88d4 100644
--- a/zh/basic/field.mdx
+++ b/zh/basic/field.mdx
@@ -4,55 +4,79 @@ description: "字段是表格中的列,用来存放不同类型的数据。通
---
{/* mintlify-resync: 2026-05-14 */}
-### 添加字段
+
+## 字段类型
+
+Teable 目前提供以下字段类型:
+
+| 分类 | 字段类型 |
+| --- | --- |
+| 基础字段 | [单行文本](/zh/basic/field/single-line-text)、[多行文本](/zh/basic/field/long-text)、[数字](/zh/basic/field/number)、[单选](/zh/basic/field/single-select)、[多选](/zh/basic/field/multiple-select)、[成员](/zh/basic/field/user)、[日期](/zh/basic/field/date)、[评分](/zh/basic/field/rating)、[勾选](/zh/basic/field/checkbox)、[附件](/zh/basic/field/attachment) |
+| 高级字段 | [公式](/zh/basic/field/formula)、[关联记录](/zh/basic/field/link)、[查找](/zh/basic/field/lookup)、[汇总](/zh/basic/field/rollup)、[条件查找](/zh/basic/field/conditional-lookup)、[条件汇总](/zh/basic/field/conditional-rollup)、[按钮](/zh/basic/field/button)、[自增数字](/zh/basic/field/auto-number) |
+| 系统字段 | [创建时间](/zh/basic/field/created-time)、[修改时间](/zh/basic/field/last-modified-time)、[创建人](/zh/basic/field/created-by)、[修改人](/zh/basic/field/last-modified-by) |
+
+## 添加字段
在表格视图中,可以按以下步骤操作来添加新的字段:
1. 进入表格视图
2. 将表格滑动至最右侧
-3. 点击字段栏最右侧的`+`号
- 
-4. 在弹出的对话框内编辑字段属性
-5. 点击`保存`
+3. 点击字段栏最右侧的 `+` 号
+
-### 编辑字段
+4. 在弹出的对话框内编辑字段属性
+5. 点击 `保存`
-您可以在创建字段时进行初始配置,也可以随时修改已有字段的设置。
+## 编辑字段
+
+可以在创建字段时进行初始配置,也可以随时修改已有字段的设置。
1. 右键单击要编辑的字段
- 
-2. 在展开的菜单中单击`编辑字段`选项
+
+
+
+2. 在展开的菜单中点击 `编辑字段`
3. 在编辑字段对话框中调整字段配置
-4. 点击`保存`
+4. 点击 `保存`
- 编辑字段类型时可能会触发字段类型转换。您可以将现有字段更改为其他类型,例如将单行文本字段转换为单选字段。
+ 编辑字段类型时可能会触发字段类型转换。可以将现有字段更改为其他类型,例如将单行文本字段转换为单选字段。
- 某些类型转换可能会导致数据丢失。例如,将文本字段转换为附件字段时,所有文本内容将无法保留,因为纯文本值无法转换为附件格式。
- - 如果在转换过程中发现数据丢失,您可以使用键盘快捷键 `Ctrl + Z`(Mac: `Command + Z`)撤销转换操作,字段将恢复到转换前的状态,丢失的数据也会被还原。
+ - 如果在转换过程中发现数据丢失,可以使用键盘快捷键 `Ctrl + Z`(Mac: `Command + Z`)撤销转换操作,字段将恢复到转换前的状态,丢失的数据也会被还原。
- 关于各种字段类型的详细说明和配置选项,请参阅相应的字段类型文档。
-### 删除字段
+## 删除字段
1. 右键单击目标字段的字段名称
- 
2. 在展开的上下文菜单中选择 `删除字段` 选项
3. 在弹出的确认对话框中点击 `确认` 完成删除
+## 隐藏字段
-### 隐藏字段
-
-您可以通过字段的右键菜单或视图工具栏来隐藏字段。隐藏后的字段不会在表格视图中显示,但数据依然保留。
+可以通过字段的右键菜单或视图工具栏隐藏字段。隐藏后的字段不会在表格视图中显示,但数据依然保留。
- **方法一**:右键单击字段名称,在菜单中选择 **隐藏字段**
-
- **方法二**:使用视图工具栏中的字段隐藏控制功能
在隐藏字段工具中,点击当前视图中可见的字段名称,表格会滚动到对应列并短暂高亮。需要显示或隐藏字段时,请使用字段旁边的开关。
-
-有关视图筛选、排序和分组等工具栏能力,请参阅[筛选](/zh/basic/view/toolbar/filter)、[排序](/zh/basic/view/toolbar/sort)和[分组](/zh/basic/view/toolbar/group)文档。
+
+
+有关视图筛选、排序和分组等工具栏能力,请参阅[视图工具栏](/zh/basic/view/toolbar)文档。
diff --git a/zh/basic/field/advanced/auto-number.mdx b/zh/basic/field/advanced/auto-number.mdx
deleted file mode 100644
index bb0c83fc..00000000
--- a/zh/basic/field/advanced/auto-number.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: "自增数字"
-description: "用于在创建新记录时自动生成连续且唯一的序列号。这种字段在需要为每条记录分配一个连续的、不重复的标识符时非常有用。"
----
-
-## 一、 创建与配置
- 1. 点击表头右侧的 `+` 图标,在字段类型列表中选择 **自动编号**
- 2. 输入字段名称(如“订单编号”、“会员ID”)
- 3. 字段创建后,会立即为现有记录及未来新增的记录自动填充序号
-
-## 二、 使用场景
-
-### 场景一:售后工单追踪
-- **场景**:当客户反馈Bug或咨询问题时,客服人员需要一个简短的数字ID来指代该问题,以便技术人员快速定位
-- **操作步骤**:
- 1. 新建“工单序号”字段(当前版本无起始值/格式等可配置项,系统通常从 1 开始自动递增)
- 2. 沟通时直接引用该ID(如:“请查看 #45 号工单”),极大提升跨部门沟通效率
-
-## 三、 功能特性
-
-- **自动递增**:无需人工干预,每增加一条新记录,编号自动 +1
-- **不可篡改**:自动编号属于记录元数据,用户无法手动修改或删除其中的具体数值
-- **持久化**:编号一旦生成即与记录绑定,不会因为排序、筛选或视图改变而发生变化
-
----
-
-## 四、注意事项
-
-- **删除留空(断号机制)**:自动编号是“只增不减”的。如果删除了编号为 `3` 的记录,系统不会回填该号码,下一条新记录依然会生成为 `4`。这意味着编号序列中可能会出现不连续的“断号”情况,这是为了保证历史数据的准确引用
\ No newline at end of file
diff --git a/zh/basic/field/advanced/button-practical-guide.mdx b/zh/basic/field/advanced/button-practical-guide.mdx
deleted file mode 100644
index 93c09342..00000000
--- a/zh/basic/field/advanced/button-practical-guide.mdx
+++ /dev/null
@@ -1,123 +0,0 @@
----
-title: "按钮字段实践"
----
-
-在遇到一些固定的、多节点的流程时,比如销售线索的流转、内容稿件的审批发布、项目任务的催办提醒等。这些流程往往需要我们花时间去手动复制、粘贴、切换应用和发送通知。
-
-「按钮」字段正是为解决这一痛点而生。它就像一个安装在每行数据上的“智能遥控器”,让你能一键触发预设好的复杂工作流。
-
-
-本文将带你搞懂两个问题:
-1. **按钮字段有什么用?**—— 解锁它的无限可能。
-2. **按钮字段要怎么用?**—— 手把手配置你的第一个自动化按钮。
-
-
----
-
-## 一、有什么用法?
-
-按钮字段的核心价值在于连接与执行。它可以连接表格内部的数据,也能连接外部的系统和服务,并将一系列操作封装成一次点击。
-
-### 场景1:线索一键转商机
-
-在CRM系统中,当销售人员判断一条线索已足够成熟,需要将其转化为商机进行重点跟进时,只需点击「转为商机」按钮。
-
-自动化流程会立即在“商机表”中创建一条新记录,并回填所有关键信息,同时将原线索的状态标记为“已转化”。
-
-
-### 场景2:稿件一键安排发布
-
-稿件审核通过后,编辑点击「安排发布」按钮。
-
-系统会自动在“社交媒体排期表”中创建一条待发布记录,并自动发送一封邮件通知负责社交媒体运营的同事:“新稿件《XXX》已进入排期,请及时处理。”
-
-
-### 场景3:任务一键催办
-
-项目任务临近截止日期但仍未完成,项目经理点击「催办」按钮。
-
-系统会立即通过企业微信/钉钉/飞书/邮件发送一条消息:“【任务催办】您负责的「XXX」任务即将到期,请加快进度!” 这将表格与团队的沟通工具无缝集成。
-
-
----
-
-## 二、要怎么用?
-
-下面,我们以最经典的“线索一键转商机”为例,详细拆解配置步骤。
-
-你需要两张表格:
-
-**「销售线索表」**和**「商机跟进表」**
-
-### 步骤一:创建按钮字段
-
-在「销售线索表」中,添加一个新字段:
-
-1. **字段类型**:选择「按钮」。
-2. **按钮文字**:输入“转为商机”,并选择一个醒目的颜色,如蓝色。
-3. **点击前需要确认**(可选):如果这一步不适合误触,可以开启确认弹窗,并填写标题、内容和确认按钮文字。
-
-### 步骤二:设计自动化流程
-
-这是将按钮与具体操作关联起来的核心环节。
-
-1. 点击“+ 自定义自动化”,创建一个新流程。
-
-2. **动作 (Action)**:配置点击按钮后要执行的操作。
-
- - **动作1:在“商机跟进表”中新增记录**
- - **选择动作类型**:「新增记录」。
- - **目标数据表**:选择「商机跟进表」。
- - **字段映射**:这是最关键的一步,将线索信息传递给新商机。
- > - `商机名称` 字段的值 = 来自触发记录的 `公司名称` 字段。
- > - `关联客户` 字段的值 = 来自触发记录的 `联系人` 字段。
- > - ...(根据需要映射更多字段)
- - **动作2:更新当前线索的状态**
- - 添加第二个动作,类型为「更新记录」。
- - **目标数据表**:「销售线索表」。
- - **记录ID**:选择“来自触发流程的记录”的ID。
- - **要更新的字段**:将 `状态` 字段的值更新为“已转化”。
-
-至此,“线索转商机”流程已配置完毕!
-
-## 💡 HTTP动作/消息/邮件推送
-
-在上述流程的“动作”环节,你还可以添加更多强大的动作:
-
-#### 发送邮件
-
-如果你希望在转化商机后通知销售总监,可以添加一个「发送邮件」动作。在配置中,你可以:
-- **收件人**:可以指定邮箱,也可以动态选择某个“成员字段”的值。
-- **主题/正文**:可以插入来自触发记录的动态内容。
- > 例如:“新商机转化提醒:[公司名称] 已由 [负责人] 成功转化为商机。”
-
-
-
-> 任务催办邮件示例
-
-#### HTTP请求
-这是一个进阶能力,用于和任何提供API接口的外部系统通信。例如,你想把转化成功的客户信息同步到另一个独立的软件中。
-
-
----
-
-## 三、进阶功能:用“点击次数限制”实现精准控制
-
-在按钮字段的配置中,有两个非常实用的高级选项:“限制点击次数”和“允许重置点击计数”。
-
-### 功能描述
-- **限制点击次数**:可以为每一条记录上的按钮设置一个最大可点击的次数。一旦达到上限,该按钮将变为不可点击状态。
-- **允许重置点击计数**:用户可以手动重置这个计数,让按钮恢复可点击状态。
-
-### 应用场景:限制单条线索重复转化
-
-**为什么要这样做?**
-
-这个简单的配置是流程严谨性的关键。将最大点击次数设为 `1`,可以确保一条线索只能被转化成一个商机,从根本上杜绝了因误操作产生重复数据的问题。
-
-- **最大点击计数**:设置为 `1`。
-- **允许重置点击计数**:保持关闭状态。
-
-
-
-通过这些细致的控制,按钮字段不再仅仅是一个触发器,更成为了一个带有业务规则和状态的智能控制器,能适应更多复杂和精细化的管理场景。
diff --git a/zh/basic/field/advanced/button.mdx b/zh/basic/field/advanced/button.mdx
deleted file mode 100644
index 028a6f16..00000000
--- a/zh/basic/field/advanced/button.mdx
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: "按钮"
----
-
-按钮字段是一个强大的交互式字段,将表格中的每一行数据都变成了一个可操作的单元。用户通过单击按钮,可以即时启动预先配置好的自动化流程,从而实现从简单状态更新到复杂系统集成的各种任务。
-
-### **核心功能**
-
-* **一键触发自动化**:用户在数据条目中点击按钮,即可作为“人工触发器”,启动自动化流程。这为需要人工判断和启动的流程提供了完美的入口。
-
-* **自定义按钮外观**:可以自由设定按钮上显示的文本和颜色,使其在视觉上更直观,清晰地传达按钮将执行的操作(如“提交审批”、“发送提醒”、“生成报告”)。
-
-### **常用场景**
-
-按钮字段的应用场景极为广泛,它能将重复性、多步骤的手动操作简化为一次点击。
-
-* **状态流转**:在项目管理或任务跟进中,可以设置“开始处理”、“完成任务”、“归档”等按钮,单击即可自动修改该条目中“状态”字段的内容,推动流程前进。
-
-* **数据流转**:在客户管理系统(CRM)中,当一条销售线索被有效转化时,可点击“转为商机”按钮。自动化流程会自动将该线索的重要信息新增到“商机表”中。
-
-* **通知与沟通**:当需要催办或通知消息,可设置“发送催办/提醒”按钮。点击后,自动化流程可以通过企业微信、钉钉、飞书或邮件发送一条包含本记录链接的定制化消息。
-
-* **系统集成与内容生成**:通过自动化中HTTP动作连接外部系统API,点击按钮可以触发连接外部产品。
-
-### **如何使用**
-
-1. **添加与配置**:在表格中新建字段,选择“按钮”类型。
- * **按钮文字与颜色**:自定义按钮上显示的文本(如“发送邮件”)和颜色。
- * **限制点击次数** (可选):开启“限制点击次数”开关,可为每条记录中的按钮设置一个“最大点击计数”(如1次)。您还可以进一步配置是否“允许重置点击计数”。
- * **点击前需要确认** (可选):开启后,可以配置确认弹窗的标题、内容和确认按钮文字,适合先确认再执行的操作。
-2. **配置按钮的自动化**:点击“自定义自动化”,配置一个新的自动化流程。
-3. **配置执行动作**:在自动化流程的“执行动作”部分,设置您希望按钮点击后发生的操作,例如:更新记录、新增记录、发送邮件等。
-
-### **注意事项**
-
-* **计入运行次数**:每次点击按钮并成功触发自动化流程,都将计入您工作空间的自动化流程运行次数。请参考相关文档了解运行次数限制。
-* **点击权限分离**:点击按钮的权限与编辑记录的权限是分离的。**即使用户只有只读权限,甚至是通过对外分享的链接访问,只要能看到按钮,就可以点击并触发流程。** 这使得在审批、投票或外部协作等场景中,可以安全地授予操作权限而无需开放数据编辑权限。
-* **依赖自动化流程**:按钮本身不执行任何操作,它的功能完全依赖于所关联的自动化流程。如果关联的流程被禁用或删除,点击按钮将不会产生任何效果。
diff --git a/zh/basic/field/advanced/conditional-lookup.mdx b/zh/basic/field/advanced/conditional-lookup.mdx
deleted file mode 100644
index 99e33aca..00000000
--- a/zh/basic/field/advanced/conditional-lookup.mdx
+++ /dev/null
@@ -1,128 +0,0 @@
----
-title: "条件查找"
----
-
-## 一、功能简介
-
-条件查找是一种跨表数据查询功能,允许您根据设定的筛选条件,从其他表中动态获取符合要求的数据记录,无需预先建立表之间的关联关系。
-
-- **灵活筛选**:支持复杂条件组合,精准定位目标数据
-- **动态匹配**:可引用当前表数据值作为筛选条件
-- **结果控制**:支持排序和数量限制,聚焦关键信息
-
-## 二、操作流程
-
-**步骤1:创建条件查找字段**
-1. 点击字段名最右侧的 + 图标
-2. 选择"条件查找"字段类型
-3. 输入字段标题(如"相关订单")
-
-**步骤2:选择目标数据表**
-1. 在"目标表选择"下拉菜单中选择要查询的数据表
-2. 系统将显示该表的字段列表供后续配置
-
-**步骤3:配置查找字段**
-1. 在"查找字段"中选择要提取的数据字段
-2. 确定返回数据的类型(文本、数字、日期等)
-
-**步骤4:设置筛选条件**
-1. 点击"添加筛选条件"
-2. 选择要筛选的字段
-3. 选择条件类型(等于、不等于、包含、大于、小于、包含、不包含等)
-4. 设置比较值:
- - 静态值:直接输入具体数值
- - 字段引用:选择当前表的字段作为动态值
-
-**步骤5:配置排序和限制(可选)**
-1. 设置排序字段和排序方式(升序/降序)
-2. 设置显示记录数量限制
-
-**注:** 筛选条件至少需要配置一个,多个条件可选择"所有条件满足(AND)"或"任一条件满足(OR)"的逻辑关系。
-
-## 三、场景实践
-
-### 场景1:销售数据周期环比
-
-**数据表:**
-- 周期销售统计表(包含周期、期初日期、期末日期、销售金额等字段)
-- 销售明细表(包含销售金额、销售日期等字段)
-
-**场景:**
-在周期销售统计表中计算每个周期的销售环比增长率。通过条件汇总获取当前周期和上一个周期的销售金额,然后使用公式计算环比值,实现自动化周期对比分析。
-
-
-
-**操作步骤:**
-
-**创建条件汇总字段获取当期销售额**
-1. 在周期销售统计表中新建条件汇总字段,标题设为"当期销售额"
-2. 目标表选择:销售明细表
-3. 汇总字段选择:销售金额
-4. 筛选条件设置:
- - 字段:销售日期 → 条件:早于或等于 → 值:当前表的期末日期字段
- - 字段:销售日期 → 条件:晚于或等于 → 值:当前表的期初日期字段
-5. 聚合函数选择:求和
-
-**创建条件查找字段获取上期销售额**
-1. 新建条件查找字段,标题设为"上期销售额"
-2. 目标表选择:周期销售统计表(本表)
-3. 字段选择:当期销售额
-4. 筛选条件设置:
- - 字段:期末日期 → 条件:等于 → 值:当前表的上期期末日期字段
-5. 聚合函数选择:求和
-
-**创建公式字段计算环比**
-1. 新建公式字段,标题设为"环比增长率"
-2. 公式设置:`(当期销售额 - 上期销售额) / 上期销售额 * 100`
-3. 格式设置:百分比,保留2位小数
-
-
-### 场景2:销售数据产品分析
-
-
-
-**数据表:**
-- 产品表(包含品类ID、产品名称、销量等字段)
-- 品类表(包含品类ID、品类名称等字段)
-
-**场景:**
-在品类表中查找每个品类下销量最高的产品,便于快速了解各品类的明星产品。
-
-**操作步骤:**
-
-**销量最高产品**
-1. 在品类表中新建条件查找字段,标题设为"销量最高产品"
-2. 目标表选择:产品表
-3. 查找字段选择:产品名称
-4. 筛选条件设置:
- - 字段:品类ID → 条件:等于 → 值:当前表的品类ID字段
-5. 排序设置:销量字段 → 降序
-6. 限制显示:1条记录
-
-**销量**
-1. 再次新建条件查找字段,标题设为"销量"
-2. 目标表选择:产品表
-3. 查找字段选择:销量
-4. 筛选条件设置:
- - 字段:品类ID → 条件:等于 → 值:当前表的品类ID字段
-5. 排序设置:销量字段 → 降序
-6. 限制显示:1条记录
-
-## 四、常见问题
-
-
-- **字段类型限制**:某些复杂字段类型(如图片、附件)不支持作为筛选条件
-
-
-
-主要区别在于:
-- **关联方式**:普通查找需要预先建立关联字段,条件查找可以动态设置筛选条件
-
diff --git a/zh/basic/field/advanced/conditional-rollup.mdx b/zh/basic/field/advanced/conditional-rollup.mdx
deleted file mode 100644
index 10d2c0b6..00000000
--- a/zh/basic/field/advanced/conditional-rollup.mdx
+++ /dev/null
@@ -1,110 +0,0 @@
----
-title: "条件汇总"
----
-
-## 一、功能简介
-
-条件汇总是一种跨表数据查询功能,在筛选数据的基础上进行统计计算,返回单个聚合结果值。它允许您根据设定的筛选条件,从其他表中获取符合要求的数据并进行统计分析,无需预先建立表之间的关联关系。
-
-- **条件聚合**:只对符合条件的数据进行统计,排除无关数据
-- **多维统计**:支持求和、计数、平均值等多种计算方式
-- **实时更新**:源数据变化时自动重新计算,确保数据准确性
-
-## 二、操作流程
-
-**步骤1:创建条件汇总字段**
-1. 点击字段名最右侧的 + 图标
-2. 选择"条件汇总"字段类型
-3. 输入字段标题(如"总销售额")
-
-**步骤2:选择目标数据表**
-1. 在"目标表选择"下拉菜单中选择要查询的数据表
-2. 系统将显示该表的字段列表供后续配置
-
-**步骤3:配置汇总字段**
-1. 在"汇总字段"中选择要进行统计计算的数据字段
-2. 确定数据类型(数值、文本、日期等)
-
-**步骤4:设置筛选条件**
-1. 点击"添加筛选条件"
-2. 选择要筛选的字段
-3. 选择条件类型(等于、不等于、包含、大于、小于、早于、晚于等)
-4. 设置比较值:
- - 静态值:直接输入具体数值
- - 字段引用:选择当前表的字段作为动态值
-
-**步骤5:选择聚合函数**
-
-- 根据数据类型选择合适的计算方式:原值、去重、去重计数、求和、计数、平均值、最大值、最小值等计算方式;
-
-## 三、场景实践
-
-### 场景1:团队任务量统计
-
-
-
-**数据表:**
-- 任务表
-- 统计表
-
-**场景:**
-团队管理员需要统计每个员工不同状态的任务数量,包括进行中、已完成等状态的任务量,用于工作负载管理和进度跟踪。
-
-**操作步骤:**
-
-**进行中任务数**
-1. 在员工信息表中新建条件汇总字段,标题设为"进行中任务数"
-2. 目标表选择:任务分配表
-3. 汇总字段选择:任务ID
-4. 筛选条件设置:
- - 字段:负责人 → 条件:等于 → 值:当前表的员工字段
- - 字段:任务状态 → 条件:等于 → 值:"进行中"
-5. 聚合函数选择:全计数
-
-**已完成任务数**
-1. 再次新建条件汇总字段,标题设为"已完成任务数"
-2. 目标表选择:任务分配表
-3. 汇总字段选择:任务ID
-4. 筛选条件设置:
- - 字段:负责人 → 条件:等于 → 值:当前表的员工字段
- - 字段:任务状态 → 条件:等于 → 值:"已完成"
-5. 聚合函数选择:全计数
-
-### 场景2:查找重复值
-
-
-
-**数据表:**
-- 客户表(包含客户名称、联系电话等字段)
-
-**场景:**
-在客户表中查找重复的客户名称,识别重复客户记录,用于数据清洗和客户信息管理。
-
-**操作步骤:**
-1. 在客户表中新建条件汇总字段,标题设为"客户名称重复次数"
-2. 目标表选择:客户表(本表)
-3. 汇总字段选择:客户名称
-4. 筛选条件设置:
- - 字段:客户名称 → 条件:等于 → 值:当前表的客户名称字段
-5. 聚合函数选择:全计数
-6. 新建公式字段,标题设为"重复标记"
-7. 公式设置:`IF(客户名称重复次数 > 1, "❗️ 重复", BLANK())`
-
-**效果:** 客户表中会显示每个客户名称的出现次数,并且在重复记录旁显示"❗️ 重复"标记,便于快速识别和处理重复数据。
-
-## 四、常见问题
-
-
-主要区别在于:
-1. **返回结果**:条件汇总返回单个计算值,条件查找返回多个原始值的列表
-2. **用途不同**:条件汇总用于统计分析,条件查找用于查看明细数据
-3. **计算方式**:条件汇总包含聚合计算,条件查找只是数据筛选和提取
-
\ No newline at end of file
diff --git a/zh/basic/field/advanced/created-by.mdx b/zh/basic/field/advanced/created-by.mdx
deleted file mode 100644
index 8c1399da..00000000
--- a/zh/basic/field/advanced/created-by.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: "创建人"
-description: "用于自动记录每一条数据记录的创建者信息,无需手动录入,系统会在记录生成的第一时间自动生成操作者身份。"
----
-
-## 一、 创建与配置
-
-### 1. 添加字段
-- **步骤**:
- 1. 点击表头右侧的 `+` 图标,在字段类型列表中选择 **创建人**
- 2. 输入字段名称(如“提交人”、“登记人”)
- 3. 字段添加后,会自动显示所有记录的初始创建者头像及昵称
-
-## 二、 使用场景
-
-### 场景一:工作量统计与追溯
-- **场景**:主管需要统计本周每位编辑提交了多少篇文章,或者当文章内容有误时快速找到第一责任人
-- **操作步骤**:
- 1. 基于“创建人”字段进行 **分组**,即可直观看到每位成员贡献的记录条数
- 2. 发现数据异常时,直接查看该字段即可锁定数据的初始来源,便于沟通修正
-
-## 三、 功能特性
-
-- **身份锚定**:精确记录数据生命周期的起点,回答“是谁创建了这条数据”的问题
-- **动态筛选**:支持“当前用户”动态变量,是构建个性化工作台及权限隔离的基础字段
-
-## 四、注意事项
-
-- **与“最后修改人”的区别**:“创建人”只记录 **第一次** 生成数据的人,后续无论谁修改了单元格内容,该字段都不会变;如果需要追踪数据的最新变动者,请使用 **最后修改人** 字段
-- **数据导入情况**:如果是通过 Excel/CSV 文件批量导入的数据,这些记录的“创建人”通常会被记录为 **执行导入操作** 的那个用户
\ No newline at end of file
diff --git a/zh/basic/field/advanced/created-time.mdx b/zh/basic/field/advanced/created-time.mdx
deleted file mode 100644
index d134b15b..00000000
--- a/zh/basic/field/advanced/created-time.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: "创建时间"
-description: "用于自动记录每一条数据记录最初生成的精确时间。此字段为用户提供了确切的时间参考,方便了解和追踪数据的生成时间。"
----
-
-## 一、 创建与配置
-
-- **步骤**:
- 1. 点击表头右侧的 `+` 图标,在字段类型列表中选择 **创建时间**
- 2. 输入字段名称(如“提交时间”、“登记日期”)
- 3. 字段添加后,回自动写入现有记录的创建时间,并对未来新增记录实时生效
-
-### 2. 显示格式配置
-用户可以调整以下三个维度的显示方式:
-- **日期格式**:定义日期的显示样式,适配不同业务场景的规范
-- **时间格式**:
- - **显示时间**:可选择 **12小时制**(如 `03:00 PM`)或 **24小时制**(如 `15:00`)
- - **隐藏时间**:如果不需要精确到分秒,可关闭时间显示,仅保留日期
-- **时区设置**:默认跟随当前查看者的系统时区。对于跨国协作团队,可以指定强制使用某一固定时区(如 `GMT+8 北京时间`),确保所有成员看到的时间标准一致,避免沟通误解
-
-### 二、 使用场景
-
-### 场景一:最新动态优先展示(排序)
-- **场景**:客服人员每天面对大量新增反馈,需要优先处理最新提交的问题
-- **操作步骤**:
- 1. 点击“创建时间”字段表头
- 2. 选择 **降序** 排列
- 3. 这样最新创建的记录会始终置顶显示,确保信息不遗漏
-
-### 场景二:周期性数据统计(筛选)
-- **场景**:月底复盘时,需要快速拉取本月新增的所有订单数据,不包含历史旧数据
-- **操作步骤**:
- 1. 点击工具栏的 **筛选** 按钮
- 2. 设置条件为:`创建时间` 是 `本月`
- 3. 将自动过滤出当月产生的所有记录,便于进行财务结算或业绩统计
-
-## 三、 功能特性
-
-- **不可篡改**:该字段为 **只读** 属性,任何人无法手动修改时间。
-
-## 四、注意事项
-
-- **导入数据的处理**:通过 Excel/CSV 导入数据时,新记录的“创建时间”为导入的时间
\ No newline at end of file
diff --git a/zh/basic/field/advanced/formula.mdx b/zh/basic/field/advanced/formula.mdx
deleted file mode 100644
index 5ebcd3a2..00000000
--- a/zh/basic/field/advanced/formula.mdx
+++ /dev/null
@@ -1,76 +0,0 @@
----
-title: "公式"
-description: "通过在字段中定义公式,开发者和用户能够对数据进行动态计算"
----
-
-公式字段允许您执行基于其他字段值的计算。这些计算可以是简单的数学运算,也可以是复杂的字符串操作或逻辑判断。
-
-### 数据类型与公式
-
-在开始编写公式之前,理解数据类型对于确保您的公式正常工作非常重要。不同的数据类型支持不同的操作和函数。常见的数据类型包括:
-
-* 数字:整数或小数,支持四则运算。
-* 文本:字符串值,支持连接和部分文本操作。
-* 日期:特定格式的日期,支持日期计算。
-* 布尔值:真(TRUE)或假(FALSE),用于逻辑运算。
-
-### 引用字段
-
-在公式中,您可以通过字段名称引用其他字段的值。请确保使用正确的字段名称,并注意字段名称对大小写敏感。
-
-### 公式编写实践
-
-编写公式时,您将会使用运算符、函数以及字段引用。下面是一些实用的公式编写实践:
-
-#### 使用运算符
-
-* **加法** (`+`): 用于计算数值的和或连接字符串。
-* **减法** (`-`): 用于计算数值的差。
-* **乘法** (`*`): 用于计算数值的积。
-* **除法** (`/`): 用于计算数值的商。
-* 取模 (`%`): 用于计算数值的模。
-
-#### 应用函数
-
-函数是执行特定操作的预定义公式。例如,`SUM` 函数可以计算多个值的总和,而 `LEFT` 函数可以从文本字段中提取一定数量的字符。对于文本处理,您也可以使用 `TEXTBEFORE` 按分隔符提取前半段文本,或使用 `TEXTSPLIT` 按分隔符拆分文本。
-
-#### 处理文本
-
-在处理文本时,可能需要使用到以下操作:
-
-* **连接**:使用 `&` 或 `CONCATENATE` 函数将两个或多个文本字符串连接起来。
-* **子串**:使用 `LEFT`、`RIGHT`、`MID` 或 `TEXTBEFORE` 函数来提取字符串的一部分。
-* **拆分文本**:使用 `TEXTSPLIT` 按指定分隔符将文本拆成多个值。
-
-#### 逻辑判断
-
-使用 `IF` 函数进行逻辑判断可以根据条件返回不同的值。格式如下:
-
-```js
-IF(condition, value_if_true, value_if_false)
-```
-
-如果需要判断字段是否为空,建议使用 `BLANK()` 进行比较。例如,`IF({重量}=BLANK(), 1, 2)` 会在数字字段为空时返回 `1`,否则返回 `2`。
-
-#### 复杂表达式
-
-您可能需要编写包含多个操作和函数的复杂表达式。在这种情况下,请确保使用正确的括号来控制操作的顺序。
-
-### 格式化和交互展现
-
-公式结果也可以继续使用[格式化](/zh/basic/field/common/formatter)和[交互展现](/zh/basic/field/common/show-as)配置,比如显示为百分比、进度条或图标样式。由于结果类型会在你输入公式时被推导出来,可配置项也会随之联动显示。
-
-## 调试与优化
-
-公式编写正确后,它应该能够无错误地执行并返回预期结果。如果公式不按预期工作,您可能需要进行调试。
-
-### 调试建议
-
-* **检查数据类型**:确认您的操作和函数使用了正确的数据类型。
-* **验证字段引用**:确保引用的字段名称正确无误。
-* **逐步检查**:将复杂公式拆分成较小的部分,分别测试每个部分。
-
-### 性能考虑
-
-* **避免冗余计算**:如果同一个计算在多个地方使用,考虑将其结果存储在一个单独的字段中。
-* **限制使用复杂函数**:一些复杂的函数,如那些涉及大量数据操作的函数,可能会影响性能。
diff --git a/zh/basic/field/advanced/formula/grammar.mdx b/zh/basic/field/advanced/formula/grammar.mdx
deleted file mode 100644
index adb5bde9..00000000
--- a/zh/basic/field/advanced/formula/grammar.mdx
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: "公式语法"
----
-
-### 基础元素
-
-在我们的公式语法中,有几种基础元素:
-
-* **字符串**:这是由单引号或双引号包围的文本,例如 'Hello' 或 "World"。
-* **数字**:
- * **整数**:像 123 或 -456 这样的纯数字。
- * **小数**:如 12.34 或 -45.67 这样的带小数点的数字。
-* **布尔值**:这包括 `TRUE` 和 `FALSE`,代表真和假。
-* **字段引用**:用于指代某个特定字段的值。它们必须写成大括号包围的形式,例如 `{age}`,并且字段名需要和实际字段一致。
-
-### 操作符
-
-公式中的操作符用于连接或比较值:
-
-* **数学运算**:
- * 加法(+)
- * 减法(-)
- * 乘法(\*)
- * 除法(/)
- * 取模(%)
-
-* **比较运算**:
- * 大于(>)
- * 小于(\<)
- * 大于或等于(>=)
- * 小于或等于(\<=)
- * 等于(=)
- * 不等于(!=)
-* **逻辑运算**:
- * 逻辑与(&&)
- * 逻辑或(||)
-
-### 函数调用
-
-你可以在公式中调用函数。一个函数调用由函数名、一对括号和括号内的参数组成。参数之间使用逗号分隔。
-
-例如:`sum(1, 2, 3)` 调用了一个名为 `sum` 的函数,并向其传递了三个参数:1、2 和 3。
-
-### 其他结构
-
-1. **括号**:你可以使用括号来改变运算的优先级,例如 `(1 + 2) * 3`。
-2. **注释**:为了让公式更具可读性或为其他用户提供额外的上下文信息,你可以在公式中添加注释。块注释使用 `/*` 和 `*/` 包围,而行注释则以 `//` 开始。
-3. **空白和空格**:在公式中,空白、换行和注释通常会被忽略,但它们可以帮助提高公式的可读性。
diff --git a/zh/basic/field/advanced/last-modified-by.mdx b/zh/basic/field/advanced/last-modified-by.mdx
deleted file mode 100644
index dc2bbf83..00000000
--- a/zh/basic/field/advanced/last-modified-by.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: "修改人"
-description: "用于自动记录最后一次对数据行进行编辑的用户身份。为团队提供了一个清晰、准确的跟踪数据更改来源的方式。"
----
-
-## 一、 创建与配置
-
-- **步骤**:
- 1. 点击表头右侧的 `+` 图标,在字段类型列表中选择 **修改人**
- 2. 输入字段名称(如“最后编辑者”、“更新人”)
- 3. 字段创建后,修改人字段会自动更新,记录当前操作的用户为最后的修改者。
-
-## 二、 使用场景
-
-### 场景一:协作责任追溯
- 项目经理发现某项任务的状态突然被改为“已取消”,需要确认是哪位成员进行的操作,以便沟通原因
- 1. 直接查看该任务行的“修改人”字段
- 2. 配合 **修改时间** 字段,可以精准定位“谁”在“什么时候”进行了最后一步操作,快速厘清责任或同步信息
-
-### 场景二:跟进动态复盘(动态筛选)
- 销售人员每天会对多个客户信息进行补充或状态更新,下班前希望检查自己今天所有经手过的客户数据
- 1. 点击工具栏的 **筛选** 按钮
- 2. 设置条件为:`修改人` 是 `当前用户`
-
----
-
-## 三、 功能特性
-
-- **自动更新**:当记录中任何单元格内容发生变化时,系统自动将字段值更新为当前操作用户
-- **只读属性**:该字段不支持手动选择或修改,用户不能手动更改这个字段的值。
-- **基于修改者筛选**:支持根据数据的最后修改者动态筛选内容,帮助团队快速定位特定成员更新的数据
diff --git a/zh/basic/field/advanced/last-modified-time.mdx b/zh/basic/field/advanced/last-modified-time.mdx
deleted file mode 100644
index dbc5e197..00000000
--- a/zh/basic/field/advanced/last-modified-time.mdx
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: "修改时间"
-description: "用于自动记录数据行最后一次被编辑的精确时间。此字段为用户提供了数据变更的时间线索。"
----
-
-## 一、 创建与配置
-
-### 1. 添加字段
-- **步骤**:
- 1. 点击表头右侧的 `+` 图标,在字段类型列表中选择 **修改时间**
- 2. 输入字段名称(如“最后更新时间”、“最近维护”)
- 3. 字段添加后,会显示每条记录最后一次变动的时间点
-
-### 2. 字段追踪配置
-可以配置哪些字段的变更会触发时间更新:
-- **追踪所有字段**(默认):记录中任意字段发生修改都会更新时间
-- **指定字段追踪**:只有选定的字段发生变化时才会更新时间
- - **精准追踪**:避免无关改动"干扰"时间记录,让时间更准确地反映重要内容的变更
- - **多字段组合**:可同时选择多个字段(如"标题+状态"),任意一个被修改都会同步更新时间
-
-### 3. 显示格式配置
-进入字段配置页面,您可以自定义时间的呈现方式:
-- **日期格式**:选择日期的显示样式(如 `2024-01-30` 或 `2024年1月30日`)
-- **时间格式**:选择是否显示具体时间(时:分),以及切换 12小时/24小时制
-- **时区设置**:支持指定特定时区,或跟随查看者的系统时区动态调整,确保跨时区协作时的时间认知一致
-
-## 二、 使用场景
-
-### 场景一:查找最近更新的任务(排序)
-晨会时,团队需要快速过一遍昨天下午到今天早上有进展的任务
-- **操作步骤**:
- 1. 点击“修改时间”字段表头
- 2. 选择 **降序 (Z -> A)** 排列
- 3. 最近发生变动的记录会自动排在最上方,团队可直接聚焦这些高活跃度任务进行讨论
-
-### 场景二:追踪核心内容变更(指定字段追踪)
-项目管理中,只想关注任务标题和状态的变化,而不希望负责人调整、优先级微调等操作"干扰"重要变更的时间记录
-- **配置步骤**:
- 1. 进入修改时间字段配置
- 2. 选择 **指定字段追踪**
- 3. 勾选 "标题" 和 "状态" 字段
-- **效果**:只有当任务的标题或状态发生变化时,修改时间才会更新,让时间记录真正反映任务的实质性进展
-
-### 场景三:清理沉睡数据(筛选)
-需要找出超过3个月没有任何跟进记录的"死线索",将其释放或重新分配
-- **操作步骤**:
- 1. 点击工具栏的 **筛选** 按钮
- 2. 设置条件为:`修改时间` `早于` `90天前`
- 3. 系统将过滤出所有长期未被编辑过的记录,便于用户进行批量清理或激活
-
-## 三、 功能特性
-
-- **自动更新**:每当记录发生更改,此字段都会自动更新为当前的日期和时间
-- **字段追踪**:支持追踪所有字段或只追踪指定字段,让时间记录更精准、更有业务意义
-- **根据修改时间筛选**:用户可以按照最后的修改时间来筛选数据,帮助找到在特定时间段内更新的记录
-- **按修改时间排序**:能够根据最近的更改时间对记录进行排序,方便查找最新或最旧的记录
\ No newline at end of file
diff --git a/zh/basic/field/advanced/link.mdx b/zh/basic/field/advanced/link.mdx
deleted file mode 100644
index 698d79a8..00000000
--- a/zh/basic/field/advanced/link.mdx
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: "关联"
-description: "关联字段是是连接不同数据表的桥梁。允许用户在不同的数据表之间建立关系。通过关联字段,用户可以轻松地在当前表中插入其他表中的记录,并快速查看和跳转至关联的数据表。"
----
-
-## 一、 创建与配置
-
-通过简单的配置,即可将两张表的数据打通,实现跨表协作。
-
-### 1. 新建关联字段
-1. 在 A 表(如“订单表中点击添加字段,选择 **关联** 类型
-2. 在弹出的配置窗口中,选择您希望关联的 B 表(如“客户表”)
-
-### 2. 选择关联模式(单向/双向)
-- **双向关联**:默认开启。系统会在 A 表创建关联字段的同时,自动在 B 表也创建一个对应的关联字段。
- - 在“订单表”关联了“张三”,去“客户表”看“张三”的记录时,也会自动显示关联了哪些“订单”。两边数据实时同步,互为镜像。
-- **单向关联**:关闭双向开关。仅在 A 表显示关联信息,B 表不显示。
- - 只需单方面引用数据,不想干扰被引用表的结构(例如员工表单向关联城市表,城市表无需显示哪些员工住在这里)。
-
-### 3. 关联关系及如何建立
-
-通过组合配置 **“允许多选”** 和 **“允许重复值”** 两个开关,可以定义四种标准的数据关系模型:
-
-| 关系模型 | 业务场景示例 | 配置方式 |
-| :--- | :--- | :--- |
-| **一对一 (1:1)** | **员工 - 档案** 一个员工只能有一份档案,一份档案也只属于一个员工 | ☐ 允许多选 ☐ 允许重复值 *(两个开关均关闭)* |
-| **一对多 (1:N)** | **部门 - 员工** 一个部门包含多个员工,但一个员工只属于一个部门 | ☑ 允许多选 ☐ 允许重复值 *(仅开启允许多选)* |
-| **多对一 (N:1)** | **任务 - 项目** 多个任务属于同一个项目,但一个任务只能属于一个项目 | ☐ 允许多选 ☑ 允许重复值 *(仅开启允许重复值)* |
-| **多对多 (N:N)** | **学生 - 课程** 一个学生选修多门课,一门课也有多个学生上 | ☑ 允许多选 ☑ 允许重复值 *(两个开关均开启)* |
-
-## 二、 使用场景
-
-### 场景一:CRM 客户管理(一对多)
-- **数据表**:`公司表` + `联系人表`
-- **关系**:一家公司可能有多个联系人(CEO、采购经理等),但一个联系人通常只属于一家公司
-- **操作**:
- 1. 在 `公司表` 创建关联字段指向 `联系人表`
- 2. 开启“允许多选记录”,这样在“字节跳动”这条记录里,可以同时关联“张三”、“李四”两个人
- 3. 系统自动在 `联系人表` 生成“所属公司”字段,自动限制为单选(因为已是一对多),张三只能归属于一个公司
-
-### 场景二:项目任务分配(多对一)
-- **数据表**:`任务表` + `项目表`
-- **关系**:多个细分任务属于同一个大项目
-- **操作**:
- 1. 在 `任务表` 创建关联字段指向 `项目表`
- 2. 关闭“允许多选记录”,确保每个任务只能归属 1 个项目
- 3. 这样在查看 `项目表` 时,可以看到该项目下挂载的所有任务列表
-
----
-
-## 三、 功能特性
-
-- **数据一致性**:关联的是记录对象而非简单的文本。如果“客户表”里的“张三”改名为“张三丰”,所有关联了该记录的订单表会自动同步更新名字,无需手动修改
-- **扩展能力**:建立关联是使用 **查找** 和 **汇总** 字段的前提。只有先关联,才能进一步引用对方的电话号码,或汇总对方的消费总金额
-
----
-
-## 四、注意事项
-
-- **一对多限制**:在严格的“一对多”关系配置下(B表侧关闭多选),一旦 B 表的某条记录(如“身份证号”)被 A 表某条记录关联,它就不能再被 A 表其他记录选择了。这能有效防止数据重复占用(如一个身份证号不能对应两个员工)
\ No newline at end of file
diff --git a/zh/basic/field/advanced/lookup.mdx b/zh/basic/field/advanced/lookup.mdx
deleted file mode 100644
index 82ebc6f5..00000000
--- a/zh/basic/field/advanced/lookup.mdx
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: "查找"
-description: "查找字段是建立在关联关系之上的数据引用字段。通过查找,您可以跨表共享数据,且无需重复录入,确保了数据的一致性和完整性。"
----
-
-## 一、 创建与配置
-
-**前置条件**:在使用查找功能之前,您必须先在两个表之间建立 **关联关系**。
-
-### 1. 添加查找字段
-1. 在表格视图中点击 `+` 添加字段,选择 **查找** 类型
-2. **选择关联字段**:会列出当前表中已有的关联字段,基于已有的关联字段,请选择您所需查询的源表及具体字段。(例如:通过“关联作者”去查找)
-3. **选择目标字段**:选择您希望从源表中获取哪个字段的数据(例如:获取作者的“出生日期”)
-
-### 2. 自动同步
-配置完成后,系统会自动根据已有的关联关系,将源表的数据填入当前列。
-- 如果关联记录发生变化(例如换了一个作者),查找的内容会自动更新
-- 如果源表数据发生变化(例如修改了作者的生日),查找的内容也会实时刷新
-
-## 二、 使用场景
-
-### 场景实践:图书管理系统
-- **数据表**:
- 1. **作者详情表**:包含字段 `作者姓名`、`出生日期`
- 2. **书籍库表**:包含字段 `书籍名称`、`关联作者`(关联字段)
-- **场景**:
- 在浏览书籍列表时,希望能直接看到该书作者的出生日期,而不需要点进作者详情页查看,也不希望手动把日期再抄写一遍
-- **操作步骤**:
- 1. 在 **书籍库表** 中,确保 `关联作者` 字段已正确关联了对应的作者(如《代码大全》关联了 "Steve McConnell")
- 2. 新建 **查找** 字段,命名为 `作者生日`
- 3. 配置:通过 `关联作者` 字段,去查找作者详情表中的 `出生日期` 字段
- 4. **结果**:《代码大全》这一行会自动显示 "1960"
-
----
-
-## 三、 功能特性
-
-- **格式继承**:查找字段的数据类型、格式化(如日期格式、数字精度)和交互展现(如URL点击跳转)均**完全继承自源字段**。
- - 例如:查找的是一个“日期”字段,那么查找字段也就具备日期的特性;查找的是“数字”,它就可以参与数字计算
-- **公式联动**:查找字段获取到的数据可以直接被 **公式** 引用。
- - 例如:查找到了 `商品单价`,可以在当前表用公式计算 `单价 * 数量 = 总价`
-
----
-
-## 四、 注意事项
-
-- **只读属性**:查找字段是 **只读** 的,您无法在当前表中修改它。如果需要修改数据,请回到源表中编辑原始字段
-- **单值与多值(重点)**:
- - 如果关联关系是 **一对一**,查找结果就是单一值(如:1960)
- - 如果关联关系是 **一对多**(例如一本书关联了两个作者),查找结果会自动变成 **多值数组**(如:1960, 1963),以逗号分隔显示。
-- **数据依赖**:查找字段的存在依赖于关联字段和源字段。如果删除了关联字段,或源表中的目标字段被删除,查找字段将失效
\ No newline at end of file
diff --git a/zh/basic/field/advanced/rollup.mdx b/zh/basic/field/advanced/rollup.mdx
deleted file mode 100644
index 6f4e477f..00000000
--- a/zh/basic/field/advanced/rollup.mdx
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: "汇总"
-description: "汇总字段用于对关联表中的多条数据进行聚合计算。基于关联的记录,汇总对方表中的数据,并进行求和、计数、平均值、最大/最小值等统计操作,常用于订单总额计算、任务进度统计等场景。"
----
-
-{/* mintlify-resync: 2026-05-14 */}
-## 一、 创建与配置
-
-**前置条件**:与查找字段类似,创建汇总字段前必须先建立 **关联关系**。
-
-### 1. 新建汇总字段
-1. 点击表头 `+` 添加字段,选择 **汇总** 类型
-2. **选择关联字段**:指定数据来源的链路
-3. **选择目标字段**:指定要对哪个字段进行计算
-4. **选择汇总函数**:指定具体的计算逻辑
-
-### 2. 格式与展现
-汇总后的结果(通常是数字)支持进一步的格式化处理:
-- **格式化**:设置小数精度、添加货币符号(如 `$100.00`)或设置为百分比
-- **交互展现**:将计算出的数值配置为进度条或环状图,增强可视化效果
-
-## 二、 使用场景
-
-### 场景实践:书店订单结算
-- **数据表**:
- 1. **书籍库表**:包含字段 `书名`、`价格`
- 2. **订单表**:包含字段 `订单号`、`所选书籍`(关联字段,允许多选)
-- **场景**:
- 一个订单中可能包含多本书,系统需要自动计算出该订单的总金额,无需人工按计算器
-- **操作步骤**:
- 1. 在 **订单表** 中,确保 `所选书籍` 字段关联了多本具体的书(如订单001关联了《代码大全》`$60` 和 《设计模式》`$40`)
- 2. 新建 **汇总** 字段,命名为 `订单总额`
- 3. 配置逻辑:通过 `所选书籍` 关联,选择目标字段 `价格`,统计函数选择 `求和`
- 4. **结果**:订单001 的总额会自动显示为 `$100`
-
-## 三、 功能特性
-
-### 支持的统计函数
-
-| 公式名 | 解释 |
-| -------------- | -------------------------- |
-| COUNTALL | 计算所有值,包括文本和空值 |
-| COUNTA | 计算非空值的数量 |
-| COUNT | 计算数值项的数量 |
-| SUM | 计算所有数值的总和 |
-| MAX | 返回所有数值中的最大值 |
-| MIN | 返回所有数值中的最小值 |
-| AND | 如果所有值都为真,则返回真 |
-| OR | 如果任何值为真,则返回真 |
-| XOR | 如果奇数个值为真,则返回真 |
-| ARRAY\_JOIN | 将数组中的所有值连接成一个字符串 |
-| ARRAY\_UNIQUE | 从数组中删除重复的值,并返回一个仅包含唯一值的新数组 |
-| ARRAY\_COMPACT | 从数组中删除所有空值,并返回一个新数组 |
-| CONCATENATE | 将多个值连接成一个字符串 |
-
-## 四、 注意事项
-
-- **动态更新**:汇总字段的结果是实时计算的。如果修改了源数据(如调整了书的价格)或改变了关联关系(如删减了订单里的书),汇总结果会自动刷新
-- **数据类型限制**:某些函数仅对特定类型生效。例如 `求和`只能用于数字字段,如果您选择了一个文本字段,系统将不会提供求和选项
-- **性能提示**:大量的汇总操作可能会影响性能,特别是当涉及到的数据记录非常多时。系统会尽可能的提供最快的计算速度,建议合理规划关联结构,适时地优化和审查你的汇总设置。
diff --git a/zh/basic/field/advanced/user.mdx b/zh/basic/field/advanced/user.mdx
deleted file mode 100644
index 2de6452c..00000000
--- a/zh/basic/field/advanced/user.mdx
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: "成员"
-description: "成员字段允许用户指定、识别和分类项目中的参与者。常用于标识任务负责人、项目参与者或审批人。通过利用成员字段,您可以轻松地管理和区分与特定项目或任务相关的人员。"
----
-
-## 一、 创建与配置
-
-### 1. 新建成员字段
-1. 点击表头 `+` 添加字段,选择 **成员** 类型
-2. 输入字段名称(如“负责人”、“执行者”)
-3. **允许多选**:
- - **开启**:一条记录可以选择多个用户(适用于“协作任务”)
- - **关闭**:一条记录只能选择一个用户(适用于“责任到人”的明确分工)
-4. **用户被选择后发送通知**:
- - **开启**:当用户被选中时,会收到通知
- - **关闭**:当用户被选中时,不会收到任何通知
-
-#### 多选配置影响
-
-**开启"允许多选"**:一条任务可分配给多人,适合协作任务
-
-**关闭"允许多选"**:一条任务只能分配给一人,责任明确
-
-## 二、 使用场景
-
-### 场景一:任务分配与看板管理
-- **需求**:项目经理需要将任务分配给团队成员,并希望能直观看到每个人手头有多少活
-- **操作**:
- 1. 新建“负责人”字段(建议关闭多选)
- 2. 创建 **看板视图**,将分组维度设置为“负责人”
- 3. **效果**:所有任务按人头排列成列。拖拽卡片到某人列下,即可直接变更该任务的负责人
-
-### 场景二:打造“我的工作台”(动态筛选)
-- **需求**:团队成员每天登录系统,只想看属于自己的待办事项,不被他人数据干扰
-- **操作**:
- 1. 在表格或看板视图中,点击 **筛选**
- 2. 设置条件:`负责人` `是` `当前登录用户`
- 3. **效果**:张三登录只看到张三的任务,李四登录只看到李四的任务。只需配置一个视图,全员通用
-
-## 三、 功能特性
-
-- **消息通知**:在开启用户被选择后发送通知,被选中的用户会收到通知
-
-## 四、 注意事项
-
-- **多选与分组**:如果开启了“允许多选”,在进行分组或看板视图展示时,一条记录可能会出现在多个分组中(例如任务同时分给A和B,那么A的列和B的列下都会显示这条任务)
\ No newline at end of file
diff --git a/zh/basic/field/ai/ai-field.mdx b/zh/basic/field/ai/ai-field.mdx
index aaf726c8..9567dd77 100644
--- a/zh/basic/field/ai/ai-field.mdx
+++ b/zh/basic/field/ai/ai-field.mdx
@@ -7,134 +7,144 @@ description: "AI 字段可以直接帮你整理文本、分类标签、生成评
## 主要用途
-AI 字段适合把原始内容直接变成可用结果。常见场景包括:
-
-- 把一段文字整理成摘要
-- 把内容翻译成另一种语言
-- 从文本里提取关键信息
-- 把内容改写得更简洁或更专业
-- 自动给单选字段分类,给多选字段打标签
-- 给评分字段打分,或者把图片相关内容生成成新图片
+AI 字段会根据同一行里的其他字段内容生成当前字段值。它适合把原始内容整理成摘要、翻译、提取结果、分类标签、评分、日期或图片。
+
+
+
+ 总结、翻译、提取信息、文案改写、自定义生成。适合把长文本整理成可直接使用的文字结果。
+
+
+ 智能分类、自定义生成。适合把内容匹配到一个已有分类。
+
+
+ 智能标签、自定义生成。适合为内容匹配一个或多个已有标签。
+
+
+ 评分、自定义生成。适合根据内容生成分数或数值结果。
+
+
+ 提取信息、自定义生成。适合从内容中提取日期或时间。
+
+
+ 图像生成、自定义生成。适合根据文字或附件生成图片。
+
+
+
+如果不确定该选哪种动作,可以先看下面的说明:
+
+
+
+ - **总结**:根据来源字段生成摘要。
+ - **翻译**:将来源字段翻译成目标语言。
+ - **提取信息**:从文本中提取指定信息,日期字段也可以用它提取日期或时间。
+
+
+ - **文案改写**:根据附加要求调整表达方式。
+ - **智能分类**:为单选字段匹配已有选项。
+ - **智能标签**:为多选字段匹配已有选项。
+
+
+ - **评分**:根据来源内容生成评分或数值。
+ - **图像生成**:会在附件字段中生成图片,部分模型支持选择附件字段作为参考图。
+
+
+ 用自定义提示词控制输出,适合默认动作无法覆盖的场景。自定义提示可以引用同一行里的字段。
+
+
## 操作流程
-### 1. 新增字段
-
-- 先设置字段名称和字段类型。
-- 再进入 AI 配置,选择适合这个字段的 AI 动作。
-- 根据需要补充来源字段、提示词和自动更新设置。
+
+
+ 创建字段时,先选择字段类型,再展开 **AI 配置**。不同字段类型会显示不同的 AI 动作。
+
+
+ 选择 **AI 动作类型** 和 **AI 模型**。动作决定要执行的任务,模型决定使用哪一个 AI 模型生成结果。
+
+
+ 选择 AI 要读取哪一列作为输入。AI 字段会根据同一行里的来源字段内容生成当前字段值。
+
+
+ 根据动作填写 **附加要求**、**目标语言** 或 **自定义提示**。附件字段生成图片时,可以使用 **高级设置** 调整图片尺寸、质量、数量、宽高比、分辨率或参考图,具体选项取决于所选模型。
+
+
-- 文本字段常用动作
- - 总结
- - 翻译
- - 提取信息
- - 文案改写
- - 自定义生成
-- 单选字段常用动作
- - 智能分类
- - 自定义生成
-- 多选字段常用动作
- - 智能标签
- - 自定义生成
-- 评分字段常用动作
- - 评分
- - 自定义生成
-- 日期字段常用动作
- - 提取信息
- - 自定义生成
-- 附件字段常用动作
- - 生成图片
+编辑 AI 字段时,可以修改动作类型、模型、来源字段、附加要求、自定义提示和自动更新。保存后,新配置会用于之后的生成;如果已有结果不符合预期,可以重新生成。
-### 2. 编辑字段
+## 自动更新和批量生成
-- 选择来源字段。
-- 添加附加要求。
-- 选择 AI 模型。
-- 自动更新
- - 开启后,来源内容变化时,字段结果也会跟着更新。
+开启 **自动更新** 后,当来源字段内容或 AI 配置变化时,AI 字段会按当前配置同步更新。它适合需要持续保持结果一致的场景,比如根据反馈内容更新分类、摘要、评分或标签。
-
+保存新增字段或修改后的 AI 配置时,可以选择是否立刻处理当前视图里的记录:
-点击保存后,AI 字段就可以开始使用,如图所示。
+
+
+ 只为没有结果的单元格生成内容,不覆盖已有内容。
+
+
+ 为当前视图里的记录重新生成结果,会覆盖已有内容。
+
+
+ 只保存字段配置,不立即写入单元格。
+
+
-如果对输出结果不满意,可以重新生成内容。
+选择生成方式后,Teable 会显示当前任务状态。
-#### 批量快捷操作:
-
-右键菜单里的“更新整列记录”可以一次更新整列,是否可用取决于当前视图和权限。
-
-## 动作说明
-
-### 总结
-
-根据来源字段和附加要求,对内容做摘要。
-
-### 翻译
+如果之后还需要重新生成,可以直接从字段菜单操作,不需要再次保存配置。
-根据来源字段和附加要求,对内容进行翻译。
-
-### 提取信息
-
-根据来源字段和附加要求,从内容中提取指定信息。
-
- 如果需要上传图片或者文件,注意将指定字段类型修改成附件类型。
-
-### 文案改写
-
-根据来源字段和附加要求,改写文案表达。
-
-### 智能分类
-
-- 单选字段可以用智能分类。
-- 多选字段可以用智能标签。
-- 这两种方式都适合把内容快速整理成可浏览、可筛选的标签结果。
+右键菜单里的 **生成** 可以按当前视图批量生成。是否可用取决于当前视图和权限。
-### 自定义生成
+## 常见问题
-可以结合多个字段,自定义提示词,生成你想要的结果。
+
+
+ 创建字段或修改 AI 配置后,保存时可以选择 **仅填充空单元格**、**整列生成** 或 **仅保存配置**。如果之后再想批量生成,可以从字段右键菜单里点击 **生成**。
+
-
+
+ 如果希望来源字段内容变化后,AI 字段也跟着更新,就开启 **自动更新**。如果只想手动控制生成时机,可以关闭它,之后需要时再使用 **生成**。
+
- 除了 Teable 官方提供的模型,Teable 也支持[使用第三方模型 API](/zh/basic/ai/custom-model),可以在空间设置里配置。
+
+ AI 动作会根据字段类型显示。比如文本字段适合总结、翻译和提取信息;单选字段适合智能分类;多选字段适合智能标签;附件字段适合图像生成。
+
-### 生成图片
+
+ 模型列表来自 Teable 提供的模型,或当前空间自己配置的 AI 模型。如果需要使用第三方模型,请先在空间设置中添加自定义 AI 模型。
+
-附件字段可以使用 **生成图片**,根据文本字段、附件字段,或两者组合生成图片。
+
+ 图像尺寸、质量、数量、宽高比、分辨率和参考图等选项,会根据所选模型变化。
+
+
diff --git a/zh/basic/field/attachment.mdx b/zh/basic/field/attachment.mdx
new file mode 100644
index 00000000..12165a37
--- /dev/null
+++ b/zh/basic/field/attachment.mdx
@@ -0,0 +1,79 @@
+---
+title: "附件"
+description: "用于在记录中保存图片、PDF、文档和其他文件,支持预览、下载和批量下载。"
+---
+
+{/* mintlify-resync: 2026-05-14 */}
+附件字段用于在记录中保存一个或多个文件。常见场景包括上传合同、图片、发票、设计稿、简历、报告,或者保存 AI 字段生成的图片。
+
+## 适用场景
+
+| 场景 | 适合内容 |
+| --- | --- |
+| 文件归档 | 合同、发票、报告、简历等业务文件 |
+| 图片和素材管理 | 产品图片、活动素材、设计稿、截图 |
+| 表单收集资料 | 应聘简历、报销凭证、客户提交的文件 |
+| AI 图片输出 | AI 字段生成的图片结果 |
+
+## 创建和设置
+
+
+
+ 在表格中点击 `+` 添加字段,选择字段类型 **附件**。
+
+
+ 输入字段名称,比如“文件”、“图片”或“合同附件”。
+
+
+ 点击 `保存` 后,每条记录都可以在该字段中上传一个或多个附件。
+
+
+
+## 使用附件字段
+
+### 上传和查看
+
+附件字段可以保存图片、PDF、文档、压缩包等文件。
+
+- **上传文件**:在单元格或记录详情中点击附件区域,选择本地文件上传。
+- **保存多个附件**:同一个附件单元格可以包含多个文件。
+- **预览文件**:图片和部分文件类型可以直接在单元格或记录详情中预览。
+- **下载单个附件**:打开附件后,可以下载对应文件。
+
+
+附件字段保存的是文件,不是普通文本。将文本类字段转换为附件字段时,原文本内容无法自动转换为文件。字段转换前请先确认数据是否需要备份。
+
+
+### 批量下载附件
+
+在附件字段的字段菜单中,可以把当前字段里的附件批量下载为 ZIP 文件。下载范围会跟随当前表格的搜索结果:
+
+- 如果当前没有搜索条件,会下载该附件字段中可下载的附件。
+- 如果当前表格正在搜索并隐藏不匹配的行,只会下载匹配记录中的附件。
+
+下载 ZIP 时,可以选择附件名前缀:
+
+| 前缀方式 | 说明 |
+| --- | --- |
+| **默认序号** | 使用系统生成的序号作为前缀,便于区分文件顺序 |
+| **选择字段作为前缀** | 使用某个字段值作为文件名前缀,适合按编号、客户名或项目名整理附件 |
+| **无前缀** | 尽量保留原始文件名 |
+
+如果 ZIP 中出现重名文件,Teable 会自动追加后缀,保证文件名唯一。
+
+## 扩展使用
+
+### 与 AI 字段配合使用
+
+AI 字段可以读取附件,也可以把生成的图片写入附件字段。
+
+- **读取附件**:在 AI 字段设置中,把附件字段添加为输入字段。是否能识别图片或文件内容,取决于所选模型。
+- **保存图片**:把 AI 字段的输出设置为附件字段,生成的图片会保存到该附件字段中。
+
+更多信息请参阅 [AI 字段](/zh/basic/field/ai/ai-field)。
+
+### 通过 API 上传附件
+
+附件上传 API 支持上传本地文件,也支持通过 URL 上传文件。新附件会追加到指定记录的附件字段末尾。
+
+请参阅 [上传附件 API](/zh/api-doc/record/upload-attachment)。
diff --git a/zh/basic/field/auto-number.mdx b/zh/basic/field/auto-number.mdx
new file mode 100644
index 00000000..0a1980e3
--- /dev/null
+++ b/zh/basic/field/auto-number.mdx
@@ -0,0 +1,39 @@
+---
+title: "自增数字"
+description: "用于在创建记录时自动生成递增序号,适合做工单号、订单序号和内部编号。"
+---
+
+自增数字字段会为每条记录自动生成一个递增序号。字段创建后,现有记录和之后新增的记录都会自动填入编号,用户不需要手动维护。
+
+## 适用场景
+
+| 场景 | 适合内容 |
+| --- | --- |
+| 工单序号 | 为问题、反馈或售后请求生成简短编号 |
+| 订单和合同序号 | 为订单、合同、申请记录生成内部序号 |
+| 成员或候选人编号 | 为会员、候选人、员工生成基础编号 |
+| 沟通引用 | 在消息或评论中引用 `#45` 这类编号,便于定位记录 |
+
+## 创建和设置
+
+
+
+ 点击表头右侧的 `+` 图标,在字段类型列表中选择 **自动编号**。
+
+
+ 输入字段名称,比如“订单编号”、“会员 ID”或“工单序号”。
+
+
+ 字段创建后,会立即为现有记录和未来新增记录自动填充序号。
+
+
+
+## 字段特性
+
+- **自动递增**:每增加一条新记录,编号自动增加。
+- **不可手动修改**:自动编号属于记录元数据,用户无法手动修改具体数值。
+- **不会随视图变化**:编号生成后与记录绑定,不会因为排序、筛选或视图变化而改变。
+
+## 注意事项
+
+- 自动编号只增不减。如果删除编号为 `3` 的记录,系统不会回填这个号码,下一条新记录仍会继续生成后续编号。编号中可能出现断号,这是为了保证历史记录引用稳定。
diff --git a/zh/basic/field/basic/attachment.mdx b/zh/basic/field/basic/attachment.mdx
deleted file mode 100644
index 5196f876..00000000
--- a/zh/basic/field/basic/attachment.mdx
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: "附件"
-description: "用于在记录中保存图片、PDF、文档和其他文件,支持预览、下载和批量下载。"
----
-
-{/* mintlify-resync: 2026-05-14 */}
-**附件**字段用于在单元格中保存一个或多个文件。常见场景包括上传合同、图片、发票、设计稿、简历、报告或由 AI 字段生成的图片。
-
-## 一、 创建附件字段
-
-1. 在表格中点击 `+` 添加字段
-2. 选择字段类型 **附件**
-3. 输入字段名称,例如“文件”“图片”“合同附件”
-4. 点击 `保存`
-
-创建后,每条记录都可以在该字段中上传一个或多个附件。
-
-## 二、 上传和查看附件
-
-附件字段可以保存多种文件类型,例如图片、PDF、文档和压缩包。
-
-- **上传文件**:在单元格或记录详情中点击附件区域,选择本地文件上传。
-- **保存多个附件**:同一个附件单元格可以包含多个文件。
-- **预览文件**:图片和部分文件类型可以直接在单元格或记录详情中预览。
-- **下载单个附件**:打开附件后,可以下载对应文件。
-
-
-附件字段保存的是文件,不是普通文本。将文本类字段转换为附件字段时,原文本内容无法自动转换为文件。字段转换前请先确认数据是否需要备份。
-
-
-## 三、 批量下载附件
-
-在附件字段的字段菜单中,可以批量下载当前字段里的附件。
-
-批量下载会生成一个 ZIP 文件,并遵循当前表格的搜索结果范围:
-
-- 如果当前没有搜索条件,会下载该附件字段中可下载的附件。
-- 如果当前表格正在搜索并隐藏不匹配的行,只会下载匹配记录中的附件。
-
-下载 ZIP 时,可以选择附件名前缀:
-
-| 前缀方式 | 说明 |
-|------|------|
-| **默认序号** | 使用系统生成的序号作为前缀,便于区分文件顺序 |
-| **选择字段作为前缀** | 使用某个字段的值作为文件名前缀,适合按编号、客户名或项目名整理附件 |
-| **无前缀** | 尽量保留原始文件名 |
-
-如果 ZIP 中出现重名文件,Teable 会自动追加后缀,保证文件名唯一。
-
-## 四、 与 AI 字段配合使用
-
-AI 字段可以读取附件,也可以把生成的图片保存到附件字段。
-
-- **读取附件**:在 AI 字段设置中,把附件字段添加为输入字段。是否能识别图片或文件内容,取决于所选模型。
-- **保存图片**:把 AI 字段的输出设置为附件字段,生成的图片会保存到该附件字段中。
-
-更多信息请参阅 [AI 字段](/zh/basic/field/ai/ai-field)。
-
-## 五、 通过 API 上传附件
-
-附件上传 API 支持上传本地文件或通过 URL 上传文件,并将新附件追加到指定记录的附件字段末尾。
-
-请参阅 [上传附件 API](/zh/api-doc/record/upload-attachment)。
diff --git a/zh/basic/field/basic/checkbox.mdx b/zh/basic/field/basic/checkbox.mdx
deleted file mode 100644
index 59bd8c91..00000000
--- a/zh/basic/field/basic/checkbox.mdx
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: "勾选"
-description: "用于标记“是/否”、“完成/未完成”等二元状态的字段类型。"
----
-
-**勾选** 字段主要用于记录状态,用户只需点击即可在"选中"和"未选中"两种状态间切换。勾选字段非常适合用于表示"是/否"、"开/关"或"已完成/待处理"等的二元状态。
-
-## 一、 创建与配置
-
-1. 点击表格列标题右侧的 `+` 号
-2. 在字段类型列表中选择 **"勾选"**
-3. **设置默认值**(可选):
- - 您可以指定该字段在创建新记录时,默认是"选中"还是"未选中"状态
-4. 点击"保存"
-
-## 二、 使用场景
-
-### 1. 任务状态管理
-这是最经典的用法。在任务管理表中,用勾选字段代表"是否完成"
-- **配合视图**:您可以创建一个"未完成任务"视图,筛选条件设为 `勾选字段` 是 `未选中`,以此来专注剩余工作
-
-### 2. 快速标记
-用于给记录打上某种特定属性的标签,例如:
-- **客户表**:标记"是否 VIP"、"是否已黑名单"
-- **库存表**:标记"是否急需补货"
-- **招聘表**:标记"简历已筛选"
-
-### 3. 流程确认
-在涉及协作的流程中,作为简易的"确认钮"
-- 例如在内容排期表中,设置"图片已上传"、"文案已校对"等字段,流程流转更清晰
-
-## 三、 功能特性
-
-### 1. 在公式中
-**示例:**
-如果您想根据勾选状态输出不同的文本,可以使用 `IF` 函数:
-```
-IF({是否完成}, "✅ 已搞定", "🚧 进行中")
-```
-
-### 2. 快速统计完成率
-您可以在底部的统计栏中直接查看:
-- **求和**:等于已勾选的总数
-- **百分比**:配合计数,可以快速算出完成率(例如:10个任务里勾了8个,完成率80%)
-
-### 3. 作为自动化的触发器
-勾选字段非常适合作为自动化的"开关"。
-- **场景**:当"审核通过"被勾选时,自动发送邮件通知客户
-- **设置**:触发器选择"当记录更新时",监控字段选择该勾选字段
\ No newline at end of file
diff --git a/zh/basic/field/basic/date.mdx b/zh/basic/field/basic/date.mdx
deleted file mode 100644
index a7d63816..00000000
--- a/zh/basic/field/basic/date.mdx
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: "日期"
-description: "用于记录日期和时间,支持日期格式、时间格式、时区和自动填入当前时间。"
----
-
-**日期**字段用于存储特定的时间点信息。无论是项目截止日、会议时间还是员工入职日期,都适合使用这个字段。它也可以精确到分钟显示,例如 `2025-11-03 14:30`。
-
-## 一、 创建与配置
-
-### 添加日期字段
-
-1. 在表格视图中,点击“添加字段”
-2. 为字段命名,并从下拉菜单中选择“日期”作为字段类型
-
-### 日期字段选项
-
-- **包含时间**:除了日期,您还可以选择添加具体的时间
-- **时区选择**:为您的日期和时间选择一个特定的时区(默认为当前时区),这在处理国际业务或团队协作时尤为重要
-- **格式化选项**:日期字段提供了多种格式化选项以适应不同的需求。例如:
- - `YYYY-MM-DD` (例如: 2023-11-03)
- - `DD/MM/YYYY` (例如: 03/11/2023)
- - `MM/DD/YYYY` (例如: 11/03/2023)
- - `D MMM YYYY` (例如: 3 Nov 2023)
- - ...及其[他多种格式选项](/zh/basic/field/common/formatter)
-
-## 二、 使用场景
-
-- **项目管理**:为任务设置明确的开始和结束日期,使项目按计划进行
-- **活动规划**:记录即将到来的事件和会议的日期和时间,确保没有遗漏
-- **时间线分析**:对时间序列数据进行排序和分析,比如销售趋势或用户活跃度
-- **搭配公式字段**:使用日期字段与公式字段结合,可以帮助您计算日期间隔、预测未来日期等
-
-## 三、 功能特性
-
-- **自动填入当前时间**:开启后,新记录会自动带上当前时间
-
-
-**提示**:
-如果您需要记录"这条数据是什么时候创建的"且**不允许修改**,请不要使用"日期"字段,而应该使用 **[创建时间](/zh/basic/field/advanced/created-time)** 字段。
-
diff --git a/zh/basic/field/basic/long-text.mdx b/zh/basic/field/basic/long-text.mdx
deleted file mode 100644
index 0844e81d..00000000
--- a/zh/basic/field/basic/long-text.mdx
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: "多行文本"
-description: "用于存储需要换行的长文本,支持普通文本和 Markdown 两种显示方式。"
----
-
-**多行文本**字段用于存储篇幅较长、包含多个段落的文字内容。它很适合记录备注、说明、日志和详细描述。
-
-与单行文本不同,它允许用户通过换行来组织内容结构,也可以切换成 Markdown 显示,让内容更好读。
-
-## 一、 创建与配置
-
-### 创建多行文本字段
-
-- **步骤**:
- 1. 在表格中点击 `+`
- 2. 选择字段类型 **多行文本**
- 3. 输入字段名称(如“描述”、“备注”、“详情”等)
- 4. 根据需要设置字段属性
- 5. 点击 `保存`
-
-### 字段配置选项
-
-- **默认值**:可设置默认文本内容,新记录会自动填充
-- **显示方式**:可以在普通文本和 Markdown 之间切换
-- **字段描述**:为字段添加说明文字,帮助团队理解字段用途
-
-## 二、 使用场景
-
-- **详细描述**:如任务详情、产品功能介绍、Bug 复现步骤
-- **记录日志**:如客户跟进记录、每日工作总结、会议纪要
-- **备注信息**:存储无法拆分为独立字段的补充性说明
-
-## 三、 功能特性
-
-### 换行操作
-- **手动换行**:在编辑模式下,按下 `Shift + 回车` 键即可插入换行符
-- **自动换行**:单元格高度会根据列宽自动调整,将长文本折行显示以便阅读
-- **Markdown**:可用 Markdown 方式显示内容,适合标题、列表和链接
-
-
-
-## 四、 注意事项
-
-- 多行文本不支持 URL、Email 和电话这类交互展现,只支持普通文本和 Markdown
diff --git a/zh/basic/field/basic/multiple-select.mdx b/zh/basic/field/basic/multiple-select.mdx
deleted file mode 100644
index 23f3ed99..00000000
--- a/zh/basic/field/basic/multiple-select.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: "多选"
-description: "用于从预设选项列表中选择一个或多个值,常用于标签、分类和多维度筛选。"
----
-
-## 一、 创建与配置
-
-1. **添加选项**
- - 在配置界面输入选项名称,按下 **回车键** 即可快速添加
- - 系统会自动分配颜色,也可以手动调整
- - 拖拽选项左侧的图标可调整排序
-
-2. **默认值和编辑规则**
- - 可以设置默认值,让新记录一开始就带上常用标签
- - 可以控制编辑时是否允许直接新增选项;关闭后,只能使用已有选项
-
-3. **颜色管理(可选)**
- - 点击选项名称左侧的圆点,可从预设色板中选择颜色
- - 合理的颜色区分有助于在看板或日历视图中快速识别数据类别
-
-## 二、 应用场景
-
-* **标签或关键字**:例如,如果您正在跟踪内容项目,一个文章或视频可能涉及多个主题,如“技术”、“设计”和“市场”。
-* **技能或能力**:在人员数据库中,每个人可能具有多个技能,如“编程”、“项目管理”和“公关”。
-* **项目涉及的部门**:当一个项目跨越多个部门时,如“销售”、“研发”和“财务”。
-
-## 三、 功能特性
-
-- **灵活筛选**:多选字段支持丰富的筛选逻辑,例如:
- - **包含任一**:只要选中了“技术”标签的记录都显示
- - **包含所有**:必须同时选中“技术”和“设计”的记录才显示
- - **完全等于**:选项必须完全匹配,不能多也不能少
-- **与单选的区别**:单选字段限制每条记录只能选择 **1** 个值,而多选字段允许选择 **1 到 N** 个值
-- **可视化**:为每个选项分配不同的颜色,可以快速地在表格中识别和分类记录
-- **默认值**:可以给新记录预设一组常用标签,减少重复选择
diff --git a/zh/basic/field/basic/number.mdx b/zh/basic/field/basic/number.mdx
deleted file mode 100644
index be064e11..00000000
--- a/zh/basic/field/basic/number.mdx
+++ /dev/null
@@ -1,77 +0,0 @@
----
-title: "数字"
-description: "用于录入和存储数值型数据,如价格、库存、数量和比例。可以设置小数位、货币符号、百分比和图形展示。"
----
-
-数字字段不仅仅是简单的数字记录,还可以直接用于统计和展示。
-
-## 一、 创建与配置
-
-### 创建数字字段
-
-- **步骤**:
- 1. 点击表格视图表头右侧的 `+`,在字段类型列表中选择 **数字**
- 2. 输入字段名称(如“商品价格”、“库存数量”)
- 3. **格式设置**:根据业务需求选择数据的显示类型
- - **数字**:纯数值显示,适用于普通计数(如:100、2.5)
- - **货币**:自动添加货币符号,适用于金额统计(如:¥100.00)
- - **百分比**:以百分比形式显示,适用于比率统计(如:50%)
-
-
-
- 4. **精度设置**:设置小数点后的保留位数
- - 提供从 **0 位** 到 **4 位** 小数的选择
- - **注**:设定精度后,系统会按这个精度四舍五入显示数值
-
-
-
- 5. **默认值**(可选):新记录会自动填入预设数字
-
-### 显示设置
-
-除了基础数值,还可以通过图形化方式增强数据的可读性。
-
-- **步骤**:
- 1. 在字段配置页面的“显示方式”栏中进行选择
- 2. **默认**:仅显示纯文本数值
- 3. **单值字段**:可切换为 **条形** 或 **环形**
- - **目标值**:设置图形满格对应的数值(如满分为 100,则填 100)
- - **颜色**:自定义图形的填充颜色
- - **显示数字**:勾选后可在图形旁同时显示具体数值
- 4. **多值字段**:可切换为 **条形** 或 **折线**
-
-
-
-## 二、 使用场景
-
-### 场景一:财务管理 - 合同金额记录
-
-- **数据表前提**:合同管理表
-- **场景**:需记录每份合同的金额,要求精确到分,并显示人民币符号
-- **操作步骤**:
- 1. 新建字段命名为“合同金额”
- 2. 格式选择 **货币**,符号选择 **¥**
- 3. 精度选择 **保留 2 位小数**(如:¥1,000.00)
-
-### 场景二:目标管理 - 销售业绩达成率
-
-- **数据表前提**:销售业绩表
-- **场景**:直观展示销售人员的业绩完成度,以便快速识别是否达标
-- **操作步骤**:
- 1. 新建字段命名为“达成率”
- 2. 格式选择 **百分比**
- 3. 显示方式选择 **条形**
- 4. 设置目标值为 **1**(即 100%),选择绿色作为进度颜色
-
-## 三、 功能特性
-
-数字字段具备以下核心功能:
-
-- **自动校验**:仅允许输入整数或小数(如 `12`、`3.14`)
-- **格式多样**:支持常规数字、货币符号、百分比三种格式化显示
-- **可视化展示**:支持将数值转化为条形、环形或折线,直观呈现数据状态
-- **公式联动**:公式、汇总和查找结果如果是数字,也可以使用同样的格式
-
-## 四、 注意事项
-
-- 百分比采用按小数存储的机制,因此输入 `100%` 实际存储为 `1`,输入 `50%` 实际存储为 `0.5`
diff --git a/zh/basic/field/basic/rating.mdx b/zh/basic/field/basic/rating.mdx
deleted file mode 100644
index 6d2d69a7..00000000
--- a/zh/basic/field/basic/rating.mdx
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: "评分"
-description: "用于为记录添加可视化的数值评分。来直观展示数据的质量、优先级或满意度,常用于产品评价、服务反馈及绩效考核等场景。让用户可以快速地对数据进行定性分析。"
----
-
-## 一、 创建与配置
-
-用户可以自定义评分的上限及显示样式,使其适配不同的业务语境。
-
-1. **新建字段**
- - 点击表格视图表头右侧的 `+` 图标,在字段类型列表中选择 **评分**
- - 输入字段名称(如“客户满意度”、“推荐指数”)
-
-2. **最大值设定**
- - 系统默认最大值为 **5**(即5星制)
- - 用户可以根据需求调整最大值(如设置为 **10** 进行十分制打分),这个最大值决定了用户可以选择的评分范围
-
-3. **图标样式**
- - 默认显示为 **⭐️**
- - 支持更换为其他图标符号(如 ❤️ 、👍 、💡 等),以匹配特定的业务含义(例如用灯泡表示创意分)
-
-## 二、 使用场景
-
-- **产品评价管理**:在电商或库存表中,快速录入产品的用户评分,便于后续筛选出高分热销商品
-- **服务质量反馈**:在售后记录表中,收集客户对服务的满意度打分,量化服务质量以便改进
-- **员工绩效评估**:在人事考核表中,管理者利用评分字段对员工的各项能力指标进行打分,直观呈现绩效等级
-
-## 三、 功能特性
-
-- **直观量化**:将抽象的评价转化为可视化的图标数量,无需阅读文字即可快速判断数据优劣
-- **组合评价**:常与 **多行文本** 字段配合使用,构建“定量评分 + 定性评论”的完整评价体系
-- **公式联动**:评分字段的数值支持被 **公式** 引用。例如,您可以引用多个维度的评分字段(如“服务态度”+“专业能力”)来计算 **平均分** 或 **总分**
-
-## 四、 注意事项
-
-- **评分标准统一**:在设定最大值(如5分或10分)时,需确保团队成员或填报用户对分数的含义有统一认知,避免产生歧义
-- **配置修改风险**:如果后续调低了“最大值”(例如从10分改为5分),原数据中超过新上限的分数可能无法正确显示,建议在调整配置前确认历史数据情况
\ No newline at end of file
diff --git a/zh/basic/field/basic/single-line-text.mdx b/zh/basic/field/basic/single-line-text.mdx
deleted file mode 100644
index 6809aae0..00000000
--- a/zh/basic/field/basic/single-line-text.mdx
+++ /dev/null
@@ -1,71 +0,0 @@
----
-title: "单行文本"
-description: "用于录入和存储较短的字符串信息(如姓名、标题、编号、网址等)。"
----
-
-## 一、 创建与配置
-
-通过简单的设置,您可以创建文本字段并定义其点击交互行为。
-
-### 1. 创建文本字段
-
-- **步骤**:
- 1. 点击表头右侧的 **+** 图标,在字段类型列表中选择 **单行文本**
- 2. 输入字段名称(如“客户姓名”、“订单编号”)
- 3. **默认值设置**(可选):在配置弹窗中输入特定的文本(如“待审核”)。设置后,每次新增记录时,该字段会自动填充此内容,减少重复录入
-
-
-
-
-### 2. 设置显示方式
-
-文本字段中设置四种常用交互展现方式:
-
-
-
- 此为默认显示格式,最为常用。所显示的文本没有任何附加特性。
-
-
-
- 显示为URL的文本在被点击时将启动用户默认的浏览器,自动访问该网址。
-
-
-
- 显示为Email的文本在被点击时将启动用户默认的邮箱应用(如Outlook、Mail等)。
-
-
-
- 显示为电话的文本在被点击时将启动用户默认的通讯应用(如Facetime、Skype等)。
-
-
-
-
-
-交互展现不仅可以在单行文本中使用,还可以在公式字段,汇总字段,引用中使用,详情请看[交互展现](/zh/basic/field/common/show-as)
-
-## 二、 使用场景
-
-### 场景一:客户联系人管理
-- **场景**:录入客户信息后,希望能直接点击拨打电话或访问客户官网,无需复制粘贴
-- **操作步骤**:
- 1. 新建“公司官网”字段,显示方式设为 **URL**,点击即可跳转查看
- 2. 新建“手机号”字段,显示方式设为 **电话**,手机端访问时点击即可一键拨打
-
-### 场景二:固定流程流转
-- **场景**:新建工单时,初始状态统一为“新建”,希望能自动填入
-- **操作步骤**:
- 1. 新建单行文本字段,命名为“当前阶段”
- 2. 在字段配置的 **默认值** 中输入“新建”
- 3. 这样每次添加工单记录时,该字段自动预填,无需手动输入
-
-## 三、 功能特性
-
-- **基础录入**:支持手动输入、复制粘贴,适用于无需换行的短内容
-- **可交互**:可识别 URL、电子邮箱和电话号码,并提供点击跳转或拨打功能
-- **数据处理**:支持排序、筛选,支持使用文本处理函数进行提取等操作。
-- **效率工具**:支持设置“默认值”,新建记录时自动填充预设内容,减少重复录入
-
-## 四、注意事项
-
-- **换行限制**:单行文本不支持换行(回车键通常用于确认输入)。如果需要录入大段文字或包含换行的内容(如备注、文章摘要),请使用 **多行文本** 字段
-- **功能通用性**:交互展现配置(URL/Email/电话)不仅适用于单行文本,同样适用于 **公式**、**汇总**、**引用** 等字段,设置路径一致
diff --git a/zh/basic/field/basic/single-select.mdx b/zh/basic/field/basic/single-select.mdx
deleted file mode 100644
index 9430dd40..00000000
--- a/zh/basic/field/basic/single-select.mdx
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: "单选"
-description: "从预设的选项列表中选择一个选项,适合做状态、分类和优先级。"
----
-
-## 一、 创建与配置
-
-通过预设选项,可以避免手动输入带来的拼写错误,确保数据的一致性。
-
-### 1. 新建选项
-
-- **步骤**:
- 1. 点击表头右侧的 `+` 图标,在字段类型列表中选择 **单选**
- 2. 输入字段名称
- 3. 在输入框输入选项名称,按下 **回车键** 即可快速生成新选项
- 4. 需要时可以设置默认值,让新记录自动带上常用选项
-
-### 2. 选项颜色与排序
-
-- **颜色设置**:点击选项名称左侧的 **小圆点**,从色板中选择代表该选项的颜色
-- **选项排序**:按住选项左侧图标拖拽,可调整选项在下拉列表中的排列顺序
-- **修改与删除**:直接修改选项名称,所有历史数据会自动同步更新;点击右侧垃圾桶图标可删除选项
-- **允许新增选项**:可以控制编辑时是否允许直接新增选项。关闭后,输入内容必须来自已有选项
-
-## 二、 使用场景
-
-### 场景一:项目进度管理(看板视图)
-
-- **场景**:需要清晰地标识每个任务当前所处的流转阶段,并支持拖拽改变状态
-- **操作步骤**:
- 1. 新建“任务状态”字段,设置选项为:**未开始**(灰色)、**进行中**(蓝色)、**已完成**(绿色)
- 2. 基于此字段创建 **看板视图**,任务将自动按列分组,卡片在不同列之间拖拽即可变更状态
-
-### 场景二:客户分级管理(分组查看)
-
-- **场景**:根据客户的重要程度进行分类,以便优先跟进高价值客户
-- **操作步骤**:
- 1. 新建“优先级”字段,设置选项为:**高**(红色)、**中**(黄色)、**低**(绿色)
- 2. 在表格视图中点击“分组”,选择按“优先级”分组,即可分层查看各类客户清单
-
----
-
-## 三、 功能特性
-
-- **唯一性**:单元格内只能包含 **1** 个选项,确保数据的互斥性(例如:一个任务不能既是“未开始”又是“已完成”)
-- **可视化**:通过颜色,用户无需阅读文字即可直观判断数据属性
-- **视图核心**:单选字段是构建 **看板视图** 的必要条件,也是进行数据 **分组** 和 **筛选** 最常用的维度
-- **数据规范**:相比文本字段,单选字段限制了输入范围,有效防止因拼写错误导致的数据统计误差
-- **默认值**:可以给新记录预设一个常用状态,减少重复选择
-
----
-
-## 四、 注意事项
-
-- **与多选的区别**:单选字段限制每条记录只能选择 **1** 个值;如果需要为记录添加多个标签(如一篇文章既属于“科技”又属于“财经”),请使用 **多选** 字段
-- **类型转换风险**:将“多选字段”转换为“单选字段”时,如果原数据包含多个选项,系统通常只会保留第一个选项,可能导致数据丢失,请谨慎操作
diff --git a/zh/basic/field/button-practical-guide.mdx b/zh/basic/field/button-practical-guide.mdx
new file mode 100644
index 00000000..1ff289da
--- /dev/null
+++ b/zh/basic/field/button-practical-guide.mdx
@@ -0,0 +1,109 @@
+---
+title: "按钮字段实践"
+description: "通过按钮字段触发自动化,把线索转商机、任务催办等固定流程变成一次点击。"
+---
+
+按钮字段适合处理固定、重复、需要人工确认后触发的流程。常见例子包括把线索转为商机、安排稿件发布、发送任务催办,或把当前记录同步到外部系统。
+
+这页用“线索转商机”作为完整示例,说明如何把一个按钮和自动化流程连接起来。
+
+## 适用场景
+
+| 场景 | 点击按钮后可以做什么 |
+| --- | --- |
+| 线索转商机 | 在商机表中创建记录,并把原线索标记为已转化 |
+| 稿件安排发布 | 创建发布排期,并通知负责发布的同事 |
+| 任务催办 | 向负责人发送邮件或团队消息 |
+| 外部系统同步 | 通过 HTTP 请求把当前记录发送到其他系统 |
+
+## 示例:线索转商机
+
+在 CRM 表中,销售人员判断一条线索已经成熟后,点击“转为商机”按钮。自动化流程会完成两件事:
+
+- 在“商机跟进表”中创建一条新记录,并带入公司、联系人等关键信息。
+- 把“销售线索表”中的原线索状态更新为“已转化”。
+
+### 准备表格
+
+这个示例需要两张表:
+
+| 表格 | 用途 | 示例字段 |
+| --- | --- | --- |
+| 销售线索表 | 保存待跟进线索,也是按钮所在的表 | 公司名称、联系人、负责人、状态 |
+| 商机跟进表 | 保存已经转化的商机 | 商机名称、关联客户、负责人、来源线索 |
+
+### 创建按钮字段
+
+在“销售线索表”中添加一个按钮字段:
+
+
+
+ 新建字段,字段类型选择 **按钮**。
+
+
+ 按钮文字填写“转为商机”,并选择容易识别的颜色。
+
+
+ 如果不希望误触,可以开启 **点击前需要确认**,并填写确认弹窗的标题、内容和确认按钮文字。
+
+
+
+### 配置自动化动作
+
+按钮字段创建后,需要配置点击按钮时执行的自动化流程。
+
+
+
+ 在按钮字段配置中点击 **自定义自动化**,新建一个流程。
+
+
+ 添加 **新增记录** 动作,目标数据表选择“商机跟进表”。
+
+
+ 把线索里的关键字段写入新商机。比如:
+ - `商机名称` = 触发记录中的 `公司名称`
+ - `关联客户` = 触发记录中的 `联系人`
+ - `负责人` = 触发记录中的 `负责人`
+
+
+ 再添加一个 **更新记录** 动作,目标数据表选择“销售线索表”,记录 ID 选择触发流程的记录 ID,并把 `状态` 更新为“已转化”。
+
+
+
+保存后,销售人员点击“转为商机”,就会创建商机并更新原线索状态。
+
+### 添加通知
+
+如果转化后需要通知销售主管或商机负责人,可以在自动化流程中继续添加 **发送邮件** 或团队消息动作。
+
+常见配置:
+
+- **收件人**:固定邮箱,或来自当前记录里的成员字段。
+- **主题和正文**:插入触发记录中的字段值,比如公司名称、负责人、线索来源。
+
+邮件正文可以写成:
+
+> 新商机转化提醒:[公司名称] 已由 [负责人] 转化为商机,请及时跟进。
+
+### 连接外部系统
+
+如果转化商机后还需要同步到 CRM、财务系统或其他内部工具,可以在自动化流程中添加 HTTP 请求动作。
+
+HTTP 请求适合已经有稳定 API 的系统。配置前请先确认目标系统的接口地址、请求方法、鉴权方式和字段格式。
+
+### 限制重复点击
+
+线索转商机场景通常不希望同一条线索被重复转化。可以在按钮字段中开启 **限制点击次数**:
+
+| 设置 | 建议 |
+| --- | --- |
+| 最大点击计数 | 设置为 `1` |
+| 允许重置点击计数 | 通常保持关闭,避免重复生成商机 |
+
+达到点击上限后,该记录上的按钮会变为不可点击状态。
+
+## 注意事项
+
+- 按钮点击后是否成功执行,取决于关联的自动化流程是否正常启用。
+- 每次成功触发自动化流程,都会计入工作空间的自动化运行次数。
+- 如果按钮可能改写关键数据,建议开启点击确认,并限制可点击次数。
diff --git a/zh/basic/field/button.mdx b/zh/basic/field/button.mdx
new file mode 100644
index 00000000..051cf319
--- /dev/null
+++ b/zh/basic/field/button.mdx
@@ -0,0 +1,54 @@
+---
+title: "按钮"
+description: "用于在每条记录中添加可点击按钮,并通过按钮触发自动化流程。"
+---
+
+按钮字段用于在每条记录中添加一个可点击按钮。点击按钮后,可以触发预先配置好的自动化流程,比如更新记录、创建记录、发送消息或调用外部系统。
+
+## 适用场景
+
+| 场景 | 适合动作 |
+| --- | --- |
+| 状态流转 | 开始处理、完成任务、提交审批、归档 |
+| 数据流转 | 把线索转为商机,把申请生成任务,把当前记录写入另一张表 |
+| 通知提醒 | 发送邮件、团队消息或催办通知 |
+| 外部集成 | 通过自动化中的 HTTP 动作连接外部系统 |
+
+## 创建和设置
+
+
+
+ 在表格中新建字段,选择 **按钮** 类型。
+
+
+ 自定义按钮文字和颜色,比如“发送邮件”、“提交审批”或“生成报告”。
+
+
+ 按需开启 **限制点击次数** 或 **点击前需要确认**。
+
+
+ 点击 **自定义自动化**,设置按钮点击后要执行的动作。
+
+
+
+## 配置项
+
+| 配置 | 说明 |
+| --- | --- |
+| 按钮文字与颜色 | 控制按钮在单元格中的显示样式 |
+| 限制点击次数 | 为每条记录设置最大点击计数,也可以配置是否允许重置 |
+| 点击前需要确认 | 点击按钮后先显示确认弹窗,适合不可随意触发的操作 |
+| 自定义自动化 | 配置按钮触发后的自动化流程 |
+
+## 常见用法
+
+- **状态流转**:点击“完成任务”按钮,自动把当前记录的状态改为“已完成”。
+- **线索转商机**:点击“转为商机”按钮,自动在商机表中新增记录,并更新线索状态。
+- **发送提醒**:点击“催办”按钮,通过邮件或团队工具发送提醒消息。
+- **外部系统集成**:通过自动化中的 HTTP 动作,把当前记录同步到外部系统。
+
+## 注意事项
+
+- 每次点击按钮并成功触发自动化流程,都会计入工作空间的自动化运行次数。
+- 点击按钮的权限与编辑记录的权限是分离的。只要用户能看到按钮,就可能点击并触发流程,包括只读访问或对外分享链接访问。
+- 按钮本身不执行操作,它依赖关联的自动化流程。如果流程被禁用或删除,点击按钮不会产生效果。
diff --git a/zh/basic/field/checkbox.mdx b/zh/basic/field/checkbox.mdx
new file mode 100644
index 00000000..c1518bc1
--- /dev/null
+++ b/zh/basic/field/checkbox.mdx
@@ -0,0 +1,56 @@
+---
+title: "勾选"
+description: "用于标记“是/否”、“完成/未完成”等二元状态的字段类型。"
+---
+
+勾选字段用于记录二元状态,比如“是/否”、“开/关”、“已完成/未完成”。用户只需点击单元格,即可在选中和未选中之间切换。
+
+## 适用场景
+
+| 场景 | 适合内容 |
+| --- | --- |
+| 任务完成状态 | 是否完成、是否已处理、是否已归档 |
+| 快速标记 | 是否 VIP、是否黑名单、是否急需补货 |
+| 流程节点确认 | 图片已上传、文案已校对、审核已通过 |
+| 自动化触发 | 勾选后发送通知、更新状态或触发后续流程 |
+
+## 创建和设置
+
+
+
+ 点击表格列标题右侧的 `+`,在字段类型列表中选择 **勾选**。
+
+
+ 输入字段名称,比如“是否完成”、“是否 VIP”或“审核通过”。
+
+
+ 按需设置新记录默认是选中还是未选中。
+
+
+ 保存后,即可通过点击单元格切换状态。
+
+
+
+## 常见用法
+
+- **任务状态管理**:在任务表中用“是否完成”标记进度,再创建“未完成任务”视图,只显示未勾选记录。
+- **快速标记属性**:在客户表中标记“是否 VIP”,在库存表中标记“是否急需补货”。
+- **流程节点确认**:在内容排期表中设置“图片已上传”、“文案已校对”等字段,让协作者知道每个节点是否完成。
+
+## 公式中使用勾选值
+
+勾选字段可以在公式中作为布尔值使用。比如,根据完成状态输出不同文本:
+
+```js
+IF({是否完成}, "已完成", "进行中")
+```
+
+## 统计和自动化
+
+- **统计完成率**:底部统计栏可以查看已勾选数量;配合计数可以计算完成率。
+- **触发自动化**:当“审核通过”被勾选时,可以触发自动化发送邮件或更新其他字段。
+
+## 注意事项
+
+- 勾选字段只表达两种状态。如果需要多个状态,比如“未开始”、“进行中”、“已完成”,请使用 **单选** 字段。
+- 勾选字段适合作为明确开关,不适合存放备注、原因或说明文字。
diff --git a/zh/basic/field/common/formatter.mdx b/zh/basic/field/common/formatter.mdx
index 68cb158d..4e368a72 100644
--- a/zh/basic/field/common/formatter.mdx
+++ b/zh/basic/field/common/formatter.mdx
@@ -1,40 +1,41 @@
---
title: "格式化"
-description: "Teable 提供了多种格式化选项,包括数字格式化、日期时间格式化、文本格式化等,以确保数据在不同场景下都能以最合适的方式展示。"
+description: "用于控制字段值的显示样式,比如小数位、百分比、货币符号、日期格式和时间格式。"
---
+格式化用于控制字段值的显示方式。它不会改变字段的原始数据,只影响用户在表格中看到的样式,比如小数位、百分比、货币符号、日期格式和时间格式。
+
## 数字格式化
-处理数字数据时,有时我们希望以特定的方式展示它们。Teable提供了以下几种数字格式化选项:
+数字字段可以按业务需要设置显示格式:
-* **小数**:您可以选择显示数字的小数点后的位数,范围是0到5。
-* **百分比**:将数字转换为百分比形式。例如,0.25会被显示为25%。
-* **货币**:您可以给数字添加货币符号,如"$",并选择小数点后的位数。
+| 格式 | 说明 |
+| --- | --- |
+| 小数 | 设置小数点后的显示位数 |
+| 百分比 | 将数字显示为百分比,比如 `0.25` 显示为 `25%` |
+| 货币 | 为数字添加货币符号,并设置小数位数 |
## 日期时间格式化
-在 Teable中,您可以选择多种日期和时间的展示方式:
-
-* **日期格式**:根据您的偏好,您可以选择以下日期格式:
- * US风格: 如 12/31/2023
- * 欧洲风格: 如 31/12/2023
- * 亚洲风格: 如 2023/12/31
- * 国际标准: 如 2023-12-31
- * 仅年-月: 如 2023-12
- * 仅月-日: 如 12-31
- * 仅年份: 如 2023
- * 仅月份: 如 12
- * 仅日期: 如 31
-* **时间格式**:Teable提供了多种时间格式:
- * 24小时制: 如 23:59
- * 12小时制 (包括上午/下午): 如 11:59 PM
- * 不显示时间
-* **时区选择**:您可以根据您所在的地区,选择合适的时区,确保时间准确无误。
-
-这些格式化选项确保您可以根据自己的喜好和需求,选择最合适的日期和时间展示方式。
-
-## 字段基础数据类型列表
-| Teable字段类型 | 基础数据类型 | 支持格式化 | 动态类型标识 |
+日期和时间字段可以设置日期格式、时间格式和时区。
+
+| 设置 | 示例 |
+| --- | --- |
+| US 风格 | `12/31/2023` |
+| 欧洲风格 | `31/12/2023` |
+| 亚洲风格 | `2023/12/31` |
+| 国际标准 | `2023-12-31` |
+| 仅年-月 | `2023-12` |
+| 仅月-日 | `12-31` |
+| 仅年份 | `2023` |
+| 仅月份 | `12` |
+| 仅日期 | `31` |
+
+时间格式支持 24 小时制、12 小时制,也可以不显示时间。时区可以按业务需要选择固定时区,或跟随查看者所在地区显示。
+
+## 字段基础数据类型
+
+| Teable 字段类型 | 基础数据类型 | 支持格式化 | 动态类型标识 |
| ---------- | ------ | ----- | ------ |
| 单行文本 | 文本 | 否 | 否 |
| 长文本 | 文本 | 否 | 否 |
@@ -58,6 +59,8 @@ description: "Teable 提供了多种格式化选项,包括数字格式化、
| 自动编号 | 数字 | 是 | 否 |
| 按钮 | 文本 | 否 | 否 |
-> 评分字段会展示为一个可交互的计分条,由一串可点亮图标表示,不可参与数字类型的格式化,但本身属于数字类型,可参与数字计算
-> 公式和汇总字段的格式化依赖于它们的输出类型,这意味着如果公式或汇总的结果是日期或数字类型,它们可以被格式化。如果结果是文本或布尔值,则不适用格式化。
-> 所有的字段均可以被引用,引用过后依然遵守本字段的基础值类型
+## 注意事项
+
+- 评分字段会展示为可交互的计分条,不参与数字格式化,但本身属于数字类型,可参与数字计算。
+- 公式和汇总字段的格式化取决于输出类型。结果是日期或数字时,可以继续格式化;结果是文本或布尔值时,则不适用。
+- 字段被引用后,仍然遵守原字段的基础值类型。
diff --git a/zh/basic/field/common/is-multiple-value.mdx b/zh/basic/field/common/is-multiple-value.mdx
index df653b8a..83235b89 100644
--- a/zh/basic/field/common/is-multiple-value.mdx
+++ b/zh/basic/field/common/is-multiple-value.mdx
@@ -1,64 +1,48 @@
---
title: "单值与多值"
-description: "在表格的字段设计中,你可能已经注意到了“单值”和“多值”这两个概念。它们描述的是字段中的单元格是否存储单一值还是一系列的值(数组)。 每种字段都分为单值和多值的两种状态,理解这两个概念在进阶使用时非常有用。"
+description: "说明字段中的单元格是存储单一值,还是存储一组值。"
---
-## 基础概念:单值 vs 多值
+单值和多值描述的是一个单元格里存放一个值,还是一组值。理解这个概念后,更容易判断字段在关联、查找、汇总和公式中为什么会返回多个结果。
-* **单值**:单一的、确定的信息。例如,“今天的日期”或“张三的电话号码”。
-* **多值**:即数组值,一系列的信息。例如,“这个月的所有日期”或“张三的所有电话号码”。
+## 基础概念
-## 默认的单值和多值
-
-| 字段名称 | 中文描述 | 默认状态 |
-| ---------------- | ------ | ---- |
-| SingleLineText | 单行文本 | 单值 |
-| LongText | 多行文本 | 单值 |
-| User | 用户 | 可选\* |
-| Attachment | 附件 | 多值 |
-| Checkbox | 复选框 | 单值 |
-| MultipleSelect | 多选 | 多值 |
-| SingleSelect | 单选 | 单值 |
-| Date | 日期 | 单值 |
-| Number | 数字 | 单值 |
-| Duration | 持续时间 | 单值 |
-| Rating | 评分 | 单值 |
-| Formula | 公式 | 动态\* |
-| Rollup | 汇总 | 动态\* |
-| Count | 计数 | 单值 |
-| Link | 关联 | 可选\* |
-| CreatedTime | 创建时间 | 单值 |
-| LastModifiedTime | 最后修改时间 | 单值 |
-| CreatedBy | 创建者 | 单值 |
-| LastModifiedBy | 最后修改者 | 单值 |
-| AutoNumber | 自动编号 | 单值 |
-| Button | 按钮 | 单值 |
+| 类型 | 说明 | 示例 |
+| --- | --- | --- |
+| 单值 | 单一、确定的信息 | “今天的日期”、“张三的电话号码” |
+| 多值 | 一组值,也可以理解为数组 | “这个月的所有日期”、“张三的所有电话号码” |
-## 关联与引用导致的状态变化
+## 默认的单值和多值
-虽然大多数字段都有其默认的单值或多值状态,但由于关联和引用的机制,字段的状态可能会发生变化。
+| 字段类型 | 默认状态 |
+| --- | --- |
+| 单行文本、多行文本 | 单值 |
+| 单选、勾选、日期、数字、评分 | 单值 |
+| 创建时间、修改时间、创建人、修改人、自动编号、按钮 | 单值 |
+| 多选、附件 | 多值 |
+| 成员 | 可选 |
+| 关联 | 可选 |
+| 公式、汇总 | 动态 |
-* **关联字段的影响**:如果关联字段是多值的,那么基于这个关联字段引用的所有字段都将变为多值。
- **示例**:想象你有一个“任务”表和一个“员工”表。如果一个任务可以由多个员工完成,则“任务”表中与“员工”表的关联字段将是多值。因此,任何基于这个关联字段引用的字段(如员工的电话号码)都将变为多值。
-* **公式与汇总**:尽管大多数时候它们都是单值,但公式可以引用多值字段,从而变成多值。同时,如果它们通过多值关联字段被引用,它们也会变成多值。
- **示例**:假设你有一个公式字段,用于计算每个员工的总工资。如果这个公式引用了一个多值的工资字段(例如,每个员工在不同的项目上的工资),那么这个公式字段也将变为多值。
+这里的“默认状态”指字段自身的常见状态。**可选** 表示可以通过字段配置决定单值或多值;**动态** 表示结果取决于公式逻辑、汇总函数,以及引用的字段是否为多值。经过关联、查找、汇总或公式引用后,结果可能会变化。
-## 示例
+## 关联与引用导致的状态变化
-理解单值和多值的区别对于高级用户来说非常有用。它帮助用户了解为什么某些字段会有多个值,并指导他们如何正确地设置和使用这些字段。
+- **关联字段的影响**:如果关联字段是多值,基于这个关联字段引用的字段也可能变为多值。比如一个任务可以由多个员工完成,基于这些员工查找电话号码时,结果也会是多个电话号码。
+- **公式与汇总**:公式和汇总通常是单值,但如果引用了多值字段,结果也可能变成多值。
-### 员工信息和项目任务
+### 示例
假设你管理一个公司,并使用 Teable 创建了两个表:`员工信息` 和 `项目任务`。
-1. **员工信息** 表:
+**员工信息表**
| 姓名 | 电话号码 | 邮箱地址 | 任务 |
| -- | ------ | ----------------- | -------- |
| 张三 | 123456 | zhang@company.com | 任务1, 任务2 |
| 李四 | 789012 | li@company.com | 任务3 |
-2. **项目任务** 表:
+**项目任务表**
| 任务名称 | 负责员工 | 截止日期 | 进度 |
| ---- | ---- | ---------- | --- |
@@ -68,11 +52,11 @@ description: "在表格的字段设计中,你可能已经注意到了“单值
在这个例子中:
-* **员工信息** 表中的 "任务" 字段是一个多值字段,因为一个员工可能负责多个任务。
-* **项目任务** 表中的 "负责员工" 字段是单值字段,因为每个任务只由一个员工负责。
+- **员工信息** 表中的“任务”字段是多值字段,因为一个员工可能负责多个任务。
+- **项目任务** 表中的“负责员工”字段是单值字段,因为每个任务只由一个员工负责。
-当你在 "项目任务" 表中创建一个新任务并为其指定负责员工时,该员工的 "任务" 字段会自动更新,包含他或她负责的所有任务。
+当你在“项目任务”表中创建新任务并指定负责员工时,该员工在“员工信息”表中的“任务”字段会自动更新,包含他或她负责的所有任务。
### 数字小图表
-**示例**:你可能会想知道为什么数字字段有时会显示多条线或多个柱子,而不只是一个。这是因为它实际上是一个多值字段,可能是由于之前的关联或引用操作。
+数字字段有时会显示多条线或多个柱子,而不是一个数值。这通常说明它已经变成多值字段,可能来自关联、查找、汇总或公式引用。
diff --git a/zh/basic/field/common/show-as.mdx b/zh/basic/field/common/show-as.mdx
index 49b63b7c..9bbaa531 100644
--- a/zh/basic/field/common/show-as.mdx
+++ b/zh/basic/field/common/show-as.mdx
@@ -1,26 +1,37 @@
---
title: "交互展现"
-description: "为特定字段选择更具互动性的显示方式,以提高数据的可读性和操作性。"
+description: "用于改变字段值的显示和点击行为,比如网址、邮箱、电话和数字图形展示。"
---
+交互展现用于改变字段值的显示和点击行为。它不会改变字段类型,只影响字段内容的查看和操作方式。
+
## 文本字段的交互展现
-* **URL**:将文本字段中的内容显示为网址,并在点击时在新的标签页中打开该链接。
-* **电子邮件(Email)**:将文本字段中的内容显示为电子邮件地址,并在点击时启动默认的电子邮件应用以发送邮件。
-* **电话(Phone)**:将文本字段中的内容显示为电话号码,并在点击时启动拨打电话的操作(取决于设备支持情况)。
+| 显示方式 | 说明 |
+| --- | --- |
+| URL | 将文本显示为网址,点击后在浏览器中打开链接 |
+| Email | 将文本显示为邮箱地址,点击后打开默认邮箱应用 |
+| Phone | 将文本显示为电话号码,点击后启动拨打电话操作;具体行为取决于设备支持情况 |
## 数字字段的交互展现
-对于数字字段,您可以选择以下的显示方式:
+数字字段可以用图形方式显示数值状态。
+
+### 单值数字字段
-**单值数字字段**:
+| 显示方式 | 说明 |
+| --- | --- |
+| 柱形图(Bar) | 用柱形长度表示数值大小,可设置颜色、是否显示数值,以及代表 100% 的目标值 |
+| 环形图(Ring) | 用环形进度表示数值占比,可设置颜色、是否显示数值,以及代表 100% 的目标值 |
-* **柱形图(Bar)**:数字值将以柱形图的形式显示。你可以为其设置颜色、是否在图上显示具体的数值以及表示100%最大值的具体数字(这并不代表数值的硬上限,而只是用于展示参考)。
-* **环形图(Ring)**:数字值将以环形图的形式显示。同样,你可以为其设置颜色、是否在图上显示具体的数值以及表示100%最大值的具体数字。
+### 多值数字字段
-**多值数字字段**:
+| 显示方式 | 说明 |
+| --- | --- |
+| 柱形图(Bar) | 将多个数字值以并列柱形图展示 |
+| 线形图(Line) | 将多个数字值以线形图展示 |
-* **柱形图(Bar)**:多个数字值将以并列的柱形图形式展示。你可以为其设置颜色。
-* **线形图(Line)**:多个数字值将以线形图的形式展示。你也可以为其设置颜色。
+## 注意事项
-使用这些交互展现的功能,你可以更为直观地查看和理解数据,同时使你的数据看起来更为生动和有趣。
+- 目标值只用于展示参考,不代表数值硬上限。
+- 交互展现也可以用于部分公式、汇总和查找结果,具体可用选项取决于字段结果类型。
diff --git a/zh/basic/field/conditional-lookup.mdx b/zh/basic/field/conditional-lookup.mdx
new file mode 100644
index 00000000..b2de24a4
--- /dev/null
+++ b/zh/basic/field/conditional-lookup.mdx
@@ -0,0 +1,129 @@
+---
+title: "条件查找"
+description: "用于按筛选条件跨表查找数据,并返回符合条件的记录值。"
+---
+
+条件查找可以在不预先建立关联关系的情况下,根据筛选条件从目标表中获取符合要求的数据。它适合按当前记录的字段值动态查找明细,比如查找同品类销量最高的产品,或查找某个周期对应的数据。
+
+## 适用场景
+
+| 场景 | 适合内容 |
+| --- | --- |
+| 品类分析 | 查找同一品类下销量最高的产品 |
+| 周期对比 | 查找上一个周期的销售额,用于环比计算 |
+| 客户匹配 | 根据电话、邮箱或客户编号查找对应资料 |
+| 明细查看 | 根据当前记录条件返回匹配的明细列表 |
+
+## 操作流程
+
+
+
+ 点击字段名最右侧的 `+` 图标,选择 **条件查找** 字段类型,并输入字段标题,比如“相关订单”。
+
+
+ 在目标表选择下拉菜单中选择要查询的数据表。
+
+
+ 选择要提取的数据字段,并确认返回数据类型。
+
+
+ 添加筛选条件,选择字段、条件类型和比较值。比较值可以是静态值,也可以引用当前表字段。
+
+
+ 按需设置排序字段、排序方式和显示记录数量。
+
+
+
+筛选条件至少需要配置一个。多个条件可以选择“所有条件满足(AND)”或“任一条件满足(OR)”。
+
+## 场景实践
+
+### 销售数据周期环比
+
+**数据表**
+
+- 周期销售统计表(包含周期、期初日期、期末日期、销售金额等字段)
+- 销售明细表(包含销售金额、销售日期等字段)
+
+在周期销售统计表中计算每个周期的销售环比增长率。先用条件汇总得到当期销售额,再用条件查找取上期销售额,最后用公式计算环比。
+
+
+
+**操作步骤**
+
+**创建条件汇总字段获取当期销售额**
+
+1. 在周期销售统计表中新建条件汇总字段,标题设为“当期销售额”
+2. 目标表选择:销售明细表
+3. 汇总字段选择:销售金额
+4. 筛选条件设置:
+ - 字段:销售日期 → 条件:早于或等于 → 值:当前表的期末日期字段
+ - 字段:销售日期 → 条件:晚于或等于 → 值:当前表的期初日期字段
+5. 聚合函数选择:求和
+
+**创建条件查找字段获取上期销售额**
+
+1. 新建条件查找字段,标题设为“上期销售额”
+2. 目标表选择:周期销售统计表(本表)
+3. 字段选择:当期销售额
+4. 筛选条件设置:
+ - 字段:期末日期 → 条件:等于 → 值:当前表的上期期末日期字段
+5. 聚合函数选择:求和
+
+**创建公式字段计算环比**
+1. 新建公式字段,标题设为“环比增长率”
+2. 公式设置为 `(当期销售额 - 上期销售额) / 上期销售额 * 100`
+3. 格式设置为百分比,保留 2 位小数
+
+### 销售数据产品分析
+
+
+
+**数据表**
+
+- 产品表(包含品类 ID、产品名称、销量等字段)
+- 品类表(包含品类 ID、品类名称等字段)
+
+在品类表中查找每个品类下销量最高的产品,用来查看各品类的主力产品。
+
+**操作步骤**
+
+**销量最高产品**
+
+1. 在品类表中新建条件查找字段,标题设为“销量最高产品”
+2. 目标表选择:产品表
+3. 查找字段选择:产品名称
+4. 筛选条件设置:
+ - 字段:品类 ID → 条件:等于 → 值:当前表的品类 ID 字段
+5. 排序设置:销量字段 → 降序
+6. 限制显示:1 条记录
+
+**销量**
+
+1. 再次新建条件查找字段,标题设为“销量”
+2. 目标表选择:产品表
+3. 查找字段选择:销量
+4. 筛选条件设置:
+ - 字段:品类 ID → 条件:等于 → 值:当前表的品类 ID 字段
+5. 排序设置:销量字段 → 降序
+6. 限制显示:1 条记录
+
+## 常见问题
+
+
+
+ 某些复杂字段类型,比如图片、附件,可能不支持作为筛选条件。
+
+
+
+ 普通查找需要先建立关联字段;条件查找可以直接用筛选条件匹配目标表数据。
+
+
diff --git a/zh/basic/field/conditional-rollup.mdx b/zh/basic/field/conditional-rollup.mdx
new file mode 100644
index 00000000..5ebeb770
--- /dev/null
+++ b/zh/basic/field/conditional-rollup.mdx
@@ -0,0 +1,107 @@
+---
+title: "条件汇总"
+description: "用于按筛选条件跨表统计数据,并返回一个聚合结果值。"
+---
+
+条件汇总可以在不预先建立关联关系的情况下,从目标表中筛选符合条件的记录,并对指定字段进行统计计算。它适合按当前记录的字段值动态计算数量、总和、平均值等结果。
+
+## 适用场景
+
+| 场景 | 适合内容 |
+| --- | --- |
+| 员工任务统计 | 统计某位负责人的进行中任务数、已完成任务数 |
+| 周期销售统计 | 按日期范围计算销售额、订单数或平均客单价 |
+| 重复数据识别 | 按名称、电话或编号统计重复次数 |
+| 区域经营报表 | 按区域、门店或渠道动态汇总业务数据 |
+
+## 操作流程
+
+
+
+ 点击字段名最右侧的 `+` 图标,选择 **条件汇总** 字段类型,并输入字段标题,比如“总销售额”。
+
+
+ 在目标表选择下拉菜单中选择要查询的数据表。
+
+
+ 选择要进行统计计算的数据字段,并确认字段类型。
+
+
+ 添加筛选条件,选择字段、条件类型和比较值。比较值可以是静态值,也可以引用当前表字段。
+
+
+ 根据数据类型选择原值、去重、去重计数、求和、计数、平均值、最大值、最小值等计算方式。
+
+
+
+## 场景实践
+
+### 团队任务量统计
+
+
+
+**数据表**
+
+- 任务表
+- 统计表
+
+团队管理员需要统计每个员工不同状态的任务数量,比如进行中和已完成任务数,用来查看当前任务分布和完成情况。
+
+**进行中任务数**
+
+1. 在员工信息表中新建条件汇总字段,标题设为“进行中任务数”
+2. 目标表选择:任务分配表
+3. 汇总字段选择:任务 ID
+4. 筛选条件设置:
+ - 字段:负责人 → 条件:等于 → 值:当前表的员工字段
+ - 字段:任务状态 → 条件:等于 → 值:“进行中”
+5. 聚合函数选择:全计数
+
+**已完成任务数**
+
+1. 再次新建条件汇总字段,标题设为“已完成任务数”
+2. 目标表选择:任务分配表
+3. 汇总字段选择:任务 ID
+4. 筛选条件设置:
+ - 字段:负责人 → 条件:等于 → 值:当前表的员工字段
+ - 字段:任务状态 → 条件:等于 → 值:“已完成”
+5. 聚合函数选择:全计数
+
+### 查找重复值
+
+
+
+**数据表**
+
+- 客户表(包含客户名称、联系电话等字段)
+
+在客户表中查找重复客户名称,合并客户资料前先确认重复情况。
+
+**操作步骤**
+
+1. 在客户表中新建条件汇总字段,标题设为“客户名称重复次数”
+2. 目标表选择:客户表(本表)
+3. 汇总字段选择:客户名称
+4. 筛选条件设置:
+ - 字段:客户名称 → 条件:等于 → 值:当前表的客户名称字段
+5. 聚合函数选择:全计数
+6. 新建公式字段,标题设为“重复标记”
+7. 公式设置:`IF(客户名称重复次数 > 1, "重复", BLANK())`
+
+客户表中会显示每个客户名称的出现次数,并在重复记录旁显示“重复”标记,后续可以筛选重复记录并逐条处理。
+
+## 常见问题
+
+
+
+ 条件汇总返回单个计算值,适合看总数、金额或平均值;条件查找返回符合条件的原始值列表,适合查看明细数据。
+
+
diff --git a/zh/basic/field/created-by.mdx b/zh/basic/field/created-by.mdx
new file mode 100644
index 00000000..051c7bde
--- /dev/null
+++ b/zh/basic/field/created-by.mdx
@@ -0,0 +1,41 @@
+---
+title: "创建人"
+description: "用于自动记录每条记录的创建者,无需手动录入。"
+---
+
+创建人字段会自动记录每条记录最初由谁创建。字段值由系统生成,适合做责任追溯、来源分析和个性化筛选。
+
+## 适用场景
+
+| 场景 | 适合内容 |
+| --- | --- |
+| 来源追溯 | 查看记录最初由哪位成员创建 |
+| 工作量统计 | 按创建人分组,统计成员新增记录数量 |
+| 个人视图 | 用“当前用户”筛选出自己创建的记录 |
+| 责任定位 | 数据异常时,快速找到记录初始来源 |
+
+## 创建和设置
+
+
+
+ 点击表头右侧的 `+` 图标,在字段类型列表中选择 **创建人**。
+
+
+ 输入字段名称,比如“提交人”或“登记人”。
+
+
+ 字段添加后,会自动显示记录的初始创建者头像和昵称。
+
+
+
+## 常见用法
+
+- **工作量统计**:基于“创建人”字段分组,查看每位成员创建了多少条记录。
+- **异常追溯**:发现数据异常时,查看创建人字段,定位记录的初始来源。
+- **个人工作台**:设置筛选条件:`创建人` `是` `当前用户`。
+
+## 注意事项
+
+- 创建人只记录 **第一次** 创建记录的人。后续无论谁修改内容,该字段都不会变化。
+- 如果需要追踪最后一次修改记录的人,请使用 **修改人** 字段。
+- 通过 Excel/CSV 批量导入的数据,创建人通常会记录为执行导入操作的用户。
diff --git a/zh/basic/field/created-time.mdx b/zh/basic/field/created-time.mdx
new file mode 100644
index 00000000..db39d805
--- /dev/null
+++ b/zh/basic/field/created-time.mdx
@@ -0,0 +1,48 @@
+---
+title: "创建时间"
+description: "用于自动记录每条记录最初创建的时间。"
+---
+
+创建时间字段会自动记录每条记录最初生成的时间。字段值由系统写入,适合按创建时间排序、筛选和统计。
+
+## 适用场景
+
+| 场景 | 适合内容 |
+| --- | --- |
+| 新增记录追踪 | 查看记录是什么时候创建的 |
+| 最新记录排序 | 按创建时间降序排列,优先处理最新数据 |
+| 周期统计 | 筛选本周、本月或指定时间段新增的数据 |
+| 只读时间戳 | 记录不可手动修改的创建时间 |
+
+## 创建和设置
+
+
+
+ 点击表头右侧的 `+` 图标,在字段类型列表中选择 **创建时间**。
+
+
+ 输入字段名称,比如“提交时间”或“登记日期”。
+
+
+ 字段添加后,会自动写入现有记录的创建时间,并对未来新增记录生效。
+
+
+
+## 显示格式
+
+| 设置 | 说明 |
+| --- | --- |
+| 日期格式 | 控制日期显示样式,适配不同业务规范 |
+| 时间格式 | 可以显示时间、隐藏时间,或选择 12 小时制 / 24 小时制 |
+| 时区设置 | 可以跟随查看者系统时区,也可以指定固定时区 |
+
+## 常见用法
+
+- **最新动态优先展示**:按“创建时间”字段降序排列,让最新创建的记录置顶。
+- **周期性数据统计**:筛选条件设置为 `创建时间` `是` `本月`,查看本月新增数据。
+
+## 注意事项
+
+- 创建时间是只读字段,不支持手动修改。
+- 通过 Excel/CSV 导入数据时,新记录的创建时间通常为导入时间。
+- 如果需要手动记录业务日期,请使用 **日期** 字段。
diff --git a/zh/basic/field/date.mdx b/zh/basic/field/date.mdx
new file mode 100644
index 00000000..0b5c29c4
--- /dev/null
+++ b/zh/basic/field/date.mdx
@@ -0,0 +1,57 @@
+---
+title: "日期"
+description: "用于记录日期和时间,支持日期格式、时间格式、时区和自动填入当前时间。"
+---
+
+日期字段用于记录具体日期或时间点,比如项目截止日、会议时间、员工入职日期。它可以只显示日期,也可以精确到具体时间,比如 `2025-11-03 14:30`。
+
+## 适用场景
+
+| 场景 | 适合内容 |
+| --- | --- |
+| 项目排期 | 任务开始时间、截止时间、里程碑日期 |
+| 活动安排 | 会议、活动、预约、发布计划 |
+| 人员和合同记录 | 入职日期、签约日期、到期日期 |
+| 周期统计 | 按周、月、季度筛选和统计数据 |
+
+## 创建和设置
+
+
+
+ 在表格视图中点击添加字段,并选择 **日期**。
+
+
+ 输入字段名称,比如“截止日期”、“会议时间”或“入职日期”。
+
+
+ 按需设置日期格式、是否包含时间、时间格式和时区。
+
+
+ 如果新记录需要自动带上当前时间,可以开启自动填入当前时间。
+
+
+
+## 日期字段选项
+
+| 选项 | 说明 |
+| --- | --- |
+| 包含时间 | 除了日期,也可以记录具体时间 |
+| 日期格式 | 控制日期显示样式,比如 `YYYY-MM-DD`、`DD/MM/YYYY`、`MM/DD/YYYY`、`D MMM YYYY` |
+| 时间格式 | 控制是否显示时间,以及使用 12 小时制或 24 小时制 |
+| 时区 | 指定日期和时间使用的时区,适合跨时区团队协作 |
+| 自动填入当前时间 | 新记录创建时自动填入当前时间 |
+
+更多格式请参阅[格式化](/zh/basic/field/common/formatter)。
+
+## 常见用法
+
+- **任务排期**:记录开始日期和截止日期,再按截止日期排序或筛选。
+- **活动规划**:记录会议和活动时间,避免遗漏重要安排。
+- **周期统计**:按日期筛选本周、本月或指定时间段的数据。
+- **日期计算**:在公式字段中引用日期字段,计算两个日期之间的间隔。
+
+## 注意事项
+
+
+如果需要记录“这条数据是什么时候创建的”,并且不允许手动修改,请使用 **[创建时间](/zh/basic/field/created-time)** 字段。
+
diff --git a/zh/basic/field/formula.mdx b/zh/basic/field/formula.mdx
new file mode 100644
index 00000000..947ae3ee
--- /dev/null
+++ b/zh/basic/field/formula.mdx
@@ -0,0 +1,93 @@
+---
+title: "公式"
+description: "通过公式字段引用其他字段,并对文本、数字、日期和逻辑条件进行动态计算。"
+---
+
+公式字段用于根据同一条记录里的其他字段自动计算结果。它可以处理数学运算、文本拼接、日期计算和条件判断,适合把重复计算规则固化到字段中。
+
+## 适用场景
+
+| 场景 | 适合内容 |
+| --- | --- |
+| 自动计算 | 根据数量、单价、折扣等字段计算总价、利润或得分 |
+| 文本处理 | 拼接文本、截取内容,或按分隔符提取信息 |
+| 日期处理 | 计算日期差、判断时间范围,或生成未来日期 |
+| 条件判断 | 根据条件返回不同结果,比如状态、提示或分类 |
+
+## 基础概念
+
+### 数据类型
+
+编写公式前,先确认参与计算的字段类型。不同类型支持的操作和函数不同。
+
+| 类型 | 说明 | 常见用法 |
+| --- | --- | --- |
+| 数字 | 整数或小数 | 四则运算、汇总、比较大小 |
+| 文本 | 字符串值 | 拼接、截取、替换、分割 |
+| 日期 | 日期或日期时间 | 计算间隔、比较早晚 |
+| 布尔值 | `TRUE` 或 `FALSE` | 条件判断、逻辑运算 |
+
+### 引用字段
+
+在公式中,可以通过字段名称引用其他字段的值。字段名称需要写在 `{}` 中,并与实际字段名保持一致:
+
+```js
+{单价} * {数量}
+```
+
+### 运算符
+
+| 运算符 | 用途 |
+| --- | --- |
+| `+` | 计算数值的和,或连接字符串 |
+| `-` | 计算数值的差 |
+| `*` | 计算数值的积 |
+| `/` | 计算数值的商 |
+| `%` | 计算余数 |
+
+## 常用写法
+
+### 常用函数
+
+函数用于执行特定操作。比如 `SUM` 计算总和,`LEFT` 从文本开头提取字符,`TEXTBEFORE` 按分隔符提取前半段文本,`TEXTSPLIT` 按分隔符拆分文本。
+
+更多函数请参阅[函数速查表](/zh/basic/field/formula/cheat-sheet)。
+
+### 文本处理
+
+| 操作 | 函数示例 | 说明 |
+| --- | --- | --- |
+| 连接文本 | `&`、`CONCATENATE` | 将两个或多个文本连接起来 |
+| 提取文本 | `LEFT`、`RIGHT`、`MID`、`TEXTBEFORE` | 提取字符串的一部分 |
+| 拆分文本 | `TEXTSPLIT` | 按指定分隔符拆成多个值 |
+
+### 逻辑判断
+
+`IF` 函数可以根据条件返回不同值。格式如下:
+
+```js
+IF(condition, value_if_true, value_if_false)
+```
+
+判断字段是否为空时,建议使用 `BLANK()` 进行比较。比如 `IF({重量}=BLANK(), 1, 2)` 会在数字字段为空时返回 `1`,否则返回 `2`。
+
+### 复杂表达式
+
+复杂公式可以同时包含多个函数、字段引用和运算符。使用括号可以控制计算顺序:
+
+```js
+({单价} * {数量}) * (1 - {折扣})
+```
+
+## 结果显示与维护
+
+### 格式化和交互展现
+
+公式结果也可以继续使用[格式化](/zh/basic/field/common/formatter)和[交互展现](/zh/basic/field/common/show-as)配置,比如显示为百分比、进度条或图标样式。可配置项会根据公式结果类型变化。
+
+### 调试与优化
+
+- **检查数据类型**:确认操作和函数使用了正确的数据类型。
+- **验证字段引用**:确认字段名称写法正确。
+- **逐步检查**:把复杂公式拆成较小的部分分别测试。
+- **避免重复计算**:如果同一个计算会在多处使用,可以考虑把结果保存为单独字段。
diff --git a/zh/basic/field/advanced/formula/cheat-sheet.mdx b/zh/basic/field/formula/cheat-sheet.mdx
similarity index 74%
rename from zh/basic/field/advanced/formula/cheat-sheet.mdx
rename to zh/basic/field/formula/cheat-sheet.mdx
index d1d64f0a..3a0dda7a 100644
--- a/zh/basic/field/advanced/formula/cheat-sheet.mdx
+++ b/zh/basic/field/formula/cheat-sheet.mdx
@@ -1,12 +1,14 @@
---
title: "函数速查表"
-description: "该章节提供了函数速查表,你可以在这里快速搜索所有的可用函数以及他们的基础使用方法"
+description: "用于快速查找公式函数、参数、输出类型和基础用法。"
mode: "wide"
---
-### 数值函数
+函数速查表用于快速查找可用函数、参数、输出类型和示例。编写公式时,可以按函数类别定位需要的函数。
-此章节提供了常见的数值处理函数,包括数学运算、统计计算等。
+## 数值函数
+
+数值函数用于数学运算、统计计算和数字格式处理。
| 函数名称 | 描述 | 输入 | 输出 | 示例 |
| --------- | -------------------------------------------------------------- | ------------------------- | ------ | -------------------------------------------------------------------------------------- |
@@ -14,7 +16,7 @@ mode: "wide"
| AVERAGE | 返回数字的平均值。 | `number1, [number2, ...]` | Number | `AVERAGE(100, 200, 300) => 200` |
| MAX | 返回给定数字中的最大值。 | `number1, [number2, ...]` | Number | `MAX(100, 200, 300) => 300` |
| MIN | 返回给定数字中的最小值。 | `number1, [number2, ...]` | Number | `MIN(100, 200, 300) => 100` |
-| ROUND | 根据 "precision" 给出的小数位数四舍五入该值。 | `value, [precision]` | Number | `ROUND(1.99, 0) => 2` `ROUND(16.8, -1) => 20` |
+| ROUND | 按 `precision` 指定的小数位数四舍五入。 | `value, [precision]` | Number | `ROUND(1.99, 0) => 2` `ROUND(16.8, -1) => 20` |
| ROUNDUP | 总是向上四舍五入,即远离零。 | `value, [precision]` | Number | `ROUNDUP(1.1, 0) => 2` `ROUNDUP(-1.1, 0) => -2` |
| ROUNDDOWN | 总是向下四舍五入,即朝向零。 | `value, [precision]` | Number | `ROUNDDOWN(1.9, 0) => 1` `ROUNDDOWN(-1.9, 0) => -1` |
| CEILING | 返回大于或等于该值的最接近的整数倍数。 | `value, [significance]` | Number | `CEILING(2.49) => 3` `CEILING(2.49, 1) => 2.5` |
@@ -25,22 +27,22 @@ mode: "wide"
| ABS | 返回绝对值。 | `value` | Number | `ABS(-1) => 1` |
| SQRT | 返回非负数的平方根。 | `value` | Number | `SQRT(4) => 2` |
| POWER | 计算指定的基数到指定的功率。 | `value` | Number | `POWER(2) => 4` |
-| EXP | 计算Euler数(e)到指定的功率。 | `value` | Number | `EXP(0) => 1` `EXP(1) => 2.718` |
-| LOG | 在提供的基数中计算值的对数。如果未指定,基数默认为10。 | `value, [base=10]` | Number | `LOG(100) => 2` `LOG(1024, 2) => 10` |
+| EXP | 计算欧拉数(e)的指定次幂。 | `value` | Number | `EXP(0) => 1` `EXP(1) => 2.718` |
+| LOG | 按指定基数计算值的对数。如果未指定,基数默认为 10。 | `value, [base=10]` | Number | `LOG(100) => 2` `LOG(1024, 2) => 10` |
| MOD | 返回将第一个参数除以第二个后的余数。 | `value, divisor` | Number | `MOD(9, 2) => 1` `MOD(9, 3) => 0` |
| VALUE | 将文本字符串转换为数字。 | `text` | Number | `VALUE("$1,000,000") => 1000000` |
-### 文本函数
+## 文本函数
-在这里,您会找到有关文本处理的常用函数,如字符串操作、格式化等。
+文本函数用于连接、查找、替换、截取和拆分字符串。
| 函数名称 | 描述 | 输入 | 输出 | 示例 |
| ---------------------- | ------------------------------------------------------------ | -------------------------------------------------- | ------------- | --------------------------------------------------------------------------- |
| CONCATENATE | 连接多种值类型参数为单一文本值。 | `text1, [text2, ...]` | Text | `CONCATENATE("Hello ", "Teable") => Hello Teable` |
| FIND | 在指定文本中查找子字符串的位置。如果未找到子字符串,则结果为 0。 | `stringToFind, whereToSearch, [startFromPosition]` | Number | `FIND("Teable", "Hello Teable") => 7` |
-| SEARCH | 在指定文本中查找子字符串的位置。如果未找到子字符串,则结果为空。与FIND函数类似,但当未找到子字符串时FIND返回0。 | `stringToFind, whereToSearch, [startFromPosition]` | Text or Empty | `SEARCH("Teable", "Hello Teable") => 7` |
+| SEARCH | 在指定文本中查找子字符串的位置。与 `FIND` 类似,但未找到子字符串时返回空值。 | `stringToFind, whereToSearch, [startFromPosition]` | Text or Empty | `SEARCH("Teable", "Hello Teable") => 7` |
| MID | 提取从指定位置开始的指定数量的子字符串。 | `text, whereToStart, count` | Text | `MID("Hello Teable", 6, 6) => "Teable"` |
| LEFT | 提取字符串开始的指定数量的字符。 | `text, count` | Text | `LEFT("2023-09-06", 4) => "2023"` |
| RIGHT | 提取字符串结束的指定数量的字符。 | `text, count` | Text | `RIGHT("2023-09-06", 5) => "09-06"` |
@@ -55,17 +57,17 @@ mode: "wide"
| TRIM | 去除字符串开始和结束的空白字符。 | `text` | Text | `TRIM(" Hello ") => "Hello"` |
| LEN | 计算字符串的字符数。 | `text` | Number | `LEN("Hello") => 5` |
| T | 如果参数是文本,则返回该参数,否则返回空。 | `value` | Text or Empty |