Commit Graph

8700 Commits

Author SHA1 Message Date
Vladimir Mandic efe9a1f348 two-way image resize ui/kanvas
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-09 19:33:44 +02:00
Vladimir Mandic af0ccf1b63 add ideogram prequant and set default schedule
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-08 17:20:12 +02:00
Vladimir Mandic 84228f1657 update sampler behavior and user definable fallback
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-08 17:00:00 +02:00
Vladimir Mandic 8a85178f93 logical-vs-physical param count
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-08 12:03:37 +02:00
Vladimir Mandic f27c8584ee fix xpu generator
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-08 10:18:12 +02:00
Vladimir Mandic fefa1f210d fix sdnq svd
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-08 10:12:17 +02:00
Vladimir Mandic 191bd93011 implement missing params in some schedulers
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-08 09:08:07 +02:00
Vladimir Mandic cad27637b4 schedulers validate ui sections
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-08 08:58:13 +02:00
Vladimir Mandic 3859530214 refactor for consistent folders usage for all models
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-08 08:24:21 +02:00
CalamitousFelicitousness 28c66c9812 fix(samplers): apply flow shift to non-flowmatch ER-SDE presets 2026-06-07 22:08:16 +01:00
Disty0 03fa90ff35 Add warning for and skip post-load quant of pre-quants 2026-06-07 18:02:28 +03:00
Disty0 f0c93defb8 SDNQ add RuntimeError for post-load quantizing a pre-quant 2026-06-07 17:51:48 +03:00
Disty0 809f24aa13 Remove unset_config_on_save 2026-06-07 17:28:17 +03:00
Disty0 1247f871d3 SDNQ fix quantization_config being lost on pre-quants 2026-06-07 17:02:08 +03:00
Disty0 e5249c7a4b Cleanup SDNQ 2026-06-07 16:14:52 +03:00
Vladimir Mandic 1f24513507 optimize sdnq quant-on-load and add platform stats
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-07 11:43:46 +02:00
CalamitousFelicitousness 08b843401e fix(ui): correct schedulers_sigma option choices to match backend
schedulers_sigma is a hidden OptionInfo registration; the visible control is the sampler-accordion dropdown. Its choices still listed the k-diffusion set, including polyexponential (which the diffusers backend does not support) and omitting betas, lambdas, and flowmatch. Align the list with what sd_samplers_diffusers accepts and the dropdown offers. The list feeds warn-only validation, so this clears a dead value and spurious debug logs, not user-facing behavior.
2026-06-07 07:35:56 +01:00
CalamitousFelicitousness 72b6691fd6 fix(api): default img2img sampler_name to Default like txt2img
img2img still defaulted sampler_name to UniPC after the txt2img default was switched to Default in 7fbac675f, so an img2img request that omits the sampler forced UniPC instead of keeping the model's own scheduler. The control endpoint already used Default; align img2img with both.
2026-06-07 06:57:07 +01:00
CalamitousFelicitousness 0c0d455c11 fix(api): resolve sampler names case-insensitively to canonical form
validate_sampler_name only matched the exact, case-sensitive name, so near-miss client names such as lowercase variants were rejected while an omitted name silently used the model scheduler via the Default sentinel. Fall back to find_sampler and return the canonical name so create_sampler applies the intended sampler; unknown names still return 404. Add an API test covering case-insensitive resolution and rejection of unknown names.
2026-06-07 06:57:07 +01:00
CalamitousFelicitousness 8c305fd68c refactor(processing): drop dead model-level keep_prompts check
Nothing sets keep_prompts on the model, so the guard never affected behavior.
JSON-caption prompts are preserved by the JSON short-circuit in
apply_curly_braces_to_prompt; the per-process p.keep_prompts path
(detailer, mixture-of-diffusers) is unchanged.
2026-06-07 00:37:15 +01:00
CalamitousFelicitousness f83c1bc731 refactor(sdnq): clean up dynamic loss threshold slider 2026-06-07 00:18:07 +01:00
Vladimir Mandic 78f88ef571 add ideogram4
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-05 20:00:49 +02:00
CalamitousFelicitousness 63fd441a14 refactor(ideogram4): register pipeline and load via from_pretrained
Register the subclass with generic.set_pipeline and build it with
from_pretrained, passing the SDNQ transformers and shared text encoder
while the vae, scheduler, and tokenizer load from the repo.
2026-06-05 02:10:00 +01:00
CalamitousFelicitousness 92e1cb9927 fix(ideogram4): pass JSON captions through unmangled
The dynamic-prompt brace processor in apply_styles_to_prompts strips the
{} and [] out of a JSON caption, leaving non-JSON that trips the model's
weight-baked safety placeholder. Let a model opt out of style and wildcard
processing via keep_prompts and set it for Ideogram4, then normalize the
prompt in encode_prompt: valid JSON to the compact training form, plain
text wrapped into a minimal caption so basic prompts still generate.
2026-06-05 01:54:18 +01:00
CalamitousFelicitousness bcebb6b81b refactor(ideogram4): adopt diffusers-native pipeline
diffusers shipped first-party Ideogram 4 (transformer + pipeline) in
9b0818cf, so drop the in-tree port and keep only SD.Next integration glue.

