Keep the three published latent node keys loadable

Load Latent MXD, Load Latent Batch MXD and Save Latent MXD kept their display
names through the VACE/I2V consolidation but changed mapping key
(LoadLatent_WithParams -> LoadLatent_I2V_MXD, and so on). ComfyUI matches saved
workflows by key, so on the next release a workflow built against the published
version would show a red missing-node box despite a node of the same name
shipping in the pack.

Registers the three old keys as thin DEPRECATED subclasses of the current
classes. Deprecated nodes are kept out of the frontend search menu, and the
aliases get no display name, so old workflows load silently without adding
duplicate entries to node search.

65 registered keys now = 62 real nodes + 3 hidden aliases. Re-baselined.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Maxed-Out-99
2026-08-08 05:58:03 -07:00
co-authored by Claude Opus 5
parent 08d6c98cfe
commit 0836bfd573
2 changed files with 201 additions and 1 deletions
+164 -1
View File
@@ -1,5 +1,5 @@
{
"node_count": 62,
"node_count": 65,
"nodes": {
"BboxDetectorCombinedBatchMXD": {
"category": "MXD/Detector",
@@ -1327,6 +1327,65 @@
"MXD_LATENT_PIPE"
]
},
"LoadLatent_WithParams": {
"category": "MXD/Latents",
"class": "LoadLatent_WithParams",
"display_name": null,
"function": "load",
"input_types": {
"required": {
"latent": {
"type": {
"combo": "empty",
"dynamic": true
}
},
"refresh_before_run": {
"config": {
"default": false,
"tooltip": "When run_folder is on, re-scan the latents folder for new files right before the queuing loop starts, instead of using the dropdown list as of whenever it was last populated. Use this when another workflow is still writing latents into this folder as you queue this one."
},
"type": "BOOLEAN"
},
"run_folder": {
"config": {
"default": false,
"tooltip": "When enabled, hitting Queue Prompt auto-queues every latent in this file's folder, one after another, instead of just the selected file."
},
"type": "BOOLEAN"
}
}
},
"output_node": false,
"return_names": [
"shift",
"positive",
"negative",
"samples",
"steps",
"cfg",
"sampler_name",
"scheduler",
"end_at_step",
"filename_prefix",
"trim_latent",
"high_workflow"
],
"return_types": [
"FLOAT",
"CONDITIONING",
"CONDITIONING",
"LATENT",
"INT",
"FLOAT",
"['euler', 'euler_cfg_pp', 'euler_ancestral', 'euler_ancestral_cfg_pp', 'heun', 'heunpp2', 'exp_heun_2_x0', 'exp_heun_2_x0_sde', 'dpm_2', 'dpm_2_ancestral', 'lms', 'dpm_fast', 'dpm_adaptive', 'dpmpp_2s_ancestral', 'dpmpp_2s_ancestral_cfg_pp', 'dpmpp_sde', 'dpmpp_sde_gpu', 'dpmpp_2m', 'dpmpp_2m_cfg_pp', 'dpmpp_2m_sde', 'dpmpp_2m_sde_gpu', 'dpmpp_2m_sde_heun', 'dpmpp_2m_sde_heun_gpu', 'dpmpp_3m_sde', 'dpmpp_3m_sde_gpu', 'ddpm', 'lcm', 'ipndm', 'ipndm_v', 'deis', 'res_multistep', 'res_multistep_cfg_pp', 'res_multistep_ancestral', 'res_multistep_ancestral_cfg_pp', 'gradient_estimation', 'gradient_estimation_cfg_pp', 'er_sde', 'seeds_2', 'seeds_3', 'sa_solver', 'sa_solver_pece', 'ddim', 'uni_pc', 'uni_pc_bh2']",
"['simple', 'sgm_uniform', 'karras', 'exponential', 'ddim_uniform', 'beta', 'normal', 'linear_quadratic', 'kl_optimal']",
"INT",
"STRING",
"INT",
"STRING"
]
},
"LoadLatents_FromFolder_I2V_MXD": {
"category": "MXD/Latents",
"class": "LoadLatents_FromFolder_I2V_MXD",
@@ -1393,6 +1452,49 @@
"MXD_LATENT_PIPE"
]
},
"LoadLatents_FromFolder_WithParams": {
"category": "MXD/Latents",
"class": "LoadLatents_FromFolder_WithParams",
"display_name": null,
"function": "load_batch_i2v",
"input_types": {
"required": {
"subfolder": {
"type": {
"combo": "nonempty",
"dynamic": true
}
}
}
},
"output_node": false,
"return_names": [
"shift",
"positive",
"negative",
"samples",
"steps",
"cfg",
"sampler_name",
"scheduler",
"end_at_step",
"filename_prefix",
"trim_latent"
],
"return_types": [
"FLOAT",
"CONDITIONING",
"CONDITIONING",
"LATENT",
"INT",
"FLOAT",
"['euler', 'euler_cfg_pp', 'euler_ancestral', 'euler_ancestral_cfg_pp', 'heun', 'heunpp2', 'exp_heun_2_x0', 'exp_heun_2_x0_sde', 'dpm_2', 'dpm_2_ancestral', 'lms', 'dpm_fast', 'dpm_adaptive', 'dpmpp_2s_ancestral', 'dpmpp_2s_ancestral_cfg_pp', 'dpmpp_sde', 'dpmpp_sde_gpu', 'dpmpp_2m', 'dpmpp_2m_cfg_pp', 'dpmpp_2m_sde', 'dpmpp_2m_sde_gpu', 'dpmpp_2m_sde_heun', 'dpmpp_2m_sde_heun_gpu', 'dpmpp_3m_sde', 'dpmpp_3m_sde_gpu', 'ddpm', 'lcm', 'ipndm', 'ipndm_v', 'deis', 'res_multistep', 'res_multistep_cfg_pp', 'res_multistep_ancestral', 'res_multistep_ancestral_cfg_pp', 'gradient_estimation', 'gradient_estimation_cfg_pp', 'er_sde', 'seeds_2', 'seeds_3', 'sa_solver', 'sa_solver_pece', 'ddim', 'uni_pc', 'uni_pc_bh2']",
"['simple', 'sgm_uniform', 'karras', 'exponential', 'ddim_uniform', 'beta', 'normal', 'linear_quadratic', 'kl_optimal']",
"INT",
"STRING",
"INT"
]
},
"LoadVideoFromFolderMXD": {
"category": "MXD/Video",
"class": "LoadVideoFromFolderMXD",
@@ -2076,6 +2178,67 @@
"STRING"
]
},
"SaveLatentMXD": {
"category": "MXD/Latents",
"class": "SaveLatentMXD",
"display_name": null,
"function": "save_only",
"input_types": {
"hidden": {
"extra_pnginfo": {
"type": "EXTRA_PNGINFO"
},
"prompt": {
"type": "PROMPT"
},
"unique_id": {
"type": "UNIQUE_ID"
}
},
"optional": {
"trim_latent": {
"config": {
"default": 0,
"max": 10000,
"min": 0,
"step": 1,
"tooltip": "VACE 2.2 trim_latent value to preserve with this latent. Usually 0 or 1. Ignored for t2v/i2v."
},
"type": "INT"
}
},
"required": {
"filename_prefix": {
"config": {
"default": "ComfyUI",
"tooltip": "Prefix for saved files"
},
"type": "STRING"
},
"negative": {
"config": {
"tooltip": "Negative CONDITIONING to save alongside the latent."
},
"type": "CONDITIONING"
},
"positive": {
"config": {
"tooltip": "Positive CONDITIONING to save alongside the latent."
},
"type": "CONDITIONING"
},
"samples": {
"config": {
"tooltip": "Latent to save."
},
"type": "LATENT"
}
}
},
"output_node": true,
"return_names": null,
"return_types": []
},
"SaveLatent_I2V_MXD": {
"category": "MXD/Latents",
"class": "SaveLatent_I2V_MXD",