diff --git a/core/frontend/src/pipeline-page.css b/core/frontend/src/pipeline-page.css index cdf563c..f8c0600 100644 --- a/core/frontend/src/pipeline-page.css +++ b/core/frontend/src/pipeline-page.css @@ -220,6 +220,8 @@ .shot-insert-gap .add-shot-btn svg { width: 12px; height: 12px; } .shot-insert-gap:hover .add-shot-btn { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; } .shot-insert-gap .add-shot-btn:hover { background: var(--heat-12); border-style: solid; border-color: var(--heat); } + .shot-insert-gap--bottom { height: 72px; padding: 14px 0; } + .shot-insert-gap--bottom .add-shot-btn { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; } /* ── Stage 4 · 视频详情弹窗(对齐设计稿 video-detail-modal) ── */ .asset-modal-bg { position: fixed; inset: 0; background: rgba(0,0,0,.4); z-index: 1010; display: flex; align-items: center; justify-content: center; padding: 40px; } diff --git a/core/frontend/src/routes/pipeline.tsx b/core/frontend/src/routes/pipeline.tsx index ec4c221..9d81612 100644 --- a/core/frontend/src/routes/pipeline.tsx +++ b/core/frontend/src/routes/pipeline.tsx @@ -1451,6 +1451,10 @@ export function PipelinePage(props: { } if (setupSource === "manual") { const base = chatText.trim(); + if (!base) { + chatTextareaRef.current?.focus(); + return; + } setChatText(""); await runScriptGeneration(`${base ? `${base}\n` : ""}据此整理成镜头脚本。风格:${styleLabel},目标人群:${personaLabel}`, `自带脚本 · ${styleLabel} · ${personaLabel}`, "manual"); return; @@ -1513,7 +1517,13 @@ export function PipelinePage(props: { setSetupOpen(true); // 一句话主题:开卡时不再 push 提示(否则 chatMsgs 非空,点返回就回不到三选项); // 主题改成在「确定」(确认风格/人物)之后由模型来问,更像对话流。 - if (source === "manual") { pickScriptMode(); } + if (source === "manual") { + setChatText(""); + setChatAttachments([]); + window.setTimeout(() => chatTextareaRef.current?.focus(), 0); + } + // 文件上传入口先保留,当前「自带脚本」改为粘贴文本。 + // if (source === "manual") { pickScriptMode(); } } function pickScriptMode() { setChatMode("manual"); @@ -2668,7 +2678,7 @@ export function PipelinePage(props: { onCommit={(d) => { setDraftShots((list) => list.filter((x) => x.id !== d.id)); if ((d.narration || d.visual).trim()) void onAddShot(d.afterId || shot.id, { narration: d.narration, visual_prompt: d.visual }); }} onCancel={(id) => setDraftShots((list) => list.filter((x) => x.id !== id))} /> ))} -
+
@@ -2738,7 +2748,7 @@ export function PipelinePage(props: { setSetupStyle(SETUP_STYLE_KEYS[Math.floor(Math.random() * SETUP_STYLE_KEYS.length)] || setupStyle); setSetupPersona(SETUP_PERSONA_KEYS[Math.floor(Math.random() * SETUP_PERSONA_KEYS.length)] || setupPersona); }}>重新推荐 - +
{nowHm()}
@@ -2777,7 +2787,7 @@ export function PipelinePage(props: { ))} - + {/* 文件上传入口先保留,当前自带脚本改为粘贴文本。 + */}
+ {/* 文件上传按钮先保留,当前自带脚本改为粘贴文本。 + */} {/* 模型选择小按钮(输入框下方,对齐 ChatGPT/Lovart)· 复用 restraint chip 下拉,向上展开 */} {textModels && textModels.length > 0 ? (