From 1c0876580c04e54b82b71a259a98d2135152c792 Mon Sep 17 00:00:00 2001 From: InpaintRegionEditor Dev Date: Tue, 3 Mar 2026 10:51:37 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=92=8C=E5=8F=98=E6=9B=B4=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 16 +++++++++++++++ DEVLOG.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9f3aee..734da3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.1.0] - 2026-03-03 + +### Added +- **选区约束**:选区必须框住蒙版且不能超出图像边界 +- **MaskEditor 集成**:右键菜单 "Open in MaskEditor" 调用系统蒙版编辑器 +- **自动约束**:padding 改变时自动调整选区位置和大小 + +### Changed +- **UI 简化**:移除红色蒙版区域显示(真实蒙版已在图像上可见) +- **约束逻辑**:统一 `constrainRegion()` 函数处理所有选区约束 + +### Fixed +- 变量名冲突导致 `nodeData.get is not a function` +- `app.commands` undefined → 使用 `app.extensionManager.command.execute()` +- MaskEditor 返回后双图像问题 + ## [1.0.0] - 2026-03-02 ### Added diff --git a/DEVLOG.md b/DEVLOG.md index a91fd01..af18e47 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -1,5 +1,61 @@ # InpaintRegionEditor 开发日志 +## 2026-03-03 选区约束 + MaskEditor 集成 + +### 完成的工作 + +1. **选区约束功能** + - 选区必须框住蒙版区域 + - 选区不能超出图像边界 + - padding 改变时自动调整选区位置和大小 + - 统一 `constrainRegion()` 函数处理所有约束逻辑 + +2. **MaskEditor 集成** + - 右键菜单添加 "Open in MaskEditor" 选项 + - 使用 `app.extensionManager.command.execute("Comfy.MaskEditor.OpenMaskEditor")` 调用系统命令 + - 解决 MaskEditor 返回后双图像问题(清除 `node.imgs`) + - 解决 blob URL 不被 MaskEditor 接受的问题(使用原始 ComfyUI URL) + +3. **UI 优化** + - 移除红色蒙版区域显示(真实蒙版已在图像上显示) + - 只保留橙色选区框 + +### 遇到的问题 + +1. **变量名冲突**:`beforeRegisterNodeDef(nodeType, nodeData)` 的参数 `nodeData` 覆盖了全局的 `nodeData` Map + - 解决:全局变量改名为 `nodeImageData` + +2. **`app.commands` undefined**:新版本 ComfyUI 命令系统变了 + - 解决:使用 `app.extensionManager.command.execute()` + +3. **MaskEditor 不接受 blob URL**: + - 解决:保存原始 ComfyUI URL (`/view?filename=...&type=...`),点击菜单时用这个 URL 创建图像 + +4. **MaskEditor 返回后双图像**: + - 解决:在 `onDrawBackground` 中检测并清除 `node.imgs` + +### 关键代码 + +```javascript +// 统一的选区约束函数 +function constrainRegion(data, padding) { + // 1. 计算期望大小 + // 2. 约束不超过图像大小 + // 3. 约束不超出边界 + // 4. 优先框住蒙版 +} + +// 调用 MaskEditor +app.extensionManager.command.execute("Comfy.MaskEditor.OpenMaskEditor"); +``` + +### 待解决问题 + +1. 选区大小调整(目前只能拖动位置,不能调整大小) +2. 多选区支持 + +--- + ## 2026-03-02 重大进展 ### 完成的工作