Jedrzej Kosinski
78e2071b31
Merge branch 'master' into feat/api-nodes/11labs-music
2026-02-19 22:04:15 -08:00
pythongosssss
96d6bd1a4a
Add GLSL shader node using PyOpenGL ( #12148 )
...
* adds support for executing simple glsl shaders
using moderngl package
* tidy
* Support multiple outputs
* Try fix build
* fix casing
* fix line endings
* convert to using PyOpenGL and glfw
* remove cpu support
* tidy
* add additional support for egl & osmesa backends
* fix ci
perf: only read required outputs
* add diagnostics, update mac initialization
* GLSL glueprints + node fixes (#12492 )
* Add image operation blueprints
* Add channels
* Add glow
* brightness/contrast
* hsb
* add glsl shader update system
* shader nit iteration
* add multipass for faster blur
* more fixes
* rebuild blueprints
* print -> logger
* Add edge preserving blur
* fix: move _initialized flag to end of GLContext.__init__
Prevents '_vao' attribute error when init fails partway through
and subsequent calls skip initialization due to early _initialized flag.
* update valid ranges
- threshold 0-100
- step 0+
* fix value ranges
* rebuild node to remove extra inputs
* Fix gamma step
* clamp saturation in colorize instead of wrapping
* Fix crash on 1x1 px images
* rework description
* remove unnecessary f
Co-authored-by: Jedrzej Kosinski <kosinkadink1@gmail.com >
Co-authored-by: Hunter Senft-Grupp <hunter@comfy.org >
2026-02-19 23:22:13 -05:00
comfyanonymous
5f2117528a
Force min length 1 when tokenizing for text generation. ( #12538 )
2026-02-19 22:57:44 -05:00
comfyanonymous
0301ccf745
Small cleanup and try to get qwen 3 work with the text gen. ( #12537 )
2026-02-19 22:42:28 -05:00
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
bigcat88
90d8ba5342
added price badge for ElevenLabsInstantVoiceClone node
2026-02-19 20:50:23 +02:00
Alexander Piskun
2687652530
fix(api-nodes): force Gemini to return uncompressed images ( #12516 )
2026-02-19 04:10:39 -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
bigcat88
37f3e97202
feat(api-nodes): add ElevenLabs API nodes
2026-02-18 12:28:01 +02:00
Alexander Piskun
239ddd3327
fix(api-nodes): add price badge for Rodin Gen-2 node ( #12512 )
2026-02-17 23:15:23 -08:00
Hunter
83dd65f23a
fix: use glob matching for Gemini image MIME types ( #12511 )
...
gemini-3-pro-image-preview nondeterministically returns image/jpeg
instead of image/png. get_image_from_response() hardcoded
get_parts_by_type(response, "image/png"), silently dropping JPEG
responses and falling back to torch.zeros (all-black output).
Add _mime_matches() helper using fnmatch for glob-style MIME matching.
Change get_image_from_response() to request "image/*" so any image
format returned by the API is correctly captured.
2026-02-18 00:03:54 -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
Comfy Org PR Bot
6c14f129af
Bump comfyui-frontend-package to 1.39.14 ( #12494 )
...
* Bump comfyui-frontend-package to 1.39.13
* Update requirements.txt
---------
Co-authored-by: Christian Byrne <cbyrne@comfy.org >
2026-02-17 13:41:34 -08:00
rattus
58dcc97dcf
ops: limit return of requants ( #12506 )
...
This check was far too broad and the dtype is not a reliable indicator
of wanting the requant (as QT returns the compute dtype as the dtype).
So explictly plumb whether fp8mm wants the requant or not.
2026-02-17 15:32:27 -05:00
comfyanonymous
19236edfa4
ComfyUI v0.14.1
v0.14.1
2026-02-17 13:28:06 -05:00
ComfyUI Wiki
73c3f86973
chore: update workflow templates to v0.8.43 ( #12507 )
2026-02-17 13:25:55 -05:00
Alexander Piskun
262abf437b
feat(api-nodes): add Recraft V4 nodes ( #12502 )
2026-02-17 13:25:44 -05:00
Alexander Piskun
5284e6bf69
feat(api-nodes): add "viduq3-turbo" model and Vidu3StartEnd node; fix the price badges ( #12482 )
2026-02-17 10:07:14 -08:00
chaObserv
44f8598521
Fix anima LLM adapter forward when manual cast ( #12504 )
2026-02-17 07:56:44 -08:00
comfyanonymous
fe52843fe5
ComfyUI v0.14.0
v0.14.0
2026-02-17 00:39:54 -05:00
comfyanonymous
c39653163d
Fix anima preprocess text embeds not using right inference dtype. ( #12501 )
2026-02-17 00:29:20 -05: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
Jedrzej Kosinski
8a6fbc2dc2
Allow control_after_generate to be type ControlAfterGenerate in v3 schema ( #12187 )
2026-02-16 22:20:21 -05:00
Alex Butler
b44fc4c589
add venv* to gitignore ( #12431 )
2026-02-16 22:16:19 -05:00
comfyanonymous
4454fab7f0
Remove code to support RMSNorm on old pytorch. ( #12499 )
2026-02-16 20:09:24 -05:00
ComfyUI Wiki
1978f59ffd
chore: update workflow templates to v0.8.42 ( #12491 )
2026-02-16 17:33:43 -05:00
comfyanonymous
88e6370527
Remove workaround for old pytorch. ( #12480 )
2026-02-15 20:43:53 -05:00
rattus
c0370044cd
MPDynamic: force load flux img_in weight (Fixes flux1 canny+depth lora crash) ( #12446 )
...
* lora: add weight shape calculations.
This lets the loader know if a lora will change the shape of a weight
so it can take appropriate action.
* MPDynamic: force load flux img_in weight
This weight is a bit special, in that the lora changes its geometry.
This is rather unique, not handled by existing estimate and doesn't
work for either offloading or dynamic_vram.
Fix for dynamic_vram as a special case. Ideally we can fully precalculate
these lora geometry changes at load time, but just get these models
working first.
2026-02-15 20:30:09 -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
Alexander Piskun
2c1d06a4e3
feat(api-nodes): add Bria RMBG nodes ( #12465 )
...
Co-authored-by: Jedrzej Kosinski <kosinkadink1@gmail.com >
2026-02-15 17:22:30 -08:00
Alexander Piskun
e2c71ceb00
feat(api-nodes-Tencent): add ModelTo3DUV, 3DTextureEdit, 3DParts nodes ( #12428 )
...
* feat(api-nodes-Tencent): add ModelTo3DUV, 3DTextureEdit, 3DParts nodes
* add image output to TencentModelTo3DUV node
* commented out two nodes
* added rate_limit check to other hunyuan3d nodes
2026-02-15 05:33:18 -08:00
Jedrzej Kosinski
596ed68691
Node Replacement API ( #12014 )
2026-02-15 02:12:30 -08:00
Alexander Piskun
ce4a1ab48d
chore(api-nodes): remove "gpt-4o" model ( #12467 )
2026-02-15 01:31:59 -08:00
comfyanonymous
e1ede29d82
Remove unsafe pickle loading code that was used on pytorch older than 2.4 ( #12473 )
...
ComfyUI hasn't started on pytorch 2.4 since last month.
2026-02-14 22:53:52 -05:00
Christian Byrne
df1e5e8514
Update frontend package to 1.38.14 ( #12469 )
2026-02-14 11:01:10 -08:00
krigeta
dc9822b7df
Add working Qwen 2512 ControlNet (Fun ControlNet) support ( #12359 )
2026-02-13 22:23:52 -05:00
comfyanonymous
712efb466b
Add left padding to LTXAV text encoder. ( #12456 )
2026-02-13 21:56:54 -05:00
comfyanonymous
726af73867
Fix some custom nodes. ( #12455 )
2026-02-13 20:21:10 -05:00
comfyanonymous
831351a29e
Support generating attention masks for left padded text encoders. ( #12454 )
2026-02-13 20:15:23 -05:00
comfyanonymous
e1add563f9
Use torch RMSNorm for flux models and refactor hunyuan video code. ( #12432 )
2026-02-13 15:35:13 -05:00
rattus
8902907d7a
dynamic_vram: Training fixes ( #12442 )
2026-02-13 15:29:37 -05:00
comfyanonymous
e03fe8b591
Update command to install AMD stable linux pytorch. ( #12437 )
2026-02-12 23:29:12 -05:00
rattus
ae79e33345
llama: use a more efficient rope implementation ( #12434 )
...
Get rid of the cat and unary negation and inplace add-cmul the two
halves of the rope. Precompute -sin once at the start of the model
rather than every transformer block.
This is slightly faster on both GPU and CPU bound setups.
2026-02-12 19:56:42 -05:00
rattus
117e214354
ModelPatcherDynamic: force load non leaf weights ( #12433 )
...
The current behaviour of the default ModelPatcher is to .to a model
only if its fully loaded, which is how random non-leaf weights get
loaded in non-LowVRAM conditions.
The however means they never get loaded in dynamic_vram. In the
dynamic_vram case, force load them to the GPU.
2026-02-12 19:51:50 -05:00
Alexander Piskun
4a93a62371
fix(api-nodes): add separate retry budget for 429 rate limit responses ( #12421 )
2026-02-12 01:38:51 -08:00
comfyanonymous
66c18522fb
Add a tip for common error. ( #12414 )
2026-02-11 22:12:16 -05:00
askmyteapot
e5ae670a40
Update ace15.py to allow min_p sampling ( #12373 )
2026-02-11 20:28:48 -05:00
rattus
3fe61cedda
model_patcher: guard against none model_dtype ( #12410 )
...
Handle the case where the _model_dtype exists but is none with the
intended fallback.
2026-02-11 14:54:02 -05:00