Commit Graph

8091 Commits (0e0b607cfaabf59167e3ab2a44d491b4e4e1b08e)

Author SHA1 Message Date
Vladimir Mandic 41f206dec9
Merge pull request #4637 from CalamitousFelicitousness/refactor/remove-face-restoration
Refactor/remove face restoration
2026-02-11 11:12:34 +01:00
vladmandic 78c58e0d70 update precommit
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-11 11:12:21 +01:00
CalamitousFelicitousness 8563e2a853 refactor: restore codeformer_model.py to avoid merge conflicts 2026-02-11 09:59:55 +00:00
vladmandic 8561da6f8c cleanup
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-11 10:02:41 +01:00
vladmandic 967974ade7 merge cleanup
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-11 09:57:37 +01:00
vladmandic 3ae9909b2a update sharpfin usage
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-11 09:57:37 +01:00
CalamitousFelicitousness dc8ecb0a64 refactor: address remaining PR #4640 review comments
- Remove _get_device_dtype() indirection, inline device/dtype at call sites
- Remove commented-out fallback blocks and try/finally wrappers
- Add modules/sharpfin to ruff and pylint excludes in pyproject.toml
- Fix import ordering in joytag.py and pixelart.py
2026-02-11 09:57:37 +01:00
CalamitousFelicitousness 162651cbdb refactor: address PR #4640 review comments
Changes based on vladmandic and Disty0 feedback:

- Fix logging: use direct `from installer import log` instead of lazy _get_log()
- Remove unused is_available() function
- Remove defensive getattr() calls in _resolve_kernel/_resolve_linearize
- Simplify _get_device_dtype() to use devices module directly
- Refactor to_pil() with single Image.fromarray() call and explicit mode
- Add cross-platform fallback: sharpfin only runs on CUDA, falls back to
  PIL/F.interpolate for other devices (CPU, MPS, OpenVINO)
- Replace lambdas with functools.partial in functional.py for torch.compile safety
- Add modules/sharpfin to pylint ignore-paths (vendored code)
2026-02-11 09:57:37 +01:00
CalamitousFelicitousness 76aa949a26 refactor: integrate sharpfin for high-quality image resize
Vendor sharpfin library (Apache 2.0) and add centralized wrapper
module (images_sharpfin.py) replacing torchvision tensor/PIL
conversion and resize operations throughout the codebase.

- Add modules/sharpfin/ vendored library with MKS2021, Lanczos3,
  Mitchell, Catmull-Rom kernels and optional Triton sparse acceleration
- Add modules/images_sharpfin.py wrapper with to_tensor(), to_pil(),
  pil_to_tensor(), normalize(), resize(), resize_tensor()
- Add resize_quality and resize_linearize_srgb settings
- Add MKS2021 and Lanczos3 upscaler entries
- Replace torchvision.transforms.functional imports across 18 files
- to_pil() auto-detects HWC/BHWC layout, adds .round() before uint8
- Sparse Triton path falls back to dense GPU on compilation failure
- Mixed-axis resize splits into two single-axis scale() calls
- Masks and non-sRGB data always use linearize=False
2026-02-11 09:57:37 +01:00
CalamitousFelicitousness 80014fac7c fix(caption): address PR review feedback
- Remove superfluous SimpleNamespace import in cli/api-caption.py, use Map instead
- Drop _ prefix from internal helper functions in modules/api/caption.py
- Move DeepDanbooru model path to top-level models folder instead of nesting under CLIP
2026-02-11 02:50:06 +00:00
CalamitousFelicitousness 139e331d80 style(caption): fix lint warnings across caption module
- Rename shadowing import in waifudiffusion batch to avoid F823/E0606
- Fix import order in cli/api-caption.py (stdlib before third-party)
- Rename local variable shadowing function name in cli/api-caption.py
- Remove unnecessary global statement in devices.bypass_sdpa_hijacks
2026-02-11 02:50:06 +00:00
CalamitousFelicitousness 8d67debdfd fix(caption): use cache_dir for BLIP and Moondream model downloads
- Add _load_blip_model helper with explicit cache_dir so downloads
  go to hfcache_dir instead of default HF cache
- Pre-load BLIP model/processor before creating Interrogator config
  to control download location and avoid redundant loads
- Set clip_model_path on config for CLIP model cache location
- Add cache_dir to Moondream model and tokenizer loading
2026-02-11 02:50:06 +00:00
CalamitousFelicitousness 6c20e49897 refactor(caption): extract caption API into standalone module
Move all caption/interrogate/tagger/VQA API code out of the monolithic
endpoints.py and models.py into a new self-contained modules/api/caption.py,
following the loras.py / nudenet.py self-registering pattern.

- Move 15 Pydantic models (ReqCaption, ResCaption, ReqVQA, ResVQA,
  ReqTagger, ResTagger, dispatch union types, etc.) from models.py
