Skip to content

Commit 4d7c72c

Browse files
committed
Release v1.0.11: add Qwen3.6 support and external GGUF path discovery
1 parent 64f931b commit 4d7c72c

4 files changed

Lines changed: 48 additions & 26 deletions

File tree

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,27 @@
33
All notable changes to ComfyUI-MultiModal-Prompt-Nodes will be documented in this file.
44

55

6+
## [1.0.11] - 2026-05-09
7+
8+
- Added support for Qwen3.6 local GGUF models
9+
- Added Qwen3.6 filename detection (`qwen36` / `qwen3.6`)
10+
- Routed Qwen3.6 through the existing `Qwen35ChatHandler` path
11+
- Updated Qwen3.5/3.6 mmproj requirement messages and logging
12+
- Set `image_min_tokens=1024` for Qwen3.5/3.6 chat handler initialization
13+
14+
- Improved local GGUF model discovery
15+
- Added discovery of GGUF models in paths registered by ComfyUI through `extra_model_paths.yaml`
16+
- Uses `folder_paths.get_folder_paths("text_encoders")` and `folder_paths.get_folder_paths("llm")` when available
17+
- Preserves absolute paths for models stored outside the default ComfyUI `models` directory
18+
19+
- Improved mmproj auto-detection
20+
- If no family-prefixed mmproj matches but the model directory contains exactly one `mmproj-*.gguf`, that file is used automatically
21+
- Ambiguous directories with multiple unmatched mmproj files still require manual selection
22+
23+
- Documentation
24+
- Updated README notes for extra model paths and mmproj fallback behavior
25+
26+
627
## [1.0.10] - 2026-04-02
728

829
- Added support for Qwen3.5 local GGUF models

README.md

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# ComfyUI-MultiModal-Prompt-Nodes
22

3-
**Version:** 1.0.10
3+
**Version:** 1.0.11
44
**License:** GPL-3.0
55

66
Multimodal prompt generator nodes for ComfyUI, designed to generate prompts for **Qwen-Image-Edit** and **Wan2.2**.
7-
Supports **local LLM / local GGUF models** (Qwen2.5-VL, Qwen3-VL and Qwen3.5) and **Qwen API** for image and video prompt generation and enhancement.
7+
Supports **local LLM / local GGUF models** (Qwen2.5-VL, Qwen3-VL, Qwen3.5 and Qwen3.6) and **Qwen API** for image and video prompt generation and enhancement.
88

99
---
1010
## Upgrade Notes for Existing Users
1111

12-
The following notes are intended for existing users upgrading to `1.0.10`.
12+
The following notes are intended for existing users upgrading to `1.0.11`.
1313

1414
### Expanded search paths for local Qwen-family GGUF models
1515
In addition to `models/LLM`, this release now searches `models/text_encoders` and its subdirectories for GGUF files. Because this changes how model paths are handled internally, you may need to reselect your models the first time you run the node after updating.
@@ -48,7 +48,7 @@ Based on extensive testing, **Wan2.2** and **Qwen-Image-Edit** respond **signifi
4848
- `concise`: Minimal keywords, focused on core elements
4949
- `creative`: Artistic interpretation with unique perspectives
5050
- **Multi-image input**: Support batch image input via ComfyUI's batch nodes (e.g., Images Batch Multiple)
51-
- **Local GGUF support**: Run Qwen2.5-VL, Qwen3-VL, and Qwen3.5 models locally
51+
- **Local GGUF support**: Run Qwen2.5-VL, Qwen3-VL, Qwen3.5 and Qwen3.6 models locally
5252
- **Auto-detect mmproj**: Automatic detection or manual selection
5353

5454
### 2. Qwen Image Edit Prompt Generator
@@ -96,15 +96,15 @@ pip install dashscope pillow numpy
9696

9797
**Important:** Model compatibility varies by llama-cpp-python version. Based on my testing environment:
9898

99-
| Version | Qwen2.5-VL | Qwen3-VL | Qwen3.5 |
99+
| Version | Qwen2.5-VL | Qwen3-VL | Qwen3.5/3.6 |
100100
|---------|------------|----------|---------|
101101
| 0.3.16 (official) ||||
102102
| 0.3.21+ (JamePeng fork) ||||
103-
| 0.3.33+ (JamePeng fork) ||||
103+
| 0.3.36+ (JamePeng fork) ||||
104104

105105
***Note:** Vision input support may vary depending on your environment and configuration.
106106

