24 Commits
Author SHA1 Message Date
larsupbandClaude Opus 5 dad8a4a5ee Merge larsupb/main: samplers (2.3.0) + delta-space merge work (2.4.0)
larsupb/main carried the sampler rework, released and published to the Comfy
Registry as 2.3.0 on 2026-06-22. This branch had independently claimed 2.3.0
for the delta-space merge work, so that release is renumbered 2.4.0 and the
published 2.3.0 entry is kept intact below it in the changelog.

- README: both sides added a `## Changelog` at the same spot. Resolved by
  keeping the sampler entry as 2.3.0 and moving the merge work to 2.4.0.
- pyproject.toml / __init__.py -> 2.4.0.
- tests/conftest.py: mock comfy.sample and latent_preview, which the incoming
  sampler code imports. Without them collection failed for 6 test files --
  `comfy` is a MagicMock, not a package, so every submodule needs an explicit
  sys.modules entry.

Suite verified at 238 passed, both in-tree and from a copy outside the ComfyUI
tree where `import comfy` raises ModuleNotFoundError.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 11:54:20 +02:00
larsupbandClaude Opus 5 fe92e95f65 release: 2.3.0 with changelog
Bumps from 2.2.5, which was released on 2026-06-22; the 51 commits since are
unreleased. Minor rather than patch: a removed node, three renamed widgets and
a flipped default all break saved workflows.

- pyproject.toml -> 2.3.0
- __init__.py version_code -> [2, 3, 0]. It still read [2, 2, 4] and so had
  been printing a stale version on node load since the 2.2.5 release.
- README: add a Changelog section covering the delta-space interpolation work,
  the VRAM/OOM fixes, the breaking UX changes and the test-suite overhaul.
  Correct the delta-space note, which was labelled v2.2.5 although that work
  landed after the 2.2.5 release.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 11:48:08 +02:00
larsupbandClaude Opus 4.8 bec8c3ec3d ux(nodes): remove redundant PM Linear node
In this delta-space pipeline Linear is identical to Task Arithmetic at
default settings (both: no trim, no sign consensus, weighted combine of
deltas). Linear only exposed fewer knobs, so it added menu clutter with
no distinct behavior. Removed the LinearMergeMethod node class and its
three registrations; updated the widget-name guard test.

The "linear" GTA mode itself is kept — it is still referenced by the
dispatcher, algorithms registry, mergekit_utils and the experimental
checkpoint merger. Only the user-facing node is gone.

Note: saved workflows using PM Linear will load it as an undefined node;
replace with PM Task Arithmetic (identical output at defaults).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 18:17:04 +02:00
larsupbandClaude Opus 4.8 ab00821e43 ux(nodes): clearer titles and tooltips for merge params
Display-only; no widget keys renamed, so saved workflows keep their
values (only visible titles/tooltips change).

- Drop the misleading "(Mergekit)" suffix from the GTA-family nodes
  (Merger, Della, TIES, DARE, Linear, Task Arithmetic, Breadcrumbs) --
  their UNet path runs our own gta.py now. Slerp/NuSlerp/NearSwap/SCE/
  KArcher keep the suffix (still genuinely mergekit).
- Fix dead display keys: "PM TIES"/"PM DARE" never matched the class
  keys "PM Ties"/"PM Dare", so those titles never applied.
- normalize tooltip now spells out the footgun: ON = weighted average
  (strengths as ratios, two 1.0 LoRAs -> ~50%), OFF = additive sum.
- ties tooltip explains the sign-consensus switch (vs the _linear variant).
- svd_rank tooltip leads with "-1 = auto".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 11:49:49 +02:00
larsupb aafda5c809 feat: PM Block Selector + model-specific block nodes (KREA2, FLUX.2-Klein)
Add per-block, per-LoRA weighting to the LoRA PowerMerge pipeline:
- PM Block Selector: bind a BlockDefinition to one LoRA by stack index;
  chain outputs to weight multiple LoRAs, feed into PM LoRA Stack Decompose.
- PM KREA 2 Blocks: model-specific block definition for KREA2 LoRAs
  (diffusion_model.blocks.N + txtfusion + txtmlp pathways).
- PM FLUX.2.Klein Blocks: block definition for FLUX.2-Klein LoRAs
  (double_blocks + single_blocks streams).

Implementation:
- src/blocks.py: pure logic (key normalization, weight-string parsing,
  category/pathway matching, per-LoRA weight computation, up-factor scaling).
  Already existed, fully unit-tested in tests/test_blocks.py.
- src/nodes_block_selector.py: thin ComfyUI node wrappers around blocks.py.
- src/lora_decompose.py: optional BlockSelection input threads per-block
  weights through the decompose path; scales the up factor (linear delta
  scaling), weight 0 drops the LoRA from that key; cache-aware.
- tests/conftest.py: fix pytest_ignore_collect to exclude __init__.py and
  src/ from collection, enabling clean test isolation.

3 new nodes registered under LoRA PowerMerge.
2026-07-19 01:14:03 +02:00
larsupb 3614df9de6 remove arcee fusion method, add linf rescale norm, cleanups 2026-01-01 19:51:37 +01:00
larsupb e3e37a7056 fix spectral norm, remove normalization option from NearestSwap 2026-01-01 19:10:45 +01:00
larsupb 0ec0aa188a Bugfix enery_rSVD to handle target ranks > actual rank dim. 2025-12-26 19:06:48 +01:00
larsupb ed3724f4fb rework on clip treatment, spectral_norm_scale, validation routines 2025-12-26 11:36:25 +01:00
larsupb ffda0472db architecture awareness - add compatibility for wan, flux and qwen 2025-12-23 15:44:19 +01:00
larsupb ac642f9ebd Fix LoRA Resize node and update README 2025-12-23 10:38:13 +01:00
larsupb 4026118aa3 Update version 2025-12-22 01:47:41 +01:00
larsupb 037b6d8dd1 Remove Load LoRA node 2025-12-22 01:34:20 +01:00
larsupb 9f8e89608c full refactoring 2025-12-22 00:36:34 +01:00
larsupb 052f8e9125 new LoRA Power Stacker node, renaming of in-/ and output fields. bugfixes. 2025-12-21 09:02:03 +01:00
larsupb 6b6514ab50 Refactor package layout. Add decomposition methods. Fix lots of bugs. 2025-12-20 12:46:04 +01:00
larsupb ff7c2b171b wan 2.1 support and cleanups 2025-07-21 00:52:45 +02:00
larsupb c2174e5506 current work, with LoRAAnalyzer 2025-07-20 23:23:19 +02:00
larsupb 10e073a18d version update 2024-05-31 00:35:46 +02:00
larsupb 6323d4363c More XY Plot Inputs for mode and svg rank 2024-05-27 19:19:49 +02:00
larsupb ad36baa490 xy plot and renaming 2024-05-27 09:06:45 +02:00
larsupb 923c161779 Rework of LoRA Merger with new nodes (SVD Merger, SVD Resizer) and new methods for merging the weight tensors (dare, ties) 2024-05-26 22:35:08 +02:00
laksjdjf 1fd8d26740 Update __init__.py 2023-10-06 19:33:32 +09:00
laksjdjf 0a1ec4855a j 2023-10-06 18:35:02 +09:00