- Move 11 handler functions from endpoints.py
- Deduplicate ~150 lines via shared _do_openclip, _do_tagger, _do_vqa
  core functions called by both direct and dispatch endpoints
- Add register_api() that registers all 8 caption routes
- Add promptgen field to ResVLMPrompts (bug fix: handler returned it
  but response model silently dropped it)
- Improve all endpoint docstrings and Field descriptions for API docs
2026-02-11 02:50:06 +00:00
CalamitousFelicitousness e2cdbe47fa fix(caption): safetensors-only downloads, model load fixes, UI default, prefill tests
- Add use_safetensors=True to all 16 model from_pretrained calls to
  avoid downloading redundant .bin files alongside safetensors
- Add device property to JoyTag VisionModel so move_model can relocate
  it to CUDA (fixes 'ViT object has no attribute device')
- Fix Pix2Struct dtype mismatch by casting float inputs to model dtype
  while preserving integer tensor types
- Patch AutoConfig.register with exist_ok=True during Ovis loading to
  handle duplicate aimv2 registration on model reload
- Detect Qwen VL fine-tune architecture from config model_type instead
  of repo name, fixing ToriiGate and similar third-party fine-tunes
- Change UI default task from Short Caption to Normal Caption, and
  preserve it on model switch instead of resetting to Use Prompt
- Add dual-prefill testing across 5 VQA test methods using a shared
  _check_prefill helper
- Fix pre-existing ruff W605 in strip_think_xml_tags docstring
2026-02-11 02:48:11 +00:00
CalamitousFelicitousness 57659ab642 fix(caption): set clip_interrogator params on config, not instance
update_caption_params() was setting caption_max_length, chunk_size, and
flavor_intermediate_count on the Interrogator instance, but the library
reads them from self.config. The overrides were silently ignored.
2026-02-11 02:48:11 +00:00
CalamitousFelicitousness 17b03ed8e4 feat(caption): add Florence detection parsing, SDPA bypass, and offload support
- Add parse_florence_detections() and format_florence_response() to
  vqa_detection for handling Florence-2 detection output formats
- Add bypass_sdpa_hijacks() context manager to devices.py for models
  incompatible with SageAttention or other SDPA hijacks
- Add OpenCLIP model offload support when caption_offload is enabled
2026-02-11 02:48:11 +00:00
CalamitousFelicitousness 443a73b740 refactor(caption): code review fixes for offload, inference, and maintainability
Comprehensive review of modules/caption/ addressing memory management,
consistency, and code quality:

Inference correctness:
- Add devices.inference_context() to _qwen(), _smol(), _sa2() handlers
- Remove redundant @torch.no_grad() decorator from joycaption predict()
- Remove dead dtype=torch.bfloat16 kwarg from Florence loader

Memory management:
- Bound moondream3 image cache with LRU eviction (max 8 entries)
- Replace fragile id(image) cache keys with content-based md5 hash
- Add devices.torch_gc() after model loading in deepseek
- Move deepbooru model to CPU before dropping reference on unload
- Add external handler delegation to VQA.unload() (moondream3,
  joycaption, joytag, deepseek)
- Protect batch offload mutation with try/finally

Code deduplication:
- Extract strip_think_xml_tags() shared helper for Qwen/Gemma/SmolVLM
- Extract save_tags_to_file() into tagger.py from deepbooru and
  waifudiffusion

Documentation and clarity:
- Document deepseek global monkey-patches (LlamaFlashAttention2, attrdict)
- Document Florence task="task" as intentional design choice
- Add vendored-code comment to joytag.py
- Document openclip direct .to() usage vs sd_models.move_model
- Comment model.eval() calls that are required (trust_remote_code,
  custom loaders) vs removed where redundant (standard from_pretrained)

API robustness:
- Add HTTP 422 error response for VQA caption error strings in API
  endpoints (post_vqa, _dispatch_vlm)
2026-02-11 02:48:11 +00:00
CalamitousFelicitousness bf7a72f12e fix(caption): remove dead min_length param, split Florence/PromptGen prompts, fix gaze detection
- Remove caption_openclip_min_length from settings, API models, endpoints, and UI
  (clip_interrogator library has no min_length support; parameter was never functional)
- Split vlm_prompts_florence into base Florence prompts and PromptGen-only prompts
  (GENERATE_TAGS, Analyze, Mixed Caption require MiaoshouAI PromptGen fine-tune)
- Add 'promptgen' category to /vqa/prompts API endpoint
- Fix gaze detection: move DETECT_GAZE check before generic 'detect ' prefix
  to prevent "Detect Gaze" matching as detect target="Gaze"
- Update test suite: remove min_length tests, fix min_flavors to use mode='best',
  add acceptance-only notes, fix thinking trace detection, improve bracket/OCR tests,
  split Florence/PromptGen test coverage
