From f49b4ba4db921f6e55c0b5f66d2bdcdc80f09966 Mon Sep 17 00:00:00 2001 From: Will Miao Date: Sun, 26 Jul 2026 10:59:38 +0800 Subject: [PATCH] fix(metadata-overwrite): rename 'checkpoint' input to 'model' --- py/metadata_collector/constants.py | 2 +- py/metadata_collector/metadata_processor.py | 7 +++++++ py/nodes/metadata_overwrite.py | 7 +++++-- tests/metadata_collector/test_metadata_collector.py | 8 ++++---- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/py/metadata_collector/constants.py b/py/metadata_collector/constants.py index 36a59c28..d417e0d1 100644 --- a/py/metadata_collector/constants.py +++ b/py/metadata_collector/constants.py @@ -14,7 +14,7 @@ OVERWRITE = "overwrite" # Manual metadata overwrite from MetadataOverwriteLM no # Field names that the MetadataOverwriteLM node and its extractor share METADATA_OVERWRITE_FIELDS = ( "prompt", "negative_prompt", "seed", "steps", "cfg_scale", - "sampler", "scheduler", "checkpoint", "loras", "size", + "sampler", "scheduler", "model", "loras", "size", "clip_skip", "additional_data", ) diff --git a/py/metadata_collector/metadata_processor.py b/py/metadata_collector/metadata_processor.py index b5616c43..a509d036 100644 --- a/py/metadata_collector/metadata_processor.py +++ b/py/metadata_collector/metadata_processor.py @@ -681,6 +681,13 @@ class MetadataProcessor: if value: # truthy check — only overwrite when user provided a real value params[key] = value + # Bridge: the overwrite node exposes the field as "model" (more accurate), + # but the internal pipeline key remains "checkpoint" for backward compatibility + # with A1111 metadata format and downstream consumers. + if params.get("model"): + params["checkpoint"] = params["model"] + del params["model"] + return params @staticmethod diff --git a/py/nodes/metadata_overwrite.py b/py/nodes/metadata_overwrite.py index f8476e55..b29eb3ca 100644 --- a/py/nodes/metadata_overwrite.py +++ b/py/nodes/metadata_overwrite.py @@ -81,11 +81,14 @@ class MetadataOverwriteLM: "tooltip": "Scheduler name. Only overwrites when non-empty.", }, ), - "checkpoint": ( + "model": ( "STRING", { "default": "", - "tooltip": "Checkpoint / model name. Only overwrites when non-empty.", + "tooltip": ( + "The checkpoint or diffusion model (UNet) used " + "for generation. Only overwrites when non-empty." + ), }, ), "loras": ( diff --git a/tests/metadata_collector/test_metadata_collector.py b/tests/metadata_collector/test_metadata_collector.py index df3b7b6e..b3c49435 100644 --- a/tests/metadata_collector/test_metadata_collector.py +++ b/tests/metadata_collector/test_metadata_collector.py @@ -843,7 +843,7 @@ def test_metadata_overwrite_extractor_stores_truthy_values(metadata_registry): "cfg_scale": 7.5, "sampler": "", "scheduler": "", - "checkpoint": "myModel.safetensors", + "model": "myModel.safetensors", "loras": "", "size": "1024x768", "clip_skip": 0, @@ -860,7 +860,7 @@ def test_metadata_overwrite_extractor_stores_truthy_values(metadata_registry): assert params["prompt"] == "a beautiful landscape" assert params["seed"] == 42 assert params["cfg_scale"] == 7.5 - assert params["checkpoint"] == "myModel.safetensors" + assert params["model"] == "myModel.safetensors" assert params["loras"] == "" assert params["size"] == "1024x768" assert params["additional_data"] == '{"Copyright": "CC0"}' @@ -986,7 +986,7 @@ def test_fill_missing_metadata_skips_overwrite_for_bypassed_node(metadata_regist "ow-1", "MetadataOverwriteLM", {"seed": 99, "prompt": "test", "steps": 0, "cfg_scale": 0.0, - "negative_prompt": "", "sampler": "", "scheduler": "", "checkpoint": "", + "negative_prompt": "", "sampler": "", "scheduler": "", "model": "", "loras": "", "size": "", "clip_skip": 0, "additional_data": ""}, None, ) @@ -1018,7 +1018,7 @@ def test_fill_missing_metadata_fills_overwrite_for_muted_node(metadata_registry) "ow-1", "MetadataOverwriteLM", {"seed": 88, "prompt": "test2", "steps": 0, "cfg_scale": 0.0, - "negative_prompt": "", "sampler": "", "scheduler": "", "checkpoint": "", + "negative_prompt": "", "sampler": "", "scheduler": "", "model": "", "loras": "", "size": "", "clip_skip": 0, "additional_data": ""}, None, )