From 1d0b1b9d6470182bbd27e01616f309dba77461e6 Mon Sep 17 00:00:00 2001 From: Extraltodeus Date: Fri, 5 Dec 2025 20:44:51 +0100 Subject: [PATCH 1/2] Implement V3 to V1 schema COMBO conversion function Add function to convert V3 schema to V1 for compatibility --- server.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/server.py b/server.py index ac4f42222..d00bbed76 100644 --- a/server.py +++ b/server.py @@ -182,6 +182,33 @@ def create_block_external_middleware(): return block_external_middleware +def convert_v3_to_v1_schema(input_types): + """ + Convert V3 schema (Combo objects) to V1 schema (simple tuples/lists) + for compatibility with old frontends + """ + converted = {} + + for category, inputs in input_types.items(): + converted[category] = {} + + for input_name, input_spec in inputs.items(): + + if isinstance(input_spec, tuple) and len(input_spec) > 1 and input_spec[0] == 'COMBO': + first_elem = input_spec[1] + if isinstance(first_elem, dict) and 'options' in first_elem: + adapted_input_spec = (first_elem['options'], {}) + first_elem.pop('options') + adapted_input_spec[1].update(first_elem) + converted[category][input_name] = adapted_input_spec + else: + # Already V1 format, pass through + converted[category][input_name] = input_spec + else: + # Pass through anything else unchanged + converted[category][input_name] = input_spec + + return converted class PromptServer(): def __init__(self, loop): @@ -681,6 +708,8 @@ class PromptServer(): for x in nodes.NODE_CLASS_MAPPINGS: try: out[x] = node_info(x) + if args.legacy_frontend_compat: + out[x]['input'] = convert_v3_to_v1_schema(out[x]['input']) except Exception: logging.error(f"[ERROR] An error occurred while retrieving information for the '{x}' node.") logging.error(traceback.format_exc()) From 06c322ad2da2288be9920f9bac9190f472a50562 Mon Sep 17 00:00:00 2001 From: Extraltodeus Date: Fri, 5 Dec 2025 20:45:32 +0100 Subject: [PATCH 2/2] Add legacy frontend compatibility argument --- comfy/cli_args.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/comfy/cli_args.py b/comfy/cli_args.py index 209fc185b..8be5244c2 100644 --- a/comfy/cli_args.py +++ b/comfy/cli_args.py @@ -209,6 +209,12 @@ parser.add_argument( help="The local filesystem path to the directory where the frontend is located. Overrides --front-end-version.", ) +parser.add_argument( + "--legacy-frontend-compat", + action="store_true", + help="Convert V3 node schemas to V1 format for compatibility with old frontends" +) + parser.add_argument("--user-directory", type=is_valid_directory, default=None, help="Set the ComfyUI user directory with an absolute path. Overrides --base-directory.") parser.add_argument("--enable-compress-response-body", action="store_true", help="Enable compressing response body.")