2026-02-11 02:48:11 +00:00
CalamitousFelicitousness fba942b25e feat(caption): add debug logging for Florence-2 handler 2026-02-11 02:48:11 +00:00
CalamitousFelicitousness f4b5abde68 refactor: update API for caption module
Update API endpoints and models for caption module rename:
- modules/api/api.py - update imports and endpoint handlers
- modules/api/endpoints.py - update endpoint definitions
- modules/api/models.py - update request/response models
2026-02-11 02:48:11 +00:00
CalamitousFelicitousness 61b031ada5 refactor: update imports for caption module rename
Update all imports from modules.interrogate to modules.caption across:
- modules/shared.py, modules/shared_legacy.py
- modules/ui_caption.py, modules/ui_common.py
- modules/ui_control.py, modules/ui_control_helpers.py
- modules/ui_img2img.py, modules/ui_sections.py
- modules/ui_symbols.py, modules/ui_video_vlm.py
2026-02-11 02:47:41 +00:00
CalamitousFelicitousness 5183ebec58 refactor: rename interrogate module to caption
Move all caption-related modules from modules/interrogate/ to modules/caption/
for better naming consistency:
- Rename deepbooru, deepseek, joycaption, joytag, moondream3, openclip, tagger,
  vqa, vqa_detection, waifudiffusion modules
- Add new caption.py dispatcher module
- Remove old interrogate.py (functionality moved to caption.py)
2026-02-11 02:47:41 +00:00
CalamitousFelicitousness 83fa8e39ba refactor(api): update cli tools for DeepBooru tagger migration
- Update cli/api-interrogate.py to use /sdapi/v1/tagger for DeepBooru
- Handle tagger response format (scores dict or tags string)
- Remove DeepBooru test from interrogate endpoint tests
- Update API model descriptions to reference tagger for anime tagging
2026-02-11 02:47:41 +00:00
CalamitousFelicitousness 7825f44581 refactor(api): remove DeepBooru from interrogate endpoint
DeepBooru/DeepDanbooru should only be accessed via the tagger endpoint.
The interrogate endpoint is now exclusively for OpenCLIP/BLIP.

- Remove DeepDanbooru handling from post_interrogate
- Update docstring to reference tagger endpoint for anime tagging
- Simplify code by removing if/else branching
2026-02-11 02:47:40 +00:00
CalamitousFelicitousness 0559651b1b fix(vqa): fix infinite recursion and Florence-2 generation
- Fix get_keep_thinking() infinite recursion (was calling itself)
- Fix get_keep_prefill() infinite recursion (was calling itself)
- Fix Florence-2 to use beam search instead of sampling
  Sampling causes probability tensor errors with Florence-2
2026-02-11 02:47:40 +00:00
CalamitousFelicitousness a04ba1e482 feat(api): add missing caption API parameters for UI parity
Add prompt field to VQA endpoint and advanced settings to OpenCLIP endpoint
to achieve full parity between UI and API capabilities.

VLM endpoint changes:
- Add prompt field for custom text input (required for 'Use Prompt' task)
- Pass prompt to vqa.interrogate instead of hardcoded empty string

OpenCLIP endpoint changes:
- Add 7 optional per-request override fields: min_length, max_length,
  chunk_size, min_flavors, max_flavors, flavor_count, num_beams
- Add get_clip_setting() helper for override support in openclip.py
- Apply overrides via update_interrogate_params() before interrogation

All new fields are optional with None defaults for backwards compatibility.
2026-02-11 02:47:40 +00:00
CalamitousFelicitousness 5fc46c042e docs(api): synchronize API descriptions with UI hints
Update API model field descriptions to match the hints in locale_en.json
for consistency between UI and API documentation.

Updated models:
- ReqInterrogate: clip_model, blip_model, mode
- ReqVQA: model, question, system
- ReqTagger: model, threshold, character_threshold, max_tags,
  include_rating, sort_alpha, use_spaces, escape_brackets,
  exclude_tags, show_scores
2026-02-11 02:47:40 +00:00
CalamitousFelicitousness f431141d2f feat(api): add LLM generation parameters to VQA endpoint
Add optional LLM generation parameters to the VQA API request model,
allowing per-request override of settings:

- max_tokens, temperature, top_k, top_p, num_beams, do_sample
- thinking_mode, prefill, keep_thinking, keep_prefill

Changes:
- Add 10 new optional fields to ReqVQA model with descriptive docs
- Update get_kwargs() to support per-request overrides via singleton
- Add helper functions get_keep_thinking(), get_keep_prefill()
- Update post_vqa endpoint to pass generation kwargs
- Add _generation_overrides instance variable to VQA class
2026-02-11 02:47:40 +00:00
CalamitousFelicitousness ef797169a3 refactor(interrogate): use configurable clip_models_path
- Remove unused paths import from deepbooru.py and openclip.py
- Use shared.opts.clip_models_path instead of hardcoded paths
2026-02-11 02:47:40 +00:00
CalamitousFelicitousness ec7934799e feat(api): add caption API endpoints and documentation
Add comprehensive caption/interrogate API with documentation:

