Compare commits

..

10 Commits

Author SHA1 Message Date
8a89f8340a feat: register supports_terminal CLI feature flag
Add a registered, bool-typed supports_terminal flag so a terminal host
(e.g. ComfyUI Desktop) can advertise interactive-terminal availability to
the frontend via --feature-flag supports_terminal=true. Registration is
required so the value coerces to a real boolean; the frontend gates the
terminal UI on a strict === true check.

Amp-Thread-ID: https://ampcode.com/threads/T-019e9464-f097-7430-a762-405ffb717dae
Co-authored-by: Amp <amp@ampcode.com>
2026-06-04 14:46:52 -07:00
4e1f7cb1db Bump comfyui-frontend-package to 1.45.15 (#14265) 2026-06-04 11:41:33 -07:00
6ecca5f468 chore: update workflow templates to v0.9.98 (#14284) 2026-06-04 09:40:44 -07:00
27b5c423a6 [Partner Nodes] feat: add seed input to Flux Erase node (#14283)
Signed-off-by: bigcat88 <bigcat88@icloud.com>
2026-06-04 19:32:15 +03:00
1f9e7df52a [Partner Nodes] feat: add Krea 2 Medium Turbo model (#14280) 2026-06-04 08:24:22 -07:00
0a92dd9c09 [Partner Nodes] feat: add Bria Green Background node (#14277) 2026-06-04 07:47:20 -07:00
4d360f9c9d [Partner Nodes] fix (Seedance 2.0): prevent 1080p first/last-frame stretch jump (#14251)
Signed-off-by: bigcat88 <bigcat88@icloud.com>
2026-06-04 11:23:52 +03:00
4f99ce0f8c [Partner Nodes] fix SaveWEBM node to save alpha channel; add BriaTransparentVideoBackground Partner node (#14257) 2026-06-03 16:05:48 -07:00
7758b9b321 fix: Image grid bug fix (CORE-215) (#14100) 2026-06-03 16:03:32 -07:00
bb84c75283 chore(openapi): sync shared API contract from cloud@7c470f0 (#14174) 2026-06-03 13:20:30 -07:00
7 changed files with 4969 additions and 11730 deletions

View File

@ -25,6 +25,11 @@ CLI_FEATURE_FLAG_REGISTRY: dict[str, FeatureFlagInfo] = {
"default": False,
"description": "Show the sign-in button in the frontend even when not signed in",
},
"supports_terminal": {
"type": "bool",
"default": False,
"description": "An interactive terminal host is available for this server (e.g. ComfyUI Desktop), so the frontend may surface a terminal/console UI",
},
}

View File

@ -411,6 +411,21 @@ class ImageProcessingNode(io.ComfyNode):
return has_group
@classmethod
def _ensure_image_list(cls, images):
"""Normalize to a flat list of [1, H, W, C] tensors."""
if isinstance(images, torch.Tensor):
if images.ndim != 4:
raise ValueError(f"Expected 4D image tensor, got shape {tuple(images.shape)}")
return [images[i:i+1] for i in range(images.shape[0])]
flat = []
for item in images:
if not isinstance(item, torch.Tensor) or item.ndim != 4:
raise ValueError(f"Expected 4D image tensor, got {type(item).__name__} shape {getattr(item, 'shape', None)}")
flat.extend([item[i:i+1] for i in range(item.shape[0])])
return flat
@classmethod
def define_schema(cls):
if cls.node_id is None:
@ -458,6 +473,9 @@ class ImageProcessingNode(io.ComfyNode):
"""Execute the node. Routes to _process or _group_process based on mode."""
is_group = cls._detect_processing_mode()
if is_group:
images = cls._ensure_image_list(images)
# Extract scalar values from lists for parameters
params = {}
for k, v in kwargs.items():

View File

@ -1,3 +1,3 @@
# This file is automatically generated by the build process when version is
# updated in pyproject.toml.
__version__ = "0.24.1"
__version__ = "0.24.0"

16661
openapi.yaml

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
[project]
name = "ComfyUI"
version = "0.24.1"
version = "0.24.0"
readme = "README.md"
license = { file = "LICENSE" }
requires-python = ">=3.10"

View File

@ -1,4 +1,4 @@
comfyui-frontend-package==1.44.19
comfyui-frontend-package==1.45.15
comfyui-workflow-templates==0.9.98
comfyui-embedded-docs==0.5.2
torch

View File

@ -181,3 +181,12 @@ class TestCliFeatureFlagRegistry:
assert "type" in info, f"{key} missing 'type'"
assert "default" in info, f"{key} missing 'default'"
assert "description" in info, f"{key} missing 'description'"
def test_supports_terminal_registered_as_bool(self):
"""supports_terminal must be a registered bool so --feature-flag
supports_terminal=true coerces to a real boolean. The frontend gates
on a strict `=== true` check, so a raw string 'true' would not work."""
assert "supports_terminal" in CLI_FEATURE_FLAG_REGISTRY
assert CLI_FEATURE_FLAG_REGISTRY["supports_terminal"]["type"] == "bool"
assert _coerce_flag_value("supports_terminal", "true") is True
assert _coerce_flag_value("supports_terminal", "false") is False