feat: track missing models for LoRA loader workflow signatures

This commit is contained in:
Dariusz L
2026-07-29 15:53:26 +02:00
parent 8822bb0064
commit cb032c7c3d
2 changed files with 18 additions and 5 deletions
+16 -4
View File
@@ -2845,23 +2845,28 @@ test('Missing Models signature tracks LoRA Manager list membership changes', ()
test('workflow hash refresh ignores node movement and tracks model dependency changes', () => {
const getWorkflowSignature = eval(`(${extractMethod(workflowStateMethodsSource, 'getWorkflowSignature')})`);
const getMissingWorkflowSignature = eval(`(${extractMethod(workflowStateMethodsSource, 'getMissingWorkflowSignature')})`);
const getWorkflowSignatureData = eval(`(${extractMethod(workflowStateMethodsSource, 'getWorkflowSignatureData')})`);
const getWorkflowHashMetadataSignature = eval(`(${extractMethod(modelResolverSource, 'getWorkflowHashMetadataSignature')})`);
const scheduleWorkflowHashMetadataRefresh = eval(`(${extractMethod(modelResolverSource, 'scheduleWorkflowHashMetadataRefresh')})`);
const dialog = {
capabilities: { node_rules: {} },
getWorkflowSignature,
getMissingWorkflowSignature,
getWorkflowSignatureData,
};
const makeWorkflow = (modelName, position = [0, 0]) => ({
const makeWorkflow = (modelName, position = [0, 0], strength = 0.75) => ({
nodes: [{
id: 12,
type: 'CheckpointLoaderSimple',
type: 'LoraLoader',
pos: position,
size: [320, 120],
inputs: [{ name: 'ckpt_name', widget: { name: 'ckpt_name' } }],
inputs: [
{ name: 'lora_name', widget: { name: 'lora_name' } },
{ name: 'strength_model', widget: { name: 'strength_model' } },
],
outputs: [{ name: 'MODEL', type: 'MODEL', links: [] }],
widgets_values: [modelName],
widgets_values: [modelName, strength],
}],
links: [],
definitions: {
@@ -2909,6 +2914,13 @@ test('workflow hash refresh ignores node movement and tracks model dependency ch
assert.equal(resolver.armCalls, 0);
assert.equal(resolver.workflowHashMetadataRefreshPending, false);
scheduleWorkflowHashMetadataRefresh.call(
resolver,
makeWorkflow('model-a.safetensors', [800, 450], 1.25)
);
assert.equal(resolver.armCalls, 0);
assert.equal(resolver.workflowHashMetadataRefreshPending, false);
scheduleWorkflowHashMetadataRefresh.call(
resolver,
makeWorkflow('model-b.safetensors', [800, 450])
+2 -1
View File
@@ -1262,7 +1262,8 @@ export class ModelResolver {
getWorkflowHashMetadataSignature(workflow) {
if (!workflow || typeof workflow !== 'object') return '';
const dependencySignature = this.dialog?.getWorkflowSignature?.(workflow);
const dependencySignature = this.dialog?.getMissingWorkflowSignature?.(workflow)
|| this.dialog?.getWorkflowSignature?.(workflow);
if (dependencySignature) return dependencySignature;
const normalizeNode = (node = {}) => ({