Previously, the app only sent an HTTP shutdown request to the Python
sidecar with no timeout and no fallback. If the request failed, the
sidecar process became orphaned, causing memory leaks.
- Add 3-second timeout to the HTTP shutdown request
- Add fallback to force-kill the sidecar by PID (taskkill /F /T on
Windows, kill -9 on Unix) after HTTP shutdown attempt
- Store child PID in AppState for use in both window close handler
and Tauri command shutdown
Fixes#944
Some images store UserComment directly in IFD0 with type BYTE instead
of the standard Exif sub-IFD with type UNDEFINED, causing piexif to
return empty results. Add a raw EXIF fallback to extract and decode
UserComment in both ComfyUI detection and webui gen info reading.
- Add _extract_usercomment_from_raw_exif() for raw IFD0 parsing
- Add detection fallback in is_img_created_by_comfyui() for JPEG/WEBP
- Add extraction fallback in read_sd_webui_gen_info_from_image()
- In dev mode, bypass DB cache for unedited images to aid debugging
- Add new /img/{filename} API endpoint that preserves filename in URL
- Replace toRawFileUrl with toImageUrl in all preview components
- Fix issue where right-click save named all images as "file"
- Update CHANGELOG with user-facing explanation
Add settings panel to customize which feature blocks are displayed in the full-screen info panel.
- Add settings dropdown for toggling visibility of action buttons, info tags, custom tags, layout controls, draggable image, and prompt tabs
- Persist user preferences to backend via globalStore
- Add i18n support for all block names (EN, ZH, DE)
- Rename change.log.md to CHANGELOG.md following industry standards
- Add panel settings screenshot to documentation
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 support for parsing the extraJsonMetaInfo field from image metadata.
The field values are merged into the meta dictionary with all values
ensured to be strings for safety.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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>
- Change default IIB_DB_FILE_BACKUP_MAX from 8 to 4
- Add daily backup check to prevent multiple backups per day
- Skip backup if one already exists for the current date
- Rename skill from iib-api to iib for simpler installation:
npx skills add https://github.com/zanllp/infinite-image-browsing --skill iib
- Rewrite SKILL.md following agentskills.io best practices
- Use curl examples instead of Python for simpler agent execution
- Add "Before You Start" section: ask user for port, test connectivity first
- Add --noproxy flag to bypass proxy for localhost connections
- Add service status check and daemon startup instructions
- Add quick reference table for common operations
- Add agent-guide.md with decision tree and workflow patterns
- Update README.md with AI agent usage section
Co-Authored-By: Claude <noreply@anthropic.com>
When a folder is removed from the library, images under that folder are
now properly cleaned up from the database if they are not covered by any
other registered paths. This fixes the issue where Random Image would
pull from folders that had been removed.
The cleanup logic checks if each image is still "owned" by any remaining
scanned path before deletion, supporting nested path scenarios where a
parent path may still contain the images.
Fixes#868
Co-Authored-By: Claude <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>
When running AI organize on a folder that already contains subfolders,
the AI will now consider reusing existing folder names if the theme
matches, instead of always generating new titles. This prevents
duplicate folders from being created when re-organizing the same
directory multiple times.
- Add existing_folder_names parameter to ClusterIibOutputReq
- Pass existing folder names from dest directory to AI title generation
- Update AI prompt to prioritize reusing matching folder names
Co-Authored-By: Claude <noreply@anthropic.com>
- Pass recursive parameter from request to _build_embeddings_one_folder
- Include recursive in cache_params to avoid cache collision between
recursive and non-recursive clustering results
- Add debug logging for recursive parameter tracking
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>