diff --git a/core/frontend/src/pipeline-page.css b/core/frontend/src/pipeline-page.css index a4b4210..5191e8a 100644 --- a/core/frontend/src/pipeline-page.css +++ b/core/frontend/src/pipeline-page.css @@ -375,7 +375,8 @@ .prompt-box[contenteditable="true"] { cursor: text; outline: none; } .prompt-box[contenteditable="true"]:hover { border-color: var(--heat-20); } .prompt-box[contenteditable="true"]:focus { border-color: var(--heat); background: var(--surface); color: var(--accent-black); box-shadow: 0 0 0 3px var(--heat-12); } - .fail-icon { width: 28px; height: 28px; background: var(--accent-crimson); color: var(--accent-white); display: grid; place-items: center; font-weight: 600; font-size: 16px; border-radius: 50%; } + /* 外层人物/场景卡提示词框:固定 5 行高(行高 1.55 + 内边距/边框),超长不撑高、框内上下滚动 */ + .prompt-box { height: calc(5 * 1.55em + 22px); overflow-y: auto; box-sizing: border-box; } /* ============= STAGE 3 · 故事板 ============= */ .content--fh .stage[data-stage-pane="3"].active > .stage-storyboard { flex: 1 1 0; min-height: 0; overflow-y: auto; } diff --git a/core/frontend/src/routes/pipeline.tsx b/core/frontend/src/routes/pipeline.tsx index 060c2cb..386f967 100644 --- a/core/frontend/src/routes/pipeline.tsx +++ b/core/frontend/src/routes/pipeline.tsx @@ -799,6 +799,14 @@ export function PipelinePage(props: { setAdTriId(null); // 跟随当前立绘的最新三视图 setAdPrompt(entity.group.prompt ?? ""); } + // seed(未生成)卡也能点进详情:还没组,用脚本名(=key)+ 当前提示词开一个「空壳」详情。 + // 进去先生成立绘;三视图按既有逻辑(无立绘则禁用)天然挡住。生成完刷新 → 同 key(=名字)自动切到真实体。 + function openSeedDetail(kind: "person" | "scene", tag: string, promptValue: string) { + setAdDetail({ kind, key: tag }); + setAdPortraitId(null); + setAdTriId(null); + setAdPrompt(promptValue); + } // 流程步骤4 · 演员库覆盖层:replace 带要替换的目标(已生成卡=groupId;seed 占位卡还没组=kind+label); // browse 带 studio 直接进「添加人物工作台」 const [actorLib, setActorLib] = useState<{ mode: "browse" | "replace"; studio?: boolean; groupId?: string; seedKind?: "person" | "scene"; seedLabel?: string; addNew?: boolean } | null>(null); @@ -2819,13 +2827,14 @@ export function PipelinePage(props: { const busy = isBusy(seedKey) || isBusy(`${seedKey}:tri`) || pendingHas(kind, tag); return (