Commit Graph

8874 Commits

Author SHA1 Message Date
Vladimir Mandic 1cf715fac2 add gemma-4-unified, tensor-compressed, qat
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-12 15:15:16 +02:00
Vladimir Mandic 469428b502 update transformers/diffusers and enhanced tests
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-12 15:15:16 +02:00
Vladimir Mandic 10414e01a1 Merge pull request #4912 from QualiaRain/fix/script-extension-fixes
Fix seven small bugs in script extensions
2026-06-12 10:49:39 +02:00
Vladimir Mandic ccc8f92d05 Merge pull request #4911 from QualiaRain/fix/upscale-postprocess-fixes
Fix four small bugs in upscale and postprocess paths
2026-06-12 10:40:12 +02:00
Vladimir Mandic d1ba7eceea Merge pull request #4910 from QualiaRain/fix/parser-metadata-keys
Fix compel prompt guard duplicate clause and PObject infotext key mismatches
2026-06-12 10:38:36 +02:00
Claude 77f7fc61bd Fix UnboundLocalError when resize gets an invalid upscaler name
The invalid-upscaler warning referenced selected_upscaler, which is only
assigned when a matching upscaler was found, so an unknown name (stale
infotext, removed upscaler) crashed the resize instead of falling back
to plain resampling.

https: //claude.ai/code/session_014QWKWgKvMevcuvfCnsYoT2
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-12 02:41:34 -04:00
Claude 6ef1228727 Fix per-script timing always recording zero
ScriptSummary.record reset the reference timestamp immediately before
measuring against it, so every recorded duration was ~0 and report()
never logged script timings. Measure against the previous timestamp,
then advance it.

https: //claude.ai/code/session_014QWKWgKvMevcuvfCnsYoT2
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-12 02:41:32 -04:00
Claude e6c13aab37 Fix PObject metadata keys that never match parsed infotext
Infotext parsing produces 'Negative prompt' and 'Variation seed', but
the save-image PObject looked up 'Negative_prompt' and 'Subseed', so
images saved from restored metadata always lost their negative prompt
and variation seed. Use the keys the parser actually emits, matching
the sibling lookups like 'CFG scale'.

https: //claude.ai/code/session_014QWKWgKvMevcuvfCnsYoT2
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-12 02:41:25 -04:00
Claude 077a82e99e Fix duplicated clause in compel prompt guard
The guard repeated 'conjunction.prompts is None' twice; the second copy
was meant to check for an empty list, so an empty (non-None) prompts
list raised IndexError inside the guard instead of returning the empty
fallback.

https: //claude.ai/code/session_014QWKWgKvMevcuvfCnsYoT2
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-12 02:41:25 -04:00
QualiaRain 0002062367 Fix inverted lerp weights in slerp_alt near-parallel shortcut
Same inversion as the slerp() near-parallel shortcut: at val=0 the
expression returned hi instead of lo, opposite to both the
near-orthogonal shortcut and the general slerp path in the same
function.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-12 02:28:42 -04:00
Claude ace616d287 Fix inverted lerp weights in slerp near-parallel shortcut
The nearly-parallel fast path interpolated in the wrong direction:
at val=0 it returned hi instead of lo, opposite to both the general
slerp formula below and the sibling near-orthogonal shortcut. Affects
subseed/variation strength when base and subseed noise are nearly
parallel.

https: //claude.ai/code/session_014QWKWgKvMevcuvfCnsYoT2
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-12 02:27:51 -04:00
Claude 26a58b46fb Fix seed 0 being dropped from generator seeds
The truthiness filter removed valid seed 0 from p.seeds, causing an
unseeded generator for single images and a generator/batch length
mismatch for batches. Filter only None entries; 0 is a legitimate seed
per get_fixed_seed.

https: //claude.ai/code/session_014QWKWgKvMevcuvfCnsYoT2
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-12 02:27:51 -04:00
Claude e7d7e699e1 Fix latent concatenation running inside the loop in resize_hires
torch.cat was indented into the per-item loop, so with two or more
latents the first iteration replaced the list with a tensor and the
next iteration concatenated its dim-0 slices, destroying the batch
dimension. Concatenate once after the loop.

https: //claude.ai/code/session_014QWKWgKvMevcuvfCnsYoT2
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-12 02:27:50 -04:00
Vladimir Mandic d38feefebd Merge pull request #4905 from QualiaRain/fix/infotext-padding
Fix batch list padding in create_infotext corrupting infotext indices
2026-06-11 08:22:24 +02:00
Claude 7d1ba849e1 fix batch list padding in create_infotext corrupting infotext indices
padding loops used insert(0) which shifts existing prompt/seed entries
to higher indices, so subsequent index lookups - including the caller's
own p.prompts[i]/p.seeds[i] reads on the same aliased lists - return
values belonging to a different image; append preserves existing
index-to-entry mapping and pads missing slots at the end