- GET /sdapi/v1/interrogate: List available interrogation models
- POST /sdapi/v1/interrogate: Interrogate with OpenCLIP/BLIP/DeepDanbooru
- POST /sdapi/v1/vqa: Caption with Vision-Language Models (VLM)
- GET /sdapi/v1/vqa: List available VLM models
- POST /sdapi/v1/vqa/batch: Batch caption multiple images
- POST /sdapi/v1/tagger: Tag images with WaifuDiffusion/DeepBooru

Updates:
- Add detailed docstrings with usage examples
- Fix analyze_image response parsing for Gradio update dicts
- Add request/response models for all endpoints
2026-02-11 02:47:40 +00:00
CalamitousFelicitousness 6b89cc8463 feat(ui): add tooltips/hints to Caption tab
Add comprehensive tooltips to Caption tab UI elements in locale_en.json:

- Add new "llm" section for shared LLM/VLM parameters:
  System prompt, Prefill, Top-K, Top-P, Temperature, Num Beams,
  Use Samplers, Thinking Mode, Keep Thinking Trace, Keep Prefill

- Add new "caption" section for caption-specific settings:
  VLM, OpenCLiP, Tagger tab labels and all their parameters
  including thresholds, tag formatting, batch options

- Consolidate accordion labels in ui_caption.py:
  "Caption: Advanced Options" and "Caption: Batch" shared across
  VLM, OpenCLiP, and Tagger tabs (localized to "Advanced Options"
  and "Batch" in UI)

- Remove duplicate entries from missing section
2026-02-11 02:47:40 +00:00
CalamitousFelicitousness 385532154f Merge remote-tracking branch 'origin/dev' into refactor/remove-face-restoration
# Conflicts:
#	.pylintrc
#	.ruff.toml
2026-02-10 14:38:14 +00:00
vladmandic 363cb175aa allow different lora in hires
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-09 22:31:00 +01:00
Vladimir Mandic e3ca883cbd
Revert "Mark public re-exports" 2026-02-09 18:30:18 +01:00
vladmandic 0d2e9fbf62 cleanup and update changelog
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-09 18:20:10 +01:00
CalamitousFelicitousness 93f8f66305 refactor: remove GFPGAN install, CLI args, and model migration
- Remove GFPGAN pip install from installer.py optional requirements
- Remove 'gfpgan' from modules_to_remove cleanup list in launch.py
- Remove --codeformer-models-path and --gfpgan-models-path CLI args
- Remove GFPGAN model directory migration from modelloader.py
2026-02-08 23:00:22 +00:00
CalamitousFelicitousness 356505cab2 refactor: remove ONNX face upscaler support from detailer
- Remove codeformer, restoreformer, GFPGANv1.4, and GPEN-BFR ONNX
  model URLs from the predefined list
- Remove the .fp16 ONNX restorer code path that bypassed detailer
  processing to run face restoration directly
2026-02-08 22:59:45 +00:00
CalamitousFelicitousness 8d764951cf refactor(api): remove face restoration endpoints and parameters
- Remove /sdapi/v1/face-restorers route from api.py
- Remove get_restorers() function from endpoints.py
- Remove gfpgan_visibility, codeformer_visibility, codeformer_weight
  fields from ReqProcess model
- Remove GFPGAN and CodeFormer entries from run_extras() signature
  and create_args_for_run dict in postprocessing.py
2026-02-08 22:59:28 +00:00
CalamitousFelicitousness d01f45519f refactor: remove face restoration from processing pipeline
- Remove CodeFormer/GFPGAN import and setup from webui.py initialize()
- Remove face_restorers list, codeformer/gfpgan model path settings,
  and face restore UI settings section from shared.py
- Remove restore_faces parameter from StableDiffusionProcessing
- Remove face_restoration import and restore_faces processing block
  from processing.py
2026-02-08 22:59:00 +00:00
CalamitousFelicitousness 1e23495039 refactor: delete CodeFormer, GFPGAN, and face restoration modules
Remove all vendored face restoration code that is no longer maintained:

- modules/postprocess/codeformer_model.py, codeformer_arch.py, vqgan_arch.py
- modules/postprocess/gfpgan_model.py, restorer.py
- modules/face_restoration.py (base class and dispatcher)
- scripts/postprocessing_codeformer.py, postprocessing_gfpgan.py
- modules/facelib/ (vendored face detection/parsing library)

