* ⬆️ (pyproject.toml): bump version from 2.0.1 to 2.0.2 to reflect new updates and improvements
* ⬆️ (pyproject.toml): bump version from 2.0.2 to 2.0.3 to reflect new updates and improvements
* ✨ (debug_civitai.py): enhance environment check with improved output formatting and clarity
♻️ (debug_civitai.py): refactor print statements for consistency and readability
♻️ (civitai_service.py): refactor debug print statements for clarity
♻️ (lora_hash_cache.py): refactor code for better readability and maintainability
♻️ (lora_manager): refactor various files for improved code structure and clarity
📝 (swiss-army-knife.js): add display widgets for dimensions in media processing results
✨ (swiss-army-knife.js): introduce functionality to update dimensions display after execution
* ✨ (CivitAI Service Consolidation): consolidate two CivitAI service implementations into a single service for improved maintainability and functionality
📝 (CIVITAI_SERVICE_CONSOLIDATION.md): add documentation for the consolidation of CivitAI services, detailing the problem, solution, and benefits
📝 (CLEAR_VIDEO_PREVIEW_FUNCTION_ORDER_FIX.md): add documentation for fixing function order issue in clearVideoPreview method
📝 (DIMENSIONS_DISPLAY_TROUBLESHOOTING.md): add troubleshooting guide for dimensions display widget in GeminiUtilMediaDescribe node
📝 (DIMENSIONS_DISPLAY_WIDGET.md): add documentation for the new dimensions display widget in GeminiUtilMediaDescribe node
♻️ (civitai_service.py): refactor CivitAI service to include trigger word extraction methods and improve error handling
♻️ (lora_hash_cache.py): refactor hash calculation methods for better readability and maintainability
🐛 (swiss-army-knife.js): fix function definition order for clearVideoPreview to prevent TypeError
🐛 (web/js/swiss-army-knife.js): update dimensions display logic to handle multiple message structures and improve logging
🐛 (web/js/swiss-army-knife.js): ensure dimensions display widget updates correctly after node execution
* refactor: move ./utils to ./nodes
* ✨ (media_describe): introduce GeminiUtilOptions node for configuring Gemini API media analysis
♻️ (media_describe): refactor GeminiMediaDescribe to use GeminiUtilOptions for improved modularity
📝 (media_describe): update module documentation to reflect changes in node functionality
* ✨ (swiss-army-knife.js): add functionality to persist and restore reddit_url widget value for better user experience
💡 (swiss-army-knife.js): add debug logs for tracking reddit_url widget value during persistence and restoration
* ♻️ (swiss-army-knife.js): refactor reddit_url restoration logic to store and restore it separately for better clarity and maintainability
* ✨ (init.py, config_api.py, swiss-army-knife.js): add DEBUG mode support to control console logging via environment variable
📝 (DEBUG_MODE_IMPLEMENTATION.md): document the implementation details and usage of DEBUG mode
🔧 (init.py): register config API routes to expose DEBUG setting to frontend
♻️ (swiss-army-knife.js): refactor console logging to use conditional debugLog function for cleaner output
* ✨ (media_describe): add GeminiMediaDescribe class for media analysis using Gemini API
📝 (media_describe): update __init__.py to include GeminiMediaDescribe in exports
♻️ (nodes): refactor nodes.py to remove unused imports and classes, improving code clarity and maintainability
* ♻️ (media_describe): refactor class name from GeminiMediaDescribe to MediaDescribe for consistency and clarity
📝 (media_describe): update __all__ exports to reflect the new class name in the module
* ✨ Update documentation and rename GeminiMediaDescribe to MediaDescribe
- Renamed the class `GeminiMediaDescribe` to `MediaDescribe` for better clarity and organization.
- Updated all references in the codebase and documentation to reflect the new class name.
- Ensured backward compatibility by keeping the ComfyUI node ID as `GeminiUtilMediaDescribe`.
- Improved logging messages to use the new class name for consistency.
* 📝 (nodes.py): update NODE_DISPLAY_NAME_MAPPINGS to use simplified node title for better clarity and consistency
* ✨ (GEMINI_API_RETRY_LOGIC.md): add documentation for new retry logic
implementation for Gemini API to handle overload errors
♻️ (mediia_describe.py): refactor image and video processing to use
new retry logic for Gemini API calls, improving reliability and user
experience during transient errors
* ✨ (JAVASCRIPT_NODE_NAME_UPDATE.md, swiss-army-knife.js): update all JavaScript references from GeminiUtilMediaDescribe to MediaDescribe to align with Python backend changes and ensure proper functionality of widgets and event handlers.
* ✨ (CACHE_VERIFICATION_SUMMARY.md): add cache verification summary to document the fix for the caching mechanism
✨ (CACHE_VERIFICATION_OCTOBER_2025.md): create detailed documentation for cache mechanism verification and findings
🐛 (mediia_describe.py): fix caching issue by including `replace_action_with_twerking` in cache options
✅ (test_cache_verification.py): add comprehensive test suite to verify caching mechanism functionality
* ♻️ (config_api.py, mediia_describe.py): remove unnecessary blank lines to improve code readability
✨ (pyproject.toml): update version from 2.0.3 to 2.1.0 to reflect new features and improvements
📝 (test_cache_verification.py): update print statements for consistency and clarity in test outputs
* ⬆️ (pyproject.toml): upgrade project version from 2.1.0 to 2.2.1 to reflect new changes and improvements
* 📝 Update documentation: add critical instructions for activating the virtual
environment before running Python commands to ensure proper setup and
avoid errors during development and testing.
* ✨ (control_panel): introduce Control Panel node to display workflow information
📝 (init.py): add import for Control Panel node and handle ImportError gracefully
♻️ (init.py): update NODE_CLASS_MAPPINGS and NODE_DISPLAY_NAME_MAPPINGS to include Control Panel node
* ✨ (docs): add comprehensive documentation for the new `all_media_describe_data` output feature in MediaDescribe node to enhance usability and understanding
📝 (docs): create Cache Verification Summary to document the verification process and fixes applied to the caching mechanism
📝 (docs): add Control Panel Implementation documentation to detail the features and usage of the Control Panel node
♻️ (media_describe.py): refactor MediaDescribe node to include an aggregated output for better data presentation
♻️ (control_panel.py): refactor Control Panel node to support dynamic wildcard inputs and improve data display functionality
🗑️ (example_node.py): remove outdated example node file to clean up the project structure
* ✨ (Control Panel): add documentation for JSON data format fix and update Control Panel layout
♻️ (mediia_describe.py): refactor MediaDescribe node to output structured JSON data instead of formatted string
♻️ (swiss-army-knife.js): refactor Control Panel to display data in a two-column layout for better organization and readability
* ✨ (video preview): implement Video Preview node with Python backend and JavaScript widget for displaying video inputs with interactive controls
📝 (documentation): add comprehensive documentation for Video Preview node, including usage, features, and implementation details
♻️ (video preview): reorganize JavaScript widget into dedicated directory for better structure and scalability
🐛 (video preview): fix TypeError in Video Preview node by ensuring all return values are lists for ComfyUI compatibility
✅ (video preview): validate and test Video Preview node functionality, ensuring all features work as intended
* Add Video Preview Widget implementation
- Introduced a new Video Preview widget in `web/js/video_preview/` for ComfyUI.
- Implemented the main functionality in `video_preview.js`, allowing for interactive video previews with auto-sizing, mute/unmute, and error handling.
- Removed the old implementation from `web/video_preview/video_preview.js`.
- Updated README.md to document the purpose, integration, features, and usage of the new widget.
* ✨ (video_preview.js): add video controls and timeline scrubber for better user experience
♻️ (video_preview.js): refactor video preview container to use flexbox for layout
📝 (video_preview.js): update comments for clarity and maintainability
* 💡 (video_preview.js): add debug mode for verbose logging to assist in troubleshooting and development
* ⬆️ (pyproject.toml): upgrade project version from 2.2.1 to 2.3.0 to reflect new changes and improvements
* Refactor video preview handling and path normalization
- Removed the clearVideoPreview method as it was redundant and not utilized effectively in the media state clearing process.
- Updated the clearAllMediaState method to directly clear video-related state without calling the removed method.
- Enhanced video path normalization in video_preview.js to handle multiple possible prefixes, improving compatibility with different deployment environments.
* ⬆️ (pyproject.toml): bump version from 2.3.0 to 2.3.1 to reflect new changes and improvements
* ⬆️ (pyproject.toml): bump version from 2.3.1 to 2.3.2 to reflect new changes
💡 (video_preview.js): enable debug mode for verbose logging during development
* ✨ (env.example, UNIFIED_DEBUG_SYSTEM.md, VIDEO_PREVIEW_PROGRESSIVE_LOADING.md, debug_utils.py, video_preview.js): introduce a unified debug logging system and progressive video loading to enhance user experience and debugging capabilities
📝 (env.example): add DEBUG environment variable to enable verbose logging
📝 (UNIFIED_DEBUG_SYSTEM.md): document the new centralized debug logging system and its usage
📝 (VIDEO_PREVIEW_PROGRESSIVE_LOADING.md): document the implementation of progressive video loading for improved user experience
♻️ (debug_utils.py, video_preview.js): refactor debug logging to use centralized utilities and implement progressive loading logic
* ⬆️ (pyproject.toml): bump version from 2.3.2 to 2.3.3 to reflect new updates and improvements
* feat(ui-widgets): Implement Control Panel JSON Data Format Fix
- Resolved issue with Control Panel displaying concatenated string instead of individual fields from MediaDescribe node.
- Updated backend to send structured JSON data instead of formatted string.
- Enhanced frontend to parse JSON and display fields in a two-column layout for improved readability.
fix(ui-widgets): Add Dimensions Display Widget Troubleshooting Guide
- Created a comprehensive troubleshooting guide for the Dimensions Display Widget.
- Included quick verification steps, common issues, and detailed testing procedures.
docs(ui-widgets): Document Dimensions Display Widget Implementation
- Added documentation for the Dimensions Display Widget, detailing its features and UI behavior.
- Included examples and troubleshooting tips for users.
fix(ui-widgets): Final String Widget Population Fix
- Fixed issue where final_string widget was not being updated post-execution.
- Implemented onExecuted methods to ensure widget reflects the generated description.
docs(ui-widgets): Update README with UI Widgets Documentation
- Compiled and organized documentation for various UI widgets.
- Included links to related documentation and implementation patterns.
feat(ui-widgets): Restore Seed Widget Functionality
- Reintroduced seed widget for MediaDescribe node to enable randomization.
- Added functionality to force re-execution based on seed changes.
fix(ui-widgets): Address Widget Visibility Issues
- Resolved issues with unwanted widgets appearing in MediaDescribe node.
- Improved widget management to ensure correct visibility based on media type and source.
fix(ui-widgets): Implement Widget State Persistence
- Added serialization for widget visibility state in GeminiUtilMediaDescribe node.
- Ensured UI state is preserved across workflow saves and reloads.
* ✨ (copilot-instructions.md): add ComfyUI extension development guide to provide comprehensive instructions for backend and web extension development, documentation organization, and essential workflows. This enhances developer onboarding and ensures consistency in project contributions.
* ✨ (video_preview_native.py): introduce Video Preview Node for displaying multiple video inputs side by side to enhance user experience and comparison capabilities
* ✨ (Subreddit Randomization Feature): introduce a new feature to randomize media posts from subreddits to enhance user experience and content variety
📝 (SUBREDDIT_RANDOMIZATION_FEATURE.md): add documentation for the new subreddit randomization feature, detailing its usage, changes, and technical details
♻️ (mediia_describe.py): refactor media handling to include a new method for fetching random posts from subreddits, improving code organization and functionality
🔧 (ui-react_backup): remove outdated UI React backup files to clean up the project and reduce clutter
* ♻️ (swiss-army-knife.js): refactor formatField function to add skipTruncate parameter for better control over value truncation
✨ (swiss-army-knife.js): update right column population to avoid truncation for final_string field for improved data visibility
* ⬆️ (pyproject.toml): bump version from 2.3.3 to 2.3.4 to reflect new changes and improvements
* ♻️ (swiss-army-knife.js): refactor Subreddit URL widget handling to improve
widget management and visibility based on media source selection.
This change enhances the user experience by ensuring that the
Subreddit URL widget is dynamically shown or hidden according to
the selected media source, allowing for a more intuitive
interaction with the application.
* ⬆️ (pyproject.toml): bump version from 2.3.4 to 2.3.5 to reflect new changes and improvements
* ✨ (pyproject.toml): bump version from 2.3.5 to 2.3.6 to reflect new changes
✨ (swiss-army-knife.js): add subreddit_url widget handling for improved state persistence and restoration
* feat: added overrides and updated system prompt for json output
* chore: cleanup docs
* chore: update docs
* 📝 Update copilot-instructions.md: add detailed specifications for pyproject.toml to guide users in creating custom nodes
✨ Add requirements.txt: include essential dependencies for the project to ensure proper functionality and ease of setup
* ⬆️ (pyproject.toml): bump version from 2.4.0 to 2.4.1 to reflect new changes and improvements
* ⬆️ (pyproject.toml): bump version from 2.4.1 to 2.4.2 to reflect new changes
📝 (pyproject.toml): update license format to use file reference for clarity
📝 (pyproject.toml): add classifiers for better package categorization
🔧 (pyproject.toml): change dependencies to be dynamically loaded from requirements.txt for better management
💡 (pyproject.toml): update display name for improved branding and recognition
* ✨ (install.py): add installation script for ComfyUI-SwissArmyKnife custom nodes to automate dependency installation
⬆️ (pyproject.toml): bump version from 2.4.2 to 2.5.0 to reflect new features and improvements
* ✨ (media_selection): introduce new Media Selection nodes for advanced video processing workflows, including Media Selection, Frame Extractor, and Multi-Caption Combiner to enhance modularity and flexibility in media handling.
📝 (README): add comprehensive documentation for new nodes, including usage examples, workflow guides, and technical details to assist users in implementing the new features effectively.
🐛 (media_selection): fix issues with media type detection and improve error handling for media selection from Reddit and local paths to ensure robustness and user-friendly feedback.
✅ (test_nodes): add test script for Media Selection and Frame Extraction nodes to validate functionality and ensure reliability of the new features.
💡 (subreddit_randomization): implement a new feature for randomizing media selection from subreddits, enhancing user experience by providing more diverse media sources.
♻️ (frame_extractor): refactor frame extraction logic to support multiple extraction methods and improve performance and usability.
🔧 (configuration): update configuration files to accommodate new nodes and ensure compatibility with existing workflows.
* ⬆️ (pyproject.toml): bump version from 2.5.0 to 2.5.1 to reflect new changes and improvements
* ✨ (frame_extractor.py): add functionality to create a unique directory for frames
🐛 (frame_extractor.py): update return types and names to include frames_directory
⬆️ (pyproject.toml): bump version to 2.5.2 to reflect new features and fixes
* ✨ (Dockerfile, docker-compose.yml): add httpx to requirements for enhanced HTTP requests support
✨ (Dockerfile, docker-compose.yml): update CMD to include --base-directory for better temp file management
📝 (TEMP_DIRECTORY_UTILS.md): add documentation for temporary directory utilities to explain usage and benefits
♻️ (temp_utils.py): create utility functions for ComfyUI-aware temporary file and directory management
♻️ (media_selection, media_describe, frame_extractor): refactor to use ComfyUI-aware temp utilities for better file handling
📝 (media-selection README, WORKFLOW_EXAMPLE.md, REDDIT_POST_MEDIA_SOURCE.md): update documentation to reflect changes in temp file management
💡 (media_selection): add comments to clarify the use of ComfyUI-aware temp directory functions
* ⬆️ (pyproject.toml): bump version from 2.5.2 to 2.5.3 to reflect new updates and improvements
* ✨ (UI_DYNAMIC_FIELDS.md): add documentation for Media Selection node's dynamic field visibility to enhance user understanding
⬆️ (pyproject.toml): bump version from 2.5.3 to 2.5.4 to reflect new features
♻️ (swiss-army-knife.js): implement dynamic field visibility for MediaSelection node to improve UI clarity and user experience
* ✨ (swiss-army-knife.js): add image and video upload handlers with state clearing
💡 (swiss-army-knife.js): implement clearCurrentMediaState method to reset state before uploads
📝 (swiss-army-knife.js): improve user experience by providing feedback during uploads
* ✨ (helper_nodes.py, gemini_util_options.py, media_describe_overrides.py, mediia_describe.py, prompt_breakdown.py, frame_extractor.py, media_selection.py, multi_caption_combiner.py, nodes.py, control_panel.py, video_preview.py, video_preview_native.py, swiss-army-knife.js): update categories to include "Swiss Army Knife 🔪" for better organization and clarity
♻️ (mediia_describe.py): refactor media processing logic to streamline handling of media paths and improve code readability
📝 (mediia_describe.py): update function signatures and documentation to reflect changes in parameters and improve clarity for future developers
✨ (swiss-army-knife.js.bak): add Swiss Army Knife extension with various media handling features to enhance user experience and functionality. This includes dynamic widget management, media upload capabilities, and improved logging for debugging. The extension aims to streamline media processing and provide a more interactive interface for users.
* ✨ (media_selection.py): add image resizing functionality to MediaSelection class to enhance media processing capabilities
🔧 (pyproject.toml): update version to 2.5.5 to reflect new features and changes
✨ (swiss-army-knife.js): update extension version to 2.5.5 and improve debug logging for better traceability
* ✨ (media-selection): add video resizing functionality to Media Selection node to enhance media processing capabilities
📝 (README.md): update documentation to include new resize options and modes for clarity
📝 (VIDEO_RESIZE_IMPLEMENTATION.md): create detailed implementation guide for video resizing feature
📝 (VIDEO_RESIZE_SUMMARY.md): add quick summary of video resizing functionality and usage examples
♻️ (media_selection.py): refactor video processing methods to support resizing and maintain code consistency
⬆️ (pyproject.toml): bump version to 2.5.6 to reflect new features
🔧 (swiss-army-knife.js): update extension version to match pyproject.toml version for consistency
* ♻️ (mediia_describe.py): remove unused variables system_prompt and user_prompt to clean up code
⬆️ (pyproject.toml): bump version from 2.5.6 to 2.5.7 to reflect changes
♻️ (swiss-army-knife.js): simplify field formatting by removing prompt handling logic to enhance readability
* ✨ (CivitMetadataHelper): introduce CivitAI metadata helper node to collect and format metadata for submissions
📝 (init.py): add import statements for CivitMetadataHelper node and handle import errors
♻️ (swiss-army-knife.js): update node registration to include CivitMetadataHelper and add metadata preview functionality
⬆️ (pyproject.toml): bump version to 2.5.8 to reflect new features and updates
* ✨ (civit_metadata_helper.py): add seed parameter for random generation to enhance control over output
📝 (civit_metadata_helper.py): update documentation to include seed parameter in metadata collection
🔧 (pyproject.toml): bump version from 2.5.8 to 2.5.9 to reflect new feature addition
✨ (swiss-army-knife.js): integrate seed input value into the application for user configuration
💡 (swiss-army-knife.js): add seed display in preview output for better user feedback
* ✨ (civit_metadata_helper.py): add control_after_generate field to metadata for better configuration options
⬆️ (pyproject.toml): bump version to 2.5.10 to reflect new features and changes
* ✨ (control_panel.py, swiss-army-knife.js): enhance control panel layout to a three-column format for better organization of inputs and outputs
📝 (control_panel.py): update documentation to reflect new input fields and layout structure
💡 (swiss-army-knife.js): improve comments to clarify the purpose of each column in the control panel
* 🚀 (pyproject.toml): bump version from 2.5.10 to 2.5.11 to release new features and improvements
* ✨ (gemini_util_options.py): implement environment variable fallback for API key to enhance security
⬆️ (pyproject.toml): bump version to 2.5.12 to reflect recent changes
✨ (gemini_options_security.js): add security extension to prevent saving API keys in cleartext
* ✨ (pyproject.toml): bump version from 2.5.12 to 2.5.13 to reflect updates
♻️ (swiss-army-knife.js): refactor layout of columns to improve UI structure and readability
* ✨ Add restart button feature to ComfyUI topbar menu
- Introduce a new API endpoint `/swissarmyknife/restart` to handle server
restarts.
- Modify `__init__.py` to register the new restart API routes.
- Update `swiss-army-knife.js` to include a restart button in the topbar
menu with a confirmation dialog and toast notifications.
- Create a new CSS file for styling the restart button to enhance user
experience.
- Implement error handling for the restart process to inform users of
any issues.
This feature allows users to easily restart the ComfyUI server from the
topbar, improving usability and control over the server process.
* ✨ (AGENTS.md): add ComfyUI-SwissArmyKnife extension development guide to provide comprehensive instructions for developers
📝 (RESTART_BUTTON.md): document the implementation of a restart button feature for ComfyUI server, detailing files modified and user experience
♻️ (control_panel.py): refactor input types in ControlPanel class to simplify input handling by using all_media_describe_data instead of multiple individual fields
* ✨ (control_panel.py): enhance display_info method to parse and return structured all_media_describe_data for UI display
🔧 (pyproject.toml): bump version to 2.5.14 to reflect recent changes and improvements
* ✨ (CONTROL_PANEL_CHANGES.md): add documentation for control panel simplification changes to provide clarity on updates
♻️ (swiss-army-knife.js): refactor control panel to accept only `all_media_describe_data` as input for better usability
🔧 (pyproject.toml): update version to 2.5.15 to reflect recent changes and improvements
* ✨ (Control Panel): add comprehensive debugging documentation for data population issues
🐛 (Control Panel): fix field name mismatch and message structure handling to ensure data displays correctly
♻️ (Control Panel): refactor data extraction logic to check multiple sources and improve clarity
🔧 (Control Panel): update display logic to show only essential metadata and reduce clutter
⬆️ (version): bump version to 2.6.0 for new features and fixes
* ✨ (docs): add documentation for Control Panel Prompt Breakdown implementation to provide detailed information on its purpose, input, output, and implementation details
♻️ (control_panel.py): create ControlPanelPromptBreakdown class to handle prompt breakdown logic and refactor existing ControlPanel class for clarity
♻️ (swiss-army-knife.js): update frontend to support new ControlPanelPromptBreakdown node and ensure proper data handling and display
⬆️ (pyproject.toml): increment version to 2.6.1 to reflect new features and improvements
* ✨ (docs): add JSON response format documentation for Gemini prompts to provide structured output details
✨ (docs): add Control Panel Prompt Breakdown documentation to detail JSON parsing updates and benefits
♻️ (nodes): simplify Media Describe module by removing legacy input and updating parsing logic for cleaner code
✨ (mediia_describe.py): enhance JSON support for image descriptions and improve parsing logic
♻️ (mediia_describe.py): refactor return values to include raw JSON output for better integration
📝 (mediia_describe.py): update docstrings to clarify functionality and output format
🔧 (nodes.py): remove MediaDescribePromptBreakdown class and related mappings to streamline codebase
✨ (control_panel.py): update input type from all_media_describe_data to raw_gemini_json for better clarity
♻️ (control_panel.py): refactor display_info method to parse structured JSON response from Gemini API
💡 (control_panel.py): enhance logging for better debugging and user feedback
♻️ (swiss-army-knife.js): remove MediaDescribePromptBreakdown node implementation to streamline code and improve maintainability
* ✨ (Media Describe): add prompt_prefix to overrides and update final JSON structure for positive prompt integration
* ✨ (docs): add JSON Field Order Standardization documentation to ensure consistency across codebase
♻️ (mediia_describe.py): standardize JSON field order in MediaDescribe class to improve maintainability and clarity
✨ (control_panel.py): update variable names for clarity and consistency
✨ (control_panel.py): enhance JSON parsing to support new input structure
✨ (swiss-army-knife.js): modify UI to display additional columns for prompt breakdown
⬆️ (pyproject.toml): bump version to 2.7.0 for new features and improvements
* Initial plan
* Rename ui-widgets to web-js and consolidate video-preview documentation
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* Consolidate video-metadata documentation (5 files → 1 file)
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* Update documentation structure - remove features dir, update AGENTS.md and docs/README.md
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* Add consolidation notes to remaining node READMEs
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* Add consolidation guide for future documentation work
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* Consolidate remaining 5 nodes documentation (54 files → 5 files)
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* ⬆️ (pyproject.toml): bump version from 2.7.0 to 2.7.1 to reflect new changes and updates in the project
* ✨ (GEMINI_OPTIONS_SIMPLIFICATION.md): simplify Gemini Util - Options node by removing unnecessary input toggles to enhance user experience
📝 (SYSTEM_PROMPT_FIELD_STANDARDIZATION.md): standardize system prompt fields for Gemini to ensure consistent output structure across image and video processing
♻️ (gemini_util_options.py): refactor options creation logic to hardcode previously toggled fields as always enabled for improved workflow efficiency
📝 (mediia_describe.py): update JSON field descriptions to always include all 6 fields in consistent order for clarity and completeness
⬆️ (pyproject.toml): bump version from 2.7.1 to 2.7.2 to reflect recent changes and improvements
* 📝 Update documentation: simplify Gemini Util - Options node by removing unnecessary input toggles to enhance user experience and streamline functionality.
✨ Introduce new file: add OPTIONS_VERIFICATION.md to document verification of the simplified options integration with the Media Describe node.
⬆️ Upgrade version: bump version number in pyproject.toml from 2.7.2 to 2.7.3 to reflect recent changes and improvements.
* feat: add joycaption
* feat: add node for llm studio
* 📝 (LLM_STUDIO_IMPLEMENTATION_SUMMARY.md, LLM_STUDIO_MEDIA_DESCRIBE.md, LLM_STUDIO_QUICK_REFERENCE.md): update default base_url from 127.0.0.1 to 192.168.50.41 for better accessibility in local network
🔧 (pyproject.toml): bump version from 2.8.2 to 2.8.3 to reflect recent changes
* ✨ (docs): rename LLM Studio Media Describe to LLM Studio Video Describe
to reflect the node's functionality more accurately
📝 (docs): update documentation across multiple files to ensure
consistency with the new node name and its features
♻️ (code): refactor class and variable names from LLMStudioMediaDescribe
to LLMStudioVideoDescribe for clarity and to align with the updated
documentation
✨ (llm_studio_picture_describe.py): add LLM Studio Picture Describe node for image analysis using vision-language models
♻️ (nodes.py): update node mappings to include LLMStudioPictureDescribe and LLMStudioVideoDescribe
⬆️ (pyproject.toml): bump version to 2.8.4 for new feature addition
* 📝 (llm_studio_describe.py): update caption prompt to allow for a longer description and clarify language usage for better context
⬆️ (pyproject.toml): bump version from 2.8.4 to 2.8.5 to reflect recent changes and improvements
* ✨ (media_describe): introduce LLMStudioPictureDescribe for image analysis
♻️ (llm_studio_describe): refactor LLMStudioVideoDescribe to remove max_caption_words parameter
📝 (llm_studio_describe): update documentation for clarity and accuracy
🔧 (init.py): consolidate imports for LLMStudioVideoDescribe and LLMStudioPictureDescribe
🚫 (llm_studio_picture_describe.py): remove LLMStudioPictureDescribe node as it is no longer needed
♻️ (nodes.py): update import statements to reflect the removal of LLMStudioPictureDescribe
⬆️ (pyproject.toml): bump version to 2.8.6 to reflect recent changes and updates
* Initial plan
* Add LLM Studio Options node and update MediaDescribe to support both Gemini and LLM Studio
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* Add comprehensive documentation for LLM Studio Options and updated MediaDescribe docs
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* Add implementation summary and complete validation testing
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* feat: add llm studio as option for media describe node
* ✨ (media_describe.py): enhance critical notes to include prohibition of
watermarks, logos, branding, and textual overlays for clearer guidelines
on descriptions
♻️ (media_describe.py): refactor system prompts to consistently
prohibit watermarks, logos, branding, and textual overlays for
uniformity across instructions
🔧 (media_describe.py): update return types and names to include
prompt_request for better clarity in function outputs
⬆️ (pyproject.toml): bump version from 2.8.7 to 2.8.9 to reflect
recent changes and improvements in the project
* ✨ (media_describe.py): add JSON output structure for Control Panel compatibility to enhance integration with Gemini and provide detailed analysis status
* feat: combine cinematic aesthetic and stylization tone into visual style
* bug: debugging upload media button
* bug: fix upload image button
* chore: remove joycaption nodes
* ✨ (docs): add ComfyUI settings integration documentation for secure API key management
📝 (docs): update implementation status and README to reflect new settings integration
🔧 (docs): create SETTINGS_INTEGRATION.md and SETTINGS_INTEGRATION_SUMMARY.md for detailed implementation overview
✨ (civitai_service.py, config_api.py, gemini_util_options.py, nodes.py): implement API key management through ComfyUI settings instead of environment variables to enhance security and usability
♻️ (gemini_options_security.js): disable outdated security extension for API key handling as it is no longer needed
⬆️ (pyproject.toml): bump version to 2.9.0 to reflect recent changes and improvements
✨ (swiss-army-knife.js): update extension version to 2.8.11 for consistency
✨ (swiss-army-knife.js): add helper functions to retrieve API keys from settings
✨ (swiss-army-knife.js): implement sync function to send API keys to backend
💡 (swiss-army-knife.js): update comments to reflect changes in API key handling
✨ (swiss-army-knife.js): register settings for Gemini and Civitai API keys with sync functionality
* ✨ (pyproject.toml): bump version from 2.9.0 to 2.9.1 to reflect new changes
♻️ (gemini_options_security.js): remove deprecated Gemini Util Options Security Extension as it is no longer needed
♻️ (swiss-army-knife.js): update API key settings to use consistent casing for SwissArmyKnife in multiple locations
* ✨ (pyproject.toml): bump version from 2.9.1 to 2.9.2 to reflect new changes
♻️ (swiss-army-knife.js): remove CivitMetadataHelper node implementation to simplify code and improve maintainability
* Update movement description in media_describe.py for clarity and detail; increment version to 2.9.3 in pyproject.toml
* ✨ (media_describe.py): enhance scene description for richer environmental detail; bump version to 2.9.4 in pyproject.toml
* ✨ (media_describe.py): enhance movement description for explicit genital visibility and sex position identification; bump version to 2.9.5 in pyproject.toml
* ✨ (MEDIA_DESCRIBE.md, media_describe.py, pyproject.toml): update LLM Studio prompts for enhanced media description; increment version to 2.9.6 in pyproject.toml
* ✨ (MEDIA_DESCRIBE.md, media_describe.py, pyproject.toml): update LLM Studio prompt architecture for improved clarity and compatibility; bump version to 2.9.7 in pyproject.toml
* ⏪ Revert LLM Studio prompt changes (v2.9.5-v2.9.7) and bump version to 2.9.8
This reverts commits:
- 080f961 (v2.9.7): LLM Studio prompt architecture update
- 220397b (v2.9.6): LLM Studio enhanced prompts
- e53fc9b (v2.9.5): Movement description enhancements
Reverting back to v2.9.4 state (enhanced scene descriptions) and bumping to v2.9.8.
* ✨ (llm_studio_describe.py): update frame extraction parameters and caption prompt for improved detail and flexibility; bump version to 2.9.9 in pyproject.toml
* feat: update llm studio prompt
* chore: bump version to 2.9.11 in pyproject.toml
* chore: bump version to 2.9.12 in pyproject.toml
* refactor(media_describe.py): enhance scene and cinematic prompts for improved detail and clarity in descriptions
refactor(media_describe.py): update visual style prompt to include more comprehensive aesthetic and technical details
* refactor(media_describe.py): enhance clothing description prompts for clarity and specificity to improve model output quality
* fix(pyproject.toml): bump version from 2.9.12 to 2.9.13 to reflect new release
* ✨ (azure_storage_upload): introduce Azure Storage Upload node to enable file uploads to Azure Blob Storage
📝 (azure_storage_upload): add comprehensive documentation for Azure Storage Upload node
🔧 (config_api.py): add support for Azure Storage connection string in settings
♻️ (swiss-army-knife.js): refactor API key synchronization to include Azure Storage connection string
✅ (requirements.txt): add azure-storage-blob as a dependency for Azure Storage functionality
* ✨ (DEBUG_MODE_IMPLEMENTATION.md): introduce centralized debug mode setting for both frontend and backend to enhance logging control
📝 (DEBUG_MODE_IMPLEMENTATION.md): update documentation to reflect new debug mode implementation and usage instructions
♻️ (debug_utils.py): refactor debug logging utilities to check both environment variable and frontend settings for debug mode
🐛 (civitai_service.py): replace print statements with debug_print for consistent logging in CivitAI service
♻️ (config_api.py): refactor API to cache debug mode setting and expose it through a new endpoint
📝 (swiss-army-knife.js): update logging to use dynamic debug mode check and remove legacy loading of debug config
♻️ (video_preview.js): refactor video preview extension to use dynamic debug mode check for logging
📝 (extension.js): add dynamic debug logging wrapper for LoRA Manager to improve logging consistency across extensions
* ⬆️ (pyproject.toml): upgrade project version from 2.9.13 to 2.10.0 to reflect new changes and improvements
* Initial plan
* Initial analysis: Add .venv to gitignore
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* Add VACE Annotator nodes (Depth, Flow, Scribble) with documentation
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* Complete VACE Annotators implementation: add example workflow, update README, fix linting
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* Add comprehensive implementation summary for VACE Annotators
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* Initial plan
* Update randomize by path to use seed as index instead of random selection
- Changed seed behavior from random selection to deterministic index-based selection
- Seed 0 now always selects first file, seed N wraps around using modulo
- Added file deduplication to handle files found by both recursive and non-recursive patterns
- Added sorting for consistent ordering across runs
- Removed unused imports (random, requests, mimetypes, urlparse, unescape)
- Updated info message to show index and file count
- Documented new behavior in MEDIA_SELECTION.md
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* Change file ordering from alphabetical to creation date (oldest first)
- Sort files by os.path.getctime() instead of alphabetically
- Seed 0 now selects oldest file by creation date
- Updated documentation to reflect chronological ordering
- Tests confirm oldest file is selected first
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>
* ⬆️ (pyproject.toml): bump version from 2.10.0 to 2.10.1 to reflect new changes and updates in the project
* 🔧 (docker-compose.yml): add reference-vids volume mount for persistent storage of reference videos
♻️ (media_selection.py): update file sorting to order by newest first for consistent selection of recent media
* ⬆️ (pyproject.toml): bump version from 2.10.1 to 2.10.2 to reflect new changes and updates in the project
* fix(media_selection.py): update file sorting logic to use modification time instead of creation time for better accuracy
fix(media_selection.py): remove duplicates after sorting to preserve order
bump(version): update version from 2.10.2 to 2.10.3 for release
* feat(vace_scribble_annotator.py): add support for ComfyUI folder paths to improve model path resolution
This change allows the annotator to prefer ComfyUI folder paths when available, enhancing flexibility in locating model files based on user configurations.
* feat(vace_scribble_annotator.py): enhance model loading and processing logic with improved debug output and Sobel fallback
* Add vendored VACE scribble model and update documentation
- Introduced vendoring for the VACE scribble generator to allow usage without the full upstream repository.
- Added `VENDORING.md` to document vendored files and update instructions.
- Updated `README.md` to include vendoring notes.
- Modified `IMPLEMENTATION_SUMMARY.md` to reflect changes in the scribble node.
- Enhanced `VACE_ANNOTATORS.md` with new parameters for inference mode and edge threshold.
- Created `scribble.py` and `scribble_loader.py` for model loading and preprocessing.
- Updated `vace_scribble_annotator.py` to integrate new model loading logic and fallback mechanisms.
- Added smoke tests for both fallback and model inference scenarios.
- Included a sample input image for testing purposes.
* docs: update VENDORING.md and VACE_ANNOTATORS.md to reflect changes in edge thresholding and vendor behavior
docs: remove edge_threshold parameter from example workflow to align with new automatic edge thresholding feature
docs(README): simplify and condense VACE Annotator Scribble documentation for clarity and ease of use
docs: add help-page style documentation for VACEScribbleAnnotator node to improve user guidance and usability
feat(annotator_models): add ContourInference and VendorResidualBlock classes for enhanced model architecture
feat(annotator_models): implement postprocess_vendor_scribble_output function for vendor-specific output processing
fix(annotator_models): update load_scribble_model to handle vendor state dicts and improve model loading logic
refactor(preprocess_scribble_input): add normalize_mode parameter for flexible input normalization options
fix(_quantile_threshold): improve scale handling for user-defined thresholds in quantile calculations
refactor(vace_scribble_annotator.py): remove edge_threshold parameter and use a default constant for edge detection to simplify the code
feat(vace_scribble_annotator.py): add support for vendor-specific postprocessing of scribble output to enhance functionality
* chore: update docs
* chore: update docs
* docs: add detailed descriptions for FrameExtractor, MediaSelection, and MultiCaptionCombiner nodes
* chore(pyproject.toml): bump version from 2.10.3 to 2.11.0 to reflect new release
* ♻️ (gitignore, cache_bust.sh): remove cache_bust.sh script and update .gitignore to exclude .ai-image-gen directory to clean up unused files and improve project organization
✨ (tests): add new test scripts for cache verification, CivitAI integration, and GPU monitoring to enhance testing coverage and ensure functionality
* ✨ (gpu_monitor.py): introduce GPUMonitor class to log GPU memory usage
✨ (vace_scribble_annotator.py): integrate GPUMonitor to track GPU memory during scribble map generation
* ⬆️ (pyproject.toml): bump version from 2.11.0 to 2.11.1 to reflect new changes and improvements
* ✨ (gpu_monitor.py): update GPU memory reporting from MB to GB for better readability
⬆️ (pyproject.toml): bump version to 2.11.2 to reflect recent changes and improvements
* ✨ (gpu_monitor.py): add logging functionality to GPUMonitor for better
diagnostics and support for configurable log file path
🐛 (gpu_monitor.py): fix memory usage reporting to include allocated,
reserved, and max allocated memory
💡 (gpu_monitor.py): add dump_gpu_models function to identify models
consuming VRAM during OOM issues
📝 (vace_scribble_annotator.py): update GPUMonitor initialization to
include log path and handle exceptions during processing
✅ (test_gpu_monitor.py): enhance tests to verify log file creation
and content for GPUMonitor
* ⬆️ (pyproject.toml): bump version from 2.11.2 to 2.11.3 to reflect new changes and updates in the project
* feat: add LLM description caching and remove duplicate model caching from VACE annotator
* version 2.11.4
* ♻️ (lora_manager): remove LoRA Manager component and related files to streamline the project and reduce complexity. This change is made to focus on core functionalities and improve maintainability.
* ✨ (civitai_service.py, debug_utils.py, media_describe.py, media_selection.py, nodes.py, restart_api.py, vace_annotators): implement a new logging system using Logger class to replace print statements for better log management and consistency across the application.
This change enhances the maintainability of the code by centralizing logging functionality, allowing for easier adjustments to logging behavior in the future. It also improves the readability of logs by providing timestamps and log levels.
* 🚀 (pyproject.toml): bump version from 2.11.4 to 2.11.5 to release new features and improvements
* ✨ (debug_utils.py): add info and warning methods to Logger class for enhanced logging capabilities
* ⬆️ (pyproject.toml): bump version from 2.11.5 to 2.11.6 to reflect new changes and updates in the project
* feat/llm studio media describe (#31)
* 📝 (CONTROL_PANEL.md): update documentation to reflect changes in logging
✨ (control_panel.py): implement centralized debug logging using Logger
💡 (control_panel.py): add debug-controlled logging for better output management
* ✨ (MEDIA_DESCRIBE): introduce custom prompt override inputs for MediaDescribe node to enhance user control over prompts
📝 (MEDIA_DESCRIBE): update documentation to reflect new optional inputs and usage tips for custom prompts
♻️ (media_describe.py): refactor prompt handling to support custom system and user prompts while maintaining existing functionality
* ⬆️ (pyproject.toml): upgrade project version from 2.11.6 to 2.11.7 to reflect new changes and improvements
* ♻️ (control_panel.py): refactor import statement to use relative import for better module organization
* ⬆️ (pyproject.toml): upgrade project version from 2.11.7 to 2.11.8 to reflect new changes and improvements
* ♻️ (media_describe.py): refactor import statement for Google Generative AI to use updated module name
⬆️ (pyproject.toml): upgrade project version from 2.11.8 to 2.12.0 to reflect recent changes and improvements
* 📝 (README.md): add documentation for GitHub-based workflow versioning strategy
✨ (WORKFLOW_VERSION_CONTROL.md): introduce new document outlining workflow version control plan
✨ (llm_studio_describe.py): add support for selecting API endpoint for video and image description
🔧 (pyproject.toml): update version to 2.12.1 for release preparation
* ✨ (docs): add usage guide and implementation proposal for LLM Studio
structured output nodes to enhance documentation and user understanding
✨ (nodes): introduce LLMStudioStructuredDescribe and
LLMStudioStructuredVideoDescribe nodes for structured JSON output
using JSON Schema, improving reliability and ease of use
📝 (nodes): update __init__.py and nodes.py to register new structured
output nodes for better integration and accessibility in the system
* fix: update LLM to LM in module and display name mappings for consistency and clarity
* feat(llm_studio_structured.py): add method to fetch available models from LM Studio and update model_name input to use it
refactor(llm_studio_structured.py): rename prompt parameters to system_prompt and user_prompt for clarity and combine them for analysis
* docs(README.md): add release notes for version 3.0.0 including breaking changes, removed nodes, renamed nodes, enhancements, and migration guide
docs(README.md): update links to LLM Studio prompt logging documentation to LM Studio for consistency
docs(debug): rename LLM_STUDIO_PROMPT_LOGGING.md to LM_STUDIO_PROMPT_LOGGING.md for consistency in documentation naming
docs: add documentation for LM Studio Video Describe Node to explain functionality and usage
docs: add usage guide for LM Studio Structured Describe nodes to explain new features and benefits
feat(docs): add structured output implementation proposal for LM Studio to improve reliability and consistency in JSON output
feat(docs): update documentation for MediaDescribe node to reflect LLM Studio renaming to LM Studio and improve clarity
fix(docs): correct instances of "LLM Studio" to "LM Studio" for consistency throughout the documentation
feat(docs): add documentation for LM Studio Video Describe node to provide detailed usage and functionality information
feat(docs): add LM Studio Options documentation for media analysis configuration
This documentation provides comprehensive details on the LM Studio Options node, including its features, inputs, outputs, and usage examples. It aims to assist users in configuring and utilizing the node effectively for media analysis with vision-language models.
docs: add LM Studio Video Describe quick reference guide for user convenience
docs: update Media Describe documentation to reflect LM Studio terminology changes and improve clarity
chore(docs): update documentation references from LLM Studio to LM Studio for consistency
chore(docs): update version number from 2.12.1 to 3.0.0 in pyproject.toml and related files
fix(docs): correct documentation links and references to reflect LM Studio terminology
fix(js): update extension version in swiss-army-knife.js to match pyproject.toml version
* Remove LoRA Loader documentation and references; update Video Metadata node to eliminate LoRA JSON integration; adjust related documentation links in web-js README.
* refactor: remove LoRAInfoExtractor class and related metadata processing from VideoMetadataNode
* refactor: remove LoRA-related documentation and unused code for cleaner project structure
* refactor: remove LoRA Loader documentation references for cleaner project structure
* Remove Video Preview Widget implementation and associated README documentation
* feat: add dynamic output labels for LLMStudioStructuredDescribe and LLMStudioStructuredVideoDescribe nodes
* docs: update AGENTS.md with critical server restart instructions after Python changes
* chore(eslint): add ESLint configuration file to enforce coding standards and improve code quality
* refactor(llm_studio_structured.py): restructure return values to include UI field for better integration with JavaScript display
feat(swiss-army-knife.js): add JSON display widget and update handling for LLMStudioStructuredDescribe nodes to improve user experience
feat(swiss-army-knife.js): implement logging for API events to enhance debugging capabilities during execution processes
* feat(swiss-army-knife.js): enhance resizing logic to handle content reflow and improve layout stability
fix(swiss-army-knife.js): change maxHeight to minHeight for better content display and add custom computeSize method to accurately measure content height
* feat(llm_studio_structured.py): enhance system prompt and add top_p parameter for improved output control
* feat(llm_studio_structured.py): update nucleus sampling step size to improve output granularity
* remove deprecated nodes
* remove deprecared nodes
* remove deprecated nodes
* feat(llm_studio_structured.py): enhance video description schema with improved descriptions and add max_tokens parameter for better control over output length
* refactor(llm_studio_structured.py): rename 'movement' to 'action' in VIDEO_DESCRIPTION_SCHEMA for clarity and consistency
refactor(llm_studio_structured.py): update system and user prompts to reflect video context instead of image context for improved accuracy in descriptions
feat(prompts.md): add detailed prompts for video analysis to enhance description quality and consistency
* feat(llm_studio_structured.py): increase max_tokens default value to 12000 for better performance
refactor(llm_studio_structured.py): rename 'movement' to 'action' for clarity in video description schema
feat(llm_studio_structured.py): return structured JSON output for better integration with UI
feat(swiss-army-knife.js): enhance LLMStudioStructuredVideoDescribe node with JSON display and dynamic output labels
fix(swiss-army-knife.js): update execution start listener to handle both LLMStudioStructuredDescribe and Video nodes for pending state updates
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sammykumar <1479861+sammykumar@users.noreply.github.com>