feat(ml): LoRAs con prefijo de arquitectura (SD15_/SDXL_/FLUX_) + refs actualizadas
Mueve el indicador de arquitectura del SUFIJO al PREFIJO del nombre de cada LoRA para que el dropdown del LoraLoader muestre de inmediato que LoRA casa con que checkpoint (evita el shape mismatch SD1.5 vs SDXL que crashea ComfyUI). - 20 LoRAs renombradas en disco (15 SD15/SDXL en /mnt/2tb, 5 FLUX en ~/ComfyUI), mapa de reversion en ~/ComfyUI/models/loras/_rename_map.json. - Refs actualizadas en builders gamedev-2d, style presets, pipelines, tests y docs/capabilities. Defaults hardcodeados (pixel-art, lcm-lora, etc.) apuntan a los nombres con prefijo. - Ejemplos genericos en docstrings normalizados a la convencion de prefijo. - comfyui_replicate_civitai_oneshot::_norm ignora el token de arquitectura al comparar, robusto al reordenado (sufijo civitai vs prefijo instalado). Refs a repos HuggingFace (nerijs/pixel-art-xl) y checkpoints (juggernaut_xl_v11) preservados. Verificado: dropdown LoraLoader con prefijos + generacion real pixel-art OK + tests comfyui verdes (481 ml + 26 pipelines). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -114,9 +114,22 @@ def _server_models(server):
|
||||
|
||||
|
||||
def _norm(name):
|
||||
"""Normaliza un nombre de modelo para comparar (sin ext, sin separadores)."""
|
||||
"""Normaliza un nombre de modelo para comparar (sin ext, sin separadores).
|
||||
|
||||
Ignora el token de arquitectura (SD15/SDXL/XL/FLUX) lo lleve como prefijo
|
||||
(convencion nueva: `SDXL_detail_tweaker`) o como sufijo (recetas civitai:
|
||||
`Detail-Tweaker XL`), para que el match sea robusto al reordenado del token.
|
||||
"""
|
||||
base = os.path.splitext(str(name))[0].lower()
|
||||
return re.sub(r"[^a-z0-9]", "", base)
|
||||
s = re.sub(r"[^a-z0-9]", "", base)
|
||||
for tok in ("sdxl", "sd15", "flux"):
|
||||
if s.startswith(tok):
|
||||
s = s[len(tok):]
|
||||
if s.endswith(tok):
|
||||
s = s[: -len(tok)]
|
||||
if s.endswith("xl"): # 'xl' suelto como sufijo de arquitectura
|
||||
s = s[:-2]
|
||||
return s
|
||||
|
||||
|
||||
def _find_installed(name, installed):
|
||||
|
||||
Reference in New Issue
Block a user