auto-save 2026-05-13 11:56 (~4)

This commit is contained in:
2026-05-13 11:56:39 +08:00
parent 4135465bb2
commit cb0bdcccba
4 changed files with 24 additions and 20 deletions

View File

@@ -3,7 +3,7 @@ import { useRef, useState } from "react"
import { type NodeProps } from "@xyflow/react"
import {
Link2, Upload, Download, Scissors, Image as ImageIcon,
Mic, Languages, FileEdit, Sparkles, Film, FileVideo, Loader2, Plus, X,
Mic, Languages, FileEdit, Sparkles, Film, FileVideo, Loader2, Plus, X, LayoutGrid,
} from "lucide-react"
import { NodeShell, type NodeStatus, type NodeKind } from "./node-shell"
import { type Job, frameUrl, effectiveFrameUrl, videoUrl, generatedImageUrl } from "@/lib/api"
@@ -403,7 +403,7 @@ export function KeyframeNode({ data, selected }: any) {
{f.timestamp.toFixed(1)}s
</div>
{/* Hover 静态大图预览(关键帧给下游生图垫图的素材,不需要视频 */}
{/* Hover 静态大图预览(关键帧素材给下游分镜头编排用 */}
<div
className="pointer-events-none absolute opacity-0 group-hover:opacity-100 scale-95 group-hover:scale-100 transition-all duration-200 z-[60]"
style={{
@@ -627,7 +627,7 @@ export function ImageGenNode({ data, selected }: any) {
>
<button
onClick={(e) => { e.stopPropagation(); d.onOpenPanel?.("imagegen") }}
title={`分镜 ${p.frameIdx + 1} · ${p.total}${p.hasSelected ? " · 已选用" : ""} · 打开「生图」面板`}
title={`分镜 ${p.frameIdx + 1} · ${p.total}${p.hasSelected ? " · 已选用" : ""} · 打开「分镜头编排」`}
className="absolute inset-0 w-full h-full"
>
<img
@@ -696,9 +696,9 @@ export function ImageGenNode({ data, selected }: any) {
<NodeShell
type="ai" status={status}
icon={<Sparkles className="h-4 w-4" />}
title="生图 · Image Gen"
subtitle={`STEP 6 · nano-banana ${totalGens > 0 ? `· ${totalGens}` : ""}`}
icon={<LayoutGrid className="h-4 w-4" />}
title="分镜头编排 · Storyboard"
subtitle={`STEP 6 · 接元素 + 场景 ${totalGens > 0 ? `· ${totalGens}` : ""}`}
width={IMAGEGEN_WIDTH}
selected={selected}
>
@@ -707,17 +707,14 @@ export function ImageGenNode({ data, selected }: any) {
<span className="text-[var(--text-strong)] font-medium">{totalGens}</span> · {selectedCount}/{previews.length}
<br />
<span className="text-[10.5px] text-[var(--text-faint)]">
· sidebar
· / /
</span>
</div>
) : (
<div className="grid grid-cols-2 gap-1.5">
<div className="rounded-md border border-dashed border-black/15 dark:border-white/10 px-2 py-1.5 text-[10.5px] text-[var(--text-faint)]">
nano-banana-pro<br /><span className="text-[var(--text-strong)] text-[11px]">Gemini 3 Image</span>
</div>
<div className="rounded-md border border-dashed border-black/15 dark:border-white/10 px-2 py-1.5 text-[10.5px] text-[var(--text-faint)]">
GPT Image<br /><span className="text-[var(--text-strong)] text-[11px]">OpenAI</span>
</div>
<div className="text-[11.5px] text-[var(--text-faint)] leading-relaxed">
<span className="text-[var(--text-strong)]"></span>
<br />
<span className="text-[10.5px]"> + / / </span>
</div>
)}
</NodeShell>