Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,8 @@
"pages": [
"en/basic/record",
"en/basic/record/comment",
"en/basic/record/record-history"
"en/basic/record/record-history",
"en/basic/record/archive-trash"
]
},
{
Expand Down Expand Up @@ -405,6 +406,7 @@
"en/basic/admin-panel/computed-outbox",
"en/basic/admin-panel/ai-generation-queue",
"en/basic/admin-panel/audit-log",
"en/basic/admin-panel/announcements",
"en/basic/admin-panel/sandbox-agent"
]
},
Expand Down Expand Up @@ -693,7 +695,8 @@
"pages": [
"zh/basic/record",
"zh/basic/record/comment",
"zh/basic/record/record-history"
"zh/basic/record/record-history",
"zh/basic/record/archive-trash"
]
},
{
Expand Down Expand Up @@ -773,6 +776,7 @@
"zh/basic/admin-panel/computed-outbox",
"zh/basic/admin-panel/ai-generation-queue",
"zh/basic/admin-panel/audit-log",
"zh/basic/admin-panel/announcements",
"zh/basic/admin-panel/sandbox-agent"
]
},
Expand Down
62 changes: 62 additions & 0 deletions en/basic/admin-panel/announcements.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
title: "Announcements"
description: "Publish in-app announcements to everyone, to selected spaces, or to selected users, and withdraw them when they no longer apply."
---

<Tip>Available for self-hosted Business plan and above</Tip>

Path: Admin Panel → Announcements

**Announcements** lets administrators put a message in front of signed-in users without sending email: planned maintenance, an incident and its resolution, a policy change, or a new feature you want people to find. Each announcement runs inside a scheduled window and can be aimed at the whole instance or at a specific group.

## Publish an Announcement

Click **Publish announcement** and fill in the form. The preview on the side shows the announcement as users will see it.

| Setting | What it controls |
| --- | --- |
| **Form** | Where the announcement appears: **Banner** across the top of the app, **Toast** as a transient notification, **Modal** as a dialog that interrupts, or **Sidebar card** in the space and base sidebars. |
| **Level** | The tone users see: **Info**, **Maintenance**, **Critical**, or **Resolved**. |
| Title and **Body** | The announcement text. |
| **Starts at** / **Ends at** | The window during which the announcement is delivered. The end time must be after the start time. |
| **Link text** / **Link URL** | An optional destination. A sidebar card is itself a link, so it always offers the URL field; the other forms show it once the body uses the `{link}` placeholder. |
| **Audience** | **Everyone**, **Specific spaces**, or **Specific users**. |

Choose the strongest form the message deserves. A banner and a sidebar card sit alongside the user's work; a modal blocks it. Users can dismiss an announcement themselves, and when several are active at once, banners collapse behind a **N more announcements** toggle.

### Target Specific Spaces or Users

For **Specific spaces** or **Specific users**, paste identifiers into the audience box (space IDs or names, or user IDs, names, or emails, separated by commas), then click **Match**. Matched entries become chips, and anything Teable could not resolve stays in the box under **Not matched:** so you can correct and retry.

Space membership is evaluated when the announcement is delivered, so collaborators added later still receive a space-targeted announcement.

### Insert Live Values

Use **Insert placeholder** in the body to add values that Teable fills in at display time, so one message stays accurate for every reader:

| Placeholder | Renders as |
| --- | --- |
| `{startTime}` / `{endTime}` | The window's start or end, in the reader's language and time zone |
| `{time:…}` | A specific instant you choose |
| `{duration}` | How long the window lasts |
| `{countdown}` | A live countdown to the start |
| `{link}` | The link, shown with your **Link text** |

`{link}` is unavailable for the sidebar card, because the whole card is already the link.

### Translate the Content

Write the announcement in one language, then use **AI translate** to fill the other shipped interface languages. Choose **Fill blanks only** to keep translations you already wrote, or **Overwrite all** to re-translate everything. Review each language tab afterwards: the translation is a draft, not a final proofread. Readers see the language that matches their interface, falling back to English.

## Manage Published Announcements

The list shows every announcement with its **Status**, **Title**, **Form**, **Level**, **Audience**, **Window**, and **Created by**. Open a row to inspect its full content.

| Status | Meaning |
| --- | --- |
| **Scheduled** | The start time has not arrived yet. |
| **Active** | Currently being delivered. |
| **Expired** | The end time has passed. |
| **Withdrawn** | Stopped early by an administrator. |

Click **Withdraw** on an active announcement to stop delivering it immediately. An announcement that has already expired cannot be withdrawn, and its record stays as it was.
3 changes: 2 additions & 1 deletion en/basic/ai/app-builder.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,8 @@ When your app is ready, click the **Publish** button (arrow icon) in the top rig
- **Custom Domain**: Map your own domain to the app.
- **Show branding**: Use **Show branding** in the **Publish** menu to control whether the published app shows the **Build with Teable** badge. If you change this setting after publishing, click **Redeploy** to apply it.
- **Unpublish**: For a published app, use **Unpublish** in the publish menu to take the public link offline.
- **App configuration changes**: If the publish menu shows **App configuration changed — redeploy to apply**, click **Redeploy** to apply pending Secret value, AI access, login, or branding changes to the published app.
- **App configuration changes**: When the publish menu shows **Runtime configuration changed. Redeploy to apply it to the live app** or **Branding setting changed. Redeploy to apply it to the live app**, click **Redeploy**.
- **Open published app**: Once an app is published, the icon next to **Publish** opens the live app in a new tab.

<Info>Hiding the **Build with Teable** badge requires the Business plan or above.</Info>

