71 Commits
Author SHA1 Message Date
EnragedAntelope c385f389ee v2.4.1: queue-time validation, absolute pixel ceiling, CI hardening
- 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
2026-08-24 14:11:51 -04:00
EnragedAntelope 2bc791c5d5 v2.4.0: fix memory exhaustion, silent no-ops, and disabled input validation
- 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
2026-08-24 14:11:42 -04:00
EnragedAntelopeandClaude Opus 5 d7dc9b4317 docs: add current-state summary to AGENTS.md
So a fresh session can answer what works, what is half-done, and what to
pick up next without reading the source tree.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 20:49:16 -04:00
EnragedAntelopeandSisyphus 56fc64819c docs: add AGENTS.md agent context (CLAUDE.md shim)
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-04 22:29:57 -04:00
Claude 051d077bcd v2.3.2: bump version, document CI + execute() hardening
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
2026-07-24 16:54:22 +00:00
Claude 4a45a53ec5 Add CI test workflow and harden execute() edge cases
- Add .github/workflows/test.yml: runs the pytest suite on push/PR
  across Python 3.10/3.11/3.12. comfy_api is mocked in conftest.py,
  so no ComfyUI install is required.
- execute(): pass a zero-dimension (malformed/empty) input tensor
  through unchanged instead of crashing the resizer.
- execute(): warn when "Prioritize Min Resolution" forces a large
  upscale (>4x) on an extreme aspect ratio, pointing at the strict
  mode as the size-capping alternative.
- Add regression tests for the zero-dim passthrough and the
  extreme-upscale warning.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SqaVwWKNn9bsmmhUkJXhZ2
