From 57c73279ef6194d1c96bfa3f820fca8ac2fa07b8 Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Wed, 1 Jul 2026 16:20:20 +0200 Subject: [PATCH] Preserve legacy seed control ordering --- node_seed_resolution.py | 6 +++--- prompt_builder.py | 4 ++-- seed_config.py | 4 ++-- tools/prompt_smoke.py | 32 ++++++++++++++++++++++++++++++-- 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/node_seed_resolution.py b/node_seed_resolution.py index 97b6732..36b4d02 100644 --- a/node_seed_resolution.py +++ b/node_seed_resolution.py @@ -65,13 +65,13 @@ class SxCPSeedControl: "category", "subcategory", "content", - "clothing", "person", "scene", "pose", "role", "expression", "composition", + "clothing", ) @classmethod @@ -118,8 +118,6 @@ class SxCPSeedControl: subcategory_seed, content_seed_mode, content_seed, - clothing_seed_mode, - clothing_seed, person_seed_mode, person_seed, scene_seed_mode, @@ -132,6 +130,8 @@ class SxCPSeedControl: expression_seed, composition_seed_mode, composition_seed, + clothing_seed_mode="auto", + clothing_seed=-1, ): config = build_seed_config_json( category_seed=category_seed, diff --git a/prompt_builder.py b/prompt_builder.py index 303781c..51bdf03 100644 --- a/prompt_builder.py +++ b/prompt_builder.py @@ -875,7 +875,6 @@ def build_seed_config_json( category_seed: int = -1, subcategory_seed: int = -1, content_seed: int = -1, - clothing_seed: int = -1, person_seed: int = -1, scene_seed: int = -1, pose_seed: int = -1, @@ -885,13 +884,14 @@ def build_seed_config_json( category_seed_mode: str = "auto", subcategory_seed_mode: str = "auto", content_seed_mode: str = "auto", - clothing_seed_mode: str = "auto", person_seed_mode: str = "auto", scene_seed_mode: str = "auto", pose_seed_mode: str = "auto", role_seed_mode: str = "auto", expression_seed_mode: str = "auto", composition_seed_mode: str = "auto", + clothing_seed: int = -1, + clothing_seed_mode: str = "auto", ) -> str: return seed_policy.build_seed_config_json( category_seed=category_seed, diff --git a/seed_config.py b/seed_config.py index 6cb69d2..0601430 100644 --- a/seed_config.py +++ b/seed_config.py @@ -109,7 +109,6 @@ def build_seed_config_json( category_seed: int = -1, subcategory_seed: int = -1, content_seed: int = -1, - clothing_seed: int = -1, person_seed: int = -1, scene_seed: int = -1, pose_seed: int = -1, @@ -119,13 +118,14 @@ def build_seed_config_json( category_seed_mode: str = "auto", subcategory_seed_mode: str = "auto", content_seed_mode: str = "auto", - clothing_seed_mode: str = "auto", person_seed_mode: str = "auto", scene_seed_mode: str = "auto", pose_seed_mode: str = "auto", role_seed_mode: str = "auto", expression_seed_mode: str = "auto", composition_seed_mode: str = "auto", + clothing_seed: int = -1, + clothing_seed_mode: str = "auto", ) -> str: rng = random.SystemRandom() diff --git a/tools/prompt_smoke.py b/tools/prompt_smoke.py index a15c312..b8073de 100644 --- a/tools/prompt_smoke.py +++ b/tools/prompt_smoke.py @@ -13925,8 +13925,6 @@ def smoke_node_utility_registration() -> None: -1, "random", -1, - "fixed", - 222, "auto", 123, "auto", @@ -13939,6 +13937,8 @@ def smoke_node_utility_registration() -> None: -1, "fixed", 999, + "fixed", + 222, ) parsed_seed_control = json.loads(seed_control_config) _expect(parsed_seed_control.get("category_seed") == 0, "Seed Control fixed mode did not clamp negative seed") @@ -13955,6 +13955,34 @@ def smoke_node_utility_registration() -> None: f"content={parsed_seed_control['content_seed']}" in seed_control_summary, "Seed Control summary lost random resolved seed value", ) + legacy_seed_control_config, _legacy_seed_control_summary = seed_control().build( + "fixed", + -1, + "follow_main", + -1, + "random", + -1, + "auto", + 123, + "auto", + 456, + "fixed", + 777, + "follow_main", + 888, + "auto", + 321, + "fixed", + 999, + ) + legacy_seed_control = json.loads(legacy_seed_control_config) + _expect(legacy_seed_control.get("clothing_seed") == -1, "Legacy Seed Control call should leave clothing seed unset") + _expect(legacy_seed_control.get("person_seed") == 123, "Legacy Seed Control call shifted person seed") + _expect(legacy_seed_control.get("scene_seed") == 456, "Legacy Seed Control call shifted scene seed") + _expect(legacy_seed_control.get("pose_seed") == 777, "Legacy Seed Control call shifted pose seed") + _expect(legacy_seed_control.get("role_seed") == -1, "Legacy Seed Control call shifted role seed") + _expect(legacy_seed_control.get("expression_seed") == 321, "Legacy Seed Control call shifted expression seed") + _expect(legacy_seed_control.get("composition_seed") == 999, "Legacy Seed Control call shifted composition seed") seed_locker = sxcp_nodes.NODE_CLASS_MAPPINGS["SxCPSeedLocker"] locker_inputs = seed_locker.INPUT_TYPES().get("required") or {}