ComfyUI/comfy_extras
Jedrzej Kosinski c120eee5ba
Add MatchType, DynamicCombo, and Autogrow support to V3 Schema (#10832)
* Added output_matchtypes to generated json for v3, initial backend support for MatchType, created nodes_logic.py and added SwitchNode

* Fixed providing list of allowed_types

* Add workaround in validation.py for V3 Combo outputs not working as Combo inputs

* Make match type receive_type pass validation

* Also add MatchType check to input_type in validation - will likely trigger when connecting to non-lazy stuff

* Make sure this PR only has MatchType stuff

* Initial work on DynamicCombo

* Add get_dynamic function, not yet filled out correctly

* Mark Switch node as Beta

* Make sure other unfinished dynamic types are not accidentally used

* Send DynamicCombo.Option inputs in the same format as normal v1 inputs

* add dynamic combo test node

* Support validation of inputs and outputs

* Add missing input params to DynamicCombo.Input

* Add get_all function to inputs for id validation purposes

* Fix imports for v3 returning everything when doing io/ui/IO/UI instead of what is in __all__ of _io.py and _ui.py

* Modifying behavior of get_dynamic in V3 + serialization so can be used in execution code

* Fix v3 schema validation code after changes

* Refactor hidden_values for v3 in execution.py to be more general v3_data, add helper functions for dynamic behavior, preparing for restructuring dynamic type into object (not finished yet)

* Add nesting of inputs on DynamicCombo during execution

* Work with latest frontend commits

* Fix cringe arrows

* frontend will no longer namespace dynamic inputs widgets so reflect that in code, refactor build_nested_inputs

* Prepare Autogrow support for the love of the game

* satisfy ruff

* Create test nodes for Autogrow to collab with frontend development

* Add nested combo to DCTestNode

* Remove array support from build_nested_inputs, properly handle missing expected values

* Make execution.validate_inputs properly validate required dynamic inputs, renamed dynamic_data to dynamic_paths for clarity

* MatchType does not need any DynamicInput/Output features on backend; will increase compatibility with  dynamic types

* Probably need this for ruff check

* Change MatchType to have template be the first and only required param; output id's do nothing right now, so no need

* Fix merge regression with LatentUpscaleModel type not being put in __all__ for _io.py, fix invalid type hint for validate_inputs

* Make Switch node inputs optional, disallow both inputs from being missing, and still work properly with lazy; when one input is missing, use the other no matter what the switch is set to

* Satisfy ruff

* Move MatchType code above the types that inherit from DynamicInput

* Add DynamicSlot type, awaiting frontend support

* Make curr_prefix creation happen in Autogrow, move curr_prefix in DynamicCombo to only be created if input exists in live_inputs

* I was confused, fixing accidentally redundant curr_prefix addition in Autogrow

* Make sure Autogrow inputs are force_input = True when WidgetInput, fix runtime validation by removing original input from expected inputs, fix min/max bounds, change test nodes slightly

* Remove unnecessary id usage in Autogrow test node outputs

* Commented out Switch node + test nodes

* Remove commented out code from Autogrow

* Make TemplatePrefix max more clear, allow max == 1

* Replace all dict[str] with dict[str, Any]

* Renamed add_to_dict_live_inputs to expand_schema_for_dynamic

* Fixed typo in DynamicSlot input code

* note about live_inputs not being present soon in get_v1_info (internal function anyway)

* For now, hide DynamicCombo and Autogrow from public interface

* Removed comment
2025-12-03 00:17:13 -05:00
..
chainner_models
nodes_ace.py
nodes_advanced_samplers.py
nodes_align_your_steps.py
nodes_apg.py
nodes_attention_multiply.py
nodes_audio_encoder.py convert nodes_audio_encoder.py to V3 schema (#10123) 2025-09-30 23:00:22 -07:00
nodes_audio.py Fix save audio nodes saving mono audio as stereo. (#10289) 2025-10-10 17:33:51 -04:00
nodes_camera_trajectory.py
nodes_canny.py
nodes_cfg.py
nodes_chroma_radiance.py
nodes_clip_sdxl.py
nodes_compositing.py convert nodes_compositing.py to V3 schema (#10174) 2025-10-08 23:13:15 -07:00
nodes_cond.py
nodes_context_windows.py
nodes_controlnet.py convert nodes_controlnet.py to V3 schema (#10202) 2025-10-17 14:13:05 -07:00
nodes_cosmos.py
nodes_custom_sampler.py convert nodes_customer_sampler.py to V3 schema (#10206) 2025-11-26 14:55:31 -08:00
nodes_dataset.py Make lora training work on Z Image and remove some redundant nodes. (#10927) 2025-11-26 19:25:32 -05:00
nodes_differential_diffusion.py convert nodes_differential_diffusion.py to V3 schema (#10056) 2025-10-01 12:17:33 -07:00
nodes_easycache.py EasyCache: Fix for mismatch in input/output channels with some models (#10788) 2025-11-18 07:00:21 -08:00
nodes_edit_model.py convert nodes_edit_model.py to V3 schema (#10147) 2025-10-03 13:24:42 -07:00
nodes_eps.py Add TemporalScoreRescaling node (#10351) 2025-10-15 18:12:25 -04:00
nodes_flux.py Flux 2 (#10879) 2025-11-25 10:50:19 -05:00
nodes_freelunch.py
nodes_fresca.py
nodes_gits.py convert nodes_gits.py to V3 schema (#9949) 2025-10-01 12:16:59 -07:00
nodes_hidream.py
nodes_hooks.py
nodes_hunyuan3d.py convert hunyuan3d.py to V3 schema (#10664) 2025-11-19 14:49:01 -08:00
nodes_hunyuan.py Add display names to Hunyuan latent video nodes. (#10837) 2025-11-22 22:51:53 -05:00
nodes_hypernetwork.py convert nodes_hypernetwork.py to V3 schema (#10583) 2025-11-03 00:21:47 -08:00
nodes_hypertile.py
nodes_images.py
nodes_ip2p.py convert nodes_ip2p.pt to V3 schema (#10097) 2025-10-01 12:20:30 -07:00
nodes_latent.py convert nodes_latent.py to V3 schema (#10160) 2025-10-08 23:14:00 -07:00
nodes_load_3d.py Merge 3d animation node (#10025) 2025-11-26 14:58:27 -05:00
nodes_logic.py Add MatchType, DynamicCombo, and Autogrow support to V3 Schema (#10832) 2025-12-03 00:17:13 -05:00
nodes_lora_extract.py convert nodes_lora_extract.py to V3 schema (#10182) 2025-10-08 23:11:45 -07:00
nodes_lotus.py
nodes_lt.py Temp fix for LTXV custom nodes. (#10251) 2025-10-07 19:55:23 -04:00
nodes_lumina2.py
nodes_mahiro.py
nodes_mask.py
nodes_mochi.py
nodes_model_advanced.py
nodes_model_downscale.py convert nodes_model_downscale.py to V3 schema (#10199) 2025-10-08 23:10:23 -07:00
nodes_model_merging_model_specific.py
nodes_model_merging.py
nodes_model_patch.py Support Z Image alibaba pai fun controlnets. (#11062) 2025-12-02 21:38:31 -05:00
nodes_morphology.py convert nodes_morphology.py to V3 schema (#10159) 2025-10-02 13:53:00 -07:00
nodes_nop.py Native block swap custom nodes considered harmful. (#10783) 2025-11-18 00:26:44 -05:00
nodes_optimalsteps.py convert nodes_optimalsteps.py to V3 schema (#10074) 2025-10-01 12:18:04 -07:00
nodes_pag.py convert nodes_pag.py to V3 schema (#10080) 2025-10-01 12:18:49 -07:00
nodes_perpneg.py
nodes_photomaker.py
nodes_pixart.py
nodes_post_processing.py
nodes_preview_any.py change display name of PreviewAny node to "Preview as Text" (#10796) 2025-11-19 01:25:28 -08:00
nodes_primitive.py
nodes_qwen.py
nodes_rebatch.py
nodes_rope.py Add a ScaleROPE node. Currently only works on WAN models. (#10559) 2025-10-30 22:11:38 -04:00
nodes_sag.py
nodes_sd3.py convert nodes_sd3.py and nodes_slg.py to V3 schema (#10162) 2025-10-09 15:18:23 -07:00
nodes_sdupscale.py
nodes_slg.py convert nodes_sd3.py and nodes_slg.py to V3 schema (#10162) 2025-10-09 15:18:23 -07:00
nodes_stable3d.py convert nodes_stable3d.py to V3 schema (#10204) 2025-10-04 12:33:48 -07:00
nodes_stable_cascade.py
nodes_string.py
nodes_tcfg.py
nodes_tomesd.py convert nodes_tomesd.py to V3 schema (#10180) 2025-10-03 11:50:38 -07:00
nodes_torch_compile.py convert nodes_torch_compile.py to V3 schema (#10173) 2025-10-03 11:43:54 -07:00
nodes_train.py Dataset Processing Nodes and Improved LoRA Trainer Nodes with multi resolution supports. (#10708) 2025-11-26 19:18:08 -05:00
nodes_upscale_model.py convert nodes_upscale_model.py to V3 schema (#10149) 2025-10-09 16:08:40 -07:00
nodes_video_model.py
nodes_video.py add check for the format arg type in VideoFromComponents.save_to function (#11046) 2025-12-02 11:50:13 -08:00
nodes_wan.py
nodes_webcam.py