From 5e3d40e2d8c8b32a22cf79d18eee2ee14953f76f Mon Sep 17 00:00:00 2001 From: kang Date: Wed, 13 May 2026 16:35:33 +0800 Subject: [PATCH] auto-save 2026-05-13 16:35 (~2) --- .memory/worklog.json | 19 +++++++ web/components/storyboard-bar.tsx | 95 +------------------------------ 2 files changed, 21 insertions(+), 93 deletions(-) diff --git a/.memory/worklog.json b/.memory/worklog.json index 00df4bc..0c793dd 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -1901,6 +1901,25 @@ "type": "session-heartbeat", "message": "Claude 会话活跃 · 最近命令:claude · 3 项未提交变更 · 最近提交:auto-save 2026-05-13 16:23 (~6)", "files_changed": 3 + }, + { + "ts": "2026-05-13T16:30:04+08:00", + "type": "commit", + "message": "auto-save 2026-05-13 16:28 (~3)", + "hash": "f18aedf", + "files_changed": 3 + }, + { + "ts": "2026-05-13T08:33:04Z", + "type": "session-end", + "message": "Claude 会话结束 · 持续 0 秒 · 最近命令:claude · 2 项未提交变更 · 最近提交:auto-save 2026-05-13 16:28 (~3)", + "files_changed": 2 + }, + { + "ts": "2026-05-13T08:33:04Z", + "type": "session-end", + "message": "Claude 会话结束 · 持续 0 秒 · 最近命令:claude · 2 项未提交变更 · 最近提交:auto-save 2026-05-13 16:28 (~3)", + "files_changed": 2 } ] } diff --git a/web/components/storyboard-bar.tsx b/web/components/storyboard-bar.tsx index befea9e..55adbd6 100644 --- a/web/components/storyboard-bar.tsx +++ b/web/components/storyboard-bar.tsx @@ -1,9 +1,8 @@ "use client" import { useEffect, useRef, useState } from "react" import { createPortal } from "react-dom" -import { LayoutGrid, ChevronDown, ChevronUp, Sparkle, X } from "lucide-react" -import { type Job, type KeyFrame, cutoutUrl, effectiveFrameUrl, hasCutout, removeStoryboardImage } from "@/lib/api" -import { toast } from "sonner" +import { LayoutGrid, ChevronDown, ChevronUp, Sparkle } from "lucide-react" +import { type Job, type KeyFrame, effectiveFrameUrl, hasCutout } from "@/lib/api" interface Props { job: Job | null @@ -42,19 +41,6 @@ export function StoryboardBar({ job, selectedFrames, focusedFrame, onFocusFrame, ? frames.findIndex((f) => f.index === focusFrame.index) + 1 : 0 - // 用户已"上推"到分镜头编排区的图片 - const pushedImages = job.storyboard_images ?? [] - const frameSeqByIdx: Record = {} - frames.forEach((f, i) => { frameSeqByIdx[f.index] = i + 1 }) - - const handleRemovePushed = async (refId: string) => { - try { - const updated = await removeStoryboardImage(job.id, refId) - onJobUpdate?.(updated) - } catch (e) { - toast.error("移除失败:" + (e instanceof Error ? e.message : String(e))) - } - } return (
@@ -164,83 +150,6 @@ export function StoryboardBar({ job, selectedFrames, focusedFrame, onFocusFrame, ) )} - {/* 已推送到分镜头编排区的图片 */} - {!collapsed && ( -
-
- - 已推送素材 · {pushedImages.length} 张 - (在各处图片右上角点 ⬆ 推送过来) -
- {pushedImages.length === 0 ? ( -
- 暂无 · 在关键帧节点缩略图 / 元素提取图 / 分镜头编排节点元素 等处点 ⬆ 上推按钮把图加进来 -
- ) : ( -
- {pushedImages.map((p) => { - const seq = frameSeqByIdx[p.frame_idx] ?? p.frame_idx + 1 - const url = p.kind === "keyframe" - ? effectiveFrameUrl(job.id, { index: p.frame_idx, cleaned_applied: false }) - : (p.element_id && p.cutout_id - ? (p.cutout_id === p.element_id - ? cutoutUrl(job.id, p.frame_idx, p.element_id) // legacy - : cutoutUrl(job.id, p.frame_idx, p.element_id, p.cutout_id)) - : "") - const isFocusFrame = focusedFrame === p.frame_idx - return ( -
- - {/* 右上:移除按钮(hover 显示) */} - -
- ) - })} -
- )} -
- )} {/* Hover 预览 · 浮在缩略图正下方(bar 在顶部 fixed,下方是 DAG 画布区) */} {mounted && hover && (() => {