From 01722af2fbcfe652c6e471fd108a771d7e5e3c91 Mon Sep 17 00:00:00 2001 From: 134 Date: Thu, 13 Aug 2026 16:25:41 +0800 Subject: [PATCH] fix(canvas): restore PSD template replacement entry --- .../settings/admin-settings-client.tsx | 1 + components/canvas/CanvasWorkspace.tsx | 30 +++ components/canvas/nodes/ImageNode.tsx | 225 +++++++++++++++++- lib/canvas-toolbar-config.ts | 6 + lib/canvas/capabilities/registry.ts | 15 ++ lib/canvas/capabilities/types.ts | 3 + .../routes/canvas-capability-runtime.test.ts | 1 + tests/routes/canvas-chat-helpers.test.ts | 12 + 8 files changed, 292 insertions(+), 1 deletion(-) diff --git a/app/(admin)/settings/admin-settings-client.tsx b/app/(admin)/settings/admin-settings-client.tsx index 0e65ec869..da5cfe497 100644 --- a/app/(admin)/settings/admin-settings-client.tsx +++ b/app/(admin)/settings/admin-settings-client.tsx @@ -1061,6 +1061,7 @@ const CANVAS_TOOLBAR_FALLBACK_ICONS: Record = imageRemoveBackground: Scissors, imageBoxCutout: Scan, imageLocalEdit: Wand2, + imagePsdTemplateReplace: ImageIcon, imageRemoveWatermark: Eraser, imageResize: Maximize2, imageTextEdit: Type, diff --git a/components/canvas/CanvasWorkspace.tsx b/components/canvas/CanvasWorkspace.tsx index 91beecfda..f22bcecfb 100644 --- a/components/canvas/CanvasWorkspace.tsx +++ b/components/canvas/CanvasWorkspace.tsx @@ -20,6 +20,7 @@ import { AlertTriangle, Check, Download, + FileImage, Flag, GitBranch, Heart, @@ -715,8 +716,14 @@ export function CanvasWorkspace({ canvasToolbarConfig, "imageLocalEdit" ); + const selectedImagePsdTemplateReplaceItem = getCanvasToolbarItem( + canvasToolbarConfig, + "imagePsdTemplateReplace" + ); // 局部编辑属于主无限画布图片的固定能力,旧配置缺少该 key 时也保持可见。 const selectedImageLocalEditEnabled = true; + // 模版替换属于主无限画布图片的固定入口,兼容没有新 key 的历史配置。 + const selectedImagePsdTemplateReplaceEnabled = true; // Store actions const selectNode = useCanvasStore((state) => state.selectNode); @@ -2529,6 +2536,29 @@ export function CanvasWorkspace({ {selectedImageLocalEditItem.label} ) : null} + {selectedImagePsdTemplateReplaceEnabled && + selectedImageNodes.length === 1 ? ( + + ) : null} + ); + })} + + + ) : null} + +
+ + setPsdTemplateBrandName(event.target.value)} + placeholder="选择或输入已配置 PSD 模版的品牌名" + value={psdTemplateBrandName} + /> +
+ + + + + + + + + ) : null} - {isSelectedImageActionInline("localEdit") ? ( + {isSelectedImageActionInline("localEdit") ? ( + ) : null} + {isSelectedImageActionInline("removeWatermark") ? (