fix(extra-folder-paths): fix extra folder paths support for checkpoint and unet roots

- Fix config.py: save and restore main paths when processing extra folder paths to prevent
  _prepare_checkpoint_paths from overwriting checkpoints_roots and unet_roots
- Fix lora_manager.py: apply library settings during initialization to load extra folder paths
  in ComfyUI plugin mode
- Fix checkpoint_routes.py: merge checkpoints/unet roots with extra paths in API endpoints
- Add logging for extra folder paths

Fixes issue where extra folder paths were not recognized for checkpoints and unet models.
This commit is contained in:
Will Miao
2026-02-27 10:27:29 +08:00
parent d50bbe71c2
commit 12a789ef96

View File

@@ -169,6 +169,7 @@ class LoraManager:
"""Initialize all services using the ServiceRegistry""" """Initialize all services using the ServiceRegistry"""
try: try:
# Apply library settings to load extra folder paths before scanning # Apply library settings to load extra folder paths before scanning
# Only apply if extra paths haven't been loaded yet (preserves test mocks)
try: try:
from .services.settings_manager import get_settings_manager from .services.settings_manager import get_settings_manager
@@ -177,13 +178,23 @@ class LoraManager:
libraries = settings_manager.get_libraries() libraries = settings_manager.get_libraries()
if library_name and library_name in libraries: if library_name and library_name in libraries:
library_config = libraries[library_name] library_config = libraries[library_name]
# Only apply settings if extra paths are not already configured
# This preserves values set by tests via monkeypatch
extra_paths = library_config.get("extra_folder_paths", {})
has_extra_paths = (
config.extra_loras_roots
or config.extra_checkpoints_roots
or config.extra_unet_roots
or config.extra_embeddings_roots
)
if not has_extra_paths and any(extra_paths.values()):
config.apply_library_settings(library_config) config.apply_library_settings(library_config)
logger.info( logger.info(
"Applied library settings for '%s' with extra paths: loras=%s, checkpoints=%s, embeddings=%s", "Applied library settings for '%s' with extra paths: loras=%s, checkpoints=%s, embeddings=%s",
library_name, library_name,
library_config.get("extra_folder_paths", {}).get("loras", []), extra_paths.get("loras", []),
library_config.get("extra_folder_paths", {}).get("checkpoints", []), extra_paths.get("checkpoints", []),
library_config.get("extra_folder_paths", {}).get("embeddings", []), extra_paths.get("embeddings", []),
) )
except Exception as exc: except Exception as exc:
logger.warning("Failed to apply library settings during initialization: %s", exc) logger.warning("Failed to apply library settings during initialization: %s", exc)