https://claude.ai/code/session_01UZT4ypkGQH5fzJ89dXPFYp
2026-06-11 01:42:42 -04:00
QualiaRain 148a7883a2 Fix assorted small typos: dead __str__, unformatted messages, preview min-height, tooltip
- processing.py: __str___ misspelled dunder never dispatched; rename to __str__
- demofusion.py: missing f-prefix printed literal {width}x{height} in user-facing error
- sparse_backend.py: missing f-prefix printed literal {size} in ValueError
- generation_parameters_copypaste.py: debug message typo 'Not not registered'
- progressBar.ts: live-preview gallery minHeight computed from naturalWidth; mirrors the adjacent maxHeight line (naturalHeight)
- settings.ts: stray } in settings-tab tooltip
2026-06-11 01:42:29 -04:00
Vladimir Mandic 72b2f0d7be bump compel
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-10 08:09:00 +02:00
CalamitousFelicitousness 47aa9a2c93 fix(samplers): report validation failures without backtrace
Sampler capability gates raised plain ValueError when schedulers_fallback is
disabled, so the API middleware and the gradio call wrapper printed a full
backtrace for an expected outcome. Add errors.ValidationError, raise it from
the gates, and report it message-only in errors.display; the UI error box and
the API error response already carry the message.
2026-06-10 03:08:20 +01:00
CalamitousFelicitousness e783981f3d fix(samplers): honor fallback setting in remaining sampler fallback paths
create_sampler restored the model default scheduler on a prediction-type
mismatch, on an unknown sampler config, and on any scheduler-constructor
exception regardless of schedulers_fallback; only SD_SAMPLER_DEBUG could turn
the prediction mismatch into an error. Raise like the other capability gates
when the fallback setting is disabled.

An unresolved sampler name substituted UniPC before any of those gates could
run; pass the requested name through instead, so it falls back to the model
default (or raises when fallback is disabled) and the infotext records
Default rather than the unresolved name. find_sampler now also resolves an
unspecified sampler to Default instead of UniPC, matching the platform
default used everywhere else.
2026-06-10 03:08:20 +01:00
CalamitousFelicitousness 1d5fbc60e5 feat(samplers): wire sigma transforms into ER-SDE FlowMatch presets
The ER-SDE FlowMatch presets carried only use_flow_sigmas, so the sigma
method selector could not drive karras/beta/exponential for the FlowMatch
variants. Add use_karras_sigmas/use_exponential_sigmas/use_beta_sigmas to
match the plain ER-SDE presets and the Euler/UniPC/Flash FlowMatch presets,
which use the same boolean-flag mechanism.
2026-06-10 03:08:20 +01:00
CalamitousFelicitousness 40cf818f72 feat(samplers): apply sigma transforms to ER-SDE flow sigmas
In flow mode ER-SDE only ran karras/beta/exponential on the VP path and
silently dropped them, unlike FlowMatchEuler and DPM FlowMatch which
redistribute the shifted flow sigmas. Apply the same transform to the
flow sigmas in _setup_flow so the sigma method works in flow mode and
the ER-SDE FlowMatch variants gain karras/beta/exponential. Default flow
schedule is unchanged.
2026-06-10 03:08:20 +01:00
CalamitousFelicitousness 7084ac2c81 fix(samplers): warn or raise when sampler lacks selected sigma method
The sigma-method override silently fell back to the sampler's default
schedule when the selected method has no matching config key. Now warns and
uses the default schedule with schedulers_fallback enabled, or raises like
the other capability gates when it is disabled.
2026-06-10 03:08:20 +01:00
CalamitousFelicitousness f59e32ff17 feat(samplers): add sigma-schedule parity to ER-SDE
ERSDEScheduler now accepts use_karras_sigmas, use_exponential_sigmas,
use_beta_sigmas, and use_flow_sigmas, matching the other flow schedulers.
The VP path derives alpha/sigma/lambda from the k-diffusion sigma so the
karras/beta/exponential transforms can use fractional timesteps; the
default schedule is numerically unchanged. use_flow_sigmas triggers flow
mode and add_noise tolerates fractional timesteps.

Wire the new keys into the ER-SDE presets so the sigma method selector
drives them, and cover ER-SDE in the scheduler stability test.
2026-06-10 03:08:20 +01:00
Disty0 d1ed1f7c93 SDNQ add Ideogram4Transformer2DModel keys 2026-06-10 03:20:57 +03:00
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