Files
Azornes-Comfyui-Model-Resolver/web/resolver.js
T
Dariusz L 67a0fc27e7 feat: add callback-driven LoRA widget handling for Loaded Models refresh
- Configure callback-driven model widgets for LoRA Manager, LoraLoaderV2,
  Lora Stacker, and Power Lora Loader nodes in graph and loaded graph hooks
- Track callback-driven widget states to trigger context analysis and
  dialog refresh when LoRA lists or strengths change via widget callbacks
- Add signature helpers for callback-driven model list and strength changes,
  including Power Lora Loader dynamic lora_N widgets
- Extend Loaded Models tab with model DOM keys, identity normalization,
  copy-value updates with active/inactive grouping, and targeted strength
  updates from node widgets without full re-render
- Add tests verifying callback-driven refresh behavior, suppression respect,
  Power Lora Loader strength chip updates, and LoRA Manager list membership
  signature tracking
2026-07-28 14:23:11 +02:00

52 lines
1.7 KiB
JavaScript

/**
* ComfyUI Model Resolver Extension - Frontend
*
* Provides a menu button and dialog interface for relinking missing models in workflows.
*/
import { app } from "../../../scripts/app.js";
import {
MODEL_RESOLVER_OPEN_COMMAND_ID,
MODEL_RESOLVER_OPEN_DEFAULT_KEYBINDING,
ModelResolver as ModelResolverClass,
} from "./resolver/model_resolver.js";
import { registerGlobalHelpers } from "./resolver/globals.js";
registerGlobalHelpers();
const modelResolver = new ModelResolverClass();
app.registerExtension({
name: "Model Resolver",
commands: [
{
id: MODEL_RESOLVER_OPEN_COMMAND_ID,
label: "Open Model Resolver",
function: () => modelResolver.activateResolverButton(),
},
],
keybindings: [
MODEL_RESOLVER_OPEN_DEFAULT_KEYBINDING,
],
setup: modelResolver.setup,
beforeRegisterNodeDef(nodeType, nodeData) {
modelResolver.configureWorkflowDependencyMarkerNodeType(nodeType, nodeData);
modelResolver.configureNodeContextMenu(nodeType);
},
nodeCreated(node) {
modelResolver.configureWorkflowDependencyMarkerNode(node);
modelResolver.configureCallbackDrivenModelWidgets(node);
modelResolver.scheduleNodeContextMenuAnalysis();
},
loadedGraphNode(node) {
modelResolver.configureWorkflowDependencyMarkerNode(node);
modelResolver.configureCallbackDrivenModelWidgets(node);
modelResolver.scheduleNodeContextMenuAnalysis();
},
afterConfigureGraph() {
modelResolver.configureWorkflowDependencyMarkerNodes();
modelResolver.checkAndOpenForMissingModels();
modelResolver.scheduleNodeContextMenuAnalysis(500);
},
});