fix: 文件与作品页的低优先级问题(FIX-7)

- 文件列表「主文件」只认视频扩展名(字幕自成资产时位置 is_primary 也为真)
- 行内悬浮操作只在鼠标悬浮时出现,选中行不再常驻遮挡大小/时间
- 种子详情按识别状态说人话,解析结果 JSON 跟随技术信息默认收起
- 作品页空收录版本写「没设收录要求」,版本行写「库里有 N 个版本」

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
rootandClaude Opus 5.5 committed 2026-09-30 00:00:03 +08:00
1 parent 23bd8cfe45
commit 3c17fa3356
6 files changed
+48 -14

No files matched your search

+5 -8
View File
@@ -515,9 +515,7 @@ export function FileList({
<Cell className="truncate text-right text-caption tabular-nums">{sizeCell(e)}</Cell>
<Cell className="hidden truncate text-caption text-muted-foreground lg:block">{relTime(e.mtime)}</Cell>
<Cell className="relative grid place-items-center">
{onAction && !e.escape ? (
<HoverOps e={e} focused={focused} onAction={onAction} opState={opState} />
) : null}
{onAction && !e.escape ? <HoverOps e={e} onAction={onAction} opState={opState} /> : null}
{menuBtn}
</Cell>
</div>
@@ -561,15 +559,13 @@ export const DRAG_MIME = "application/x-umt-files";
const DESKTOP_COLS =
"grid-cols-[28px_minmax(0,1fr)_120px_5.5rem_32px] lg:grid-cols-[28px_minmax(0,1fr)_120px_5.5rem_6.5rem_32px]";
/** 行内 hover / 聚焦时浮出的 2 个主操作(§5.1),盖在大小/时间列上方 */
/** 行内 hover 时浮出的 2 个主操作(§5.1),盖在大小/时间列上方 */
function HoverOps({
e,
focused,
onAction,
opState,
}: {
e: FileEntry;
focused: boolean;
onAction: (e: FileEntry, op: MenuKey) => void;
opState?: (e: FileEntry, op: MenuKey) => string | null;
}) {
@@ -577,9 +573,10 @@ function HoverOps({
return (
<span
className={cn(
"pointer-events-none absolute top-1/2 right-9 flex -translate-y-1/2 items-center gap-1 rounded-full bg-background/95 py-0.5 pl-1 opacity-0 shadow-sm ring-1 ring-border backdrop-blur transition-opacity duration-micro",
// 只在鼠标悬浮时盖在大小/时间列上;选中/键盘聚焦的行不常驻(否则大小和时间一直被挡),
// 键盘操作走右键菜单与快捷键。
"pointer-events-none absolute top-1/2 right-9 flex -translate-y-1/2 items-center gap-1 rounded-full bg-background/95 py-0.5 pl-1 opacity-0 backdrop-blur shadow-sm ring-1 ring-border transition-opacity duration-micro",
"group-hover/row:pointer-events-auto group-hover/row:opacity-100",
focused && "pointer-events-auto opacity-100",
)}
>
{ops.map((op) => {