- Add running.mp4 demo video to example_inputs/
- Add proportion_changer_wanvideo_fun_2_2.json workflow example
- Include additional workflow variant for comprehensive examples
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove debug colored dots (red, green, blue) from DWPose render when no valid keypoints
- Remove debug white circle when no valid keypoints detected
- Failed pose detection now properly displays black screen instead of test markers
- Affects ProportionChanger DWPose Render node when reference pose detection fails
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Translate and simplify content based on README_ja.md
- Remove excessive technical details and development sections
- Focus on core functionality and installation instructions
- Add example image reference for better user guidance
- Streamline troubleshooting section
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Streamline README content for better readability
- Focus on core functionality and installation instructions
- Add example workflow image in docs/images/
- Remove excessive technical details for cleaner documentation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Set show_face parameter default from True to False in render_nodes.py
- Provides cleaner pose visualization by default without face keypoints
- Users can still enable face rendering manually when needed
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add cross-language navigation links at the top of both README files
- Update repository URL to https://github.com/grmchn/ComfyUI-ProportionChanger.git
- Correct model download documentation to reflect automatic download feature
- Remove misleading manual download instructions
- Add proper Hugging Face repository links for model sources
- Emphasize that no manual intervention is required for model setup
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add .github/workflows/publish.yml for automatic Comfy registry publishing
- Update PublisherId to 'gearmachine' in pyproject.toml
- Remove authors section to simplify configuration
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Change license specification from inline text to file reference to properly link to LICENSE file.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Clean up repository by removing the old lowercase readme.md file,
completing the migration to proper README.md and README_ja.md files.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Major updates:
- LICENSE: Migrate from Apache 2.0 to GPL 3.0 due to license compatibility requirements
- README.md/README_ja.md: Complete project documentation overhaul
- Add Claude Code auto-generation notice
- Update project description with WanVideoWrapper decomposition details
- Reflect actual available nodes (removed KeyPoint Denoiser references)
- Add comprehensive GPL 3.0 license section with compatibility explanation
- Update attribution credits for kijai and toyxyz sources
- requirements.txt: Optimize dependencies to only include actually used packages
- Remove unused packages: accelerate, diffusers, peft, ftfy, etc.
- Keep essential: torch, numpy, opencv-python, tqdm
- pyproject.toml: Update project metadata for ComfyUI-ProportionChanger
- Change publisher ID to gear_machine
- Update repository URL to grmchn/ComfyUI-ProportionChanger
- Set GPL-3.0 license and clean dependencies
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Enhanced error handling with specific exception types in detector and interpolation nodes
- Reduced verbose console output in KeyPoint Denoiser components for cleaner operation
- Improved coordinate validation and array bounds checking in detector nodes
- Translated comments to English in params node for consistency
- Maintained core functionality while improving user experience
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed double offset issue where left/right ankles and toes were being
processed twice in proportion transformation, causing extreme stretching
to screen bottom.
Changes:
- Left ankle (keypoint 10): Only moves in ll1 processing, skip ll2
- Right ankle (keypoint 13): Only moves in rl1 processing, skip rl2
- Left toe (keypoint 19): Only moves in ll1 processing, skip ll2
- Right toe (keypoint 18): Only moves in rl1 processing, skip rl2
- Applied fixes across all processing functions: apply_batch_proportion_changes, batch loop, apply_proportion_changes
- Added debug logging to track ankle movements during processing
Root cause: Ankles/toes should move as child nodes with knees, not receive
independent l2/r2 adjustments which caused abnormal ratio values (e.g. rl2_ratio: 4.72)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Reorder parameters in anatomical sequence: body→face→hand→global
- Group body keypoints from head to legs (head→neck→shoulder→arm→torso→pelvis→leg)
- Group face keypoints from top to bottom (face_shape→eyebrow→eye→nose→mouth)
- Move face_shape_scale to top of face section as requested
- Clarify that eye_distance_scale belongs to face keypoints, not body
- Add clear section comments for better organization
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add sophisticated 7-stage denoising pipeline using Kalman filters
- Support temporal smoothing for dance video pose keypoints
- Include two ComfyUI node variants: basic and advanced parameter control
- Comprehensive error handling and fallback to original data on errors
- Performance: 4-8ms/frame with 90%+ observation acceptance rates
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Delete ProportionChangerUniAnimateDWPoseDetector class from unianimate/nodes.py
- Remove corresponding NODE_CLASS_MAPPINGS and NODE_DISPLAY_NAME_MAPPINGS
- Additional 87 lines removed
- All deprecated DWPose detector nodes now completely eliminated
Now ComfyUI should no longer display deprecated nodes after restart.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove duplicate canvas size scaling logic that caused incorrect keypoint
positions when reference and target images had different canvas sizes.
The coordinate conversion functions already handle canvas scaling properly,
so additional scaling resulted in double scaling and malformed output.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Major improvements to ProportionChanger Reference node:
**WanVideo Algorithm Complete Port:**
- Implement all 15-section proportion calculations (neck, shoulders, arms, head, legs)
- Fix neck fixed movement issue with unified ratio calculation from first frame
- Add batch processing with consistent ratios across all frames
- Port noise reduction and correction processing from WanVideo
**Advanced Face Processing Integration:**
- Implement independent X/Y face scaling based on ear distance and face dimensions
- Add nose-to-chin height calculation for natural face proportions
- Perfect nose-to-nose alignment between body and face keypoints
- Fix face positioning issue (was aligned to chest/neck, now to nose)
**Technical Improvements:**
- Unified batch processing: calculate ratios from first frame, apply to all frames
- Complete final position offset implementation for frame consistency
- Enhanced canvas size scaling compatibility
- Robust fallback mechanisms for various keypoint configurations
Resolves neck movement issues, face scaling problems, and noise artifacts.
Face now perfectly aligns with body nose position across all frames.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Modified ProportionChangerReference to support batch processing for multiple frames
- Fixed KeyError in result_keypoint access by handling dict return type correctly
- Each frame in the batch is now processed individually through the proportion changing algorithm
- Maintains compatibility with existing single-frame workflows
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Eye groups (Left_Eye, Right_Eye) now scale around their own face keypoint centroid
- Other face parts (eyebrow, mouth, nose) continue using nose tip as center
- Removed debug print statements for cleaner output
- Move Issue015 to closed folder
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix DWPose keypoint mapping based on actual data structure:
- LHip: 8→11, RHip: 11→8
- LKnee: 12→9, RKnee: 9→12
- LAnkle: 13→10, RAnkle: 10→13
- RBigToe: 18, LBigToe: 19
- Add ankle-based toe/heel scaling with natural leg proportion
- Implement hand keypoint following for wrist movement during arm scaling
- Clean up code comments to English and remove debug logs
- Update CLAUDE.md with correct keypoint indices and code comment policy
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix extra_pnginfo type errors with automatic dict→list conversion
- Add environment variable PROPORTION_CHANGER_DEBUG for log control
- Replace print-based debug logs with conditional logging system
- Disable verbose debug output in legacy unianimate modules
- Resolve circular import issues with local debug_log implementations
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
The score_threshold parameter was defined in INPUT_TYPES but never used in the
actual proportion changing algorithm. This removal simplifies the UI and
prevents user confusion about a parameter that has no effect.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix double scaling bug when target and reference images have different canvas sizes
- Remove redundant canvas scaling from proportion processing
- Coordinate conversion functions already handle canvas size differences automatically
- Resolves issue where 512x512 reference → 1024x1024 target produced coordinates outside canvas bounds
- Add test directory to .gitignore for development testing
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Rename nodes/ directory to proportion_changer/ following ComfyUI conventions
- Update __init__.py to use simple relative imports instead of importlib.util
- Fix nodes.py imports to reference .proportion_changer instead of .nodes
- Resolve ImportError caused by Python module vs package name collision
- Follow established ComfyUI custom node patterns (similar to adv_control/)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Port complete proportion changing algorithm from WanVideoWrapper original
- Replace simplified scaling with full body part-by-part proportion adjustment
- Add advanced face scaling with ear-distance based X/Y independent scaling
- Implement face nose-to-body nose precise alignment
- Add 280+ lines of detailed body part adjustments (neck, shoulders, arms, head, legs)
- Fix face positioning issues and scale accuracy
- Ensure reference proportion is fully applied (3-head → 3-head exact)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add new DWPose render node with toe keypoint visualization
- Fix coordinate offset alignment in Ultimate DWPose Detector
- Implement smart coordinate system detection (normalized vs pixel)
- Use WanVideo DWPose coordinate convention for correct bone angles
- Support ultimate-openpose-render compatible parameters plus show_feet
- Resolve coordinate misalignment issues for proper pose display
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add unique_id and extra_pnginfo parameters for workflow persistence
- Implement Show Text-style workflow updating to preserve JSON data across reloads
- Add OUTPUT_NODE = True to enable standalone execution without downstream nodes
- Fix onConfigure to skip pretty_format widget value and only display JSON data
- Resolve "true" string display issue on page reload
Now PoseKeypointPreview works like Show Text:
- Displays without requiring downstream nodes
- Preserves JSON content across browser reloads
- Properly handles widget state management
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Preserve pretty_format widget when updating display
- Prevent duplicate JSON display widgets on multiple runs
- Keep only first widget (pretty_format) and replace display content
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add pose_keypoint input node for JSON to POSE_KEYPOINT conversion
- Add pose_keypoint preview node with read-only text display
- Implement JavaScript frontend for text widget display
- Support toe keypoints (19-24) in normalized coordinate format
- Update module structure to support web assets
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed confidence values from 0.0 to 1.0 in dwpose_format_to_pose_keypoint()
- Changed coordinate conversion from normalized (1.0, 1.0) to pixel coordinates (width, height)
- Removed excessive logging that was cluttering output
- Simplified detection logic to use high-level DWPose API like working UniAnimate version
- Now properly outputs pose keypoints with valid confidence values for rendering
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Rename WanVideoUniAnimateDWPoseDetector to
ProportionChangerUniAnimateDWPoseDetector
- Update category from "WanVideoWrapper" to "ProportionChanger"
- Update display name to "ProportionChanger UniAnimate DWPose Detector"
- Remove unused WanVideoUniAnimatePoseInput node
- Add development gitignore and example_workflows structure
Based on kijai's WanVideoWrapper - adapted for body proportion changing.