Christian Byrne
4d172e9ad7
feat: mark 429 widgets as advanced for collapsible UI ( #12197 )
...
* feat: mark 429 widgets as advanced for collapsible UI
Mark widgets as advanced across core, comfy_extras, and comfy_api_nodes
to support the new collapsible advanced inputs section in the frontend.
Changes:
- 267 advanced markers in comfy_extras/
- 162 advanced markers in comfy_api_nodes/
- All files pass python3 -m py_compile verification
Widgets marked advanced (hidden by default):
- Scheduler internals: sigma_max, sigma_min, rho, mu, beta, alpha
- Sampler internals: eta, s_noise, order, rtol, atol, h_init, pcoeff, etc.
- Memory optimization: tile_size, overlap, temporal_size, temporal_overlap
- Pipeline controls: add_noise, start_at_step, end_at_step
- Timing controls: start_percent, end_percent
- Layer selection: stop_at_clip_layer, layers, block_number
- Video encoding: codec, crf, format
- Device/dtype: device, noise_device, dtype, weight_dtype
Widgets kept basic (always visible):
- Core params: strength, steps, cfg, denoise, seed, width, height
- Model selectors: ckpt_name, lora_name, vae_name, sampler_name
- Common controls: upscale_method, crop, batch_size, fps, opacity
Related: frontend PR #11939
Amp-Thread-ID: https://ampcode.com/threads/T-019c1734-6b61-702e-b333-f02c399963fc
* fix: remove advanced=True from DynamicCombo.Input (unsupported)
Amp-Thread-ID: https://ampcode.com/threads/T-019c1734-6b61-702e-b333-f02c399963fc
* fix: address review - un-mark model merge, video, image, and training node widgets as advanced
Per comfyanonymous review:
- Model merge arguments should not be advanced (all 14 model-specific merge classes)
- SaveAnimatedWEBP lossless/quality/method should not be advanced
- SaveWEBM/SaveVideo codec/crf/format should not be advanced
- TrainLoraNode options should not be advanced (7 inputs)
Amp-Thread-ID: https://ampcode.com/threads/T-019c322b-a3a8-71b7-9962-d44573ca6352
* fix: un-mark batch_size and webcam width/height as advanced (should stay basic)
Amp-Thread-ID: https://ampcode.com/threads/T-019c3236-1417-74aa-82a3-bcb365fbe9d1
---------
Co-authored-by: Jedrzej Kosinski <kosinkadink1@gmail.com >
2026-02-19 19:20:02 -08:00
Yourz
5632b2df9d
feat: add essentials_category ( #12357 )
...
* feat: add essentials_category field to node schema
Amp-Thread-ID: https://ampcode.com/threads/T-019c2b25-cd90-7218-9071-03cb46b351b3
* feat: add ESSENTIALS_CATEGORY to core nodes
Marked nodes:
- Basic: LoadImage, SaveImage, LoadVideo, SaveVideo, Load3D, CLIPTextEncode
- Image Tools: ImageScale, ImageInvert, ImageBatch, ImageCrop, ImageRotate, ImageBlur
- Image Tools/Preprocessing: Canny
- Image Generation: LoraLoader
- Audio: LoadAudio, SaveAudio
Amp-Thread-ID: https://ampcode.com/threads/T-019c2b25-cd90-7218-9071-03cb46b351b3
* Add ESSENTIALS_CATEGORY to more nodes
- SaveGLB (Basic)
- GetVideoComponents (Video Tools)
- TencentTextToModelNode, TencentImageToModelNode (3D)
- RecraftRemoveBackgroundNode (Image Tools)
- KlingLipSyncAudioToVideoNode (Video Generation)
- OpenAIChatNode (Text Generation)
- StabilityTextToAudio (Audio)
Amp-Thread-ID: https://ampcode.com/threads/T-019c2b69-81c1-71c3-8096-450a39e20910
* fix: correct essentials category for Canny node
Amp-Thread-ID: https://ampcode.com/threads/T-019c7303-ab53-7341-be76-a5da1f7a657e
Co-authored-by: Amp <amp@ampcode.com >
* refactor: replace essentials_category string literals with constants
Amp-Thread-ID: https://ampcode.com/threads/T-019c7303-ab53-7341-be76-a5da1f7a657e
Co-authored-by: Amp <amp@ampcode.com >
* refactor: revert constants, use string literals for essentials_category
Amp-Thread-ID: https://ampcode.com/threads/T-019c7303-ab53-7341-be76-a5da1f7a657e
Co-authored-by: Amp <amp@ampcode.com >
* fix: update basics
---------
Co-authored-by: bymyself <cbyrne@comfy.org >
Co-authored-by: Amp <amp@ampcode.com >
Co-authored-by: Jedrzej Kosinski <kosinkadink1@gmail.com >
2026-02-19 19:00:26 -08:00
Jukka Seppänen
6d11cc7354
feat: Add basic text generation support with native models, initially supporting Gemma3 ( #12392 )
2026-02-18 20:49:43 -05:00
comfyanonymous
f262444dd4
Add simple 3 band equalizer node for audio. ( #12519 )
2026-02-18 18:36:35 -05:00
Terry Jia
8ad38d2073
BBox widget ( #11594 )
...
* Boundingbox widget
* code improve
---------
Co-authored-by: Jedrzej Kosinski <kosinkadink1@gmail.com >
Co-authored-by: Christian Byrne <cbyrne@comfy.org >
2026-02-17 17:13:39 -08:00
comfyanonymous
18927538a1
Implement NAG on all the models based on the Flux code. ( #12500 )
...
Use the Normalized Attention Guidance node.
Flux, Flux2, Klein, Chroma, Chroma radiance, Hunyuan Video, etc..
2026-02-16 23:30:34 -05:00
rattus
ecd2a19661
Fix lora Extraction in offload conditions (+ dynamic_vram mode) ( #12479 )
...
* lora_extract: Add a trange
If you bite off more than your GPU can chew, this kinda just hangs.
Give a rough indication of progress counting the weights in a trange.
* lora_extract: Support on-the-fly patching
Use the on-the-fly approach from the regular model saving logic for
lora extraction too. Switch off force_cast_weights accordingly.
This gets extraction working in dynamic vram while also supporting
extraction on GPU offloaded.
2026-02-15 20:28:51 -05:00
Jedrzej Kosinski
596ed68691
Node Replacement API ( #12014 )
2026-02-15 02:12:30 -08:00
rattus
8902907d7a
dynamic_vram: Training fixes ( #12442 )
2026-02-13 15:29:37 -05:00
askmyteapot
e5ae670a40
Update ace15.py to allow min_p sampling ( #12373 )
2026-02-11 20:28:48 -05:00
Kohaku-Blueleaf
cdcf4119b3
[Trainer] training with proper offloading ( #12189 )
...
* Fix bypass dtype/device moving
* Force offloading mode for training
* training context var
* offloading implementation in training node
* fix wrong input type
* Support bypass load lora model, correct adapter/offloading handling
2026-02-10 21:45:19 -05:00
AustinMroz
dbe70b6821
Add a VideoSlice node ( #12107 )
...
* Base TrimVideo implementation
* Raise error if as_trimmed call fails
* Bigger max start_time, tooltips, and formatting
* Count packets unless codec has subframes
* Remove incorrect nested decode
* Add null check for audio streams
* Support non-strict duration
* Added strict_duration bool to node definition
* Empty commit for approval
* Fix duration
* Support 5.1 audio layout on save
---------
Co-authored-by: Jedrzej Kosinski <kosinkadink1@gmail.com >
2026-02-10 14:42:21 -08:00
comfyanonymous
a0302cc6a8
Make tonemap latent work on any dim latents. ( #12363 )
2026-02-08 21:16:40 -05:00
chaObserv
9bf5aa54db
Add search_aliases to sa-solver and seeds-2 node ( #12327 )
2026-02-07 17:38:51 -05:00
Jukka Seppänen
5ff4fdedba
Fix LazyCache ( #12344 )
2026-02-07 11:25:30 -08:00
Jukka Seppänen
a1c101f861
EasyCache: Support LTX2 ( #12231 )
2026-02-06 00:43:09 -05:00
AustinMroz
2b70ab9ad0
Add a Create List node ( #12173 )
2026-02-05 01:18:21 -05:00
comfyanonymous
35183543e0
Add VAE tiled decode node for audio. ( #12299 )
2026-02-05 01:12:04 -05:00
comfyanonymous
6125b80979
Add llm sampling options and make reference audio work on ace step 1.5 ( #12295 )
2026-02-04 21:29:22 -05:00
Alexander Piskun
e77b34dfea
add File3DAny output to Load3D node; extend SaveGLB to accept File3DAny as input ( #12276 )
...
* add File3DAny output to Load3D node; extend SaveGLB node to accept File3DAny as input
* fix(grammar): capitalize letter
2026-02-04 11:35:38 -08:00
Alexander Piskun
fb23935c11
feat(comfy_api): add basic 3D Model file types ( #12129 )
...
* feat(comfy_api): add basic 3D Model file types
* update Tripo nodes to use File3DGLB
* update Rodin3D nodes to use File3DGLB
* address PR review feedback:
- Rename File3D parameter 'path' to 'source'
- Convert File3D.data property to get_data()
- Make .glb extension check case-insensitive in nodes_rodin.py
- Restrict SaveGLB node to only accept File3DGLB
* Fixed a bug in the Meshy Rig and Animation nodes
* Fix backward compatability
2026-02-03 10:31:46 -08:00
comfyanonymous
3c1a1a2df8
Basic support for the ace step 1.5 model. ( #12237 )
2026-02-03 00:06:18 -05:00
rattus
f8acd9c402
Reduce RAM usage, fix VRAM OOMs, and fix Windows shared memory spilling with adaptive model loading ( #11845 )
2026-02-01 01:01:11 -05:00
pythongosssss
8aabe2403e
Add color type and Color to RGB Int node ( #12145 )
...
* add color type and color to rgb int node
* review fix for allowing output
---------
Co-authored-by: Jedrzej Kosinski <kosinkadink1@gmail.com >
2026-01-30 15:01:33 -08:00
comfyanonymous
bbe2c13a70
Make empty hunyuan latent 1.0 work with the 1.5 model. ( #12171 )
2026-01-29 23:52:22 -05:00
Jukka Seppänen
ad53e78f11
Fix Noise_EmptyNoise when using nested latents ( #12089 )
2026-01-26 19:25:00 -05:00
Tavi Halperin
bfe31d0b9d
IC-LoRA: support small grid ( #12074 )
2026-01-26 15:33:19 -05:00
comfyanonymous
26c5bbb875
Move nodes from previous PR into their own file. ( #12066 )
2026-01-24 23:02:32 -05:00
Kohaku-Blueleaf
a97c98068f
[Weight-adapter/Trainer] Bypass forward mode in Weight adapter system ( #11958 )
...
* Add API of bypass forward module
* bypass implementation
* add bypass fwd into nodes list/trainer
2026-01-24 22:56:22 -05:00
pythongosssss
ed6002cb60
add support for kwargs inputs to allow arbitrary inputs from frontend ( #12063 )
...
used to output selected combo index
Co-authored-by: Jedrzej Kosinski <kosinkadink1@gmail.com >
2026-01-24 17:30:40 -08:00
comfyanonymous
9cf299a9f9
Make regular empty latent node work properly on flux 2 variants. ( #12050 )
2026-01-23 19:50:48 -05:00
Christian Byrne
79cdbc81cb
feat: Improve ResizeImageMaskNode UX with tooltips and search aliases ( #12040 )
...
- Add search_aliases for discoverability: resize, scale, dimensions, etc.
- Add node description for hover tooltip
- Add tooltips to all inputs explaining their behavior
- Reorder options: most common (scale dimensions) first, most technical (scale to multiple) last
Addresses user feedback that 'resize' search returned nothing useful and
options like 'match size' and 'scale to multiple' were not self-explanatory.
2026-01-22 22:04:27 -08:00
comfyanonymous
f443b9f2ca
Revert "feat: Improve ResizeImageMaskNode UX with tooltips and search aliases…" ( #12038 )
...
This reverts commit 4e3038114a .
2026-01-22 23:02:37 -05:00
Christian Byrne
4e3038114a
feat: Improve ResizeImageMaskNode UX with tooltips and search aliases ( #12013 )
...
- Add search_aliases for discoverability: resize, scale, dimensions, etc.
- Add node description for hover tooltip
- Add tooltips to all inputs explaining their behavior
- Reorder options: most common (scale dimensions) first, most technical (scale to multiple) last
Addresses user feedback that 'resize' search returned nothing useful and
options like 'match size' and 'scale to multiple' were not self-explanatory.
2026-01-22 18:46:55 -08:00
Christian Byrne
bbb8864778
add search aliases to all nodes ( #12035 )
...
* feat: Add search_aliases field to node schema
Adds `search_aliases` field to improve node discoverability. Users can define alternative search terms for nodes (e.g., "text concat" → StringConcatenate).
Changes:
- Add `search_aliases: list[str]` to V3 Schema
- Add `SEARCH_ALIASES` support for V1 nodes
- Include field in `/object_info` response
- Add aliases to high-priority core nodes
V1 usage:
```python
class MyNode:
SEARCH_ALIASES = ["alt name", "synonym"]
```
V3 usage:
```python
io.Schema(
node_id="MyNode",
search_aliases=["alt name", "synonym"],
...
)
```
## Related PRs
- Frontend: Comfy-Org/ComfyUI_frontend#XXXX (draft - merge after this)
- Docs: Comfy-Org/docs#XXXX (draft - merge after stable)
* Propagate search_aliases through V3 Schema.get_v1_info to NodeInfoV1
* feat: add SEARCH_ALIASES for core nodes (#12016 )
Add search aliases to 22 core nodes in nodes.py to improve node discoverability:
- Checkpoint/model loaders: CheckpointLoader, DiffusersLoader
- Conditioning nodes: ConditioningAverage, ConditioningSetArea, ConditioningSetMask, ConditioningZeroOut
- Style nodes: StyleModelApply
- Image nodes: LoadImageMask, LoadImageOutput, ImageBatch, ImageInvert, ImagePadForOutpaint
- Latent nodes: LoadLatent, SaveLatent, LatentBlend, LatentComposite, LatentCrop, LatentFlip, LatentFromBatch, LatentUpscale, LatentUpscaleBy, RepeatLatentBatch
* feat: add SEARCH_ALIASES for image, mask, and string nodes (#12017 )
Add search aliases to nodes in comfy_extras for better discoverability:
- nodes_mask.py: mask manipulation nodes
- nodes_images.py: image processing nodes
- nodes_post_processing.py: post-processing effect nodes
- nodes_string.py: string manipulation nodes
- nodes_compositing.py: compositing nodes
- nodes_morphology.py: morphological operation nodes
- nodes_latent.py: latent space nodes
Uses search_aliases parameter in io.Schema() for v3 nodes.
* feat: add SEARCH_ALIASES for audio and video nodes (#12018 )
Add search aliases to audio and video nodes for better discoverability:
- nodes_audio.py: audio loading, saving, and processing nodes
- nodes_video.py: video loading and processing nodes
- nodes_wan.py: WAN model nodes
Uses search_aliases parameter in io.Schema() for v3 nodes.
* feat: add SEARCH_ALIASES for model and misc nodes (#12019 )
Add search aliases to model-related and miscellaneous nodes:
- Model nodes: nodes_model_merging.py, nodes_model_advanced.py, nodes_lora_extract.py
- Sampler nodes: nodes_custom_sampler.py, nodes_align_your_steps.py
- Control nodes: nodes_controlnet.py, nodes_attention_multiply.py, nodes_hooks.py
- Training nodes: nodes_train.py, nodes_dataset.py
- Utility nodes: nodes_logic.py, nodes_canny.py, nodes_differential_diffusion.py
- Architecture-specific: nodes_sd3.py, nodes_pixart.py, nodes_lumina2.py, nodes_kandinsky5.py, nodes_hidream.py, nodes_fresca.py, nodes_hunyuan3d.py
- Media nodes: nodes_load_3d.py, nodes_webcam.py, nodes_preview_any.py, nodes_wanmove.py
Uses search_aliases parameter in io.Schema() for v3 nodes, SEARCH_ALIASES class attribute for legacy nodes.
2026-01-22 18:36:58 -08:00
Terry Jia
8490eedadf
add ply & 3dgs format in 3d node ( #11474 )
2026-01-22 09:46:56 -08:00
Jukka Seppänen
16b9aabd52
Support Multi/InfiniteTalk ( #10179 )
...
* re-init
* Update model_multitalk.py
* whitespace...
* Update model_multitalk.py
* remove print
* this is redundant
* remove import
* Restore preview functionality
* Move block_idx to transformer_options
* Remove LoopingSamplerCustomAdvanced
* Remove looping functionality, keep extension functionality
* Update model_multitalk.py
* Handle ref_attn_mask with separate patch to avoid having to always return q and k from self_attn
* Chunk attention map calculation for multiple speakers to reduce peak VRAM usage
* Update model_multitalk.py
* Add ModelPatch type back
* Fix for latest upstream
* Use DynamicCombo for cleaner node
Basically just so that single_speaker mode hides mask inputs and 2nd audio input
* Update nodes_wan.py
2026-01-21 23:09:48 -05:00
Jedrzej Kosinski
f09904720d
Fix for edge case of EasyCache when conditionings change during a sampling run (like with timestep scheduling) ( #12020 )
2026-01-21 23:01:35 -05:00
Christian Byrne
bdeac8897e
feat: Add search_aliases field to node schema ( #12010 )
...
* feat: Add search_aliases field to node schema
Adds `search_aliases` field to improve node discoverability. Users can define alternative search terms for nodes (e.g., "text concat" → StringConcatenate).
Changes:
- Add `search_aliases: list[str]` to V3 Schema
- Add `SEARCH_ALIASES` support for V1 nodes
- Include field in `/object_info` response
- Add aliases to high-priority core nodes
V1 usage:
```python
class MyNode:
SEARCH_ALIASES = ["alt name", "synonym"]
```
V3 usage:
```python
io.Schema(
node_id="MyNode",
search_aliases=["alt name", "synonym"],
...
)
```
## Related PRs
- Frontend: Comfy-Org/ComfyUI_frontend#XXXX (draft - merge after this)
- Docs: Comfy-Org/docs#XXXX (draft - merge after stable)
* Propagate search_aliases through V3 Schema.get_v1_info to NodeInfoV1
2026-01-21 15:36:02 -08:00
comfyanonymous
2108167f9f
Support zimage omni base model. ( #11979 )
2026-01-19 23:17:38 -05:00
nomadoor
c9196f355e
Fix scale_shorter_dimension portrait check ( #11862 )
2026-01-13 18:25:09 -08:00
nomadoor
469dd9c16a
Adds crop to multiple mode to ResizeImageMaskNode. ( #11838 )
...
* Add crop-to-multiple resize mode
* Make scale-to-multiple shape handling explicit
2026-01-13 16:48:10 -08:00
Acly
d9dc02a7d6
Support "lite" version of alibaba-pai Z-Image Controlnet ( #11849 )
...
* reduced number of control layers (3) compared to full model
2026-01-13 15:03:53 -05:00
Terry Jia
4609fcd260
add node - image compare ( #11343 )
2026-01-08 21:31:19 -08:00
Jukka Seppänen
027042db68
Add node: JoinAudioChannels ( #11728 )
2026-01-08 22:14:06 -05:00
Jukka Seppänen
1c705f7bfb
Add device selection for LTXAVTextEncoderLoader ( #11700 )
2026-01-07 18:39:59 -05:00
comfyanonymous
4f3f9e72a9
Fix name. ( #11638 )
2026-01-05 02:41:23 -08:00
comfyanonymous
d1b9822f74
Add LTXAVTextEncoderLoader node. ( #11634 )
2026-01-05 02:27:31 -05:00
comfyanonymous
f2b002372b
Support the LTXV 2 model. ( #11632 )
2026-01-05 01:58:59 -05:00
comfyanonymous
38d0493825
Fix case where upscale model wouldn't be moved to cpu. ( #11633 )
2026-01-04 19:13:50 -05:00