From 8131fb54fa52fb7a42cfc41af74401860bad463a Mon Sep 17 00:00:00 2001 From: Marcel Hofer <49859266+goodguy1963@users.noreply.github.com> Date: Tue, 21 Jul 2026 09:52:24 +0200 Subject: [PATCH] chore: prepare v2.3.17 release --- README.md | 36 ++++++++++++++++++++++++++++++++++++ __init__.py | 2 +- custom_nodes.json | 2 +- pyproject.toml | 2 +- update.md | 15 +++++++++++++++ 5 files changed, 54 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e16620d..6e94012 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,42 @@ Audio is available through dedicated nodes so the model list stays honest: The Advanced GGUF node also exposes optional `audio`, but this is for power users. Use the info box before assuming a model can hear audio. Normal Qwen/Qwen-VL models are not audio models. +### Mask-focused image analysis and object removal + +The four ThinkingLLM vision nodes accept an optional ComfyUI `MASK` input: + +- `ThinkingLLM` +- `ThinkingLLM (Advanced)` +- `ThinkingLLM (GGUF)` +- `ThinkingLLM (GGUF Advanced)` + +White mask pixels select the area to analyze. Black pixels preserve surrounding context, and soft mask values create a gradual transition. ThinkingLLM keeps the selected area at normal brightness while dimming everything outside it, helping the vision model focus on the mask without losing the scene's geometry, lighting, or background context. + +#### Object-removal workflow + +1. Connect the source image to ThinkingLLM's `image` input. +2. Connect the corresponding mask to its `mask` input. +3. Select `👁️ Remove (Mask Area)` from `preset_prompt`. +4. Optionally describe the desired replacement in `custom_prompt`, such as `continue the brick wall` or `fill with matching wooden floor`. +5. Connect `RESPONSE` to the positive prompt input of your diffusion inpainting workflow. +6. Send the original image and mask separately to the diffusion model's inpainting inputs. + +ThinkingLLM does not edit the image itself. It examines the masked area and surrounding scene, then generates a positive description of what should appear inside the mask. The downstream diffusion model performs the actual replacement. + +Without a custom instruction, the preset infers the most natural background continuation. It describes matching surfaces, perspective, materials, texture, color, lighting, shadows, reflections, and image style while avoiding phrases such as "remove the object" or "erase this area." + +Example output: + +> Continuous warm beige plaster wall with subtle uneven texture, matching the existing perspective, soft window illumination, natural tonal variation, and the floor-edge shadows. + +#### Notes and limitations + +- Masks apply to still images only, not video input. +- Mask dimensions are resized automatically to match the image. +- An empty mask or a mask without an image produces a clear error. +- Image batches continue to use the first image and first mask. +- Precise masks with a small amount of surrounding context generally produce the best reconstruction prompt. + ## Nodes ### Transformers / HF nodes diff --git a/__init__.py b/__init__.py index 6b0b902..756646b 100644 --- a/__init__.py +++ b/__init__.py @@ -3,7 +3,7 @@ "name": "ComfyUI-ThinkingLLM", "description": "A multimodal ComfyUI AI node with Qwen3.5, Qwen3-VL, Qwen2.5-VL, Qwen3, and Gemma 4 integrations. Features live thinking in the terminal to see what the LLM is doing in real time.", "author": "goodguy1963", - "version": "2.3.16", + "version": "2.3.17", "url": "https://github.com/goodguy1963/ComfyUI-ThinkingLLM", "category": "image" } diff --git a/custom_nodes.json b/custom_nodes.json index 6ddfd6a..fdc756c 100644 --- a/custom_nodes.json +++ b/custom_nodes.json @@ -9,5 +9,5 @@ "description": "A multimodal ComfyUI AI node with Qwen3.5, Qwen3-VL, Qwen2.5-VL, Qwen3, and Gemma 4 integrations. Features live thinking in the terminal to see what the LLM is doing in real time.", "category": "image", "tags": ["vision", "language", "multimodal", "thinkingllm", "qwen", "gguf", "flash_attention", "performance", "wan2.2", "video", "i2v", "t2v", "storyboard", "caching", "fork", "gpl-3.0"], - "version": "2.3.16" + "version": "2.3.17" } diff --git a/pyproject.toml b/pyproject.toml index ca51da1..e192699 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "ComfyUI-ThinkingLLM" description = "A multimodal ComfyUI AI node with Qwen3.5, Qwen3-VL, Qwen2.5-VL, Qwen3, and Gemma 4 integrations. Features live thinking in the terminal to see what the LLM is doing in real time." -version = "2.3.16" +version = "2.3.17" license = {file = "LICENSE"} dependencies = ["transformers>=5.2.0", "torch", "huggingface-hub", "hf_xet", "psutil", "numpy", "Pillow", "opencv-python", "bitsandbytes", "accelerate", "sentencepiece", "tiktoken", "faster-whisper", "llama-cpp-python"] diff --git a/update.md b/update.md index d92762c..52914a7 100644 --- a/update.md +++ b/update.md @@ -1,5 +1,20 @@ # ComfyUI-QwenVL Update Log +## Version 2.3.17 (2026/07/21) - Mask-Focused Image Editing + +### 2.3.17 Changes + +- Added optional `MASK` input support to all four ThinkingLLM vision nodes. +- Kept selected pixels at normal brightness while dimming surrounding context for focused visual analysis. +- Added shared Hugging Face and GGUF mask preprocessing with mask-aware cache invalidation. +- Added the `👁️ Remove (Mask Area)` preset for positive background-continuation and replacement prompts. +- Documented the complete mask-focused object-removal workflow in the README. + +### 2.3.17 Validation + +- Verified mask resizing, soft-mask blending, alpha preservation, input validation, cache invalidation, and node compatibility. +- Full local regression suite passes with 97 tests. + ## Version 2.3.16 (2026/07/13) — Gemma 4 E2B Catalog Repair ### 2.3.16 Changes