Add drag-to-transfer functionality specifically designed for ComfyUI workflow integration.
Users can now click to display original images and drag them directly into ComfyUI
to automatically restore complete workflows with metadata extraction.
Features:
- Click-to-display original images with configurable size
- Dual placement: full-screen info panel and file grid overlays
- Multi-language support (EN, ZH, DE)
- Full metadata preservation for seamless workflow transfer
This feature streamlines the workflow from IIB to ComfyUI by enabling
direct image transfer with automatic parameter reconstruction.
Updated extraMetaInfoHint in all 4 language files to emphasize that it can save any complex information as a perfect supplement to params format limitations, with JSON mode supporting any valid JSON values.
- Add prompt editor modal with support for editing positive/negative prompts
- Add key-value editor for custom metadata fields (string and JSON modes)
- Cache EXIF data in database for faster retrieval
- Track manually edited prompts with exif_edited flag
- Add validation for required fields and unique key constraints
- Add full internationalization support (EN, ZH-Hans, ZH-Hant, DE)
- Update changelog with new features and screenshot
- Clean up gitignore to use wildcard for video files
- Add TipsCarousel component with random shuffling (Fisher-Yates)
- Display 10 tips in 4 languages (zh-hans, en, zh-hant, de)
- Tips include filename uniqueness, batch operations, shortcuts, AI clustering, fuzzy search regex, walk mode, workspace snapshots, auto-tagging, performance optimization, and AI agent integration
- Integrate TipsCarousel into TagSearch and SubstrSearch pages
- Auto-rotate every 10 seconds with smooth fade transitions
- Support dismissing warning tips via localStorage
- Compact horizontal layout for minimal space usage
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
In scanned-fixed mode, stack.length is always 1 since openNext replaces
the entire stack instead of pushing. The existing watch on stack.length
wouldn't trigger scroll because v === lv is always true.
Co-Authored-By: Claude <noreply@anthropic.com>
- zh-hans: 智能整理 -> AI整理
- zh-hant: 智能整理 -> AI整理
- en: Smart Organize -> AI Organize
- de: Smart Organize -> AI Organize
Co-Authored-By: Claude <noreply@anthropic.com>
- Add smart organize feature that groups similar images based on prompt semantics
- AI generates meaningful folder names in user's preferred language
- Preview before action: review proposed organization, skip or adjust as needed
- Background processing for large folders
- Support move or copy, configurable min cluster size, include subfolders option
Backend changes:
- Add organize_files.py with job management and file operations
- Add recursive parameter to embedding and clustering APIs
- Default recursive=true for Topic Search (backward compatible)
- Default recursive=false for Smart Organize (first-level only)
- Update database on file move to preserve tags
Frontend changes:
- Add SmartOrganizeConfigModal for configuration
- Add OrganizeJobsPanel for progress tracking
- Add OrganizePreview for reviewing and confirming
- Add smart organize button to address bar
- Add i18n translations for zh-hans, zh-hant, en, de
Documentation:
- Update README.md and README-zh.md with feature description
- Update change.log.md with screenshots and video demo
Co-Authored-By: Claude <noreply@anthropic.com>
- Add autoUpdateIndex setting to global settings (enabled by default)
- When disabled, show manual update prompt instead of auto-updating expired index
- Add feature tip alert shown on first use
- Localize new strings in all languages (en, zh-hans, zh-hant, de)
- Rebuild vue dist assets with updated code
- Add tag name validation in Tag.get_or_create method
- Chinese names: max 16 characters
- Other languages: max 8 words
- Return error tags with uppercase English names when validation fails
- Ensure error tags are created through get_or_create to maintain database consistency
- Clean up database: removed 487,938 non-custom tags, keeping only 12 custom tags
- Add IIB_COMFYUI_EXTRACT_ALL_PROMPTS environment variable
- When enabled, extract all CLIPTextEncode prompts instead of following KSampler chain
- Note: All prompts will be merged into positive prompt field
- Add keyword count limit (default 600) for Tag layer to improve performance
- Implement irregular node layout with random perturbations
- Add layer spacing based on adjacent layer widths for consistent gaps
- Add cache result banner with collapse/expand functionality
- Add streaming response utility for LLM API calls
- Update i18n translations for new cache banner texts
- Optimize tag graph: increase max tags to 500, add level-2 tiered requirements
- Fix keyword deduplication and null handling in tag graph
- Add audio file recognition in backend (tool.py) and frontend (file.ts)
- Support audio formats: mp3, wav, ogg, flac, m4a, aac, wma
- Add audio player in TikTok view with starfield background animation
- Add audio modal similar to video modal
- Update file type filter to multi-select checkboxes (image/video/audio)
- Add filename display in TikTok view with Douyin-style bottom gradient
- Add long press to hide/show controls in TikTok view
- Fix audio resource cleanup when closing TikTok view
- Add Audio media type tag in database indexing
- Add i18n translations for audio related strings
Backend optimizations:
- Refactor get_random_images() using SQLite ORDER BY RANDOM()
- Simplify from 60+ lines to ~20 lines with better performance
- Remove complex multi-cycle index calculations
- Maintain file existence check and auto-cleanup
ComfyUI support:
- Add fallback to 'parameters' field in PNG metadata
- Improve detection for ComfyUI-generated images
Frontend improvements:
- Smart prompt display: auto-detect tag vs natural language format
- Add getTextLength() with Chinese character weight (1 char = 3 letters)
- Refactor isTagStylePrompt() with clear rules:
* Any tag length > 50 natural language format
* Average tag length > 30 natural language format
- Natural language prompts shown as paragraphs
- Tag-style prompts shown as badges
- Better support for Chinese/English mixed content
Build:
- Update frontend asset references
- Add AutoTagMatcher singleton class for automatic tag application
- Support filtering by multiple fields (prompt, model, sampler, etc.)
- Add frontend UI for managing auto-tag rules in global settings
- Support AND logic for multiple conditions within a rule
- Integrate with image indexing process
- Add natural language vs tag-style prompt detection and rendering
- Include rule descriptions and usage guidance in UI
- Auto-reload rules when updated via API
- Add toggle for navigation buttons in global settings
- Add multi-language support for new settings (en, zh-hans, zh-hant, de)
- Improve video display in TikTok view using fit-content
- Added video tag support for enhanced media file handling:
* Video files can now use tag-based search functionality
* Added support for reading video generation info from txt files
* Enhanced EXIF data handling for video media types
- Implemented random sort feature for image grid:
* Added random sort toggle button with visual indicators (🎲/📅)
* Supports both random and date-based sorting modes
* Optimized pagination for random sorting with offset-based cursors
- Complete internationalization support:
* Added translations for random sort and date sort in all languages
* Supported languages: zh-hans, en, de, zh-hant
* Improved UI consistency across language variants
- Backend improvements:
* Enhanced database queries to support random sorting
* Added random_sort parameter to API endpoints
* Improved error handling for video file processing
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>