diff --git a/.memory/worklog.json b/.memory/worklog.json index f7df35a..8025b90 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -2268,6 +2268,13 @@ "type": "session-heartbeat", "message": "Codex 会话活跃 · 最近命令:codex · 6 项未提交变更 · 最近提交:auto-save 2026-05-13 19:56 (~4)", "files_changed": 6 + }, + { + "ts": "2026-05-13T20:01:52+08:00", + "type": "commit", + "message": "auto-save 2026-05-13 20:01 (~6)", + "hash": "3f9075f", + "files_changed": 6 } ] } diff --git a/docs/source-analysis.html b/docs/source-analysis.html index a1107e8..7c9b347 100644 --- a/docs/source-analysis.html +++ b/docs/source-analysis.html @@ -500,7 +500,7 @@

1. 先说你在改哪个产品区

-

例如“镜头拆解 / 元素提取面板”、“元素改造 Storyboard 节点”、“分镜头编排工作台 4 图槽”。不要只说“这里乱”,要指向页面里的功能区。

+

例如“镜头拆解 / 元素提取面板”、“元素改造 Storyboard 节点”、“分镜头编排下拉区 4 图槽”。不要只说“这里乱”,要指向页面里的功能区。

2. 再说这个区应该承担什么职责

@@ -572,8 +572,8 @@ web/app/page.tsx产品工作台主状态:jobs、activeJobId、selectedFrames、clipboard、ReactFlow 节点和边。 web/components/nodes/index.tsxDAG 节点定义:Input、Keyframe、ASR、Translate、Rewrite、Storyboard、VideoGen、Compose。 web/components/lightbox.tsx镜头拆解和元素提取的主工作面板:清洗、识别、元素编辑、区域提取、抠图。 - web/components/storyboard-bar.tsx顶部已选分镜条:展示选入编排的关键帧,点击进入工作台。 - web/components/storyboard-workbench.tsx顶部分镜编排内嵌面板:4 图槽、改造目标、时长、自动保存。 + web/components/storyboard-bar.tsx顶部分镜编排条:展示选入编排的关键帧,并作为唯一分镜导航。 + web/components/storyboard-workbench.tsx顶部分镜编排条下方的明细区:4 图槽、改造目标、时长、自动保存。 web/lib/api.ts前端类型和 API client,是前后端数据契约镜像。 @@ -830,6 +830,29 @@ api/main.py

变更记录

这个记录不是 git log 的替代品。它记录“产品理解发生了什么变化、影响了哪些源码、你以后描述需求时该怎么说”。后续每次改功能都要补一条。

+
+
+

2026-05-13 · 分镜编排下拉区支持上推缩小

+ StoryboardWorkbench +
+
+

问题:分镜编排明细区默认占用太多顶部面积,展开后下方画布空间不足。

+

改动:明细区默认高度降为 320px,并增加底部拖拽手柄,可上推缩到 180px,也可下拉放大查看完整内容。

+

影响:web/components/storyboard-workbench.tsx

+
+
+
+
+

2026-05-13 · 分镜缩略图条与编排明细合并为一个下拉区

+ StoryboardBar + StoryboardWorkbench +
+
+

问题:顶部分镜缩略图条和下方内嵌工作台都带分镜导航,看起来像两个不同板块。

+

改动:StoryboardBar 成为唯一分镜导航;StoryboardWorkbench 移除自己的标题栏、左侧分镜列表和底部快捷栏,只保留当前分镜的 4 图槽与改造目标明细。

+

影响:web/components/storyboard-bar.tsxweb/components/storyboard-workbench.tsxweb/app/page.tsx

+
+

2026-05-13 · 分镜头编排工作台改为内嵌下拉

diff --git a/web/app/page.tsx b/web/app/page.tsx index 78e2972..7bd7884 100644 --- a/web/app/page.tsx +++ b/web/app/page.tsx @@ -414,10 +414,12 @@ export default function Home() { selectedFrames={selectedFrames} focusedFrame={storyboardFrame} onFocusFrame={setStoryboardFrame} + workbenchOpen={workbenchOpen} onOpenWorkbench={(idx?: number) => { if (typeof idx === "number") setStoryboardFrame(idx) setWorkbenchOpen(true) }} + onCloseWorkbench={() => setWorkbenchOpen(false)} /> focusedFrame: number | null onFocusFrame: (idx: number | null) => void + workbenchOpen?: boolean onOpenWorkbench?: (frameIdx?: number) => void + onCloseWorkbench?: () => void } -export function StoryboardBar({ job, selectedFrames, focusedFrame, onFocusFrame, onOpenWorkbench }: Props) { +export function StoryboardBar({ job, selectedFrames, focusedFrame, onFocusFrame, workbenchOpen = false, onOpenWorkbench, onCloseWorkbench }: Props) { const [collapsed, setCollapsed] = useState(false) const [mounted, setMounted] = useState(false) useEffect(() => setMounted(true), []) @@ -64,6 +66,10 @@ export function StoryboardBar({ job, selectedFrames, focusedFrame, onFocusFrame,
-
-
- -
- {/* 左侧分镜列表 */} - - - {/* 右侧详情 — 4 图槽 + 时长 */} -
- {!focusFrame ? ( -
从左侧选一个分镜开始编排
- ) : ( -
+
+ {!focusFrame ? ( +
在上方选择一个分镜开始编排
+ ) : ( +
{/* 顶栏:分镜信息 + 剪贴板提示 + 时长 */}
@@ -210,6 +150,18 @@ export function StoryboardWorkbench({ job, selectedFrames, open, onClose, onJobU /> 秒 + + {saving ? (<> 保存中) + : savedTick > 0 ? (<> 已保存) + : "自动保存"} + +
@@ -330,15 +282,17 @@ export function StoryboardWorkbench({ job, selectedFrames, open, onClose, onJobU 下一阶段:基于 4 图槽 + 改造目标 + 时长,先生成符合 SKG 产品的首帧,再调 Seedance / Kling / Veo3 生成视频片段
-
- )} -
+
+ )}
- - {/* 底部快捷 */} -
- ESC 收起编排 · 字段变更自动保存 -
+
) }