Icy ConditioningSetTimestepRange
Tell a prompt when it gets to matter
- conditioning
- CONDITIONING
Same disclaimer every node in this pack gets: the "Icy" prefix is the ComfyUI-IcyHider privacy extension's doing, not a feature. The pack wraps every ComfyUI core node into an Icy<Name> subclass at startup, and this is core ConditioningSetTimestepRange wearing that hat. Same inputs, same math, new category name.
The node itself solves a genuinely subtle problem: diffusion sampling runs on a schedule from pure noise (step 0) to clean image (step 1), and most conditioning is applied the whole way through. This node lets you say no, this particular prompt only speaks during part of that journey. You give it a start and end fraction (both 0–1, defaulting to 0 and 1), and the conditioning only influences denoising inside that window.
Why the window matters
The community's standing mental model, which the KB's sampler material reflects: early steps decide composition and structure, late steps decide detail and texture. So you can:
- Apply a prompt only early (
start: 0, end: 0.3) to let it set the layout, then let the model's own priors fill in fine detail without that prompt's fingerprints all over it. - Apply a concept only late (
start: 0.7, end: 1) when the gross structure already exists - a common trick for nudging a style or a specific object into an otherwise-stable image without derailing composition.
It's the same idea as a ControlNet's start/end percentage, which is why the KB's ControlNet doc calls start/end steps "the parameter that matters most" for structure control - except this applies the time-window to text conditioning instead of a spatial map. If you've tuned ControlNet windows before, you already know the feel.
Inputs and output
- conditioning (CONDITIONING) - the conditioning to window.
- start (FLOAT, 0–1, default 0) - when in the schedule it switches on.
- end (FLOAT, 0–1, default 1) - when it switches off.
A single CONDITIONING out, straight into your sampler's positive or negative. You can run multiple of these nodes and feed their outputs into the same sampler input - that's the standard pattern for "this prompt early, that prompt late" without building anything exotic.
Installing it
The pack, not the node:
cd ComfyUI/custom_nodes
git clone https://github.com/icekiub-ai/ComfyUI-IcyHider
Restart, or use ComfyUI Manager and search "IcyHider." No dependencies, no models - a JS file plus a Python wrapper that generates these nodes from your installed ComfyUI.
Common issues
- Missing node in shared workflows. Install IcyHider or swap in core
ConditioningSetTimestepRange; they're interchangeable. - The window seems ignored. These percentages are measured against the sampling schedule, not wall-clock time, and they interact with the scheduler you chose (Karras reshuffles where the "middle" is). If a late-window conditioning isn't showing up, widen the range or check you're not pairing it with a sampler that spends almost no steps where you think it does.
- Icy nodes track your ComfyUI version. They're generated at boot from your local core, so keep that in mind when ComfyUI updates land.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | — | |
| start | FLOAT | 0.0000–1 | — |
| end | FLOAT | 1.0000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |