Mega update (#8)

* Weird experiments with sampler blending

* Mega sync

* Use ComfyUI union types for wildcard inputs when available

* Add weoon wavelet sampler

* Fix noise sampler caching not considering immiscible settings
Allow specifying alt custom noise/immiscible settings for samplers that internally add noise
AFS support at the merge sampler level
Allow the Weoon internal step to use ETA
Add t_copysign expression function

* Start updating documentation

* Add ImmiscibleReference node, other changes

* Respect factor in ImmiscibleReference noise

* Fixing normalizing in ImmiscibleReference noise

* Handle case where there are no RGB factors (i.e. audio models)

* Fix rectified flow type detection for non-Flux models

* Add more tensor ops, add OCS ApplyExpressionImage/Latent nodes

* Rename ApplyExpression nodes to ApplyFilter, expression QoL improvements

* Fix apply filter nodes definitions

* Make t_noise handler work for image-latents.

* Add t_new_like expression function

* Make it possible to comment out lines with hash in expressions

* Add gradient estimation, pingpong and res_multistep samplers.
Add pingpong group merge method.
Remove model call caching stuff.
Allow defining pre_cfg and post_cfg filters.
Handle filters changing the latent shape better.
Allow disabling detecting out of order sigmas as restart sampling.

* Sync current updates (which I am too lazy to describe individually)

* Add ExpressionFilteredNoise node
Improvements to immiscible noise handling/expanded features
This commit is contained in:
blepping
2025-08-09 07:28:10 -06:00
committed by GitHub
parent 716b0d749a
commit d8574bae2d
38 changed files with 7105 additions and 3719 deletions
+13 -3
View File
@@ -212,6 +212,8 @@ class BetweenHandler(BaseHandler): # Inclusive
def handle(self, obj, getter):
value, low, high = self.safe_get_all(obj, getter)
if low > high:
low, high = high, low
return low <= value <= high
@@ -281,9 +283,17 @@ class GetHandler(BaseHandler):
class S_Handler(BaseHandler):
input_validators = (
Arg.integer("start", None),
Arg.integer("end", None),
Arg.integer("step", None),
Arg.one_of(
"start",
(ValidateArg.validate_none, ValidateArg.validate_integer),
default=None,
),
Arg.one_of(
"end",
(ValidateArg.validate_none, ValidateArg.validate_integer),
default=None,
),
Arg.integer("step", 1),
)
def handle(self, obj, getter):