Commit Graph

8874 Commits

Author SHA1 Message Date
Vladimir Mandic 17c8fe91e2 cleanup performance tags
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-02 19:14:04 +02:00
Vladimir Mandic 51a0eaaa21 add experimental openai interface
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-02 14:36:44 +02:00
Vladimir Mandic fcee7e23f2 add experimental pruna
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-02 11:25:33 +02:00
Vladimir Mandic e21ba60d05 update hf hijack, simplify anima loader, add few more models
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-01 22:47:07 +02:00
Vladimir Mandic e08bdaf76b handle invalid extension
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-01 18:59:20 +02:00
Vladimir Mandic 22d01c7e6e lora load cache state_dict
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-01 18:43:48 +02:00
Disty0 e1ac9650b7 Make SDNQ Triton kernels trigger way less tuning and fix accuracy issues on SDNQ Atten 2026-07-01 17:31:57 +03:00
Vladimir Mandic 7eacfafa4a lora guard against param change on-the-fly
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-01 15:53:38 +02:00
Vladimir Mandic 6da14e36b6 fix hf telemetry and add prxpixel
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-01 12:50:45 +02:00
Vladimir Mandic 6fc0830d2c api audit
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-01 11:47:29 +02:00
Vladimir Mandic f4dd9bd063 fix openapi schema
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-01 11:23:07 +02:00
Vladimir Mandic 743d585faa audit: api response models
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-01 11:19:55 +02:00
Vladimir Mandic 2ad76fecb6 audit: api signature
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-01 11:17:01 +02:00
Vladimir Mandic b3cf481c11 Merge pull request #4970 from vladmandic/feat/video-models
Feat/video models
2026-07-01 11:11:57 +02:00
Vladimir Mandic 02bb44aa90 minor fixes from audit
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-07-01 11:08:04 +02:00
Vladimir Mandic 7e21e17d08 Merge pull request #4971 from vladmandic/fix/resolution-ar-controls
fix(ui): debounce aspect-ratio linked width/height controls
2026-07-01 11:07:57 +02:00
CalamitousFelicitousness b02a480e08 feat(ltx): wire last-frame conditioning into LTX tab
The LTX tab already collected a last-frame image but anchored every condition at index 0, so it never acted as a last frame. Build a separate condition for it at the final frame: index -1 for the 2.x family (latent index, negatives wrap) and num_frames-1 for 0.9 (pixel index). The Last image input now shows only for Condition models, the pipelines that accept multi-frame conditioning.
2026-06-30 23:00:36 +01:00
CalamitousFelicitousness 888cdd1eca feat(video): support first-last-frame for Wan 2.2 I2V
The I2V path forwards a last-frame image to the pipeline when one is supplied and the loaded pipeline accepts it, turning the run into first-last-frame interpolation. supports_last_frame() gates on the pipeline taking a last_image argument and not running expand_timesteps, which conditions on the first frame only, so a model that cannot use a last frame logs a warning instead of silently ignoring it.
2026-06-30 23:00:36 +01:00
CalamitousFelicitousness 10647c7b67 fix(video): apply Wan 2.2 MoE boundary at runtime in both image and video paths
Wan 2.2 A14B ships a per-model boundary_ratio (0.9 I2V, 0.875 T2V) that selects the high- or low-noise expert per step. The video and base-model image loaders both load the shipped value; the slider override is applied at generation time in set_pipeline_args, the one point both paths pass through before invoking the pipeline.

The denoising loop reads config.boundary_ratio each call, so tuning takes effect with no reload for video and base-model images alike. The slider defaults to -1, meaning use the model's value; 0 to 1 set the boundary explicitly. Single-expert stages stay load-time because they drop a transformer to free VRAM.
2026-06-30 23:00:26 +01:00
Vladimir Mandic e3fed70829 fix hijack accelerate
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-29 15:26:25 +02:00
Vladimir Mandic 0e35079f06 attempt to load incomplete model
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-29 13:39:46 +02:00
Vladimir Mandic 7c228892cf model metadata handle invalid keys
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-29 11:23:29 +02:00
Vladimir Mandic 825b714753 cleanup
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-29 10:05:31 +02:00
Vladimir Mandic d3e3948787 update lens and bria
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-29 09:19:29 +02:00
CalamitousFelicitousness 17b7176e0d fix(ui): debounce aspect-ratio linked width/height controls
A single handler bound to the AR dropdown, width and height (in the
shared create_resolution_inputs and the resize section) wrote both
sliders on every change. With a ratio selected it locked one axis and
snapped it back on each edit, the two sliders looped, and the math ran
server-side one round-trip per keystroke, echoing a value back into the
field being typed in and yanking it.

Move aspect-ratio linking to the browser (ui/resolutionLock.ts): a
debounced edit writes only the partner axis, never the field being
edited, and commits immediately on blur, enter, or slider release. Keep
the kanvas notify on notifyKanvasResize wired to the resize sliders'
gradio .change, so it still fires on programmatic size updates (detect,
paste, swap) that client-side listeners miss. Drop the per-change AR
wiring, res_apply, and the resolutionChange* helpers.
2026-06-29 00:20:36 +01:00
Disty0 f0ef201882 cleanup 2026-06-28 22:16:53 +03:00
Disty0 693639a7d3 SDNQ atten fix enable_gqa + is_causal 2026-06-28 22:07:37 +03:00
Disty0 e89f1a1fe8 SDNQ add causal atten support 2026-06-28 20:08:40 +03:00
CalamitousFelicitousness 0eb7d7032b feat(civitai): filter search results by nsfw level
The nsfw boolean leaks Mature+ content (nsfw=false returned levels up to
XXX) and /models rejects server-side level filtering, so filter search
results on each model's aggregate nsfwLevel: nsfw off keeps SFW (None +
Soft), nsfw on keeps everything.
2026-06-28 02:43:03 +01:00
CalamitousFelicitousness 236d96ef06 fix(civitai): tolerate null creator username in search results
Civitai returns a null username for deleted or anonymous creators. The
field default only applies when the key is absent, so an explicit null
failed str validation and rejected the entire CivitSearchResponse,
dropping every model on that page.

