JS Math.random() only has 53 bits of integer precision, making the
64-bit range produce non-uniform values. 32-bit (0xFFFFFFFF) is the
standard ComfyUI seed range and works correctly in both Python and JS.
Also removes the redundant mode input from SeedHistoryNode, relying on
ComfyUI's built-in control_after_generate widget instead.
Improved the HTML filtering regex to properly detect all variations of
script tags including bypass attempts with whitespace before the closing
bracket (e.g., '<script >' and '</script >').
Changed from word boundary pattern /<script\b/gi to a more comprehensive
pattern /<\s*\/?script[^>]*>/gi that matches:
- Optional whitespace after opening bracket
- Optional forward slash for closing tags
- Any characters until closing bracket (catches attributes and whitespace)
This fixes the CodeQL security alert for bad HTML filtering regexp that
could be bypassed with malformed tags.
Also updated iframe, embed, and object tag patterns for consistency.
- Switch from unreliable canvas-based drawing to DOM widget approach
- Eliminate coordinate calculation complexity and mouse position issues
- Use same proven pattern as Seed History node buttons
- Add proper hover/click animations and visual feedback
- Fix callback bug in heightWidget.callback assignment
- Remove all canvas drawing, mouse handling, and coordinate code
- Button now works consistently without coordinate system problems
Resolves swap button not working issue by using reliable DOM elements
instead of manual canvas coordinate calculations.
- Add follow execution feature with settings integration
- Automatically centers canvas on currently executing node
- Configurable via ComfyUI settings panel
- Supports auto-start on workflow execution
- Adds right-click menu options when enabled
- Add custom colors feature with extended options
- Based on ComfyUI-Custom-Scripts with enhancements from PR #433
- Three color picker modes: Full, Title only, Background only
- Multi-node selection support
- Configurable via settings to enable/disable individual options
- Auto-shading option for better contrast
Both features are disabled by default and can be enabled in ComfyUI settings under the 🫶 KikoTools sections.
- Remove debug code and console.log statements
- Fix test suite to properly mock folder_paths module
- Update test expectations to match actual implementation
- Add comprehensive README documentation with feature list
- Add placeholder images for documentation screenshots
- Include diagnostic scripts for testing embedding paths
- All tests passing (338 passed, 2 skipped)
Features implemented:
- Autocomplete for embeddings, LoRAs, and custom tags
- Custom word list loading from URL (with security validation)
- Configurable triggers and settings
- Auto-insert comma, replace underscores, Tab/Enter selection
- Smart scrolling in suggestion list
- Secure content validation to prevent XSS attacks
Credits to pythongosssss/ComfyUI-Custom-Scripts for inspiration
- Accept both singular and plural forms
- Common user expectation to use plural
- Regex pattern now matches embeddings?:
- Works with 120 loaded embeddings
- Extract embedding names from file_name property
- Filter out null/undefined entries
- Successfully processes 120 embeddings with proper names
- Cleaner extraction logic based on actual API response structure
- Try api.getEmbeddings(page) for pagination
- Add better logging to see item format
- Gracefully fall back to first page if pagination fails
- Log sample items to understand structure
- Detect and parse paginated response format (items array)
- Fetch all pages to get complete embeddings list (113 total)
- Support both paginated and object formats for compatibility
- Extract actual embedding names from items array
- Debug shows successful trigger detection for 'embedding:'
- Parse embeddings from object keys instead of expecting array
- Remove file extensions from embedding names
- Add fallback method for LoRAs using /object_info API
- Delay widget attachment to catch dynamically created widgets
- Better detection of textarea widgets regardless of type
- Add console logging to JS for resource fetching and widget attachment
- Add debug mode with window.kikoDebug for inspection
- Log Python API endpoint registration and file discovery
- Track widget creation and event handling
- Show first 5 items when loading resources
- Use ComfyUI's native api.getEmbeddings() for proper embedding detection
- Add dedicated /kikotools/autocomplete/loras endpoint for LoRA files
- Improve trigger detection for "embedding:" and "<lora:" patterns
- Context-aware suggestions based on trigger type
- Better insertion logic that maintains correct syntax
- Sort suggestions by relevance (exact match, starts with, alphabetical)
- Fix character matching patterns to include underscores and hyphens
- Add debug/test panel to the node with helpful usage hints
- Display counts of available embeddings and LoRAs
- Show sample items and status information
- Include clear instructions for triggering autocomplete
- Update display name with 🫶 branding
- Make node an OUTPUT_NODE to display information
- Implement centralized settings registry for all KikoTools
- Create KikoEmbeddingAutocomplete node with backend API
- Add frontend JavaScript autocomplete widget with ComfyUI integration
- Support for embeddings and LoRAs with smart filtering
- Configurable settings in ComfyUI UI with 🫶 branding
- Include keyboard navigation and real-time suggestions
- Add copy buttons using addCustomWidget for proper integration
- Display Text: separate copy buttons for positive/negative prompts
- Display Any: single copy button for entire value
- Visual feedback shows "✓ Copied\!" for 1.5 seconds
- Buttons work with ComfyUI's widget system
Restores copy functionality while maintaining scrolling fixes
- Add proper null checks before appendChild calls
- Use requestAnimationFrame to ensure DOM elements exist
- Check both inputEl and parentNode before adding buttons
- Prevent "Cannot read properties of null" errors on load
Fixes workflow loading errors with display nodes
- Replace custom draw implementations with ComfyWidgets["STRING"]
- Fix cursor display issues (was showing + instead of text cursor)
- Enable native scrolling behavior for both Display Text and Display Any
- Maintain all existing features (copy buttons, split view for prompts)
- Add proper widget cleanup and state management
- Reference: ShowText implementation from ComfyUI-Custom-Scripts
Fixes scrolling and cursor issues in display nodes
BREAKING CHANGE: Node categories now use emoji-based organization
Add 6 new xyz-helper nodes adapted from comfyui-essentials-nodes:
- FluxSamplerParams: FLUX-optimized parameter generator with batch support
- LoRAFolderBatch: Batch process multiple LoRAs from folders
- PlotParameters: Visualize parameter effects with graphs
- SamplerSelectHelper: Intelligent sampler selection with recommendations
- SchedulerSelectHelper: Optimal scheduler selection for samplers
- TextEncodeSamplerParams: Combined text encoding and parameter management
Changes:
- Port and enhance nodes from comfyui-essentials (now in maintenance mode)
- Add comprehensive documentation with attribution to original author (cubiq)
- Create example workflows for xyz-helpers tools
- Update all node categories to use emoji-based organization
- Fix all unit tests to pass with new category system
- Update README with xyz-helpers section and attribution
Attribution: xyz-helpers adapted from github.com/cubiq/ComfyUI_essentials
All tests passing (318 pass, 2 skip)
- Add new image_scale_down_by tool for downscaling images/latents
- Add display_any.js web component for node display
- Include comprehensive unit tests for the new tool
Display Text improvements:
- Add new DisplayText node with intelligent prompt detection and split view
- Implement text wrapping that reflows when node is resized
- Add scrollable content with mouse wheel support and visual indicators
- Include always-visible copy button with visual feedback for easy prompt copying
- Auto-detect SDXL-style prompts and display in side-by-side format
- Strip prompt labels when copying for direct use in workflows
Gemini model refresh functionality:
- Add refresh button to fetch latest available Gemini models dynamically
- Implement model caching system with persistent storage
- Support for Gemini 2.0 and 2.5 models with automatic detection
- Enhanced SDXL prompt template with improved layered structure
- Better error handling and status feedback for model operations
Documentation and version updates:
- Update README with comprehensive Display Text and Gemini feature descriptions
- Add detailed usage examples and workflow patterns
- Bump version to 1.0.9 in pyproject.toml
- Update stats to reflect 8 total nodes and new AI integration features
- Add GeminiPromptNode for AI-powered prompt engineering
- Integrates with Google's Gemini API for prompt generation
- Includes various prompt templates and generation modes
- Add comprehensive tests and documentation
- Register node in ComfyAssets category
- Add code quality tools: flake8, mypy, black, pre-commit
- Add .gitattributes for line ending consistency
- Add .secrets.baseline for secret scanning
- Update GitHub workflows for better CI/CD
- Update documentation formatting and examples
- Add CLAUDE.md for AI assistant guidance
- Add scripts directory for automation tools
- Update project configuration in pyproject.toml
- Improve type hints and code formatting across all modules
- Update test configurations and fixtures