📝 (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
📝 (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
♻️ (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
📝 (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
♻️ (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
✨ (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
♻️ (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
🐛 (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
♻️ (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
- 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.
⬆️ (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
📝 (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
📝 (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
📝 (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
⬆️ (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
📝 (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
🔧 (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
♻️ (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.
💡 (swiss-army-knife.js): implement clearCurrentMediaState method to reset state before uploads
📝 (swiss-army-knife.js): improve user experience by providing feedback during uploads
⬆️ (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
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.
📝 (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
- 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.
♻️ (video_preview.js): refactor video preview container to use flexbox for layout
📝 (video_preview.js): update comments for clarity and maintainability
- 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.
📝 (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
♻️ (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
📝 (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
- 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.
📝 (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
📝 (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