107-
**Recommended Installation (JamePeng fork for Qwen3-VL and Qwen3.5 support):**
107+
**Recommended Installation (JamePeng fork for Qwen3-VL and Qwen3.5/3.6 support):**
108108
Please follow the build and installation instructions provided in the JamePeng fork repository, as this fork requires a custom build and cannot be reliably installed via a simple `pip install`.
109109

110110
**Source:** https://github.com/JamePeng/llama-cpp-python
@@ -254,8 +254,8 @@ Add your Alibaba Cloud Dashscope API key to this file.
254254
- ✅ Qwen3-VL(4B/8B): Full vision support with JamePeng fork
255255
- ✅ Requires matching mmproj file
256256

257-
### Qwen3.5 (Separate mmproj)
258-
- ✅ Qwen3.5(9B/27B/35B-A3B): Full vision support with JamePeng fork
257+
### Qwen3.5/3.6 (Separate mmproj)
258+
- ✅ Qwen3.5/3.6(9B/27B/35B-A3B): Full vision support with JamePeng fork
259259
- ✅ Requires matching mmproj file
260260

261261
### Model Sources
@@ -295,12 +295,12 @@ A:
295295
2. Restart ComfyUI
296296
3. Verify file extensions are `.gguf`
297297

298-
**Q: Models stored via `extra_model_paths.yaml` (e.g. on a different drive) are not listed in the dropdown**
298+
**Q: Models stored via `extra_model_paths.yaml` (e.g. on a different drive) are not listed in the dropdown**
299299
A: Versions ≤ 1.0.10 only searched `folder_paths.models_dir/LLM` and `folder_paths.models_dir/text_encoders` directly and ignored paths registered by `extra_model_paths.yaml`. This meant models on a separate drive — such as `W:\ai-models\text_encoders\` — were never discovered even though ComfyUI itself could load them.
300300

301301
Fixed in the patch that follows: `local_gguf_utils.py` now calls `folder_paths.get_folder_paths("text_encoders")` and `folder_paths.get_folder_paths("llm")` first, which returns every path registered by ComfyUI (including entries from `extra_model_paths.yaml`). Models on other drives or in non-default locations are resolved as absolute paths so the rest of the load pipeline still works correctly.
302302

303-
**Q: mmproj auto-detect fails with "no mmproj matched the model family prefix" even though a `mmproj-*.gguf` file exists next to the model**
303+
**Q: mmproj auto-detect fails with "no mmproj matched the model family prefix" even though a `mmproj-*.gguf` file exists next to the model**
304304
A: Auto-detect previously required the mmproj filename to begin with the model's family prefix (e.g. `mmproj-qwen3.5-BF16.gguf`). Files with generic names like `mmproj-BF16.gguf` were rejected.
305305

306306
Fixed in the patch that follows: if no family-prefixed mmproj is found but there is **exactly one** `mmproj-*.gguf` in the model's directory, that file is used automatically with a fallback warning in the log. If multiple unmatched mmproj files are present you still need to select one manually.
@@ -462,6 +462,7 @@ Areas needing help:
462462

463463
See [CHANGELOG.md](CHANGELOG.md) for detailed version history.
464464

465-
### Current Version: 1.0.10
466-
- Added support for Qwen3.5 local GGUF models
467-
- Improved post-run cleanup behavior for local model nodes
465+
### Current Version: 1.0.11
466+
- Added support for Qwen3.6 local GGUF model detection through the Qwen3.5 handler path
467+
- Added discovery of GGUF models registered via `extra_model_paths.yaml`
468+
- Improved mmproj auto-detection when a model directory contains exactly one `mmproj-*.gguf` file

pyproject.toml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[project]
22
name = "multimodal-prompt-nodes"
3-
description = "Multimodal prompt generator nodes for ComfyUI, designed to generate prompts for QwenImageEdit and Wan2.2. Supports local LLM / local GGUF models (Qwen2.5-VL, Qwen3-VL) and Qwen API for image and video prompt generation and enhancement."
4-
version = "1.0.10"
3+
description = "Multimodal prompt generator nodes for ComfyUI, designed to generate prompts for QwenImageEdit and Wan2.2. Supports local LLM / local GGUF models (Qwen2.5-VL, Qwen3-VL, Qwen3.5 and Qwen3.6) and Qwen API for image and video prompt generation and enhancement."
4+
version = "1.0.11"
55
license = {file = "LICENSE"}
66
# classifiers = [
77
# # For OS-independent nodes (works on all operating systems)
@@ -39,4 +39,3 @@ DisplayName = "ComfyUI-MultiModal-Prompt-Nodes"
3939
Icon = ""
4040
includes = []
4141
# "requires-comfyui" = ">=1.0.0" # ComfyUI version compatibility
42-

vision_llm_node.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"""
2020
Vision LLM Node (vision_llm_node.py)
2121
Local GGUF vision language model node for ComfyUI
22-
Supports Qwen2.5-VL Qwen3-VL and qwen3.5 with multi-image input
22+
Supports Qwen2.5-VL, Qwen3-VL, qwen3.5 and qwen3.6 with multi-image input
2323
Part of ComfyUI-MultiModal-Prompt-Nodes
2424
"""
2525

@@ -51,7 +51,7 @@
5151

5252
# llama-cpp-python imports
5353
try:
54-
# Qwen2.5-VL, Qwen3-VL and Qwen3.5L vision support via Qwen2VLChatHandler / Qwen3VLChatHandler / Qwen35ChatHandler
54+
# Qwen2.5-VL, Qwen3-VL, Qwen3.5 and Qwen3.6 vision support via Qwen2VLChatHandler / Qwen3VLChatHandler / Qwen35ChatHandler
5555
from llama_cpp import Llama
5656

5757
try:
@@ -522,7 +522,7 @@ def _infer_is_qwen3(self, model_path: str) -> bool:
522522

523523
def _infer_is_qwen35(self, model_path: str) -> bool:
524524
model_name_lower = os.path.basename(model_path).lower()
525-
return ("qwen35" in model_name_lower) or ("qwen3.5" in model_name_lower)
525+
return ("qwen35" in model_name_lower) or ("qwen3.5" in model_name_lower) or ("qwen36" in model_name_lower) or ("qwen3.6" in model_name_lower)
526526

527527
def _auto_detect_mmproj(self, model_path: str) -> Optional[str]:
528528
"""
@@ -542,7 +542,7 @@ def _auto_detect_mmproj(self, model_path: str) -> Optional[str]:
542542
name_l = name.lower()
543543

544544
# Model family keywords (startswith)
545-
families = ["qwen2", "qwen3vl", "qwen3-vl", "qwen35", "qwen3.5"]
545+
families = ["qwen2", "qwen3vl", "qwen3-vl", "qwen35", "qwen3.5", "qwen36", "qwen3.6"]
546546
family = next((k for k in families if name_l.startswith(k)), None)
547547

548548
if family is None:
@@ -669,14 +669,14 @@ def load_model(
669669
"Please download mmproj file from the model's GGUF repo.\n"
670670
f"Expected location: {model_dir}{os.sep}mmproj-*.gguf"
671671
)
672-
# Qwen3.5 requires mmproj (unless explicitly disabled)
672+
# Qwen3.5/3.6 requires mmproj (unless explicitly disabled)
673673
elif is_qwen35 and not force_no_mmproj:
674674
if mmproj_path is None:
675675
mmproj_path = self._auto_detect_mmproj(model_path)
676676
if mmproj_path is None:
677677
model_dir = os.path.dirname(model_path)
678678
raise ValueError(
679-
"Qwen3.5 requires mmproj file!\n"
679+
"Qwen3.5/3.6 requires mmproj file!\n"
680680
"Please download mmproj file from the model's GGUF repo.\n"
681681
f"Expected location: {model_dir}{os.sep}mmproj-*.gguf"
682682
)
@@ -724,18 +724,19 @@ def load_model(
724724
elif is_qwen35 and QWEN35_AVAILABLE:
725725
if mmproj_path is not None and os.path.exists(mmproj_path):
726726
try:
727-
print(f"[GGUFModelManager] Qwen3.5 with mmproj: {mmproj_path}")
727+
print(f"[GGUFModelManager] Qwen3.5/3.6 with mmproj: {mmproj_path}")
728728
chat_handler = Qwen35ChatHandler(
729729
clip_model_path=mmproj_path,
730730
enable_thinking=False,
731+
image_min_tokens=1024,
731732
)
732733
use_vision = True
733734
except Exception as e:
734-
print(f"[GGUFModelManager] Warning: Failed to initialize Qwen3.5 chat handler: {e}")
735+
print(f"[GGUFModelManager] Warning: Failed to initialize Qwen3.5/3.6 chat handler: {e}")
735736
chat_handler = None
736737
use_vision = False
737738
else:
738-
print("[GGUFModelManager] Error: Qwen3.5 requires an existing mmproj file")
739+
print("[GGUFModelManager] Error: Qwen3.5/3.6 requires an existing mmproj file")
739740
chat_handler = None
740741
use_vision = False
741742
else:

0 commit comments

Comments
 (0)