- Reject invalid configs in validate_inputs instead of mid-execution:
Strict-mode multiple_of above max_res, out-of-range min_res/max_res/
multiple_of, and unknown constraint modes
- Share the resolution and multiple_of bounds between define_schema() and
validate_inputs() so the widget and the queue-time check cannot drift
- Cap the min-res pixel budget at an absolute 64 MP, floored at max_res
squared; the multiplier alone permitted ~12 GB outputs at max_res=8192
- Warn on large upscales in Strict mode as well as min-res mode
- Pin GitHub Actions by commit SHA on node24-native majors; drop issues:write
from the publish workflow and set contents:read on both
- Pin Comfy-Org/publish-node-action to the commit @v1 resolves to; the 1.0.1
tag calls `comfy tracking disable`, removed from comfy-cli
- Add requirements-ci.txt with pip caching; add ruff config and a CI lint step
- Add schema-contract, tooltip, budget, crop-guard and validation tests
- Replace typing.Tuple with tuple
- Bump version to 2.4.1
- Refuse extreme-aspect-ratio upscales that would exhaust memory (1x690 at
default settings asked for 704x485760, ~4 GB per batch item)
- Raise instead of returning a zero dimension when multiple_of exceeds max_res
in Strict mode, and when a thin strip truncates to zero at multiple_of=1
- Drop **kwargs from validate_inputs, which disabled ComfyUI's own range and
combo-option checks for every input on the node
- Resize once on the crop path instead of computing and discarding a resize
- Compare exact aspect ratios rather than 4-decimal rounded ones when deciding
whether to crop
- Reject unknown constraint modes rather than applying neither limit
- Log the reason when the pack fails to import
- Bump version to 2.4.0
Update pyproject.toml to 2.3.2 and add a matching README version
history entry covering the CI test workflow, the min-resolution
upscale warning, and the zero-dimension passthrough guard.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SqaVwWKNn9bsmmhUkJXhZ2
- README rewritten: concise, table-based, real screenshots taken from a
live ComfyUI instance running this version (docs/images/), divisibility
guarantee spelled out, quick recipes instead of long prose
- pyproject description aligned with the new GitHub repo description
- Screenshots show a validated end-to-end run: 1800x1013 -> 1280x720,
multiple_of=16, lanczos
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Add resize_method input (lanczos default, bicubic, bilinear,
nearest-exact, area) backed by comfy.utils.common_upscale, with
F.interpolate fallback outside ComfyUI; clamp bicubic/lanczos
overshoot to [0, 1]
- Fix rare off-by-one where the crop-path intermediate resize could
truncate below the target dimension, yielding output 1px smaller
than the reported width/height
- Replace StrEnum with (str, Enum) so the pack imports on Python 3.10
- Remove unused numpy dependency from requirements.txt and pyproject
- Switch print() to logging (crop notices at debug level)
- Bump version to 2.3.0, sync README (inputs, technical details,
version history), add requires-python
- Stop tracking .claude/settings.local.json; expand tests to 36
covering execute() output shapes, all resize methods, crop positions
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Critical fixes:
- Fixed inverted cropping logic that caused odd dimensions and math errors
* When original is wider: now correctly resizes by height and crops width
* When original is taller: now correctly resizes by width and crops height
* This fixes the 1792x1024 → 1280x731 bug (now correctly becomes 1280x736)
Configuration updates:
- Changed default multiple_of from 8 to 2 (more appropriate for modern models)
- Updated all SDXL-specific references to be model-agnostic
- Added mentions of modern models (Flux, Stable Diffusion, etc.)
Documentation improvements:
- Updated README to remove dated SDXL references
- Updated tooltips and descriptions to be model-agnostic
- Changed example workflows to use generic "diffusion model" terminology
Changes:
- Set crop_as_required default to True (was False)
Rationale: Most users need exact dimensions for image-to-video and
other strict requirements. Cropping is now the default behavior for
immediate compatibility with downstream processes.
- Increase max resolution limit from 16384 to 65536 (64k)
Rationale: No technical reason to limit at 16k. Users working with
high-resolution content need flexibility up to 64k range.
- Update node description to reflect crop-enabled-by-default behavior
- Comprehensive README overhaul:
* Added "Why Use This Node?" section explaining use cases
* Detailed documentation of all inputs with ranges and recommendations
* Comprehensive outputs section with descriptions
* Added multiple workflow examples (I2V, SDXL, batch, portraits)
* Advanced tips section for edge cases
* Technical details on algorithms and validation
* Installation instructions for ComfyUI Manager and manual
* ComfyUI v3 compatibility notes
* Version history and support information
No version bump - still v2.1.0 as functionality unchanged