These were the only two backends registered in shared.face_restorers,
making the entire face restoration infrastructure dead code.
2026-02-08 22:58:33 +00:00
CalamitousFelicitousness 34a18c9098 fix: skip Nunchaku offloading for SDXL models
Nunchaku's SDXL UNet does not support offloading and raises
NotImplementedError when offload=True is passed. Skip the parameter
for SDXL and log a warning instead of crashing.
2026-02-07 22:27:05 +00:00
CalamitousFelicitousness c8597ca84e feat: hide Nunchaku reference models on non-CUDA backends
Filter out reference entries tagged "nunchaku" from Extra Networks
when the active backend is not CUDA, since Nunchaku requires NVIDIA
GPUs. Entries remain in shared.reference_models for programmatic
lookup but are not yielded to the UI.
2026-02-07 22:27:05 +00:00
CalamitousFelicitousness a2ee885e28 refactor: update nunchaku repo URLs and version handling
- Rename HuggingFace org from nunchaku-tech to nunchaku-ai across all
  nunchaku model repos (flux, sdxl, sana, z-image, qwen, t5)
- Add per-torch-version nunchaku version mapping instead of single global
  version, with robust torch version parsing
2026-02-07 22:27:05 +00:00
CalamitousFelicitousness 8ff7074da5 feat: add Nunchaku variants for Fill and Depth in Flux Tools
- Add 'Fill (Nunchaku)' and 'Depth (Nunchaku)' options to Flux Tools
  dropdown, loading models with +nunchaku suffix for SVDQuant quantization
- Mark Fill and Depth nunchaku reference entries as hidden so they remain
  available for check_nunchaku() lookup but don't appear in Extra Networks
- Filter hidden reference models in ui_extra_networks_checkpoints
2026-02-07 22:27:05 +00:00
CalamitousFelicitousness 935a4fcb03 feat: add Nunchaku group to reference
Replace manual Model/TE checkboxes in Quantization Settings with a
dedicated "Nunchaku" tab in the Extra Networks menu where users can
directly select nunchaku-quantized model variants. Detection is now
using a +nunchaku path marker for disambiguation.
2026-02-07 22:27:05 +00:00
Vladimir Mandic d8362182bc
Merge pull request #4629 from awsr/public-re-export
Mark public re-exports
2026-02-07 13:10:02 +01:00
Vladimir Mandic a0f9447d04 add --remote cmd opt
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-02-07 10:17:32 +00:00
Vladimir Mandic e8ff09a2d2 fix lora unload and improve preview error handler
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-02-07 09:07:34 +00:00
awsr e199f2d351
Update `images.py` exports 2026-02-06 14:29:46 -08:00
awsr c288f0de14
Explicitly mark additional items as re-exported 2026-02-06 14:16:46 -08:00
awsr 8e4aa8dbe1
Add comment 2026-02-06 13:42:37 -08:00
awsr 1e668fe86d
Mark public re-exports
See: https://typing.python.org/en/latest/spec/distributing.html#import-conventions
2026-02-06 13:28:21 -08:00
Vladimir Mandic 4db4ff00ca
Merge pull request #4625 from awsr/gallery-auto-refresh
Gallery: Add auto-update setting and functionality
2026-02-06 13:07:41 +01:00
awsr ade7c2e5f9
Add auto-update setting and functionality 2026-02-06 00:50:04 -08:00
awsr 8bfa612902
Fix typo 2026-02-05 16:43:37 -08:00
vladmandic 9df9b84752 fix anima
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-05 16:55:06 +01:00
vladmandic dd80e15cfd add RealPLKSR NomosWebPhoto and AnimeSharpV2 using spandrel engine
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-05 14:06:17 +01:00
vladmandic 59654d68ea add hqx and icb interpolations
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-05 11:21:17 +01:00
vladmandic 5009b70ed8 fix anima model detection
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-05 10:25:58 +01:00
vladmandic 2d6cc5addb metadata restore to always-on scrips
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-05 10:21:49 +01:00
Oliver Hertel a0c7df892c weighted wildcards: corrections after automated tests 2026-02-04 19:11:05 +01:00
vladmandic d3dff5df15 one-more-offload
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-04 15:05:22 +01:00
vladmandic b9f1acdbc2 add scheduler class to image metadata
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-04 13:20:26 +01:00
vladmandic d9a2a21c8c add sampler api endpoints
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-04 13:08:31 +01:00
vladmandic d7ca4f63a7 update schedulers and lint everything
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-04 11:58:02 +01:00
Disty0 f439d51ea7 SDNQ update CosmosTransformer3DModel keys 2026-02-04 10:19:23 +03:00
Disty0 df30ba28ac SDNQ clamp weight_std and add CosmosTransformer3DModel keys 2026-02-04 00:31:00 +03:00
vladmandic 4f7555d9e1 update schedulers
Signed-off-by: vladmandic <mandic00@live.com>
2026-02-03 13:12:12 +01:00
Disty0 ced81d630d cleanup 2026-02-02 20:30:52 +03:00
Disty0 90cf83b90e update sdnq 2026-02-02 20:22:29 +03:00
Vladimir Mandic dd1704075c
Merge pull request #4612 from CalamitousFelicitousness/feat/anima-pipeline
Feat/anima pipeline
2026-02-02 07:43:57 +01:00
Seunghoon Lee 0920492294
update therock sources 2026-02-02 12:28:43 +09:00
CalamitousFelicitousness 4ba913e072 fix: Anima pipeline detection, custom module loading, and model type
- Relax sd_detect to match 'anima' without requiring 'cosmos' in name
- Use hf_hub_download for custom pipeline.py and adapter modules
- Register custom modules in sys.modules for Diffusers trust_remote_code
- Pass trust_remote_code=True to from_pretrained
- Map AnimaTextToImage to 'cosmos' model type for TAESD preview support
2026-02-02 00:44:51 +00:00
CalamitousFelicitousness af9fe036a3 feat: add Anima (Cosmos-Predict-2B variant) pipeline support
Anima replaces the Cosmos T5-11B text encoder with Qwen3-0.6B + a
6-layer LLM adapter and uses CONST preconditioning instead of EDM.

