diff --git a/.memory/worklog.json b/.memory/worklog.json
index 6bc3dc9..42e2e10 100644
--- a/.memory/worklog.json
+++ b/.memory/worklog.json
@@ -195,6 +195,13 @@
"message": "auto-save 2026-05-12 18:40 (~2)",
"hash": "864781d",
"files_changed": 2
+ },
+ {
+ "ts": "2026-05-12T18:46:46+08:00",
+ "type": "commit",
+ "message": "auto-save 2026-05-12 18:46 (~3)",
+ "hash": "5a914b9",
+ "files_changed": 3
}
]
}
diff --git a/web/components/dashboard.tsx b/web/components/dashboard.tsx
index 962b7cb..95bccfa 100644
--- a/web/components/dashboard.tsx
+++ b/web/components/dashboard.tsx
@@ -187,43 +187,35 @@ export function Dashboard({ data }: Props) {
- {/* 展开面板 — 多卡同时展开,按 step 顺序排列 */}
+ {/* 展开面板 — 单列宽度,居中,卡片竖向堆叠 */}
{expanded.size > 0 && (
-
-
-
展开详情
-
@@ -231,7 +223,7 @@ export function Dashboard({ data }: Props) {
function renderSection(key: string): ReactNode {
return (
- <>
+
{/* ---- Input ---- */}
{key === "input" && (
@@ -367,41 +359,45 @@ export function Dashboard({ data }: Props) {
候选 30 张 → pHash 去重 + 清晰度排序 → 时序分桶 → 5 张代表分镜
) : (
-
- {job!.frames.map((f) => {
- const isSel = data.selectedFrames.has(f.index)
- return (
-
{ e.stopPropagation(); data.onToggleFrame(f.index) }}
- className={`ml-auto text-[10.5px] px-2 py-0.5 rounded-full inline-flex items-center gap-1 ${
- isSel
- ? "bg-emerald-500 text-white"
- : "bg-white/10 text-[var(--text-soft)] border border-white/15 hover:bg-white/20"
- }`}
- >
-
- {isSel ? "已选用" : "选用此帧"}
-
- }
- >
+ job!.frames.map((f) => {
+ const isSel = data.selectedFrames.has(f.index)
+ return (
+ { e.stopPropagation(); data.onExpandFrame(f.index) }}
- className="block w-full aspect-video rounded-md overflow-hidden bg-black relative"
+ onClick={(e) => { e.stopPropagation(); data.onToggleFrame(f.index) }}
+ className={`ml-auto text-[10.5px] px-2 py-0.5 rounded-full inline-flex items-center gap-1 ${
+ isSel
+ ? "bg-emerald-500 text-white"
+ : "bg-white/10 text-[var(--text-soft)] border border-white/15 hover:bg-white/20"
+ }`}
>
-
+
+ {isSel ? "已选用" : "选用此帧"}
-
- )
- })}
-
+ }
+ >
+
{ e.stopPropagation(); data.onExpandFrame(f.index) }}
+ className="block w-full rounded-md overflow-hidden bg-black"
+ title="点击放大"
+ >
+
+
+
+ )
+ })
)}
)}
@@ -415,24 +411,22 @@ export function Dashboard({ data }: Props) {
) : (
-
- {job!.transcript.map((s) => (
-
-
- EN
- {s.en}
-
-
- ZH
- {s.zh || 翻译中…}
-
-
- ))}
-
+ job!.transcript.map((s) => (
+
+
+ EN
+ {s.en}
+
+
+ ZH
+ {s.zh || 翻译中…}
+
+
+ ))
)
)}
@@ -512,7 +506,7 @@ export function Dashboard({ data }: Props) {
)}
- >
+
)
}
}