- 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>
Nearest-multiple rounding could drop a dimension below min_res in
min-res mode (e.g. min_res=1100, multiple_of=256 -> 1024); bump such
dimensions to the next multiple instead.
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
- Changed io.Input to io.Combo.Input for constraint_mode and crop_position
- Added options= parameter for combo box inputs
- Changed all Output definitions to use display_name= parameter instead of positional argument
This resolves the error: "Input.__init__() got an unexpected keyword argument 'default'"
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
Features:
- Actual image resizing using torch bilinear interpolation
- Optional cropping to preserve aspect ratio when rounding causes deviations
- Configurable crop position (center, top, bottom, left, right)
- Resized image now output first, followed by original passthrough
- Input validation with detailed error messages
- Comprehensive tooltips on all inputs and outputs
- Reorganized UI with logical grouping of parameters
- Enhanced description with usage tips
- Max value constraints added to prevent unreasonable inputs
Technical improvements:
- Use torch.nn.functional.interpolate for high-quality resizing
- Smart crop algorithm that resizes first then crops to preserve quality
- Proper tensor shape handling [batch, height, width, channels]
- Aspect ratio deviation warnings when crop is disabled
- min/max bounds on all numeric inputs
Breaking changes:
- Output order changed: resized_image is now first output
- Output names simplified (width/height instead of constrained_width/constrained_height)
- execute() signature expanded with crop parameters
Bump version to 2.1.0
- Convert node to use comfy_api.latest with io.ComfyNode base class
- Replace INPUT_TYPES() with define_schema() returning io.Schema
- Convert execution method from process() to execute() classmethod
- Implement ConstraintModeEnum as io.ComboInput for dropdown options
- Update all inputs to use v3 type system (io.Image, io.Int, etc.)
- Update all outputs to use io.NodeOutput wrapper
- Replace NODE_CLASS_MAPPINGS with comfy_entrypoint() pattern
- Add ConstrainResolutionExtension class for node registration
- Update __init__.py to export comfy_entrypoint
- Add comfy_api dependency to pyproject.toml and requirements.txt
- Bump version to 2.0.0 to reflect major API change
- Add permissions for writing issues
- Restrict job execution to specific repository owner
- Update action version from `main` to `v1` for stability
- Clean up token reference in publish step