文案(搜索):按 human-copy 重写搜索与命令面板文案

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:48:14 +08:00
1 parent 542f107566
commit 822d4e7c63
4 files changed
+15 -15

No files matched your search

@@ -194,7 +194,7 @@ function PaletteBody({ initial }: { initial: string }) {
}} }}
/> />
<p className="py-6 text-center text-caption text-muted-foreground"> <p className="py-6 text-center text-caption text-muted-foreground">
输入作品名、别名或页面名称。选中作品打开详情页。 输入作品名、别名或页面名
</p> </p>
</div> </div>
) : ( ) : (
@@ -320,7 +320,7 @@ function actionItem(a: SearchAction, run: () => void): Item {
icon: actionIcon(a.kind), icon: actionIcon(a.kind),
title: a.title, title: a.title,
meta: a.group, meta: a.group,
hint: "前往", hint: "打开",
run, run,
}; };
} }
@@ -181,7 +181,7 @@ export function ReleaseResults({
</h2> </h2>
{first ? ( {first ? (
<p className="mt-0.5 text-meta break-words text-muted-foreground tabular-nums"> <p className="mt-0.5 text-meta break-words text-muted-foreground tabular-nums">
{first.sites.length} 个站点 · {first.cached ? "缓存结果" : "站点实时结果"} · 抓取于{" "} {first.sites.length} 个站点 · {first.cached ? "缓存结果" : "实时结果"} · 上次抓取{" "}
{relTime(first.fetchedAt)} {relTime(first.fetchedAt)}
</p> </p>
) : null} ) : null}
@@ -199,7 +199,7 @@ export function ReleaseResults({
onClick={() => refresh.mutate(api, { onError: (e) => toast.error(errorMessage(e, "刷新失败")) })} onClick={() => refresh.mutate(api, { onError: (e) => toast.error(errorMessage(e, "刷新失败")) })}
> >
<RefreshCw className={cn(refresh.isPending && "animate-spin")} /> <RefreshCw className={cn(refresh.isPending && "animate-spin")} />
{refresh.isPending ? "查询中…" : "刷新"} {refresh.isPending ? "刷新中…" : "刷新"}
</Button> </Button>
</div> </div>
</div> </div>
@@ -240,7 +240,7 @@ export function ReleaseResults({
<div className="pg-slab min-w-0 overflow-hidden rounded-xl"> <div className="pg-slab min-w-0 overflow-hidden rounded-xl">
{res.isPending ? ( {res.isPending ? (
<div className="p-4"> <div className="p-4">
<p className="mb-3 text-meta text-muted-foreground">正在查询各站点,最慢约 15 秒…</p> <p className="mb-3 text-meta text-muted-foreground">查询各站点中,最长约 15 秒…</p>
<LoadingState rows={4} /> <LoadingState rows={4} />
</div> </div>
) : res.isError && !rows.length ? ( ) : res.isError && !rows.length ? (
@@ -361,7 +361,7 @@ function CoverageNotice({ page }: { page: ReleaseSearchPage }) {
<ul className="mt-1 flex flex-wrap gap-x-3 gap-y-0.5 text-meta text-muted-foreground"> <ul className="mt-1 flex flex-wrap gap-x-3 gap-y-0.5 text-meta text-muted-foreground">
{page.failedSites.map((s) => ( {page.failedSites.map((s) => (
<li key={s.siteId} className="break-all" title={s.error ?? undefined}> <li key={s.siteId} className="break-all" title={s.error ?? undefined}>
{s.siteName}:{SITE_STATUS[s.status]} {s.siteName}:{SITE_STATUS[s.status]}
{s.error ? `(${s.error})` : ""} {s.error ? `(${s.error})` : ""}
</li> </li>
))} ))}
@@ -384,7 +384,7 @@ function CoverageNotice({ page }: { page: ReleaseSearchPage }) {
<ul className="mt-1 space-y-0.5 pl-4"> <ul className="mt-1 space-y-0.5 pl-4">
{skipped.map((s) => ( {skipped.map((s) => (
<li key={s.siteId} className="break-all"> <li key={s.siteId} className="break-all">
{s.siteName}:{s.error ?? "站点不支持搜索"} {s.siteName}:{s.error ?? "不支持搜索"}
</li> </li>
))} ))}
</ul> </ul>
@@ -650,11 +650,11 @@ function ReleaseRow({ r, onOpen, onDownload }: { r: SearchRelease; onOpen: () =>
</span> </span>
<span className="lg:w-16 lg:text-right">{r.sizeBytes === null ? "—" : formatBytes(r.sizeBytes, 1)}</span> <span className="lg:w-16 lg:text-right">{r.sizeBytes === null ? "—" : formatBytes(r.sizeBytes, 1)}</span>
<span className="inline-flex items-center gap-0.5 lg:w-28" title="做种 / 下载"> <span className="inline-flex items-center gap-0.5 lg:w-28" title="做种 / 下载">
<ArrowUp aria-label="做种" className="h-3.5 w-3.5" /> <ArrowUp aria-label="做种数" className="h-3.5 w-3.5" />
<span className={cn("text-body", seedless ? "text-muted-foreground" : "font-semibold text-foreground")}> <span className={cn("text-body", seedless ? "text-muted-foreground" : "font-semibold text-foreground")}>
{r.seeders ?? "—"} {r.seeders ?? "—"}
</span> </span>
<ArrowDown aria-label="下载" className="ml-1.5 h-3 w-3" /> <ArrowDown aria-label="下载数" className="ml-1.5 h-3 w-3" />
{r.leechers ?? "—"} {r.leechers ?? "—"}
</span> </span>
<span <span
@@ -667,15 +667,15 @@ function ReleaseRow({ r, onOpen, onDownload }: { r: SearchRelease; onOpen: () =>
<span className="flex flex-wrap items-center gap-1"> <span className="flex flex-wrap items-center gap-1">
{r.sourceReleaseId ? ( {r.sourceReleaseId ? (
<Button asChild variant="ghost" size="sm"> <Button asChild variant="ghost" size="sm">
<Link to={`/console/sites/${r.siteId}`} title="在站点工作台查看"> <Link to={`/console/sites/${r.siteId}`} title="打开站点页">
<ExternalLink /> <ExternalLink />
工作台 站点页
</Link> </Link>
</Button> </Button>
) : null} ) : null}
<Button variant="ghost" size="sm" onClick={() => delegateToAgent(r)}> <Button variant="ghost" size="sm" onClick={() => delegateToAgent(r)}>
<Bot /> <Bot />
委托智能体 交给智能体
</Button> </Button>
<Button size="sm" onClick={onDownload}> <Button size="sm" onClick={onDownload}>
<Download /> <Download />
@@ -74,7 +74,7 @@ export function WorksSection({ q }: { q: string }) {
plain plain
icon={Film} icon={Film}
title="没有匹配的作品" title="没有匹配的作品"
description="换个译名、原名或别名再搜;资源标题可以点「按关键词搜资源」。" description="换个译名、原名或别名再搜,或点「按关键词搜资源」直接搜资源标题。"
className="py-8" className="py-8"
/> />
</div> </div>
@@ -134,7 +134,7 @@ export function SitePickerDialog({
))} ))}
</fieldset> </fieldset>
{sitesQ.isPending ? ( {sitesQ.isPending ? (
<p className="text-caption text-muted-foreground">加载站点…</p> <p className="text-caption text-muted-foreground">加载中…</p>
) : sites.length === 0 ? ( ) : sites.length === 0 ? (
<p className="text-caption text-muted-foreground"> <p className="text-caption text-muted-foreground">
还没有启用的站点。 还没有启用的站点。
@@ -156,7 +156,7 @@ export function SitePickerDialog({
.filter((s) => ids.includes(s.id)) .filter((s) => ids.includes(s.id))
.map((s) => s.name) .map((s) => s.name)
.join("、") .join("、")
: "没有站点勾选「默认参与搜索」。在站点页打开,或改选全部站点。"} : "没有站点勾选「默认参与搜索」。到站点页勾选,或改选「全部站点」。"}
</p> </p>
)} )}
<DialogFooter> <DialogFooter>