diff --git a/h3-console/static/index.html b/h3-console/static/index.html
index 6ed6eba..c108766 100644
--- a/h3-console/static/index.html
+++ b/h3-console/static/index.html
@@ -347,12 +347,18 @@ function filenameFromUrl(u) {
} catch (e) { return u; }
}
-// 每个预览项都包一层 .thumb-wrap,媒体本体再包一层 .thumb-media 挂 × 删除按钮,
-// 下面接一行文件名 caption——上传上去选错了/传多了,之前只能整个表单清空重来,
-// 2026-08-24 用户要求能单个删;文件名是 2026-08-24 补的,之前只有个位置标签看不出传的是哪个文件。
+// 每个预览项都包一层 .thumb-wrap,文件名 caption 放在最上面、媒体本体再包一层
+// .thumb-media 挂 × 删除按钮——上传上去选错了/传多了,之前只能整个表单清空重来,
+// 2026-08-24 用户要求能单个删;文件名是 2026-08-24 补的,之前只有个位置标签看不出传的是
+// 哪个文件;2026-08-25 改成放图片上方(之前放下面,用户反馈不够显眼,容易当成没显示)。
function wrapWithDelete(mediaEl, onDelete, caption) {
const wrap = document.createElement('span');
wrap.className = 'thumb-wrap';
+ if (caption) {
+ const cap = document.createElement('span');
+ cap.className = 'thumb-name'; cap.textContent = caption; cap.title = caption;
+ wrap.appendChild(cap);
+ }
const mediaWrap = document.createElement('span');
mediaWrap.className = 'thumb-media';
const del = document.createElement('button');
@@ -360,11 +366,6 @@ function wrapWithDelete(mediaEl, onDelete, caption) {
del.onclick = onDelete;
mediaWrap.appendChild(mediaEl); mediaWrap.appendChild(del);
wrap.appendChild(mediaWrap);
- if (caption) {
- const cap = document.createElement('span');
- cap.className = 'thumb-name'; cap.textContent = caption; cap.title = caption;
- wrap.appendChild(cap);
- }
return wrap;
}
@@ -827,11 +828,14 @@ async function refreshDetail() {
if (req.first_frame_url) imgs.push(['首帧', req.first_frame_url]);
if (req.last_frame_url) imgs.push(['尾帧', req.last_frame_url]);
(req.reference_image_urls || []).forEach((u, i) => imgs.push(['参考图'+(i+1), u]));
- // 图片点开看大图,参考视频/音频跟生成结果的视频一样用原生播放器直接预览;每个媒体下面
- // 再带一行文件名(从上传时 server.py 塞进 URL 里的原名反解出来,见 filenameFromUrl)。
+ // 图片点开看大图,参考视频/音频跟生成结果的视频一样用原生播放器直接预览;每个媒体上面
+ // 带一行文件名(从上传时 server.py 塞进 URL 里的原名反解出来,见 filenameFromUrl——
+ // 引用外部图床的旧任务URL里没有这个原名分段,会退化成显示URL里的原始文件名/hash,
+ // 不算错误,只是没有更好的名字可用)。2026-08-25:caption 挪到图片上方(之前在下面,
+ // 用户反馈不够显眼)。
const thumbCap = (label, u) => `${label} · ${filenameFromUrl(u)}`.replace(/
- `${mediaHtml}${thumbCap(label,u)}`;
+ `${thumbCap(label,u)}${mediaHtml}`;
const imgTags = imgs.map(([label, u]) =>
viewThumb(`
`, label, u)).join('');
const videoTags = (req.reference_video_urls || []).map((u, i) =>