文案:格式化本轮改动的文件

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
rootandClaude Opus 5.5 committed 2026-10-07 01:52:30 +08:00
1 parent 804f40cd36
commit 058519fa0e
5 files changed
+16 -35

No files matched your search

+11 -20
View File
@@ -599,7 +599,8 @@ export function TransferDialog({
<DialogHeader>
<DialogTitle>{mode === "move" ? "移动到…" : "复制到…"}</DialogTitle>
<DialogDescription>
{items.length === 1 ? baseName(items[0]?.path ?? "") : `${items.length} 项`} · 跨卷移动会先复制、核验,再删除源文件。
{items.length === 1 ? baseName(items[0]?.path ?? "") : `${items.length} 项`} ·
跨卷移动会先复制、核验,再删除源文件。
</DialogDescription>
</DialogHeader>
<div className="grid min-h-0 gap-4 overflow-y-auto md:grid-cols-[15rem_minmax(0,1fr)]">
@@ -635,9 +636,7 @@ export function TransferDialog({
}}
className="max-h-72 md:max-h-96"
/>
<p className="text-meta text-muted-foreground">
目标可以是可写的媒体库目录或 Alist 存储。
</p>
<p className="text-meta text-muted-foreground">目标可以是可写的媒体库目录或 Alist 存储。</p>
</div>
<div className="min-w-0 space-y-3">
{target && targetRoot ? (
@@ -687,9 +686,7 @@ export function TransferDialog({
</button>
</Notice>
) : null}
{plan.truncated ? (
<Notice tone="warning">文件太多,只列出前一部分。执行时全部处理。</Notice>
) : null}
{plan.truncated ? <Notice tone="warning">文件太多,只列出前一部分。执行时全部处理。</Notice> : null}
<ul className="space-y-1.5">
{plan.pairs.map((p) => {
const sr = rootById.get(p.source.root);
@@ -875,9 +872,7 @@ export function DeleteDialog({
{d.hnr === "satisfied" ? "已满足" : d.hnr === "unsatisfied" ? "未满足" : "未知"}
</p>
))}
{c.assets.length ? (
<p>含 {c.assets.length} 个已整理文件</p>
) : null}
{c.assets.length ? <p>含 {c.assets.length} 个已整理文件</p> : null}
{c.bindings.map((bd) => (
<p key={bd.bindingId}>
路径绑定:{bd.title}
@@ -907,9 +902,7 @@ export function DeleteDialog({
<input type="checkbox" className="mt-1" checked={unbind} onChange={(e) => setUnbind(e.target.checked)} />
<span>
解除路径绑定
<span className="block text-meta text-muted-foreground">
绑定作废,这个作品下次整理时重新选目录。
</span>
<span className="block text-meta text-muted-foreground">绑定作废,这个作品下次整理时重新选目录。</span>
</span>
</label>
) : null}
@@ -943,7 +936,9 @@ export function DeleteDialog({
<span>
永久删除
<span className="block text-meta text-muted-foreground">
{isAdmin ? "无法恢复。部署时设置 FILES_ALLOW_PERMANENT_DELETE=true 才能用。" : "只有管理员会话可用。"}
{isAdmin
? "无法恢复。部署时设置 FILES_ALLOW_PERMANENT_DELETE=true 才能用。"
: "只有管理员会话可用。"}
</span>
</span>
</label>
@@ -1051,9 +1046,7 @@ export function RefreshMetadataDialog({ items, onClose }: { items: FileEntry[];
onSuccess: (r) => {
setResult(r);
const skipped = r.skipped.length ? `,${r.skipped.length} 个跳过` : "";
(r.skipped.length ? toast.warning : toast.success)(
`已提交 ${r.submitted.length} 个作品${skipped}`,
);
(r.skipped.length ? toast.warning : toast.success)(`已提交 ${r.submitted.length} 个作品${skipped}`);
},
onError: (e) => toast.error(filesErrorText(e, "提交失败")),
},
@@ -1177,9 +1170,7 @@ export function ScrapeDialog({ items, root, onClose }: { items: FileEntry[]; roo
<DialogContent className="sm:max-w-2xl">
<DialogHeader>
<DialogTitle>刮削{single ? ` · ${single.name}` : ` · ${items.length} 项`}</DialogTitle>
<DialogDescription>
按路径识别作品,在文件所在目录写 NFO 和图片。没整理过的文件也能刮削。
</DialogDescription>
<DialogDescription>按路径识别作品,在文件所在目录写 NFO 和图片。没整理过的文件也能刮削。</DialogDescription>
</DialogHeader>
{!started ? (
<div className="grid gap-3">
@@ -398,9 +398,7 @@ export function OrganizeWizard({ source, onClose }: { source: OrganizeSource; on
<p className="truncate font-mono text-caption" title={r.path}>
{baseName(r.path)}
</p>
<p className="truncate text-meta text-muted-foreground">
{r.entity ? entityLabel(r.entity) : "未识别"}
</p>
<p className="truncate text-meta text-muted-foreground">{r.entity ? entityLabel(r.entity) : "未识别"}</p>
{rowProblem(r) ? <p className="text-meta text-warning">{rowProblem(r)}</p> : null}
</div>
),
@@ -711,9 +709,7 @@ export function OrganizeWizard({ source, onClose }: { source: OrganizeSource; on
<div className="flex items-center justify-between gap-3 rounded-xl border border-border px-3 py-2">
<span className="text-caption">
整理后刮削
<span className="block text-meta text-muted-foreground">
整理完成后写 NFO 和图片
</span>
<span className="block text-meta text-muted-foreground">整理完成后写 NFO 和图片</span>
</span>
<Switch
checked={options.scrapeAfterImport}
@@ -33,9 +33,7 @@ export function FileSourceSelection({
<DialogContent>
<DialogHeader>
<DialogTitle>{profiles.isPending ? "读取整理来源…" : "选择整理来源"}</DialogTitle>
<DialogDescription>
整理时沿用所选整理来源的整理方式、目标目录和分类。
</DialogDescription>
<DialogDescription>整理时沿用所选整理来源的整理方式、目标目录和分类。</DialogDescription>
</DialogHeader>
{profiles.isPending ? (
<p role="status" className="text-caption text-muted-foreground">
@@ -98,9 +98,7 @@ function QueueItem({ run }: { run: EngineRun }) {
<span className="text-muted-foreground">来源</span>
<p className="break-all font-mono text-meta">
{source ??
(detail.isFetching || download.isFetching || recordQuery.isFetching
? "加载中…"
: "读取不到来源")}
(detail.isFetching || download.isFetching || recordQuery.isFetching ? "加载中…" : "读取不到来源")}
</p>
</div>
<div className="min-w-0">
@@ -85,9 +85,7 @@ export function SourceSelection({
onSuccess: (r) =>
r.items.length
? onSelect(stockWizardSource(p, r))
: toast.info(
`没有可整理的文件${stockNotes(r)}`,
),
: toast.info(`没有可整理的文件${stockNotes(r)}`),
onError: (e) => toast.error(filesErrorText(e, "扫描存量失败")),
},
)