Expand Down
6 changes: 6 additions & 0 deletions en/basic/automation/trigger/records/record-updated.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ Choose "All Fields" only when you genuinely need to react to every possible chan

<Tip>It is strongly recommended to select specific watch fields. Selecting "All Fields" can cause the workflow to fire on unrelated edits, waste automation runs, and lead to unexpected behavior.</Tip>

### Computed fields

[Formula](/en/basic/field/formula), [Lookup](/en/basic/field/lookup), [Rollup](/en/basic/field/rollup), [Conditional Lookup](/en/basic/field/conditional-lookup), and [Conditional Rollup](/en/basic/field/conditional-rollup) values come from Teable's own calculation rather than from typing, and a recalculation only fires this trigger when you name the computed field in **Watch Fields**. All five behave the same way.

This lets you react to a derived result instead of to the raw inputs behind it. Watch a `Total amount` Formula field and the workflow runs whenever the total actually changes, no matter which of the underlying fields moved. Watch a Rollup of linked tasks and the workflow runs when the rolled-up value changes, including when the change came from an edit in the linked table.

## Common pitfall: update loops

<Warning>If your workflow includes an Update Record action that writes to the same table and updates a watched field, the trigger will fire again, creating an infinite loop.</Warning>
Expand Down
3 changes: 3 additions & 0 deletions en/basic/record.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ You can create records in the following ways:

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.

Deleted records go to the table trash, where you can review and restore them. If you want records out of the table but still available, archive them instead of deleting. See [Archive and Trash](/en/basic/record/archive-trash).

## Record Details

<img
Expand All @@ -65,6 +67,7 @@ The detail card is useful for records with many fields. You can browse fields ve
| --- | --- |
| 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). |
| Archive and trash | Move finished records out of the table, or restore ones that were deleted. See [Archive and Trash](/en/basic/record/archive-trash). |
| Linked records | Use a **Link** field to connect records across tables. See [Link Field](/en/basic/field/link). |

## Notes
Expand Down
64 changes: 64 additions & 0 deletions en/basic/record/archive-trash.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
title: "Archive and Trash"
description: "Archive records to move them out of a table without losing them, and restore deleted records from the table trash."
---

Records that leave the grid end up in one of two places. The **Archive** holds records you moved out of daily work but still need. The **Trash** holds records you deleted, so you can put them back.

Both open from the same place: click the **...** button next to the table, then choose **History** > **Archive** or **History** > **Trash**.

## Archive Records

<Tip>Available for Business plan and above</Tip>

Archiving takes records out of the table view and out of your space's record count, while keeping their field values, attachments, and creator information. Use it for finished projects, closed deals, or past seasons that you want out of the way but not deleted.

To archive records, select one or more rows in the grid, right-click, and choose **Archive record** or **Archive all selected records**. The confirmation dialog shows how many records will be archived. If you archive the wrong rows, `Ctrl/Cmd + Z` undoes the action and puts them back.

### Review the Archive

The archive opens as a read-only grid with two extra columns, **Archived time** and **Archived by**, in front of the table's own fields. Click the expand icon on a row to open **Record detail** and read the full record.

Use the toolbar to find the records you need:

| Control | What it does |
| --- | --- |
| Sort selector | Order by **Sort by archived time**, **Sort by created time**, or **Sort by last modified time** |
| **All creators** | Show only records created by selected collaborators |
| **Archived time** | Limit the list to a date range |
| **Clear filter** | Return to the full archive |
| **Export CSV** | Download the archived records currently listed |

### Restore or Permanently Delete

Select rows in the archive, then use **Restore** or **Permanently delete** in the toolbar. Both buttons show the number of selected records.

Restoring puts the records back into the table with their original values, and they count toward your space record limit again. If the space is already at its record limit, restore fails until you free up rows or raise the limit.

**Permanently delete** removes the archived records for good. This cannot be undone.

<Info>Owners and creators can archive, restore, and permanently delete. Editors can archive records and open the archive, but cannot restore or delete from it. Commenters and viewers have no access.</Info>

## Table Trash

The trash lists records, fields, and views that were deleted from the table, along with who deleted them and when. Filter the list by type, by the user who deleted the item, or by deletion time, and use **Clear filter** to go back to the full list.

To see what a deletion actually contained, click the entry in the **Deleted resource** column of a record row. **Deleted records** lists those rows in a grid, where you can filter by creator or created time and expand a row for its **Record detail**. Check the batch here before you restore it.

Click **Restore** on a trash entry to put the deleted resource back. As with the archive, restoring records re-occupies row quota, so a space that is already at its record limit must free up rows first.

### How Long Deleted Records Stay Visible

How far back the trash lists deletions depends on your plan:

| Plan | Trash history visible |
| --- | --- |
| Free | 14 days |
| Pro | 1 year |
| Business | 3 years |

## Related

- [Record History](/en/basic/record/record-history): trace who changed a value and when
- [Records Overview](/en/basic/record): create, edit, and delete records
- [Billing and Plans](/en/basic/space/billing): compare plan limits and change your subscription
3 changes: 2 additions & 1 deletion en/basic/record/record-history.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ Users only need editing permission for a specific record to view that record's h
## Notes

- Record history stores changes at the cell level.
- Bulk import, bulk paste, and bulk update operations can generate many history entries.
- Bulk paste and bulk update operations can generate many history entries.
- Records added by an import or by duplicating a table do not create history entries. Later changes to those records are recorded as usual.
- Button field actions appear as **Clicked button** entries.
- If you cannot see the history entry point, first confirm whether you have editing permission for the corresponding record or table.
Loading
Loading