diff --git a/web/src/components/canvas/canvas-node-prompt-panel.tsx b/web/src/components/canvas/canvas-node-prompt-panel.tsx index baa627620..af30e3fe0 100644 --- a/web/src/components/canvas/canvas-node-prompt-panel.tsx +++ b/web/src/components/canvas/canvas-node-prompt-panel.tsx @@ -113,7 +113,7 @@ export function CanvasNodePromptPanel({ node, isRunning, onPromptChange, onConfi } as CSSProperties; const composerSurfaceStyle = { ...composerTokens, - border: `1px solid ${theme.node.edge}`, + border: `1px solid color-mix(in srgb, ${theme.node.edge} 42%, transparent)`, background: theme.node.panel, color: theme.node.text, boxShadow: theme.node.shadow, diff --git a/web/src/components/canvas/canvas-node.tsx b/web/src/components/canvas/canvas-node.tsx index e407fb66f..cb5209fb7 100644 --- a/web/src/components/canvas/canvas-node.tsx +++ b/web/src/components/canvas/canvas-node.tsx @@ -1,6 +1,6 @@ import React, { useCallback, useEffect, useRef, useState } from "react"; import type { ReactNode } from "react"; -import { AlertCircle, BookOpenCheck, CheckCircle2, ChevronRight, Clapperboard, Copy, Download, Image as ImageIcon, Lock, Maximize2, Music2, Pencil, Plus, RefreshCw, Replace, Settings2, Star, Trash2, Type, Upload, Video } from "lucide-react"; +import { AlertCircle, BookOpenCheck, CheckCircle2, ChevronRight, Clapperboard, Copy, Download, Image as ImageIcon, Lock, Maximize2, Music2, Pencil, Plus, RefreshCw, Settings2, Star, Trash2, Type, Video } from "lucide-react"; import { useCanvasNodeActions } from "./canvas-node-action-context"; @@ -95,7 +95,6 @@ export const CanvasNode = React.memo(function CanvasNode({ onOpenTaskDetails, onOpenVersions, onViewImage, - onReplaceMedia, onOpenTextEditor, onOpenDirector, onOpenDrawing, @@ -112,7 +111,6 @@ export const CanvasNode = React.memo(function CanvasNode({ const hasAudioContent = data.type === CanvasNodeType.Audio && Boolean(data.metadata?.content); const isComposerNode = data.type === CanvasNodeType.Config; const hasMediaContent = hasImageContent || hasVideoContent || hasAudioContent; - const hasReplaceAction = !readOnly && (data.type === CanvasNodeType.Image || data.type === CanvasNodeType.Video); const isBatchRoot = data.type === CanvasNodeType.Image && Boolean(data.metadata?.isBatchRoot) && batchCount > 1; const isBatchChild = data.type === CanvasNodeType.Image && Boolean(data.metadata?.batchRootId); const showStatusTrack = Boolean(resourceLabel || data.metadata?.locked || isBatchRoot || (isBatchChild && !readOnly) || (hasMediaContent && !readOnly)); @@ -367,25 +365,6 @@ export const CanvasNode = React.memo(function CanvasNode({ /> - {hasReplaceAction && (!hasMediaContent || isSelected || hovered) ? ( -