Bump the diffusers pin to 9b0818cf and build diffusers' Ideogram4Pipeline
from a thin loader with per-transformer SDNQ. A small subclass keeps the
text encoder resident for the Qwen3-VL tap under balanced offload, and the
step callback denormalizes the preview latent from vae.bn before unpatchify.
Deletes the ported transformer, pipeline, scheduler, text encoder, and
latent-norm constants.
2026-06-05 01:54:18 +01:00
CalamitousFelicitousness 4866d2c8f3 fix(ideogram4): offload-safe encode, step progress, live preview
- move the text encoder on-device for the tapped forward (bypasses the offload hook)
- wrap the denoise loop in the diffusers progress bar
- live preview through the shared TAE FLUX.2 decoder (Flux.2 VAE)
2026-06-05 01:54:18 +01:00
CalamitousFelicitousness 2f3d0e719d feat(ideogram4): add Ideogram 4 model support
Diffusers-native port of the 9.3B flow-matching DiT: dual-transformer asymmetric CFG, a 13-layer Qwen3-VL tap encoder deduped with VQA and prompt-enhance, the Flux.2 VAE, and a logit-normal schedule. Loads a published bf16 repo with SDNQ at load.
2026-06-05 01:54:18 +01:00
Vladimir Mandic 5e99dee3c2 full codespell coverage
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-04 12:36:10 +02:00
Vladimir Mandic f25f325efb fixes based on full skills run
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-04 11:10:26 +02:00
Vladimir Mandic e7e317191a automated pipeline registrations and tests
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-04 10:18:09 +02:00
Vladimir Mandic 258d88e6bf fix typo
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-03 09:46:44 +02:00
Vladimir Mandic ec2e37ee6e enhance automated testing
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-03 09:27:34 +02:00
Vladimir Mandic a664c33965 Merge pull request #4891 from ryanmeador/fix/video-thumbnail-toggle
feat(video): add thumbnail save toggle
2026-06-03 08:10:43 +02:00
Vladimir Mandic d89844f145 Merge pull request #4890 from ryanmeador/feat/video-mp4-metadata
feat(video): save prompt metadata in mp4
2026-06-03 08:04:40 +02:00
Ryan Meador 11096bc0aa feat(video): add thumbnail save toggle 2026-06-02 23:43:58 -04:00
Ryan Meador 8085eadffb feat(video): save prompt metadata in mp4 2026-06-02 23:05:47 -04:00
Vladimir Mandic 2af67b76d0 lint
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-02 17:13:08 +02:00
Vladimir Mandic 35aa8c6422 fix openpose and add test-compile
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-02 17:06:18 +02:00
Vladimir Mandic 3c2a742f40 cleanup logging
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-02 08:03:27 +02:00
Vladimir Mandic bd47b693d2 update transformers and cleanup ui labels
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-02 07:45:37 +02:00
Vladimir Mandic 6afde7e631 Merge pull request #4886 from vladmandic/feat/detailer-postprocess
feat(api): add detailer postprocess script and /sdapi/v1/detail endpoint
2026-06-02 07:15:11 +02:00
Vladimir Mandic 6a1c994cf3 cleanup
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-01 11:54:26 +02:00
Vladimir Mandic c319f8f92d refactor shared text encoder
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-01 10:03:10 +02:00
Vladimir Mandic 24aced130d Merge pull request #4876 from vladmandic/feat/native-transformer-loader
Feat/native transformer loader
2026-06-01 06:59:47 +02:00
CalamitousFelicitousness f9ab0bf04d feat(api): add detailer postprocess script and /sdapi/v1/detail endpoint
Surface YoloRestorer.restore() as a standalone operation: a Detailer
postprocessing script in the Process tab and a thin /sdapi/v1/detail
endpoint, neither requiring a base generation pass.