- Add pipelines/model_anima.py loader with dynamic import of custom
  AnimaTextToImagePipeline and AnimaLLMAdapter from model repo
- Register 'Anima' pipeline in shared_items.py
- Add name-based detection in sd_detect.py
- Fix list-format _class_name handling in guess_by_diffusers()
- Wire loader in sd_models.py load_diffuser_force()
- Skip noise_pred callback injection for Anima (uses velocity instead)
- Add output_type='np' override in processing_args.py
2026-02-02 00:44:51 +00:00
Vladimir Mandic f97edb9950 res4lyf flow prediction
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-01-31 13:55:42 +00:00
Vladimir Mandic 8cbd5afb98 update sampler definitions
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-01-31 13:16:32 +00:00
Vladimir Mandic 1d369b032c res4lyf epsilon validated
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-01-31 12:37:17 +00:00
Vladimir Mandic 20aeb8b793 /sdapi/v1/xyz-grid
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-01-31 11:04:50 +00:00
Vladimir Mandic f5630fdf63 fix typo
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-01-31 10:30:46 +00:00
Vladimir Mandic 7eb776a594 update res4lyf
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-01-31 10:18:39 +00:00
vladmandic cc03ebc584 move vae to subfolder
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-30 11:34:25 +01:00
Crashingalexsan 5465ba2279 Just Update 2 RDNA gfx archs 2026-01-30 02:26:07 -06:00
Crashingalexsan 867354bd29 [ROCM] Expand available gfx archs 2026-01-30 02:13:36 -06:00
vladmandic 58351b1f53 fix metadata save and temp file handler
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-28 19:28:49 +01:00
vladmandic 8e3671c169 linting
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-28 13:50:52 +01:00
vladmandic 1629c21452 second phase of res4lyf
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-28 13:29:23 +01:00
vladmandic 8f0e46516d fix framepack video save
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-28 09:47:17 +01:00
vladmandic 264a9f02d7 preview: res4lyf reimplemented
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-28 09:23:49 +01:00
Crashingalexsan eeb176c0d0 [MIOPEN} Set MIOPEN_FIND_MODE 2 & enable GFX1200 2026-01-27 16:40:27 -06:00
vladmandic f47c7d17af add CogXDDIM, DDIMParallel, DDPMParallel
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-27 09:46:31 +01:00
vladmandic c1f3fc594e cleanup
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-25 12:59:14 +01:00
vladmandic 947dd7b2b3 support lora inside prompt selector
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-25 09:49:36 +01:00
vladmandic 33d4a4999d lint deepbooru
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-24 18:51:11 +01:00
vladmandic 7bd73d6e75 log captured exceptions
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-24 13:57:13 +01:00
vladmandic a7c32caae3 relocate all jsons to data
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-24 13:54:40 +01:00
Vladimir Mandic a468c5d8f8
Merge pull request #4592 from awsr/errorlimiter
Implement abort system when encountering excessive errors
2026-01-24 13:54:28 +01:00
awsr 09fdda05a4
Move to `modules` 2026-01-24 02:16:05 -08:00
vladmandic a4671045b6 lint and crlf
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-24 10:28:46 +01:00
awsr 82361e6633
Adjust names 2026-01-23 22:29:00 -08:00
awsr 58c3aecc00
Allow multiple identifiers for ErrorLimiter.notify
- Update identifiers.
- Also minor message formatting update.
2026-01-23 16:50:52 -08:00
awsr e7d7894130
Prevent redundant traceback display 2026-01-23 16:43:58 -08:00
awsr 3343d2e05f
Update and rewrite to use contextlib 2026-01-23 04:56:27 -08:00
Disty0 50c65ed990 Update OpenVINO to 2025.4.1 2026-01-23 14:43:42 +03:00
Disty0 8d6bfcd827 Update SDNQ 2026-01-23 14:39:07 +03:00
vladmandic b8bac68915 use base steps as-is for non sd/sdxl models
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-23 10:12:11 +01:00
vladmandic a673ed2411 support comments in wildcard files
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-23 10:07:38 +01:00
Vladimir Mandic 69685f198d
Merge pull request #4584 from awsr/processing-updates
Processing updates
2026-01-23 09:19:47 +01:00
Vladimir Mandic a47e2ff62f
Merge pull request #4569 from CalamitousFelicitousness/feat/wd14-tagger
feat(caption): add WD14 tagger with Booru Tags tab
2026-01-23 09:17:19 +01:00
Vladimir Mandic 51e148cd2c
Merge pull request #4583 from ryanmeador/video-element-names
fix elem_ids for some video controls
2026-01-23 09:15:13 +01:00
Vladimir Mandic 1f2b0aa56d
Merge pull request #4568 from CalamitousFelicitousness/fix/skip-params-aliases
fix(settings): support aliases in metadata skip params
2026-01-23 09:14:27 +01:00
awsr 0310dc8fd6
Fix naming, use Exception as parent class 2026-01-22 21:39:20 -08:00
vladmandic 2bfdb605cd Merge branch 'dev' of https://github.com/vladmandic/sdnext into dev 2026-01-22 19:52:08 +01:00
vladmandic 01db4d8140 use refiner/detail steps as-is for non sd/sdxl models
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-22 19:50:16 +01:00
vladmandic 0073fa55e3 fix detailer double save
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-22 19:38:37 +01:00
awsr 65d8c9e7f2
Implement limiting system for excessive errors 2026-01-22 03:37:52 -08:00
awsr 747ec86eb9
Fix if cls is None 2026-01-21 18:16:47 -08:00
awsr b9b36ed962
Update typing 2026-01-21 18:15:20 -08:00
awsr 418f27266e
Add compatibility fallback just in case 2026-01-21 16:57:58 -08:00
awsr 3298f3db9a
Rework prompt parsing/processing
- Return consistent structure
2026-01-21 16:57:05 -08:00
Ryan Meador e6eeb22a81 fix/add element names for some video controls that were duplicate/missing 2026-01-21 19:53:11 -05:00
awsr fe20635d0f
Minor readability improvement 2026-01-21 16:41:05 -08:00
awsr 2f8976e28d
Type standardization in `processing_class` 2026-01-21 16:35:19 -08:00
awsr 6344db1b09
Enforce typing for `geninfo` 2026-01-21 16:20:53 -08:00
awsr c2c32d7847
Improve/update types and data handling 2026-01-21 14:13:00 -08:00
Oleksandr Liutyi 4a089fb6e4 Qwen layered settings typo 2026-01-21 19:12:43 +00:00
CalamitousFelicitousness 26c679f9e7 refactor(caption): remove unused _device tracking property 2026-01-21 11:56:07 +00:00
CalamitousFelicitousness 6b10f0df4f refactor(caption): address PR review feedback
Rename WD14 module and settings to WaifuDiffusion:
- Rename wd14.py to waifudiffusion.py
- Rename WD14Tagger class to WaifuDiffusionTagger
- Rename WD14_MODELS constant to WAIFUDIFFUSION_MODELS
- Rename settings: wd14_model -> waifudiffusion_model,
  wd14_character_threshold -> waifudiffusion_character_threshold