2026-07-24 16:53:14 +00:00
EnragedAntelopeandClaude Fable 5 5f2ed470d9 v2.3.1: rewrite README with current screenshots, sync descriptions
- 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>
2026-07-16 17:43:11 -04:00
EnragedAntelope dae9f0ba06 Merge audit/v2.3.0: resize method selection, crop fix, dependency cleanup (#8) 2026-07-16 17:27:05 -04:00
EnragedAntelopeandClaude Fable 5 499e5a0078 Enforce min_res guarantee after nearest-multiple rounding
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>
2026-07-16 17:25:38 -04:00
EnragedAntelopeandClaude Fable 5 df2f96303a v2.3.0: resize method selection, crop fix, dependency cleanup
- 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>
2026-07-16 14:15:28 -04:00
EnragedAntelope ae5ede7525 Bump version to 2.2
Updated version number to 2.2 in pyproject.toml.
2026-04-19 11:20:43 -04:00
EnragedAntelope ee9eaeeace Update project version to 2.1.2
Bump version from 2.1.1 to 2.1.2.
2026-04-18 23:14:14 -04:00
EnragedAntelope 3cc8c9e197 Refactor ConstrainResolution logic and add tests for dimension calculations 2026-04-18 15:58:07 -04:00
EnragedAntelope 8e1219482e Bump version to 2.1.08 in pyproject.toml 2025-11-08 20:25:14 -05:00
EnragedAntelope 3fd21ec30a Update image in README with new dimensions 2025-11-08 20:21:25 -05:00
EnragedAntelope 71afb1724b Merge pull request #7 from EnragedAntelope/claude/migrate-constrainresolution-v3-011CUvwHuCfck9nM3woqCBd7
Fix cropping logic bug and update defaults/documentation
2025-11-08 20:20:14 -05:00
Claude fcc028deb4 Fix cropping logic bug and update defaults/documentation
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
2025-11-08 19:27:36 +00:00
EnragedAntelope 8d4ff00d94 Bump version to 2.1.07 in pyproject.toml 2025-11-08 14:04:21 -05:00
EnragedAntelope 37a9eb29dc Merge pull request #6 from EnragedAntelope/claude/migrate-constrainresolution-v3-011CUvwHuCfck9nM3woqCBd7
Claude/migrate constrainresolution v3 011 c uvw hu cfck9n m3woq c bd7
2025-11-08 14:03:56 -05:00
Claude f23900e473 Add .gitignore file for Python artifacts
Ignore __pycache__, *.pyc, virtual environments, and IDE files
2025-11-08 19:03:07 +00:00
Claude efde7038b6 Fix ComfyUI V3 compatibility issues
- 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'"
2025-11-08 19:01:58 +00:00
EnragedAntelope d287796a27 Bump version from 2.1.05 to 2.1.06 2025-11-08 12:02:05 -05:00
EnragedAntelope 580dc42627 Refactor ConstrainResolution class and methods 2025-11-08 12:01:56 -05:00
EnragedAntelope 6ab947be65 Bump version from 2.1.04 to 2.1.05 2025-11-08 09:19:15 -05:00
EnragedAntelope 620c896b8e Refactor ConstrainResolution class and methods 2025-11-08 09:19:04 -05:00
EnragedAntelope 862cf766a8 Update version to 2.1.04 in pyproject.toml 2025-11-08 09:10:58 -05:00
EnragedAntelope f3a02e2d7d Refactor ConstrainResolution class and methods 2025-11-08 09:10:43 -05:00
EnragedAntelope 5f891fe131 Bump version to 2.1.03 and update dependencies
Updated version number and removed comfy_api from dependencies.
2025-11-08 09:03:03 -05:00
EnragedAntelope 81364107cb Refactor ConstrainResolution class and methods 2025-11-08 09:02:46 -05:00
EnragedAntelope 7a919b73e8 Update README to reflect correct dependencies
Removed reference to 'comfy_api' from dependencies.
2025-11-08 09:01:58 -05:00
EnragedAntelope ea32ad9879 Remove comfy_api from requirements 2025-11-08 09:01:04 -05:00
EnragedAntelope b6de74ba69 Update version to 2.1.02 in pyproject.toml 2025-11-08 08:56:15 -05:00
EnragedAntelope e07274aab3 Refactor ConstrainResolution class and methods 2025-11-08 08:56:03 -05:00
EnragedAntelope d0e426a5c2 Update version number to 2.1.01 in pyproject.toml 2025-11-08 08:44:15 -05:00
EnragedAntelope b6f17385d5 Refactor enums and update ConstrainResolution class 2025-11-08 08:40:28 -05:00
EnragedAntelope d3f9b7ed9d Merge pull request #5 from EnragedAntelope/claude/comfyui-v3-migration-011CUuMgBJSmRsg85TSsbfRi
Update defaults and limits for production use
2025-11-08 08:13:44 -05:00
Claude 27c854454b Update defaults and limits for production use
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
2025-11-08 13:11:56 +00:00
EnragedAntelope 827a1aa33d Merge pull request #4 from EnragedAntelope/claude/comfyui-v3-migration-011CUuMgBJSmRsg85TSsbfRi
Add image resizing with intelligent cropping support
2025-11-08 08:09:00 -05:00
Claude 7e60424416 Add image resizing with intelligent cropping support
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
2025-11-08 13:06:46 +00:00
EnragedAntelope 4fe2cb4cc8 Merge pull request #3 from EnragedAntelope/claude/comfyui-v3-migration-011CUuMgBJSmRsg85TSsbfRi
Migrate ConstrainResolution node to ComfyUI v3 spec
2025-11-07 18:06:12 -05:00
Claude de432c6fbe Migrate ConstrainResolution node to ComfyUI v3 spec
- 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
2025-11-07 23:00:32 +00:00
EnragedAntelope 812f4e8cb3 Update pyproject.toml 2025-07-26 07:58:16 -04:00
EnragedAntelope 34485e6fee Update README.md 2025-07-26 07:52:18 -04:00
EnragedAntelope e035ed905f Update nodes.py 2025-07-26 07:44:49 -04:00
EnragedAntelope 27b034dac5 Merge pull request #1 from ComfyNodePRs/update-publish-yaml
Update Github Action for Publishing to Comfy Registry
2025-03-30 09:06:11 -04:00
EnragedAntelope 992c897a3e Update LICENSE 2025-01-28 11:30:52 -05:00
EnragedAntelope 7ce36167aa Update LICENSE 2025-01-28 11:30:18 -05:00
EnragedAntelope 4586f38bad Update README.md 2025-01-28 11:29:43 -05:00
snomiao fd2ce78ff7 chore(publish): update GitHub Actions workflow for node publishing
- 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
2025-01-25 15:56:33 +00:00
EnragedAntelope 39705dc183 Update README.md 2025-01-24 23:17:55 -05:00