docs(plan): v0.2 adds Pi subagents and scheduled-jobs board
Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
1 parent
b839ed4056
commit
16ab2a6c84
97 files changed
+592
-648
No files matched your search
@@ -76,7 +76,7 @@ export default function FilesTrashPage() {
|
||||
if (r.restored.length) toast.success(`已还原 ${r.restored.length} 项`);
|
||||
for (const f of r.failed)
|
||||
toast.error(
|
||||
f.code === "exists" || f.code === "conflict" ? "原位置已被占用,可用“还原到…”换个目录" : f.message,
|
||||
f.code === "exists" || f.code === "conflict" ? "原位置已被占用。用“还原到…”换个目录" : f.message,
|
||||
{ description: rows?.find((x) => x.id === f.id)?.originalPath },
|
||||
);
|
||||
},
|
||||
@@ -135,7 +135,7 @@ export default function FilesTrashPage() {
|
||||
{snap?.title ? (
|
||||
<p className="text-meta text-muted-foreground">
|
||||
删除时关联:{snap.title}
|
||||
{snap.contentUnit ? ` ${snap.contentUnit}` : ""}(还原不会自动恢复资产)
|
||||
{snap.contentUnit ? ` ${snap.contentUnit}` : ""}(还原后资产不会自动恢复)
|
||||
</p>
|
||||
) : null}
|
||||
</div>
|
||||
@@ -210,7 +210,7 @@ export default function FilesTrashPage() {
|
||||
<>
|
||||
<PageHeader
|
||||
title="回收站"
|
||||
description="删除的文件先移到这里,保留 7 天后由后台任务清除;期间可还原到原位置或其他目录。"
|
||||
description="删除的文件在这里保留到期后自动清除,到期前可以还原。"
|
||||
actions={
|
||||
<>
|
||||
{filesMockEnabled() ? <StatusBadge tone="warning">演示数据</StatusBadge> : null}
|
||||
@@ -262,7 +262,7 @@ export default function FilesTrashPage() {
|
||||
</Button>
|
||||
</>
|
||||
) : (
|
||||
<span className="ml-auto text-meta text-muted-foreground">立即清除仅管理员会话可用。</span>
|
||||
<span className="ml-auto text-meta text-muted-foreground">立即清除需要管理员会话。</span>
|
||||
)}
|
||||
</div>
|
||||
<DataTable
|
||||
@@ -275,7 +275,7 @@ export default function FilesTrashPage() {
|
||||
hasMore={trash.hasNextPage}
|
||||
onLoadMore={() => void trash.fetchNextPage()}
|
||||
loadingMore={trash.isFetchingNextPage}
|
||||
empty={{ icon: Trash2, title: "回收站是空的", description: "在文件页删除的项会先移到这里。" }}
|
||||
empty={{ icon: Trash2, title: "回收站是空的", description: "在文件页删除的项会出现在这里。" }}
|
||||
/>
|
||||
|
||||
<ConfirmDialog
|
||||
@@ -296,12 +296,12 @@ export default function FilesTrashPage() {
|
||||
if (!o) setConfirmText("");
|
||||
}}
|
||||
title="清空回收站?"
|
||||
description={`将立即清除全部 ${rows?.length ?? 0} 项(含未到期的),不可恢复。`}
|
||||
description={`全部 ${rows?.length ?? 0} 项(含未到期)将被清除,不可恢复。`}
|
||||
confirmLabel="清空"
|
||||
destructive
|
||||
onConfirm={() => {
|
||||
if (confirmText.trim() !== "清空回收站") {
|
||||
toast.error("请输入“清空回收站”确认");
|
||||
toast.error("输入“清空回收站”以确认");
|
||||
return Promise.reject(new Error("unconfirmed"));
|
||||
}
|
||||
return doPurge(rows?.map((r) => r.id)).then(() => setConfirmText(""));
|
||||
@@ -345,7 +345,7 @@ function RestoreToDialog({
|
||||
<DialogContent className="sm:max-w-lg">
|
||||
<DialogHeader>
|
||||
<DialogTitle>还原到…</DialogTitle>
|
||||
<DialogDescription>{ids.length} 项 · 选一个可写的目录;同名已存在的项会失败,不会覆盖。</DialogDescription>
|
||||
<DialogDescription>{ids.length} 项 · 选一个可写目录。同名项已存在时跳过,不覆盖。</DialogDescription>
|
||||
</DialogHeader>
|
||||
<div className="max-h-80 overflow-y-auto rounded-xl border border-border p-1.5">
|
||||
<DirTree roots={roots.data ?? []} current={target} onSelect={setTarget} pickOnly />
|
||||
|
||||
Reference in new issue
Block a user