kosinkadink1@gmail.com
3aa2d19c70
Merge branch 'master' into v3-definition
2025-07-09 03:58:09 -05:00
kosinkadink1@gmail.com
cc68880914
Moved force_input arg to be before extra_dict to fix
2025-07-09 03:44:37 -05:00
kosinkadink1@gmail.com
904dc06451
Add force_input support to certain WidgetInputV3 inputs
2025-07-09 03:38:50 -05:00
kosinkadink1@gmail.com
56ccfeaa8a
Add fingerprint_inputs support (V3's IS_CHANGED)
2025-07-09 03:25:23 -05:00
kosinkadink1@gmail.com
82e6eeab75
Support validate_inputs for v3 replacing VALIDATE_INPUTS, support check_lazy_mix for v3, prep for renaming IS_CHANGED to fingerprint_inputs, reorder some class methods
2025-07-09 02:26:35 -05:00
kosinkadink1@gmail.com
936bf6b60f
Add metadata to image previews, add a finalize function on SchemaV3 to automatically add hidden values that are required by certain toggles on node definition
2025-07-09 01:09:18 -05:00
kosinkadink1@gmail.com
a86fddcdd4
Fixed MultiCombo, confirmed VALIDATE_INPUTS, IS_CHANGED works
2025-07-09 00:26:15 -05:00
Christian Byrne
9fd0cd7cf7
Add Moonvalley nodes ( #8832 )
2025-07-08 08:54:30 -04:00
Jedrzej Kosinski
18a7207ca4
Mock AutogrowDynamic type
2025-07-04 16:27:03 -05:00
Jedrzej Kosinski
3758c65107
Extracted resources to separate file
2025-06-28 16:46:45 -07:00
Jedrzej Kosinski
0e7ff98e1d
Introduced Resources to ComfyNodeV3
2025-06-28 15:47:02 -07:00
Jedrzej Kosinski
2999212480
Moved ui preview-related classes out of io.py and into ui.py, refactored UIImages and related into PreviewImage and related
2025-06-28 13:53:25 -07:00
Jedrzej Kosinski
1ae7e7a1e2
Updated some Conditioning docstrings
2025-06-28 11:37:03 -07:00
Jedrzej Kosinski
f4ece6731b
Replaced io_type with direct strings instead of using node_typing.py's IO class
2025-06-28 11:14:18 -07:00
Jedrzej Kosinski
0122bc43ea
Added missing type definitions to v3 (present in core code)
2025-06-28 10:55:24 -07:00
Jedrzej Kosinski
d0c077423a
Defined TypedDict hints for Latent, Conditioning, and Audio types
2025-06-27 16:57:55 -07:00
Jedrzej Kosinski
ba857bd8a0
Added simple Type defs to ComfyTypes in io.py
2025-06-27 14:56:31 -07:00
Jedrzej Kosinski
cef73c75fb
Fix recognizing ComfyNodeV3 class by using issubclass, removed override decorator as it was only introduced in py3.12
2025-06-27 14:00:20 -07:00
Jedrzej Kosinski
aefd845a21
Multitype refactor progress
2025-06-26 15:41:49 -07:00
Jedrzej Kosinski
6d64658c79
Added get_value and set_value to NodeState, small cleanup
2025-06-26 12:44:08 -07:00
Jedrzej Kosinski
b52154f382
Added initial schema validation
2025-06-19 04:54:49 -05:00
Jedrzej Kosinski
aac91caf1a
Added extra_dict to InputV3/WidgetInputV3 for custom node/widget expansion
2025-06-19 03:11:30 -05:00
Jedrzej Kosinski
002e16ac71
Added 'not_idempotent' support for SchemaV3
2025-06-19 02:53:35 -05:00
Jedrzej Kosinski
fe9a47ae50
Added V3 LoRA Loader node for test purposes, made NodeStateLocal more versatile with dict-like behavior and not throwing errors when nonexisting parameter is requested, returning None instead
2025-06-19 02:17:36 -05:00
Jedrzej Kosinski
ef3f45807f
Added multitype support for Widget Inputs via the types argument, MultiType.Input io_types renamed to types
2025-06-19 01:22:03 -05:00
Jedrzej Kosinski
11d87760ca
Renamed Hidden->HiddenHolder, HiddenEnum->Hidden for ease of usage, cls.hidden will only have values given for corresponding entries in the schema's hidden entry, fixed v3 node check in execution.get_input_data, some cleanup of whitespace and commented out code
2025-06-19 00:10:28 -05:00
Jedrzej Kosinski
f9aec12ef1
Refactored v3 code so that v3_01 becomes v3, v3_01 is deleted since no longer necessary
2025-06-18 23:29:32 -05:00
Jedrzej Kosinski
38721fdb64
Added hidden and state to passed-in clone of node class
2025-06-17 20:35:32 -05:00
Jedrzej Kosinski
1711e44e99
Added new Custom and ComfyTypeIO helpers, use ComfyTypeIO class to simplify defining basic types
2025-06-17 04:47:55 -05:00
kosinkadink1@gmail.com
54e0d6b161
Add comfytype decorator, convert all relevant v3_01 types to follow new convention, make v1 test node have xyz be optional
2025-06-13 04:06:06 -07:00
kosinkadink1@gmail.com
cf7312d82c
Small refactoring to make iterating on V3 schema faster without needing to edit execution.py code
2025-06-12 17:07:10 -07:00
kosinkadink1@gmail.com
6854864db9
Added some missing type defs, starting work on a revision (v3_01) to change formatting (need to change execution.py to recognize it as v3 as well)
2025-06-11 19:46:30 -07:00
kosinkadink1@gmail.com
2873aaf4db
Replaced 'behavior' with 'optional'; unlikely there will be anything other than 'required'/'optional' in the long run
2025-06-10 01:11:09 -07:00
kosinkadink1@gmail.com
70d2bbfec0
Try out adding Type class var to IO_V3 to help with type hints
2025-06-10 00:19:17 -07:00
Jedrzej Kosinski
2197b6cbf3
Renamed 'EXECUTE' class method to 'execute'
2025-06-05 16:42:51 -07:00
Jedrzej Kosinski
d79a3cf990
Changed execute instance method to EXECUTE class method, added countermeasures to avoid state leaks, ready ability to add extra params to clean class type clone
2025-06-05 04:12:44 -07:00
kosinkadink1@gmail.com
1fb1bad150
Some node changes to compare v1 and v3
2025-06-04 18:56:01 -07:00
Jedrzej Kosinski
f46dc03658
Add some missing options to ComboInput
2025-06-02 21:57:27 -07:00
Jedrzej Kosinski
0d185b721f
Created and handled NodeOutput class to be the return value of v3 nodes' execute function
2025-06-01 01:08:07 -07:00
kosinkadink1@gmail.com
de86d8e32b
Attempting to simplify node list definition in a python file via NODES_LIST
2025-05-31 15:24:37 -07:00
kosinkadink1@gmail.com
8b331c5ca2
Made proper None checks in V1 translation class properties for ComfyNodeV3
2025-05-31 04:14:01 -07:00
Jedrzej Kosinski
937d2d5325
Fixed 'display' serialization for Float/IntergerInput, some commented out code made during exploration
2025-05-31 04:00:03 -07:00
Jedrzej Kosinski
96c2e3856d
Add V3-to-V1 compatibility on early V3 node definition and node_info in server.py
2025-05-28 20:56:25 -07:00
Jedrzej Kosinski
880f756dc1
More progress on V3 definition
2025-05-27 15:02:17 -07:00
Jedrzej Kosinski
4480ed488e
Initial prototyping on v3 classes
2025-05-25 19:22:42 -07:00
Jedrzej Kosinski
65da29aaa9
Make torch.compile LoRA/key-compatible ( #8213 )
...
* Make torch compile node use wrapper instead of object_patch for the entire diffusion_models object, allowing key assotiations on diffusion_models to not break (loras, getting attributes, etc.)
* Moved torch compile code into comfy_api so it can be used by custom nodes with a degree of confidence
* Refactor set_torch_compile_wrapper to support a list of keys instead of just diffusion_model, as well as additional torch.compile args
* remove unused import
* Moved torch compile kwargs to be stored in model_options instead of attachments; attachments are more intended for things to be 'persisted', AKA not deepcopied
* Add some comments
* Remove random line of code, not sure how it got there
2025-05-21 04:56:56 -04:00
Christian Byrne
f1f9763b4c
Add get_duration
method to Comfy VIDEO type ( #8122 )
...
* get duration from VIDEO type
* video get_duration unit test
* fix Windows unit test: can't delete opened temp file
2025-05-15 00:11:41 -04:00
Christian Byrne
3e62c5513a
make audio chunks contiguous before encoding ( #7942 )
2025-05-04 23:27:23 -04:00
Christian Byrne
cd18582578
Support saving Comfy VIDEO
type to buffer ( #7939 )
...
* get output format when saving to buffer
* add unit tests for writing to file or stream with correct fmt
* handle `to_format=None`
* fix formatting
2025-05-04 23:26:57 -04:00
guill
68f0d35296
Add support for VIDEO as a built-in type ( #7844 )
...
* Add basic support for videos as types
This PR adds support for VIDEO as first-class types. In order to avoid
unnecessary costs, VIDEO outputs must implement the `VideoInput` ABC,
but their implementation details can vary. Included are two
implementations of this type which can be returned by other nodes:
* `VideoFromFile` - Created with either a path on disk (as a string) or
a `io.BytesIO` containing the contents of a file in a supported format
(like .mp4). This implementation won't actually load the video unless
necessary. It will also avoid re-encoding when saving if possible.
* `VideoFromComponents` - Created from an image tensor and an optional
audio tensor.
Currently, only h264 encoded videos in .mp4 containers are supported for
saving, but the plan is to add additional encodings/containers in the
near future (particularly .webm).
* Add optimization to avoid parsing entire video
* Improve type declarations to reduce warnings
* Make sure bytesIO objects can be read many times
* Fix a potential issue when saving long videos
* Fix incorrect type annotation
* Add a `LoadVideo` node to make testing easier
* Refactor new types out of the base comfy folder
I've created a new `comfy_api` top-level module. The intention is that
anything within this folder would be covered by semver-style versioning
that would allow custom nodes to rely on them not introducing breaking
changes.
* Fix linting issue
2025-04-29 05:58:00 -04:00