From 7e724d373f383ad1a29d643a07db1ee8ce061d3a Mon Sep 17 00:00:00 2001 From: Dariusz L Date: Wed, 15 Jul 2026 13:04:00 +0200 Subject: [PATCH] refactor: complete migration to centralized HTTP helpers and shared normalization - Replace remaining direct requests.get calls with request_public_url, request_source_response, and request_source_json in downloader, civarchive, civitai, and popular sources - Use normalize_model_file_info in CivitAI source instead of inline logic - Update huggingface-author-index.json metadata - Add tests for civarchive page/search requests and popular base model updates - Adjust downloader redirect test for new request_public_url behavior --- core/downloader.py | 23 +- core/sources/civarchive.py | 41 +- core/sources/civitai.py | 24 +- core/sources/popular.py | 18 +- metadata/huggingface-author-index.json | 1886 ++++++++++++------------ tests/test_refactoring_unification.py | 67 + tests/test_resolver_robustness.py | 16 +- 7 files changed, 1061 insertions(+), 1014 deletions(-) diff --git a/core/downloader.py b/core/downloader.py index 07d2051..2e297b7 100644 --- a/core/downloader.py +++ b/core/downloader.py @@ -228,34 +228,21 @@ def _resolve_civitai_download_url_for_aria2( if not _is_civitai_api_download_url(validated_url): return validated_url - response = None try: - response = requests.get( + response, resolved_url, _ = request_public_url( + "GET", validated_url, headers=build_download_headers(validated_url, headers), - allow_redirects=False, - stream=True, timeout=20, + stream=True, + max_redirects=1, ) - if response.status_code not in {301, 302, 303, 307, 308}: - return url - - location = response.headers.get("Location") or response.headers.get("location") - if not location: - return url - - resolved_url = validate_public_http_url(urljoin(validated_url, location.strip())) + response.close() log.debug("Resolved CivitAI download redirect for aria2") return resolved_url except Exception as exc: log.warning(f"Could not pre-resolve CivitAI download URL for aria2: {exc}") return validated_url - finally: - if response is not None: - try: - response.close() - except Exception: - pass def _resolve_download_url_for_aria2( diff --git a/core/sources/civarchive.py b/core/sources/civarchive.py index d8f7b7e..d2be0d6 100644 --- a/core/sources/civarchive.py +++ b/core/sources/civarchive.py @@ -14,7 +14,7 @@ from urllib.parse import parse_qs, unquote, urljoin, urlparse import requests -from ..network_utils import host_matches_domain +from ..network_utils import host_matches_domain, request_source_response from ..matcher import ( calculate_archived_model_confidence, calculate_model_title_confidence, @@ -155,16 +155,15 @@ def _request_page_text( timeout: int = 20, ) -> Optional[str]: url = urljoin(CIVARCHIVE_BASE_URL, path_or_url) - request_params = {k: v for k, v in (params or {}).items() if v is not None} - try: - response = requests.get( - url, - params=request_params, - headers=REQUEST_HEADERS, - timeout=timeout, - ) - except Exception as e: - log.warning(f"CivArchive page request failed: url={url}, error={e}") + response = request_source_response( + url, + method="GET", + headers=REQUEST_HEADERS, + params=params, + timeout=timeout, + log_name="CivArchive page", + ) + if response is None: return None if response.status_code != 200: @@ -417,16 +416,16 @@ def _search_page( # (especially VAEs) are frequently misclassified (e.g. as Checkpoint or null type) in their database. # We rely on name confidence sorting instead. - try: - response = requests.get( - f"{CIVARCHIVE_BASE_URL}/search", - params=params, - headers=REQUEST_HEADERS, - timeout=timeout, - ) - except Exception as e: - log.warning(f"CivArchive search request failed: query={query}, error={e}") - raise CivArchiveSearchError(str(e)) from e + response = request_source_response( + f"{CIVARCHIVE_BASE_URL}/search", + method="GET", + headers=REQUEST_HEADERS, + params=params, + timeout=timeout, + log_name="CivArchive search", + ) + if response is None: + raise CivArchiveSearchError("CivArchive search request failed (network error or timeout)") if response.status_code != 200: log.warning( diff --git a/core/sources/civitai.py b/core/sources/civitai.py index 2ec7af6..5e6ce85 100644 --- a/core/sources/civitai.py +++ b/core/sources/civitai.py @@ -35,6 +35,7 @@ from ..type_utils import ( as_list, extract_trained_words, build_search_result, + normalize_model_file_info, ) from ..progress import report_progress, get_progress_reporter from ..path_utils import ( @@ -1129,22 +1130,13 @@ def _normalize_civitai_file( version_id: Optional[int], api_key: Optional[str] = None, ) -> Dict[str, Any]: - hashes = file_info.get("hashes") if isinstance(file_info.get("hashes"), dict) else {} - return { - "id": file_info.get("id"), - "name": file_info.get("name") or file_info.get("filename"), - "type": file_info.get("type"), - "size": file_info.get("sizeKB", 0) * 1024 if file_info.get("sizeKB") else file_info.get("size"), - "download_url": file_info.get("downloadUrl") or ( - get_civitai_download_url(version_id, api_key) if version_id else None - ), - "primary": bool(file_info.get("primary", False)), - "sha256": file_info.get("sha256") or hashes.get("SHA256") or hashes.get("sha256"), - "hashes": hashes, - "metadata": file_info.get("metadata") or {}, - "model_id": model_id, - "version_id": version_id, - } + fallback_url = get_civitai_download_url(version_id, api_key) if version_id else None + return normalize_model_file_info( + file_info, + model_id=model_id, + version_id=version_id, + fallback_download_url=fallback_url + ) def get_civitai_model_details( diff --git a/core/sources/popular.py b/core/sources/popular.py index 0dac915..4d7a3f0 100644 --- a/core/sources/popular.py +++ b/core/sources/popular.py @@ -17,6 +17,7 @@ log = create_module_logger(__name__) from ..path_utils import METADATA_DIR, read_json_safe, write_json_atomic, save_catalog_with_backup +from ..network_utils import request_source_json POPULAR_MODELS_FILE = os.path.join(METADATA_DIR, "popular-models.json") MODEL_ALIASES_FILE = os.path.join(METADATA_DIR, "model-aliases.json") BASE_MODELS_FILE = os.path.join(METADATA_DIR, "base-models.json") @@ -259,11 +260,9 @@ def get_base_models_status(check_remote: bool = False) -> Dict[str, Any]: if check_remote: try: - import requests - # Fetch from CivitAI API - response = requests.get("https://civitai.com/api/v1/enums", timeout=15) - if response.status_code == 200: - enums = response.json() + # Fetch from CivitAI API using unified helper + enums = request_source_json("https://civitai.com/api/v1/enums", timeout=15, log_name="CivitAI Enums") + if enums: remote_models = enums.get("BaseModel", []) # Check if there are new models by comparing normalized names and aliases @@ -292,12 +291,9 @@ def get_base_models_status(check_remote: bool = False) -> Dict[str, Any]: def update_base_models_from_remote() -> Dict[str, Any]: """Fetch live BaseModel enums from CivitAI and merge into base-models.json.""" - import requests - response = requests.get("https://civitai.com/api/v1/enums", timeout=15) - if response.status_code != 200: - raise ValueError(f"CivitAI enums endpoint returned HTTP {response.status_code}") - - enums = response.json() + enums = request_source_json("https://civitai.com/api/v1/enums", timeout=15, log_name="CivitAI Enums", raise_on_error=True) + if not enums: + raise ValueError("CivitAI enums did not return a valid response") remote_names = enums.get("BaseModel", []) if not remote_names or not isinstance(remote_names, list): raise ValueError("CivitAI enums did not return a valid BaseModel list") diff --git a/metadata/huggingface-author-index.json b/metadata/huggingface-author-index.json index ecd21b8..57770a1 100644 --- a/metadata/huggingface-author-index.json +++ b/metadata/huggingface-author-index.json @@ -3,49 +3,48 @@ "authors": { "Comfy-Org": { "author": "Comfy-Org", - "updated_at": 1784023828.877815, + "updated_at": 1784113011.3182092, "repo_count": 77, "file_count": 666, "repos": [ "Comfy-Org/Krea-2", "Comfy-Org/Wan_2.2_ComfyUI_Repackaged", "Comfy-Org/Qwen3-VL", - "Comfy-Org/z_image_turbo", "Comfy-Org/SeedVR2", + "Comfy-Org/z_image_turbo", + "Comfy-Org/Wan-Dancer", "Comfy-Org/SCAIL-2", "Comfy-Org/Qwen-Image-Edit_ComfyUI", - "Comfy-Org/Wan-Dancer", - "Comfy-Org/Ideogram-4", + "Comfy-Org/Boogu-Image", "Comfy-Org/Wan_2.1_ComfyUI_repackaged", + "Comfy-Org/Ideogram-4", "Comfy-Org/Bernini-R", "Comfy-Org/Pixal3D", - "Comfy-Org/Boogu-Image", + "Comfy-Org/sigclip_vision_384", + "Comfy-Org/ltx-2", "Comfy-Org/flux1-dev", "Comfy-Org/Qwen-Image_ComfyUI", - "Comfy-Org/sigclip_vision_384", - "Comfy-Org/flux2-dev", - "Comfy-Org/vae-text-encorder-for-flux-klein-9b", + "Comfy-Org/HunyuanVideo_1.5_repackaged", "Comfy-Org/ace_step_1.5_ComfyUI_files", + "Comfy-Org/ltx-2.3", "Comfy-Org/gemma-4", "Comfy-Org/sam3.1", - "Comfy-Org/BiRefNet", - "Comfy-Org/flux1-schnell", + "Comfy-Org/PixelDiT", "Comfy-Org/Omnigen2_ComfyUI_repackaged", "Comfy-Org/flux1-kontext-dev_ComfyUI", "Comfy-Org/hunyuan3D_2.0_repackaged", - "Comfy-Org/HunyuanVideo_1.5_repackaged", + "Comfy-Org/flux2-dev", "Comfy-Org/vae-text-encorder-for-flux-klein-4b", + "Comfy-Org/vae-text-encorder-for-flux-klein-9b", "Comfy-Org/z_image", "Comfy-Org/causal_forcing_framewise_ComfyUI_repackaged", - "Comfy-Org/ltx-2.3", "Comfy-Org/ERNIE-Image", + "Comfy-Org/BiRefNet", "Comfy-Org/HiDream-O1-Image", "Comfy-Org/stable-audio-3", - "Comfy-Org/MoGe", "Comfy-Org/TRELLIS.2", "Comfy-Org/mediapipe", - "Comfy-Org/Lens", - "Comfy-Org/PixelDiT", + "Comfy-Org/flux1-schnell", "Comfy-Org/stable-diffusion-v1-5-archive", "Comfy-Org/stable-diffusion-3.5-fp8", "Comfy-Org/mochi_preview_repackaged", @@ -76,13 +75,14 @@ "Comfy-Org/Qwen-Image-Layered_ComfyUI", "Comfy-Org/NewBie-image-Exp0.1_repackaged", "Comfy-Org/Chroma1-HD_repackaged", - "Comfy-Org/ltx-2", "Comfy-Org/SDPose", "Comfy-Org/LongCat-Image", "Comfy-Org/Qwen3.5", "Comfy-Org/frame_interpolation", "Comfy-Org/void-model", + "Comfy-Org/MoGe", "Comfy-Org/Depth-Anything-3", + "Comfy-Org/Lens", "Comfy-Org/RT-DETR" ], "files": [ @@ -542,72 +542,6 @@ "filename": "qwen3vl_8b_nvfp4.safetensors", "size": null }, - { - "repo_id": "Comfy-Org/z_image_turbo", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/z_image_turbo", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/z_image_turbo", - "path": "split_files/diffusion_models/z_image_turbo_bf16.safetensors", - "filename": "z_image_turbo_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/z_image_turbo", - "path": "split_files/diffusion_models/z_image_turbo_int8_convrot.safetensors", - "filename": "z_image_turbo_int8_convrot.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/z_image_turbo", - "path": "split_files/diffusion_models/z_image_turbo_nvfp4.safetensors", - "filename": "z_image_turbo_nvfp4.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/z_image_turbo", - "path": "split_files/loras/z_image_turbo_distill_patch_lora_bf16.safetensors", - "filename": "z_image_turbo_distill_patch_lora_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/z_image_turbo", - "path": "split_files/text_encoders/qwen_3_4b.safetensors", - "filename": "qwen_3_4b.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/z_image_turbo", - "path": "split_files/text_encoders/qwen_3_4b_fp4_mixed.safetensors", - "filename": "qwen_3_4b_fp4_mixed.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/z_image_turbo", - "path": "split_files/text_encoders/qwen_3_4b_fp8_mixed.safetensors", - "filename": "qwen_3_4b_fp8_mixed.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/z_image_turbo", - "path": "split_files/vae/ae.safetensors", - "filename": "ae.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/z_image_turbo", - "path": "z_image_convert_original_to_comfy.py", - "filename": "z_image_convert_original_to_comfy.py", - "size": null - }, { "repo_id": "Comfy-Org/SeedVR2", "path": ".gitattributes", @@ -716,6 +650,96 @@ "filename": "ema_vae_fp16.safetensors", "size": null }, + { + "repo_id": "Comfy-Org/z_image_turbo", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image_turbo", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image_turbo", + "path": "split_files/diffusion_models/z_image_turbo_bf16.safetensors", + "filename": "z_image_turbo_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image_turbo", + "path": "split_files/diffusion_models/z_image_turbo_int8_convrot.safetensors", + "filename": "z_image_turbo_int8_convrot.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image_turbo", + "path": "split_files/diffusion_models/z_image_turbo_nvfp4.safetensors", + "filename": "z_image_turbo_nvfp4.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image_turbo", + "path": "split_files/loras/z_image_turbo_distill_patch_lora_bf16.safetensors", + "filename": "z_image_turbo_distill_patch_lora_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image_turbo", + "path": "split_files/text_encoders/qwen_3_4b.safetensors", + "filename": "qwen_3_4b.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image_turbo", + "path": "split_files/text_encoders/qwen_3_4b_fp4_mixed.safetensors", + "filename": "qwen_3_4b_fp4_mixed.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image_turbo", + "path": "split_files/text_encoders/qwen_3_4b_fp8_mixed.safetensors", + "filename": "qwen_3_4b_fp8_mixed.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image_turbo", + "path": "split_files/vae/ae.safetensors", + "filename": "ae.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image_turbo", + "path": "z_image_convert_original_to_comfy.py", + "filename": "z_image_convert_original_to_comfy.py", + "size": null + }, + { + "repo_id": "Comfy-Org/Wan-Dancer", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/Wan-Dancer", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/Wan-Dancer", + "path": "diffusion_models/wan2.2_dancer_14b_global_fp8_scaled.safetensors", + "filename": "wan2.2_dancer_14b_global_fp8_scaled.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Wan-Dancer", + "path": "diffusion_models/wan2.2_dancer_14b_local_fp8_scaled.safetensors", + "filename": "wan2.2_dancer_14b_local_fp8_scaled.safetensors", + "size": null + }, { "repo_id": "Comfy-Org/SCAIL-2", "path": ".gitattributes", @@ -867,93 +891,129 @@ "size": null }, { - "repo_id": "Comfy-Org/Wan-Dancer", + "repo_id": "Comfy-Org/Boogu-Image", "path": ".gitattributes", "filename": ".gitattributes", "size": null }, { - "repo_id": "Comfy-Org/Wan-Dancer", + "repo_id": "Comfy-Org/Boogu-Image", "path": "README.md", "filename": "README.md", "size": null }, { - "repo_id": "Comfy-Org/Wan-Dancer", - "path": "diffusion_models/wan2.2_dancer_14b_global_fp8_scaled.safetensors", - "filename": "wan2.2_dancer_14b_global_fp8_scaled.safetensors", + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_base_bf16.safetensors", + "filename": "boogu_image_base_bf16.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Wan-Dancer", - "path": "diffusion_models/wan2.2_dancer_14b_local_fp8_scaled.safetensors", - "filename": "wan2.2_dancer_14b_local_fp8_scaled.safetensors", + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_base_fp8_scaled.safetensors", + "filename": "boogu_image_base_fp8_scaled.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Ideogram-4", - "path": ".gitattributes", - "filename": ".gitattributes", + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_base_nvfp4.safetensors", + "filename": "boogu_image_base_nvfp4.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Ideogram-4", - "path": "README.md", - "filename": "README.md", + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_edit_bf16.safetensors", + "filename": "boogu_image_edit_bf16.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Ideogram-4", - "path": "diffusion_models/ideogram4_fp8_scaled.safetensors", - "filename": "ideogram4_fp8_scaled.safetensors", + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_edit_fp8_scaled.safetensors", + "filename": "boogu_image_edit_fp8_scaled.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Ideogram-4", - "path": "diffusion_models/ideogram4_int8_convrot.safetensors", - "filename": "ideogram4_int8_convrot.safetensors", + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_edit_int8_convrot.safetensors", + "filename": "boogu_image_edit_int8_convrot.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Ideogram-4", - "path": "diffusion_models/ideogram4_nvfp4_mixed.safetensors", - "filename": "ideogram4_nvfp4_mixed.safetensors", + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_edit_nvfp4.safetensors", + "filename": "boogu_image_edit_nvfp4.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Ideogram-4", - "path": "diffusion_models/ideogram4_unconditional_fp8_scaled.safetensors", - "filename": "ideogram4_unconditional_fp8_scaled.safetensors", + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_edit_turbo_bf16.safetensors", + "filename": "boogu_image_edit_turbo_bf16.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Ideogram-4", - "path": "diffusion_models/ideogram4_unconditional_int8_convrot.safetensors", - "filename": "ideogram4_unconditional_int8_convrot.safetensors", + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_edit_turbo_int8_convrot.safetensors", + "filename": "boogu_image_edit_turbo_int8_convrot.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Ideogram-4", - "path": "diffusion_models/ideogram4_unconditional_nvfp4_mixed.safetensors", - "filename": "ideogram4_unconditional_nvfp4_mixed.safetensors", + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_turbo_bf16.safetensors", + "filename": "boogu_image_turbo_bf16.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Ideogram-4", + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_turbo_fp8_scaled.safetensors", + "filename": "boogu_image_turbo_fp8_scaled.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_turbo_hotfix_bf16.safetensors", + "filename": "boogu_image_turbo_hotfix_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_turbo_hotfix_int8_convrot.safetensors", + "filename": "boogu_image_turbo_hotfix_int8_convrot.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_turbo_hotfix_nvfp4.safetensors", + "filename": "boogu_image_turbo_hotfix_nvfp4.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Boogu-Image", + "path": "diffusion_models/boogu_image_turbo_nvfp4.safetensors", + "filename": "boogu_image_turbo_nvfp4.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Boogu-Image", + "path": "loras/boogu_image_turbo_hotfix_lora_rank_128_bf16.safetensors", + "filename": "boogu_image_turbo_hotfix_lora_rank_128_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Boogu-Image", + "path": "loras/boogu_image_turbo_lora_rank_128_bf16.safetensors", + "filename": "boogu_image_turbo_lora_rank_128_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Boogu-Image", "path": "text_encoders/qwen3vl_8b_fp8_scaled.safetensors", "filename": "qwen3vl_8b_fp8_scaled.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Ideogram-4", - "path": "text_encoders/qwen3vl_8b_nvfp4.safetensors", - "filename": "qwen3vl_8b_nvfp4.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Ideogram-4", - "path": "vae/flux2-vae.safetensors", - "filename": "flux2-vae.safetensors", + "repo_id": "Comfy-Org/Boogu-Image", + "path": "vae/flux1_vae_bf16.safetensors", + "filename": "flux1_vae_bf16.safetensors", "size": null }, { @@ -1184,6 +1244,72 @@ "filename": "wan_alpha_2.1_vae_rgb_channel.safetensors", "size": null }, + { + "repo_id": "Comfy-Org/Ideogram-4", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/Ideogram-4", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/Ideogram-4", + "path": "diffusion_models/ideogram4_fp8_scaled.safetensors", + "filename": "ideogram4_fp8_scaled.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Ideogram-4", + "path": "diffusion_models/ideogram4_int8_convrot.safetensors", + "filename": "ideogram4_int8_convrot.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Ideogram-4", + "path": "diffusion_models/ideogram4_nvfp4_mixed.safetensors", + "filename": "ideogram4_nvfp4_mixed.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Ideogram-4", + "path": "diffusion_models/ideogram4_unconditional_fp8_scaled.safetensors", + "filename": "ideogram4_unconditional_fp8_scaled.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Ideogram-4", + "path": "diffusion_models/ideogram4_unconditional_int8_convrot.safetensors", + "filename": "ideogram4_unconditional_int8_convrot.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Ideogram-4", + "path": "diffusion_models/ideogram4_unconditional_nvfp4_mixed.safetensors", + "filename": "ideogram4_unconditional_nvfp4_mixed.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Ideogram-4", + "path": "text_encoders/qwen3vl_8b_fp8_scaled.safetensors", + "filename": "qwen3vl_8b_fp8_scaled.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Ideogram-4", + "path": "text_encoders/qwen3vl_8b_nvfp4.safetensors", + "filename": "qwen3vl_8b_nvfp4.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Ideogram-4", + "path": "vae/flux2-vae.safetensors", + "filename": "flux2-vae.safetensors", + "size": null + }, { "repo_id": "Comfy-Org/Bernini-R", "path": ".gitattributes", @@ -1299,129 +1425,75 @@ "size": null }, { - "repo_id": "Comfy-Org/Boogu-Image", + "repo_id": "Comfy-Org/sigclip_vision_384", "path": ".gitattributes", "filename": ".gitattributes", "size": null }, { - "repo_id": "Comfy-Org/Boogu-Image", + "repo_id": "Comfy-Org/sigclip_vision_384", "path": "README.md", "filename": "README.md", "size": null }, { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_base_bf16.safetensors", - "filename": "boogu_image_base_bf16.safetensors", + "repo_id": "Comfy-Org/sigclip_vision_384", + "path": "sigclip_vision_patch14_384.safetensors", + "filename": "sigclip_vision_patch14_384.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_base_fp8_scaled.safetensors", - "filename": "boogu_image_base_fp8_scaled.safetensors", + "repo_id": "Comfy-Org/ltx-2", + "path": ".gitattributes", + "filename": ".gitattributes", "size": null }, { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_base_nvfp4.safetensors", - "filename": "boogu_image_base_nvfp4.safetensors", + "repo_id": "Comfy-Org/ltx-2", + "path": "README.md", + "filename": "README.md", "size": null }, { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_edit_bf16.safetensors", - "filename": "boogu_image_edit_bf16.safetensors", + "repo_id": "Comfy-Org/ltx-2", + "path": "split_files/loras/gemma-3-12b-it-abliterated_heretic_lora_rank64_bf16.safetensors", + "filename": "gemma-3-12b-it-abliterated_heretic_lora_rank64_bf16.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_edit_fp8_scaled.safetensors", - "filename": "boogu_image_edit_fp8_scaled.safetensors", + "repo_id": "Comfy-Org/ltx-2", + "path": "split_files/loras/gemma-3-12b-it-abliterated_lora_rank64_bf16.safetensors", + "filename": "gemma-3-12b-it-abliterated_lora_rank64_bf16.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_edit_int8_convrot.safetensors", - "filename": "boogu_image_edit_int8_convrot.safetensors", + "repo_id": "Comfy-Org/ltx-2", + "path": "split_files/loras/ltx2-squish.safetensors", + "filename": "ltx2-squish.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_edit_nvfp4.safetensors", - "filename": "boogu_image_edit_nvfp4.safetensors", + "repo_id": "Comfy-Org/ltx-2", + "path": "split_files/text_encoders/gemma_3_12B_it.safetensors", + "filename": "gemma_3_12B_it.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_edit_turbo_bf16.safetensors", - "filename": "boogu_image_edit_turbo_bf16.safetensors", + "repo_id": "Comfy-Org/ltx-2", + "path": "split_files/text_encoders/gemma_3_12B_it_fp4_mixed.safetensors", + "filename": "gemma_3_12B_it_fp4_mixed.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_edit_turbo_int8_convrot.safetensors", - "filename": "boogu_image_edit_turbo_int8_convrot.safetensors", + "repo_id": "Comfy-Org/ltx-2", + "path": "split_files/text_encoders/gemma_3_12B_it_fp8_scaled.safetensors", + "filename": "gemma_3_12B_it_fp8_scaled.safetensors", "size": null }, { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_turbo_bf16.safetensors", - "filename": "boogu_image_turbo_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_turbo_fp8_scaled.safetensors", - "filename": "boogu_image_turbo_fp8_scaled.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_turbo_hotfix_bf16.safetensors", - "filename": "boogu_image_turbo_hotfix_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_turbo_hotfix_int8_convrot.safetensors", - "filename": "boogu_image_turbo_hotfix_int8_convrot.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_turbo_hotfix_nvfp4.safetensors", - "filename": "boogu_image_turbo_hotfix_nvfp4.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "diffusion_models/boogu_image_turbo_nvfp4.safetensors", - "filename": "boogu_image_turbo_nvfp4.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "loras/boogu_image_turbo_hotfix_lora_rank_128_bf16.safetensors", - "filename": "boogu_image_turbo_hotfix_lora_rank_128_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "loras/boogu_image_turbo_lora_rank_128_bf16.safetensors", - "filename": "boogu_image_turbo_lora_rank_128_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "text_encoders/qwen3vl_8b_fp8_scaled.safetensors", - "filename": "qwen3vl_8b_fp8_scaled.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Boogu-Image", - "path": "vae/flux1_vae_bf16.safetensors", - "filename": "flux1_vae_bf16.safetensors", + "repo_id": "Comfy-Org/ltx-2", + "path": "split_files/text_encoders/gemma_3_12B_it_fpmixed.safetensors", + "filename": "gemma_3_12B_it_fpmixed.safetensors", "size": null }, { @@ -1568,372 +1640,6 @@ "filename": "qwen_image_vae.safetensors", "size": null }, - { - "repo_id": "Comfy-Org/sigclip_vision_384", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/sigclip_vision_384", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/sigclip_vision_384", - "path": "sigclip_vision_patch14_384.safetensors", - "filename": "sigclip_vision_patch14_384.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/flux2-dev", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/flux2-dev", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/flux2-dev", - "path": "split_files/diffusion_models/flux2_dev_fp8mixed.safetensors", - "filename": "flux2_dev_fp8mixed.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/flux2-dev", - "path": "split_files/loras/Flux2TurboComfyv2.safetensors", - "filename": "Flux2TurboComfyv2.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/flux2-dev", - "path": "split_files/loras/Flux_2-Turbo-LoRA_comfyui.safetensors", - "filename": "Flux_2-Turbo-LoRA_comfyui.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/flux2-dev", - "path": "split_files/text_encoders/mistral_3_small_flux2_bf16.safetensors", - "filename": "mistral_3_small_flux2_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/flux2-dev", - "path": "split_files/text_encoders/mistral_3_small_flux2_fp4_mixed.safetensors", - "filename": "mistral_3_small_flux2_fp4_mixed.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/flux2-dev", - "path": "split_files/text_encoders/mistral_3_small_flux2_fp8.safetensors", - "filename": "mistral_3_small_flux2_fp8.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/flux2-dev", - "path": "split_files/vae/flux2-vae.safetensors", - "filename": "flux2-vae.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-9b", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-9b", - "path": "split_files/text_encoders/qwen_3_8b.safetensors", - "filename": "qwen_3_8b.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-9b", - "path": "split_files/text_encoders/qwen_3_8b_fp4mixed.safetensors", - "filename": "qwen_3_8b_fp4mixed.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-9b", - "path": "split_files/text_encoders/qwen_3_8b_fp8mixed.safetensors", - "filename": "qwen_3_8b_fp8mixed.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-9b", - "path": "split_files/vae/flux2-vae.safetensors", - "filename": "flux2-vae.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", - "path": "checkpoints/ace_step_1.5_turbo_aio.safetensors", - "filename": "ace_step_1.5_turbo_aio.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", - "path": "split_files/diffusion_models/acestep_v1.5_base.safetensors", - "filename": "acestep_v1.5_base.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", - "path": "split_files/diffusion_models/acestep_v1.5_turbo.safetensors", - "filename": "acestep_v1.5_turbo.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", - "path": "split_files/diffusion_models/acestep_v1.5_xl_base_bf16.safetensors", - "filename": "acestep_v1.5_xl_base_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", - "path": "split_files/diffusion_models/acestep_v1.5_xl_sft_bf16.safetensors", - "filename": "acestep_v1.5_xl_sft_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", - "path": "split_files/diffusion_models/acestep_v1.5_xl_turbo_bf16.safetensors", - "filename": "acestep_v1.5_xl_turbo_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", - "path": "split_files/text_encoders/qwen_0.6b_ace15.safetensors", - "filename": "qwen_0.6b_ace15.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", - "path": "split_files/text_encoders/qwen_1.7b_ace15.safetensors", - "filename": "qwen_1.7b_ace15.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", - "path": "split_files/text_encoders/qwen_4b_ace15.safetensors", - "filename": "qwen_4b_ace15.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", - "path": "split_files/vae/ace_1.5_vae.safetensors", - "filename": "ace_1.5_vae.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/gemma-4", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/gemma-4", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/gemma-4", - "path": "text_encoders/gemma4_e2b_it_bf16.safetensors", - "filename": "gemma4_e2b_it_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/gemma-4", - "path": "text_encoders/gemma4_e4b_it_bf16.safetensors", - "filename": "gemma4_e4b_it_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/gemma-4", - "path": "text_encoders/gemma4_e4b_it_fp8_scaled.safetensors", - "filename": "gemma4_e4b_it_fp8_scaled.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/sam3.1", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/sam3.1", - "path": "LICENSE", - "filename": "LICENSE", - "size": null - }, - { - "repo_id": "Comfy-Org/sam3.1", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/sam3.1", - "path": "checkpoints/sam3.1_multiplex_fp16.safetensors", - "filename": "sam3.1_multiplex_fp16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/BiRefNet", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/BiRefNet", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/BiRefNet", - "path": "background_removal/birefnet.safetensors", - "filename": "birefnet.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/BiRefNet", - "path": "background_removal/lucida.safetensors", - "filename": "lucida.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/flux1-schnell", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/flux1-schnell", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/flux1-schnell", - "path": "flux1-schnell-fp8.safetensors", - "filename": "flux1-schnell-fp8.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/flux1-schnell", - "path": "flux1-schnell.safetensors", - "filename": "flux1-schnell.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Omnigen2_ComfyUI_repackaged", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/Omnigen2_ComfyUI_repackaged", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/Omnigen2_ComfyUI_repackaged", - "path": "split_files/diffusion_models/omnigen2_fp16.safetensors", - "filename": "omnigen2_fp16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Omnigen2_ComfyUI_repackaged", - "path": "split_files/text_encoders/qwen_2.5_vl_fp16.safetensors", - "filename": "qwen_2.5_vl_fp16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Omnigen2_ComfyUI_repackaged", - "path": "split_files/vae/ae.safetensors", - "filename": "ae.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/flux1-kontext-dev_ComfyUI", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/flux1-kontext-dev_ComfyUI", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/flux1-kontext-dev_ComfyUI", - "path": "split_files/diffusion_models/flux1-dev-kontext_fp8_scaled.safetensors", - "filename": "flux1-dev-kontext_fp8_scaled.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", - "path": "LICENSE", - "filename": "LICENSE", - "size": null - }, - { - "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", - "path": "NOTICE", - "filename": "NOTICE", - "size": null - }, - { - "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", - "path": "split_files/hunyuan3d-dit-v2-mv-turbo_fp16.safetensors", - "filename": "hunyuan3d-dit-v2-mv-turbo_fp16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", - "path": "split_files/hunyuan3d-dit-v2-mv_fp16.safetensors", - "filename": "hunyuan3d-dit-v2-mv_fp16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", - "path": "split_files/hunyuan3d-dit-v2_fp16.safetensors", - "filename": "hunyuan3d-dit-v2_fp16.safetensors", - "size": null - }, { "repo_id": "Comfy-Org/HunyuanVideo_1.5_repackaged", "path": ".gitattributes", @@ -2097,117 +1803,75 @@ "size": null }, { - "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-4b", + "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", "path": ".gitattributes", "filename": ".gitattributes", "size": null }, { - "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-4b", - "path": "split_files/diffusion_models/flux-2-klein-4b.safetensors", - "filename": "flux-2-klein-4b.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-4b", - "path": "split_files/diffusion_models/flux-2-klein-base-4b.safetensors", - "filename": "flux-2-klein-base-4b.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-4b", - "path": "split_files/text_encoders/qwen_3_4b.safetensors", - "filename": "qwen_3_4b.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-4b", - "path": "split_files/text_encoders/qwen_3_4b_fp4_flux2.safetensors", - "filename": "qwen_3_4b_fp4_flux2.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-4b", - "path": "split_files/vae/flux2-vae.safetensors", - "filename": "flux2-vae.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/z_image", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/z_image", + "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", "path": "README.md", "filename": "README.md", "size": null }, { - "repo_id": "Comfy-Org/z_image", - "path": "split_files/diffusion_models/z_image_bf16.safetensors", - "filename": "z_image_bf16.safetensors", + "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", + "path": "checkpoints/ace_step_1.5_turbo_aio.safetensors", + "filename": "ace_step_1.5_turbo_aio.safetensors", "size": null }, { - "repo_id": "Comfy-Org/z_image", - "path": "split_files/diffusion_models/z_image_int8_convrot.safetensors", - "filename": "z_image_int8_convrot.safetensors", + "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", + "path": "split_files/diffusion_models/acestep_v1.5_base.safetensors", + "filename": "acestep_v1.5_base.safetensors", "size": null }, { - "repo_id": "Comfy-Org/z_image", - "path": "split_files/text_encoders/qwen_3_4b.safetensors", - "filename": "qwen_3_4b.safetensors", + "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", + "path": "split_files/diffusion_models/acestep_v1.5_turbo.safetensors", + "filename": "acestep_v1.5_turbo.safetensors", "size": null }, { - "repo_id": "Comfy-Org/z_image", - "path": "split_files/text_encoders/qwen_3_4b_fp4_mixed.safetensors", - "filename": "qwen_3_4b_fp4_mixed.safetensors", + "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", + "path": "split_files/diffusion_models/acestep_v1.5_xl_base_bf16.safetensors", + "filename": "acestep_v1.5_xl_base_bf16.safetensors", "size": null }, { - "repo_id": "Comfy-Org/z_image", - "path": "split_files/text_encoders/qwen_3_4b_fp8_mixed.safetensors", - "filename": "qwen_3_4b_fp8_mixed.safetensors", + "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", + "path": "split_files/diffusion_models/acestep_v1.5_xl_sft_bf16.safetensors", + "filename": "acestep_v1.5_xl_sft_bf16.safetensors", "size": null }, { - "repo_id": "Comfy-Org/z_image", - "path": "split_files/vae/ae.safetensors", - "filename": "ae.safetensors", + "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", + "path": "split_files/diffusion_models/acestep_v1.5_xl_turbo_bf16.safetensors", + "filename": "acestep_v1.5_xl_turbo_bf16.safetensors", "size": null }, { - "repo_id": "Comfy-Org/causal_forcing_framewise_ComfyUI_repackaged", - "path": ".gitattributes", - "filename": ".gitattributes", + "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", + "path": "split_files/text_encoders/qwen_0.6b_ace15.safetensors", + "filename": "qwen_0.6b_ace15.safetensors", "size": null }, { - "repo_id": "Comfy-Org/causal_forcing_framewise_ComfyUI_repackaged", - "path": "README.md", - "filename": "README.md", + "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", + "path": "split_files/text_encoders/qwen_1.7b_ace15.safetensors", + "filename": "qwen_1.7b_ace15.safetensors", "size": null }, { - "repo_id": "Comfy-Org/causal_forcing_framewise_ComfyUI_repackaged", - "path": "convert_original_to_comfy.py", - "filename": "convert_original_to_comfy.py", + "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", + "path": "split_files/text_encoders/qwen_4b_ace15.safetensors", + "filename": "qwen_4b_ace15.safetensors", "size": null }, { - "repo_id": "Comfy-Org/causal_forcing_framewise_ComfyUI_repackaged", - "path": "download_original.sh", - "filename": "download_original.sh", - "size": null - }, - { - "repo_id": "Comfy-Org/causal_forcing_framewise_ComfyUI_repackaged", - "path": "split_files/diffusion_models/causal_forcing-framewise.safetensors", - "filename": "causal_forcing-framewise.safetensors", + "repo_id": "Comfy-Org/ace_step_1.5_ComfyUI_files", + "path": "split_files/vae/ace_1.5_vae.safetensors", + "filename": "ace_1.5_vae.safetensors", "size": null }, { @@ -2247,279 +1911,57 @@ "size": null }, { - "repo_id": "Comfy-Org/ERNIE-Image", + "repo_id": "Comfy-Org/gemma-4", "path": ".gitattributes", "filename": ".gitattributes", "size": null }, { - "repo_id": "Comfy-Org/ERNIE-Image", + "repo_id": "Comfy-Org/gemma-4", "path": "README.md", "filename": "README.md", "size": null }, { - "repo_id": "Comfy-Org/ERNIE-Image", - "path": "diffusion_models/ernie-image-turbo.safetensors", - "filename": "ernie-image-turbo.safetensors", + "repo_id": "Comfy-Org/gemma-4", + "path": "text_encoders/gemma4_e2b_it_bf16.safetensors", + "filename": "gemma4_e2b_it_bf16.safetensors", "size": null }, { - "repo_id": "Comfy-Org/ERNIE-Image", - "path": "diffusion_models/ernie-image.safetensors", - "filename": "ernie-image.safetensors", + "repo_id": "Comfy-Org/gemma-4", + "path": "text_encoders/gemma4_e4b_it_bf16.safetensors", + "filename": "gemma4_e4b_it_bf16.safetensors", "size": null }, { - "repo_id": "Comfy-Org/ERNIE-Image", - "path": "text_encoders/ernie-image-prompt-enhancer.safetensors", - "filename": "ernie-image-prompt-enhancer.safetensors", + "repo_id": "Comfy-Org/gemma-4", + "path": "text_encoders/gemma4_e4b_it_fp8_scaled.safetensors", + "filename": "gemma4_e4b_it_fp8_scaled.safetensors", "size": null }, { - "repo_id": "Comfy-Org/ERNIE-Image", - "path": "text_encoders/ministral-3-3b.safetensors", - "filename": "ministral-3-3b.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ERNIE-Image", - "path": "vae/flux2-vae.safetensors", - "filename": "flux2-vae.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/HiDream-O1-Image", + "repo_id": "Comfy-Org/sam3.1", "path": ".gitattributes", "filename": ".gitattributes", "size": null }, { - "repo_id": "Comfy-Org/HiDream-O1-Image", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/HiDream-O1-Image", - "path": "checkpoints/hidream_o1_image_bf16.safetensors", - "filename": "hidream_o1_image_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/HiDream-O1-Image", - "path": "checkpoints/hidream_o1_image_dev_bf16.safetensors", - "filename": "hidream_o1_image_dev_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/HiDream-O1-Image", - "path": "checkpoints/hidream_o1_image_dev_fp8_scaled.safetensors", - "filename": "hidream_o1_image_dev_fp8_scaled.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/HiDream-O1-Image", - "path": "checkpoints/hidream_o1_image_dev_mxfp8.safetensors", - "filename": "hidream_o1_image_dev_mxfp8.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/HiDream-O1-Image", - "path": "checkpoints/hidream_o1_image_fp8_scaled.safetensors", - "filename": "hidream_o1_image_fp8_scaled.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/HiDream-O1-Image", - "path": "checkpoints/hidream_o1_image_mxfp8.safetensors", - "filename": "hidream_o1_image_mxfp8.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/stable-audio-3", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/stable-audio-3", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/stable-audio-3", - "path": "checkpoints/stable_audio_3_medium.safetensors", - "filename": "stable_audio_3_medium.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/stable-audio-3", - "path": "checkpoints/stable_audio_3_medium_base.safetensors", - "filename": "stable_audio_3_medium_base.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/stable-audio-3", - "path": "checkpoints/stable_audio_3_small_music.safetensors", - "filename": "stable_audio_3_small_music.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/stable-audio-3", - "path": "checkpoints/stable_audio_3_small_music_base.safetensors", - "filename": "stable_audio_3_small_music_base.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/stable-audio-3", - "path": "checkpoints/stable_audio_3_small_sfx.safetensors", - "filename": "stable_audio_3_small_sfx.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/stable-audio-3", - "path": "checkpoints/stable_audio_3_small_sfx_base.safetensors", - "filename": "stable_audio_3_small_sfx_base.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/stable-audio-3", - "path": "text_encoders/t5gemma_b_b_ul2.safetensors", - "filename": "t5gemma_b_b_ul2.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/MoGe", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/MoGe", + "repo_id": "Comfy-Org/sam3.1", "path": "LICENSE", "filename": "LICENSE", "size": null }, { - "repo_id": "Comfy-Org/MoGe", + "repo_id": "Comfy-Org/sam3.1", "path": "README.md", "filename": "README.md", "size": null }, { - "repo_id": "Comfy-Org/MoGe", - "path": "geometry_estimation/moge_1_vitl_fp16.safetensors", - "filename": "moge_1_vitl_fp16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/MoGe", - "path": "geometry_estimation/moge_2_vitl_normal_fp16.safetensors", - "filename": "moge_2_vitl_normal_fp16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/TRELLIS.2", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/TRELLIS.2", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/TRELLIS.2", - "path": "clip_vision/dino_v3_vit_l.safetensors", - "filename": "dino_v3_vit_l.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/TRELLIS.2", - "path": "diffusion_models/trellis_2_bf16.safetensors", - "filename": "trellis_2_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/TRELLIS.2", - "path": "vae/trellis_2_shape_vae_bf16.safetensors", - "filename": "trellis_2_shape_vae_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/TRELLIS.2", - "path": "vae/trellis_2_texture_vae_bf16.safetensors", - "filename": "trellis_2_texture_vae_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/mediapipe", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/mediapipe", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/mediapipe", - "path": "detection/mediapipe_face_fp32.safetensors", - "filename": "mediapipe_face_fp32.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Lens", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/Lens", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/Lens", - "path": "diffusion_models/lens_bf16.safetensors", - "filename": "lens_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Lens", - "path": "diffusion_models/lens_mxfp8.safetensors", - "filename": "lens_mxfp8.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Lens", - "path": "diffusion_models/lens_turbo_bf16.safetensors", - "filename": "lens_turbo_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Lens", - "path": "diffusion_models/lens_turbo_mxfp8.safetensors", - "filename": "lens_turbo_mxfp8.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Lens", - "path": "text_encoders/gpt_oss_20b_nvfp4.safetensors", - "filename": "gpt_oss_20b_nvfp4.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/Lens", - "path": "vae/flux2-vae.safetensors", - "filename": "flux2-vae.safetensors", + "repo_id": "Comfy-Org/sam3.1", + "path": "checkpoints/sam3.1_multiplex_fp16.safetensors", + "filename": "sam3.1_multiplex_fp16.safetensors", "size": null }, { @@ -2642,6 +2084,540 @@ "filename": "gemma_2_2b_it_elm_fp8_scaled.safetensors", "size": null }, + { + "repo_id": "Comfy-Org/Omnigen2_ComfyUI_repackaged", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/Omnigen2_ComfyUI_repackaged", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/Omnigen2_ComfyUI_repackaged", + "path": "split_files/diffusion_models/omnigen2_fp16.safetensors", + "filename": "omnigen2_fp16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Omnigen2_ComfyUI_repackaged", + "path": "split_files/text_encoders/qwen_2.5_vl_fp16.safetensors", + "filename": "qwen_2.5_vl_fp16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Omnigen2_ComfyUI_repackaged", + "path": "split_files/vae/ae.safetensors", + "filename": "ae.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/flux1-kontext-dev_ComfyUI", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/flux1-kontext-dev_ComfyUI", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/flux1-kontext-dev_ComfyUI", + "path": "split_files/diffusion_models/flux1-dev-kontext_fp8_scaled.safetensors", + "filename": "flux1-dev-kontext_fp8_scaled.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", + "path": "LICENSE", + "filename": "LICENSE", + "size": null + }, + { + "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", + "path": "NOTICE", + "filename": "NOTICE", + "size": null + }, + { + "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", + "path": "split_files/hunyuan3d-dit-v2-mv-turbo_fp16.safetensors", + "filename": "hunyuan3d-dit-v2-mv-turbo_fp16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", + "path": "split_files/hunyuan3d-dit-v2-mv_fp16.safetensors", + "filename": "hunyuan3d-dit-v2-mv_fp16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/hunyuan3D_2.0_repackaged", + "path": "split_files/hunyuan3d-dit-v2_fp16.safetensors", + "filename": "hunyuan3d-dit-v2_fp16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/flux2-dev", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/flux2-dev", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/flux2-dev", + "path": "split_files/diffusion_models/flux2_dev_fp8mixed.safetensors", + "filename": "flux2_dev_fp8mixed.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/flux2-dev", + "path": "split_files/loras/Flux2TurboComfyv2.safetensors", + "filename": "Flux2TurboComfyv2.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/flux2-dev", + "path": "split_files/loras/Flux_2-Turbo-LoRA_comfyui.safetensors", + "filename": "Flux_2-Turbo-LoRA_comfyui.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/flux2-dev", + "path": "split_files/text_encoders/mistral_3_small_flux2_bf16.safetensors", + "filename": "mistral_3_small_flux2_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/flux2-dev", + "path": "split_files/text_encoders/mistral_3_small_flux2_fp4_mixed.safetensors", + "filename": "mistral_3_small_flux2_fp4_mixed.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/flux2-dev", + "path": "split_files/text_encoders/mistral_3_small_flux2_fp8.safetensors", + "filename": "mistral_3_small_flux2_fp8.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/flux2-dev", + "path": "split_files/vae/flux2-vae.safetensors", + "filename": "flux2-vae.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-4b", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-4b", + "path": "split_files/diffusion_models/flux-2-klein-4b.safetensors", + "filename": "flux-2-klein-4b.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-4b", + "path": "split_files/diffusion_models/flux-2-klein-base-4b.safetensors", + "filename": "flux-2-klein-base-4b.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-4b", + "path": "split_files/text_encoders/qwen_3_4b.safetensors", + "filename": "qwen_3_4b.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-4b", + "path": "split_files/text_encoders/qwen_3_4b_fp4_flux2.safetensors", + "filename": "qwen_3_4b_fp4_flux2.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-4b", + "path": "split_files/vae/flux2-vae.safetensors", + "filename": "flux2-vae.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-9b", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-9b", + "path": "split_files/text_encoders/qwen_3_8b.safetensors", + "filename": "qwen_3_8b.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-9b", + "path": "split_files/text_encoders/qwen_3_8b_fp4mixed.safetensors", + "filename": "qwen_3_8b_fp4mixed.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-9b", + "path": "split_files/text_encoders/qwen_3_8b_fp8mixed.safetensors", + "filename": "qwen_3_8b_fp8mixed.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/vae-text-encorder-for-flux-klein-9b", + "path": "split_files/vae/flux2-vae.safetensors", + "filename": "flux2-vae.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image", + "path": "split_files/diffusion_models/z_image_bf16.safetensors", + "filename": "z_image_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image", + "path": "split_files/diffusion_models/z_image_int8_convrot.safetensors", + "filename": "z_image_int8_convrot.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image", + "path": "split_files/text_encoders/qwen_3_4b.safetensors", + "filename": "qwen_3_4b.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image", + "path": "split_files/text_encoders/qwen_3_4b_fp4_mixed.safetensors", + "filename": "qwen_3_4b_fp4_mixed.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image", + "path": "split_files/text_encoders/qwen_3_4b_fp8_mixed.safetensors", + "filename": "qwen_3_4b_fp8_mixed.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/z_image", + "path": "split_files/vae/ae.safetensors", + "filename": "ae.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/causal_forcing_framewise_ComfyUI_repackaged", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/causal_forcing_framewise_ComfyUI_repackaged", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/causal_forcing_framewise_ComfyUI_repackaged", + "path": "convert_original_to_comfy.py", + "filename": "convert_original_to_comfy.py", + "size": null + }, + { + "repo_id": "Comfy-Org/causal_forcing_framewise_ComfyUI_repackaged", + "path": "download_original.sh", + "filename": "download_original.sh", + "size": null + }, + { + "repo_id": "Comfy-Org/causal_forcing_framewise_ComfyUI_repackaged", + "path": "split_files/diffusion_models/causal_forcing-framewise.safetensors", + "filename": "causal_forcing-framewise.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/ERNIE-Image", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/ERNIE-Image", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/ERNIE-Image", + "path": "diffusion_models/ernie-image-turbo.safetensors", + "filename": "ernie-image-turbo.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/ERNIE-Image", + "path": "diffusion_models/ernie-image.safetensors", + "filename": "ernie-image.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/ERNIE-Image", + "path": "text_encoders/ernie-image-prompt-enhancer.safetensors", + "filename": "ernie-image-prompt-enhancer.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/ERNIE-Image", + "path": "text_encoders/ministral-3-3b.safetensors", + "filename": "ministral-3-3b.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/ERNIE-Image", + "path": "vae/flux2-vae.safetensors", + "filename": "flux2-vae.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/BiRefNet", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/BiRefNet", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/BiRefNet", + "path": "background_removal/birefnet.safetensors", + "filename": "birefnet.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/BiRefNet", + "path": "background_removal/lucida.safetensors", + "filename": "lucida.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/HiDream-O1-Image", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/HiDream-O1-Image", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/HiDream-O1-Image", + "path": "checkpoints/hidream_o1_image_bf16.safetensors", + "filename": "hidream_o1_image_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/HiDream-O1-Image", + "path": "checkpoints/hidream_o1_image_dev_bf16.safetensors", + "filename": "hidream_o1_image_dev_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/HiDream-O1-Image", + "path": "checkpoints/hidream_o1_image_dev_fp8_scaled.safetensors", + "filename": "hidream_o1_image_dev_fp8_scaled.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/HiDream-O1-Image", + "path": "checkpoints/hidream_o1_image_dev_mxfp8.safetensors", + "filename": "hidream_o1_image_dev_mxfp8.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/HiDream-O1-Image", + "path": "checkpoints/hidream_o1_image_fp8_scaled.safetensors", + "filename": "hidream_o1_image_fp8_scaled.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/HiDream-O1-Image", + "path": "checkpoints/hidream_o1_image_mxfp8.safetensors", + "filename": "hidream_o1_image_mxfp8.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/stable-audio-3", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/stable-audio-3", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/stable-audio-3", + "path": "checkpoints/stable_audio_3_medium.safetensors", + "filename": "stable_audio_3_medium.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/stable-audio-3", + "path": "checkpoints/stable_audio_3_medium_base.safetensors", + "filename": "stable_audio_3_medium_base.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/stable-audio-3", + "path": "checkpoints/stable_audio_3_small_music.safetensors", + "filename": "stable_audio_3_small_music.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/stable-audio-3", + "path": "checkpoints/stable_audio_3_small_music_base.safetensors", + "filename": "stable_audio_3_small_music_base.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/stable-audio-3", + "path": "checkpoints/stable_audio_3_small_sfx.safetensors", + "filename": "stable_audio_3_small_sfx.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/stable-audio-3", + "path": "checkpoints/stable_audio_3_small_sfx_base.safetensors", + "filename": "stable_audio_3_small_sfx_base.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/stable-audio-3", + "path": "text_encoders/t5gemma_b_b_ul2.safetensors", + "filename": "t5gemma_b_b_ul2.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/TRELLIS.2", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/TRELLIS.2", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/TRELLIS.2", + "path": "clip_vision/dino_v3_vit_l.safetensors", + "filename": "dino_v3_vit_l.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/TRELLIS.2", + "path": "diffusion_models/trellis_2_bf16.safetensors", + "filename": "trellis_2_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/TRELLIS.2", + "path": "vae/trellis_2_shape_vae_bf16.safetensors", + "filename": "trellis_2_shape_vae_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/TRELLIS.2", + "path": "vae/trellis_2_texture_vae_bf16.safetensors", + "filename": "trellis_2_texture_vae_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/mediapipe", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/mediapipe", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/mediapipe", + "path": "detection/mediapipe_face_fp32.safetensors", + "filename": "mediapipe_face_fp32.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/flux1-schnell", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/flux1-schnell", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/flux1-schnell", + "path": "flux1-schnell-fp8.safetensors", + "filename": "flux1-schnell-fp8.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/flux1-schnell", + "path": "flux1-schnell.safetensors", + "filename": "flux1-schnell.safetensors", + "size": null + }, { "repo_id": "Comfy-Org/stable-diffusion-v1-5-archive", "path": ".gitattributes", @@ -3776,60 +3752,6 @@ "filename": "Chroma1-HD.safetensors", "size": null }, - { - "repo_id": "Comfy-Org/ltx-2", - "path": ".gitattributes", - "filename": ".gitattributes", - "size": null - }, - { - "repo_id": "Comfy-Org/ltx-2", - "path": "README.md", - "filename": "README.md", - "size": null - }, - { - "repo_id": "Comfy-Org/ltx-2", - "path": "split_files/loras/gemma-3-12b-it-abliterated_heretic_lora_rank64_bf16.safetensors", - "filename": "gemma-3-12b-it-abliterated_heretic_lora_rank64_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ltx-2", - "path": "split_files/loras/gemma-3-12b-it-abliterated_lora_rank64_bf16.safetensors", - "filename": "gemma-3-12b-it-abliterated_lora_rank64_bf16.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ltx-2", - "path": "split_files/loras/ltx2-squish.safetensors", - "filename": "ltx2-squish.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ltx-2", - "path": "split_files/text_encoders/gemma_3_12B_it.safetensors", - "filename": "gemma_3_12B_it.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ltx-2", - "path": "split_files/text_encoders/gemma_3_12B_it_fp4_mixed.safetensors", - "filename": "gemma_3_12B_it_fp4_mixed.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ltx-2", - "path": "split_files/text_encoders/gemma_3_12B_it_fp8_scaled.safetensors", - "filename": "gemma_3_12B_it_fp8_scaled.safetensors", - "size": null - }, - { - "repo_id": "Comfy-Org/ltx-2", - "path": "split_files/text_encoders/gemma_3_12B_it_fpmixed.safetensors", - "filename": "gemma_3_12B_it_fpmixed.safetensors", - "size": null - }, { "repo_id": "Comfy-Org/SDPose", "path": ".gitattributes", @@ -4016,6 +3938,36 @@ "filename": "cogvideox_vae.safetensors", "size": null }, + { + "repo_id": "Comfy-Org/MoGe", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/MoGe", + "path": "LICENSE", + "filename": "LICENSE", + "size": null + }, + { + "repo_id": "Comfy-Org/MoGe", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/MoGe", + "path": "geometry_estimation/moge_1_vitl_fp16.safetensors", + "filename": "moge_1_vitl_fp16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/MoGe", + "path": "geometry_estimation/moge_2_vitl_normal_fp16.safetensors", + "filename": "moge_2_vitl_normal_fp16.safetensors", + "size": null + }, { "repo_id": "Comfy-Org/Depth-Anything-3", "path": ".gitattributes", @@ -4058,6 +4010,54 @@ "filename": "depth_anything_3_small.safetensors", "size": null }, + { + "repo_id": "Comfy-Org/Lens", + "path": ".gitattributes", + "filename": ".gitattributes", + "size": null + }, + { + "repo_id": "Comfy-Org/Lens", + "path": "README.md", + "filename": "README.md", + "size": null + }, + { + "repo_id": "Comfy-Org/Lens", + "path": "diffusion_models/lens_bf16.safetensors", + "filename": "lens_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Lens", + "path": "diffusion_models/lens_mxfp8.safetensors", + "filename": "lens_mxfp8.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Lens", + "path": "diffusion_models/lens_turbo_bf16.safetensors", + "filename": "lens_turbo_bf16.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Lens", + "path": "diffusion_models/lens_turbo_mxfp8.safetensors", + "filename": "lens_turbo_mxfp8.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Lens", + "path": "text_encoders/gpt_oss_20b_nvfp4.safetensors", + "filename": "gpt_oss_20b_nvfp4.safetensors", + "size": null + }, + { + "repo_id": "Comfy-Org/Lens", + "path": "vae/flux2-vae.safetensors", + "filename": "flux2-vae.safetensors", + "size": null + }, { "repo_id": "Comfy-Org/RT-DETR", "path": ".gitattributes", diff --git a/tests/test_refactoring_unification.py b/tests/test_refactoring_unification.py index 59a4631..63da785 100644 --- a/tests/test_refactoring_unification.py +++ b/tests/test_refactoring_unification.py @@ -91,6 +91,73 @@ class TestRefactoringUnification(unittest.TestCase): res = search_civitai_by_hash("fake_hash") self.assertIsNone(res) + @patch("requests.get") + def test_request_page_text_success(self, mock_get): + from core.sources.civarchive import _request_page_text + mock_response = MagicMock() + mock_response.status_code = 200 + mock_response.text = "content" + mock_get.return_value = mock_response + + res = _request_page_text("test_path") + self.assertEqual(res, "content") + mock_get.assert_called_once() + + @patch("requests.get") + def test_request_page_text_fail(self, mock_get): + from core.sources.civarchive import _request_page_text + mock_response = MagicMock() + mock_response.status_code = 404 + mock_get.return_value = mock_response + + res = _request_page_text("test_path") + self.assertIsNone(res) + + mock_get.side_effect = Exception("network error") + res2 = _request_page_text("test_path") + self.assertIsNone(res2) + + @patch("requests.get") + def test_get_base_models_status_remote(self, mock_get): + from core.sources.popular import get_base_models_status + mock_response = MagicMock() + mock_response.status_code = 200 + mock_response.json.return_value = {"BaseModel": ["SD 1.5", "SDXL 1.0"]} + mock_get.return_value = mock_response + + res = get_base_models_status(check_remote=True) + self.assertIn("local_count", res) + self.assertIn("update_available", res) + mock_get.assert_called_once_with("https://civitai.com/api/v1/enums", params={}, headers=None, timeout=15) + + @patch("core.sources.popular.save_catalog_with_backup") + @patch("core.sources.popular.read_json_safe") + @patch("requests.get") + def test_update_base_models_from_remote_success(self, mock_get, mock_read_json, mock_save_catalog): + from core.sources.popular import update_base_models_from_remote + mock_response = MagicMock() + mock_response.status_code = 200 + mock_response.json.return_value = {"BaseModel": ["SD 1.5", "SDXL 1.0", "NewModel"]} + mock_get.return_value = mock_response + + # Mock reading base-models.json + mock_read_json.return_value = { + "base_models": [ + {"name": "SD 1.5", "aliases": ["sd1.5"]}, + {"name": "SDXL 1.0", "aliases": ["sdxl"]}, + ] + } + + res = update_base_models_from_remote() + self.assertTrue(res.get("updated")) + self.assertEqual(res.get("new_models_added"), 1) + self.assertIn("NewModel", res.get("new_models_added_list", [])) + + # Verify it saved the updated catalog + mock_save_catalog.assert_called_once() + saved_data = mock_save_catalog.call_args[0][1] + self.assertEqual(len(saved_data["base_models"]), 3) + if __name__ == "__main__": unittest.main() diff --git a/tests/test_resolver_robustness.py b/tests/test_resolver_robustness.py index 4490cd4..e8623fe 100644 --- a/tests/test_resolver_robustness.py +++ b/tests/test_resolver_robustness.py @@ -314,17 +314,23 @@ class ModelResolverRobustnessTests(unittest.TestCase): api_url = "https://civitai.com/api/download/models/123" redirect_url = "https://civitai-delivery.net/models/123/model.safetensors?token=abc" - mock_response = MagicMock() - mock_response.status_code = 302 - mock_response.headers = {"Location": redirect_url} + mock_response1 = MagicMock() + mock_response1.status_code = 302 + mock_response1.headers = {"Location": redirect_url} - with patch("requests.get", return_value=mock_response) as mock_get, patch( + mock_response2 = MagicMock() + mock_response2.status_code = 200 + + with patch("requests.get", side_effect=[mock_response1, mock_response2]) as mock_get, patch( "core.downloader.validate_public_http_url", side_effect=lambda value: value, + ), patch( + "core.network_utils.validate_public_http_url", + side_effect=lambda value: value, ): resolved = _resolve_civitai_download_url_for_aria2(api_url) self.assertEqual(resolved, redirect_url) - mock_get.assert_called_once() + self.assertEqual(mock_get.call_count, 2) # Scenario 2: Non-CivitAI URL (e.g. HuggingFace) should bypass redirects immediately hf_url = "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/model.safetensors"