diff --git a/web/src/components/canvas/canvas-node-prompt-panel.tsx b/web/src/components/canvas/canvas-node-prompt-panel.tsx index af30e3fe0..20ba0aa4d 100644 --- a/web/src/components/canvas/canvas-node-prompt-panel.tsx +++ b/web/src/components/canvas/canvas-node-prompt-panel.tsx @@ -60,8 +60,8 @@ export function CanvasNodePromptPanel({ node, isRunning, onPromptChange, onConfi const [presetOpen, setPresetOpen] = useState(false); const [expandedPresetOpen, setExpandedPresetOpen] = useState(false); const [expandedPromptOpen, setExpandedPromptOpen] = useState(false); - const [promptContentHeight, setPromptContentHeight] = useState(PROMPT_EDITOR_MIN_HEIGHT); - const [expandedPromptContentHeight, setExpandedPromptContentHeight] = useState(PROMPT_EDITOR_EXPANDED_MIN_HEIGHT); + const [promptContentHeight, setPromptContentHeight] = useState(() => estimatePromptContentHeight(savedPrompt, false)); + const [expandedPromptContentHeight, setExpandedPromptContentHeight] = useState(() => estimatePromptContentHeight(savedPrompt, true)); const [manualPromptHeight, setManualPromptHeight] = useState(null); const [manualExpandedPromptHeight, setManualExpandedPromptHeight] = useState(null); const [paramsExpanded, setParamsExpanded] = useState(false); // #98 决策2:B区参数区折叠状态(手风琴) @@ -103,6 +103,7 @@ export function CanvasNodePromptPanel({ node, isRunning, onPromptChange, onConfi }); const activeReferenceCount = activeReferences.length; const videoFrameOptions = mentionReferences.filter((item) => item.active && item.kind === "image").map((item) => ({ nodeId: item.nodeId, label: item.label, title: item.title, previewUrl: item.previewUrl })); + const hasVideoPromptTools = mode === "video" && !simpleMode && videoFrameOptions.length > 0; const monochromeAccent = theme.node.activeStroke; const composerTokens = { "--canvas-composer-surface": theme.node.panel, @@ -113,7 +114,6 @@ export function CanvasNodePromptPanel({ node, isRunning, onPromptChange, onConfi } as CSSProperties; const composerSurfaceStyle = { ...composerTokens, - border: `1px solid color-mix(in srgb, ${theme.node.edge} 42%, transparent)`, background: theme.node.panel, color: theme.node.text, boxShadow: theme.node.shadow, @@ -134,8 +134,8 @@ export function CanvasNodePromptPanel({ node, isRunning, onPromptChange, onConfi useEffect(() => { setExpandedPromptOpen(false); setExpandedPresetOpen(false); - setPromptContentHeight(PROMPT_EDITOR_MIN_HEIGHT); - setExpandedPromptContentHeight(PROMPT_EDITOR_EXPANDED_MIN_HEIGHT); + setPromptContentHeight(estimatePromptContentHeight(savedPrompt, false)); + setExpandedPromptContentHeight(estimatePromptContentHeight(savedPrompt, true)); setManualPromptHeight(null); setManualExpandedPromptHeight(null); }, [node.id]); @@ -357,7 +357,7 @@ export function CanvasNodePromptPanel({ node, isRunning, onPromptChange, onConfi {renderPromptEditor(false)} {/* B区 参数区(对应 #98 决策2:默认折叠,手风琴展开)*/} - {mode === "video" && !simpleMode ? ( + {hasVideoPromptTools ? (