diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a64ad192..5a245c68a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ - control: controlnet with a separate init image uses the unit's processed image - control: controlnet with *init image same as control* uses the unit's processed image - control: multiple units on controlnet-union + - control: t2i-adapter, controlnet-xs and controllite model lists follow the loaded model type ## Update for 2026-10-01 diff --git a/modules/control/units/lite.py b/modules/control/units/lite.py index c09a48f5e..f1444949a 100644 --- a/modules/control/units/lite.py +++ b/modules/control/units/lite.py @@ -24,6 +24,7 @@ predefined_sdxl = { 'Replicate anime XL': 'kohya-ss/controlnet-lllite/controllllite_v01032064e_sdxl_replicate_anime_v2', } models = {} +models_type = None # sd_model_type the cached list was built for all_models = {} all_models.update(predefined_sd15) all_models.update(predefined_sdxl) @@ -45,10 +46,11 @@ def find_models(): def list_models(refresh=False): import modules.shared - global models # pylint: disable=global-statement - if not refresh and len(models) > 0: + global models, models_type # pylint: disable=global-statement + if not refresh and len(models) > 0 and models_type == modules.shared.sd_model_type: return models models = {} + models_type = modules.shared.sd_model_type if modules.shared.sd_model_type == 'none': models = ['None'] elif modules.shared.sd_model_type == 'sdxl': diff --git a/modules/control/units/t2iadapter.py b/modules/control/units/t2iadapter.py index 697a948fe..7b90bc2dd 100644 --- a/modules/control/units/t2iadapter.py +++ b/modules/control/units/t2iadapter.py @@ -40,6 +40,7 @@ predefined_sdxl = { } models = {} +models_type = None # sd_model_type the cached list was built for all_models = {} all_models.update(predefined_sd15) all_models.update(predefined_sdxl) @@ -49,10 +50,11 @@ load_lock = threading.Lock() def list_models(refresh=False): import modules.shared - global models # pylint: disable=global-statement - if not refresh and len(models) > 0: + global models, models_type # pylint: disable=global-statement + if not refresh and len(models) > 0 and models_type == modules.shared.sd_model_type: return models models = {} + models_type = modules.shared.sd_model_type if modules.shared.sd_model_type == 'none': models = ['None'] elif modules.shared.sd_model_type == 'sdxl': diff --git a/modules/control/units/xs.py b/modules/control/units/xs.py index bfcc8d44e..740189b83 100644 --- a/modules/control/units/xs.py +++ b/modules/control/units/xs.py @@ -20,6 +20,7 @@ predefined_sdxl = { 'Depth': 'UmerHA/ConrolNetXS-SDXL-depth', } models = {} +models_type = None # sd_model_type the cached list was built for all_models = {} all_models.update(predefined_sd15) all_models.update(predefined_sdxl) @@ -40,11 +41,12 @@ def find_models(): def list_models(refresh=False): - global models # pylint: disable=global-statement + global models, models_type # pylint: disable=global-statement import modules.shared - if not refresh and len(models) > 0: + if not refresh and len(models) > 0 and models_type == modules.shared.sd_model_type: return models models = {} + models_type = modules.shared.sd_model_type if modules.shared.sd_model_type == 'none': models = ['None'] elif modules.shared.sd_model_type == 'sdxl':