Adds "Swap to LoRA AutoTuner" / "Swap to LoRA Optimizer" to the
right-click context menu. Transfers shared widget values, reconnects
all matching inputs/outputs by name, and removes the old node.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove slot name check for AutoTuner output connections (name
may differ from RETURN_NAMES in some frontends)
- Preserve node width when resizing after widget toggle
- Defer initial hide to after node layout is finalized
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
These widgets are only relevant when AutoTuner and Optimizer are
linked via tuner_data. Hidden by default, shown on connection,
reset to defaults on disconnect.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Single model line workflow: AutoTuner → Optimizer. Only one node
merges at a time — the other is passthrough. A JS bridge syncs
the two switches as opposites when tuner_data is connected.
LoRAOptimizer:
- Add settings_source (manual/from_autotuner) and tuner_data inputs
- New execute_node entry point: from_autotuner = passthrough with
widget sync via UI data, manual = normal merge
- Subclass safety: LoRAOptimizerSimple and WanVideoLoRAOptimizer
explicitly set FUNCTION="optimize_merge" to bypass bridge
LoRAAutoTuner:
- Add output_mode (merge/tuning_only): tuning_only skips final
merge and returns base model unchanged while still outputting
scored tuner_data for downstream use
- Fix pre-existing bug: two error paths returning 5-element tuples
instead of required 6
JS (new lora_optimizer_bridge.js):
- onExecuted: sync Optimizer widgets from applied_settings
- Opposing switch sync with recursion guard:
from_autotuner ↔ merge, manual ↔ tuning_only
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>