- Update all log messages from "WD14" to "WaifuDiffusion"

Code quality improvements:
- Simplify threshold parameter defaulting using `or` operator
- Extract save_output logic into _save_tags_to_file() helper with
  isolated error handling to prevent single file failures from
  impacting entire batch
- Fix timing log format consistency (remove 's' suffix)
2026-01-21 11:56:07 +00:00
CalamitousFelicitousness becb19319d refactor(caption): unify tagger settings and reorganize Caption Tab UI
Consolidate WD14 and DeepBooru tagger settings into unified options:
- Merge wd14_general_threshold + deepbooru_score_threshold → tagger_threshold
- Merge wd14_include_rating + deepbooru_include_rating → tagger_include_rating
- Rename interrogate_score → tagger_show_scores
- Rename tagger_escape → tagger_escape_brackets
- Rename CLiP → OpenCLiP in caption type choices

UI reorganization:
- Add Interrogate tab to Caption Tab with default caption type selector
- Move interrogate_offload to Model Offloading section as "Offload caption models"
- Hide Interrogate settings section (all settings now in Caption Tab UI)
- Update locale_en.json for OpenCLiP naming

Code improvements:
- DeepBooru tag_multi() now accepts same parameters as WD14 for unified interface
- Fix setting references in interrogate.py for consolidated settings
- Add comprehensive tagger test suite (cli/test-tagger.py)
2026-01-21 11:56:07 +00:00
CalamitousFelicitousness 656e86a962 refactor(caption): consolidate interrogate settings into Caption Tab UI
Hide all CLiP, VLM, and Tagger settings from Settings > Interrogate page
while keeping them in shared.opts for persistence. Caption Tab UI becomes
the single control point with change handlers that save directly to config.