- modules/postprocess/yolo.py: YoloRestorer.make_processing() builds the
  synthetic Img2Img processing object both entry points feed to restore(),
  resolving the seed so the inpaint passes are reproducible
- modules/api/process.py: post_detail handler exposes the full detailer
  parameter set and returns the detailed image plus optional annotations
  as base64
- scripts/postprocessing_detailer.py: reuses shared.yolo.ui('extras') and
  runs through make_processing()
- modules/postprocessing.py: run_extras takes a per-script script_args
  dict, also letting the extras API drive other scripts such as Remove
  background; omitting it leaves existing callers unchanged
- modules/api/models.py: ReqDetail / ResDetail
- modules/processing_info.py: guard create_infotext's Image/Hires CFG
  reporting against an unset (None) cfg_image, matching the is-not-None
  checks the other cfg_image readers use; the detailer inpaint pass runs
  with it unset
- test/test-detailer-api.py: covers both paths; effect tests measure the
  diff inside the detected region with extreme isolated parameter values,
  and the suite disables model quantization for the run and restores the
  original settings afterward
2026-06-01 00:25:59 +01:00
Ryan Meador b63e5ceeae fix(ltx): align cached prompt tensors with device 2026-05-31 17:52:44 -04:00
Vladimir Mandic c3eec8e60b Merge pull request #4884 from vladmandic/fix/output-paths-base-relative
fix(paths): don't create per-type output dirs at root when base set
2026-05-31 06:47:53 +02:00
CalamitousFelicitousness 0acfc70c42 fix(paths): don't create per-type output dirs at root when base set
create_paths() pre-created every per-type output folder via fix_path(), which resolves relative values against data_path (the repo root). With a base images/grids folder configured, those bare dirs are never written to (generation uses the base-joined path), so they accumulate as empty stray folders at the repo root on every launch. Guard the bare creations behind an unset base; the resolved base+specific block already creates the real targets.
2026-05-31 04:49:05 +01:00
CalamitousFelicitousness f8bd53a96b fix(preview): keep taesd preview size constant across decode layers
taesd_layers < 3 drops spatial upsample blocks in the TAESD/TAEHV
decoders, shrinking preview output 2x/4x. Both UIs size the live preview
from the image's intrinsic pixel dimensions (modern via object-fit:
scale-down, standard via max(naturalWidth, 512px)), so lower layer counts
rendered the preview physically small.

Rescale the decoded preview spatially by 2^(3-layers) in
sd_vae_taesd.decode. Gated to TAESD and TAEHV, the only decoders that
honor taesd_layers; TAEM1 and Hybrid VAEs decode at full size and are left
untouched. Rank-agnostic so it covers both image (CHW) and video (TCHW)
previews, including single-frame video models used for txt2img.
2026-05-31 04:43:10 +01:00
CalamitousFelicitousness 77913c7c0a docs: cleanup
- generic.load_transformer: shorter dispatch description, no internal taxonomy
- native_transformer.load: trim kwargs forwarding wording
- sd_unet revert: one-line comment
- test: shorten kwargs-forwarding docstrings
2026-05-31 02:04:56 +01:00