Coerce null or empty usernames to the default in a pre-validator so one
bad creator no longer empties the whole search result.
2026-06-28 02:39:06 +01:00
CalamitousFelicitousness af11b119ea feat(civitai): use /enums for option discovery, parse new model fields
Replace base-model and model-type discovery that scraped ZodError
responses with the documented GET /api/v1/enums endpoint. The /images
baseModels probe (unreliable since /models stopped validating it) is now
a fallback only; sort and period still come from the /models 400 response
since /enums does not carry them.

Add the model fields the API returns but CivitModel was dropping:
supportsGeneration, mode, poi, minor, sfwOnly, userId, cosmetic. The
poi/minor/sfwOnly flags serialize as null on some endpoints, so coerce
null to False to keep parsing resilient.
2026-06-28 01:25:40 +01:00
Disty0 6ee13520a1 SDNQ atten remove query.device == key.device checks 2026-06-27 16:23:49 +03:00
Disty0 2622291de7 SDNQ Atten Fix FP16 PV 2026-06-27 15:39:58 +03:00
Disty0 3fed183564 update sdnq atten min sizes 2026-06-27 14:51:56 +03:00
Disty0 718e24c50d increase the min lenghts for SDNQ atten 2026-06-27 02:54:39 +03:00
Disty0 7c5238bf41 fix shapes 2026-06-27 01:56:50 +03:00
Disty0 66116ad1a5 cleanup 2026-06-27 01:43:59 +03:00
Disty0 13c1bcff3f cleanup 2026-06-27 01:40:11 +03:00
Disty0 b92ccf4adf Make triton atten and mm require less tuning 2026-06-27 01:15:09 +03:00
Vladimir Mandic f44dd11b05 fixes
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-26 21:30:09 +02:00
Vladimir Mandic 37f0d7c1c1 fix ltx
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-26 10:52:51 +02:00
Vladimir Mandic 138125bd46 update api response models
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-26 10:39:33 +02:00
Vladimir Mandic fccbdcc1e9 update api response
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-26 10:38:14 +02:00
Disty0 db43551ab6 use tl.exp2 instead of tl.math.exp2 2026-06-25 19:19:34 +03:00
Vladimir Mandic b61475574e preview check for output panel visibility
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-25 10:54:35 +02:00
Vladimir Mandic 719b4842b2 update diffusers and preview matching
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-06-25 08:00:28 +02:00
CalamitousFelicitousness a6fe828aa2 fix(api): set compatibility options without crashing
clip_skip and the uni_pc_* opts live in opts.data without an OptionInfo in
data_labels (compatibility_opts). Options.set() read data_labels[key].onchange
unconditionally, so setting clip_skip via /sdapi/v1/options raised KeyError and
returned 500; the override_settings restore path had the same unguarded
data_labels[k] access for falsy-valued compat opts.

Guard the onchange lookup and read the stored value via getattr(opts, k), which
already falls back through data then data_labels.
2026-06-25 02:25:33 +01:00
CalamitousFelicitousness 3dd0cd590c fix(pipelines): restore clip-skip text encoding for transformers 5.6+
The vendored encode_prompt copies in the PAG, APG, ControlNet-XS and differential
diffusion pipelines dereference the .text_model wrapper that transformers 5.6
removed from CLIPTextModel, so their clip-skip path crashes on SD1.5 and SDXL TE1.
Apply the same getattr(te, 'text_model', te) fix as the core parser.

Mirrors upstream diffusers, which still carries this deref in pipeline
encode_prompt; only the single-file loader was fixed there.
2026-06-25 02:25:33 +01:00
CalamitousFelicitousness aeef359bd7 fix(prompt): restore textual inversion on clip-skip>=2
transformers 5.6 flattened CLIPTextModel, removing the .text_model wrapper that
compel_hijack and the xhinker parser dereference on the normalized clip-skip path.
On SD1.5 at clip-skip >= 2 this raised AttributeError, which processing_prompt
caught and silently fell back to fixed-attention encoding, dropping textual
inversion and prompt weighting.

Resolve the submodule via getattr(te, 'text_model', te), correct for flattened
CLIPTextModel, CLIPTextModelWithProjection (still nested), and transformers < 5.6.
2026-06-25 02:25:33 +01:00
CalamitousFelicitousness 7ed3cd71e0 fix(embeddings): restore multi-vector textual inversion expansion
transformers 5 defaults tokenizer.add_tokens() to normalized=True, so the CLIP
tokenizer lowercases added embedding names. tokenizer.tokenize() then returns the
lowercased surface, maybe_convert_prompt never matches mixed-case names in
added_tokens_encoder, and multi-vector expansion is skipped. Every mixed-case
multi-vector embedding collapsed to its first vector and looked ignored.

Add embedding tokens as AddedToken(name, normalized=False) so they stay
case-sensitive and tokenize() surfaces them verbatim. Valid on transformers 4.x
and 5.x; convert_tokens_to_ids and encoding are unaffected.
2026-06-25 02:25:33 +01:00