Changes:
- Hide OpenCLiP, VLM, and Tagger settings with visible=False
- Add change handlers to save settings when UI controls change
- Rename "Booru Tags" tab to "Tagger", update choice labels
- Update interrogate.py to use unified tagger interface with all settings
2026-01-21 11:56:07 +00:00
CalamitousFelicitousness 09b8fe9761 feat(caption): integrate DeepBooru into unified Booru Tagger UI
Add DeepBooru as a model option alongside WD14 models in the Booru Tags
tab, with dynamic UI that disables inapplicable controls.

Changes:
- Create modules/interrogate/tagger.py as unified adapter module
- Add batch, load/unload, get_models functions to deepbooru.py
- Update ui_caption.py to use unified tagger interface
- Consolidate shared tagger settings in shared.py
- Add implementation plan for future settings consolidation

UI behavior:
- Model dropdown shows DeepBooru + all WD14 models
- Character threshold and include rating disabled for DeepBooru
- All controls re-enable when WD14 model selected
2026-01-21 11:56:07 +00:00
CalamitousFelicitousness db97c42320 feat(caption): add WD14 tagger with Booru Tags tab
Add SmilingWolf's WD14/WaifuDiffusion tagger models for anime/illustration
tagging as a new "Booru Tags" tab in the Caption panel.

- Support 9 models (v2 and v3 variants) via HuggingFace
- ONNX backend chosen due to safetensors v3 variants exhibiting
  unacceptable accuracy loss
- Separate thresholds for general/character tags
- Batch processing with progress bar
- Consolidate debug env var to SD_INTERROGATE_DEBUG
2026-01-21 11:56:07 +00:00
Seunghoon Lee 40e366acf7
rocm hipblaslt detection fix 2026-01-21 17:07:39 +09:00
vladmandic b54d3eb07b Merge branch 'dev' of https://github.com/vladmandic/sdnext into dev 2026-01-21 08:45:58 +01:00
vladmandic bfbe4af598 fix lora load
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-21 08:45:45 +01:00
Vladimir Mandic a5367308bc
Merge pull request #4577 from awsr/patch-1
Re-enable file deletion
2026-01-21 08:02:28 +01:00
awsr ffa2150d42
Re-enable file deletion 2026-01-20 22:07:44 -08:00
CalamitousFelicitousness 694e2f0427 fix(settings): support aliases in metadata skip params
The "Restore from metadata: skip params" setting previously required
exact metadata parameter names (e.g., "Batch-2" instead of "batch_size").
This was confusing because metadata names differ from Python variables
and UI labels.

Changes:
- Auto-populate param_aliases from component labels and elem_ids
- Expand user input with aliases in should_skip()
- Support normalized names so "Batch" skips both "Batch-1" and "Batch-2"

Users can now enter any of these formats (case-insensitive):
- Python variable names: batch_size, cfg_scale, clip_skip
- UI labels: Batch size, CFG scale, Clip skip
- Metadata names: Batch-2, CFG scale, Clip skip
- Normalized names: Batch (skips both Batch-1 and Batch-2)
2026-01-21 00:56:26 +00:00
vladmandic 84ad7bf20b improve wrap_gradio_call
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-20 18:56:49 +01:00
vladmandic a7b69cd805 fix get_fixed_seed
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-20 18:33:39 +01:00
vladmandic bb1e62f2ae fix_seed
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-20 18:32:19 +01:00
vladmandic b3a99274e2 enhance SD_DEVICE_DEBUG
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-20 18:12:05 +01:00
vladmandic cbc5ada65e Merge branch 'dev' of https://github.com/vladmandic/sdnext into dev 2026-01-20 17:30:24 +01:00
vladmandic b82132c17d cleanup
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-20 17:30:22 +01:00
James58899 f77361f49a
Fix rocm triton windows patch 2026-01-20 20:58:04 +08:00
vladmandic f9aa2591e5 fix gallery save/delete
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-20 09:53:20 +01:00
vladmandic 8cf27dffdb allow unsafe ssl context for downloads
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-19 17:36:01 +01:00
vladmandic ae357a5e49 fix handling of p.seeds
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-19 11:35:21 +01:00
vladmandic cc0b0e8e3d cleanup todo
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-19 11:10:05 +01:00
vladmandic e8a158f4f5 refactor prompt set
Signed-off-by: vladmandic <mandic00@live.com>
2026-01-19 10:51:28 +01:00
Vladimir Mandic 204bee6d2b
Merge pull request #4567 from CalamitousFelicitousness/fix/lora-null-description
fix(ui): handle null description in network info JSON
2026-01-19 08:12:29 +01:00