Commit Graph

121 Commits (a5b99223e3dd0ce6852a131210d116311c7be191)

Author SHA1 Message Date
zanllp a5b99223e3 fix: cleanup orphaned images when removing extra paths
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>
2026-02-18 14:21:56 +08:00
zanllp fcc3b66767 feat: add smart organize feature with AI-powered file organization
- 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>
2026-02-17 17:14:02 +08:00
zanllp 7a2fcbe77e feat: add continue-on-error for move copy 2026-02-01 19:53:40 +08:00
zanllp 1d9e65f835 feat: add EXIF metadata display support 2026-01-29 23:49:49 +08:00
zanllp 5add6f0de6 fix: add null checks for Tag.get_or_create calls
- Tag.get_or_create now returns None for invalid tag names instead of creating error tags
- Add null checks before using tag.id in all callers
- Adjust tag validation: non-Chinese tags now limited to 8 words or 40 characters
2026-01-23 00:17:53 +08:00
zanllp cd1793b248 Revert "refactor: Handle invalid tag names gracefully"
This reverts commit e1dad21286.
2026-01-22 22:43:58 +08:00
zanllp e1dad21286 refactor: Handle invalid tag names gracefully
- Change Tag.get_or_create to return None for invalid tag names
- Add None checks at all call sites to prevent AttributeError
- Protects against invalid Chinese names (>16 chars) and other language names (>8 words)
- Ensures system stability when encountering problematic tag data
2026-01-22 22:41:28 +08:00
wuqinchuan 59bef3915e feat: 优化query搜索并加入tag图(去掉max抽象层与d3依赖) 2026-01-11 00:56:58 +08:00
wuqinchuan c2c0c69fbc feat: Add tag relationship graph visualization for topic clusters
Features:
- Tag-based relationship graph using force-directed layout
- Hybrid weight calculation (frequency + TF-IDF)
- Automatic community detection using Louvain algorithm
- Interactive visualization with ECharts
- Support for Tag and Cluster nodes
- Click to search images by tag
- Top-N filtering to avoid visual clutter

Backend:
- New API endpoint: POST /db/cluster_tag_graph
- Tag weight calculation with configurable alpha
- Category inference (character/style/scene/object)
- Community detection (requires networkx, optional)

Frontend:
- New component: TagRelationGraph.vue
- Switch between Cluster Cards and Tag Graph views
- Interactive graph with drag/zoom/pan
- Node details panel with search functionality
- Stats panel showing tags/clusters/images count

Documentation:
- Added TAG_GRAPH_README.md with usage guide

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-11 00:53:38 +08:00
zanllp e6acf49711 fix secret verification failed 2026-01-10 12:59:40 +08:00
zanllp a7e6109f17 fix: Lock major versions for requests, numpy, hnswlib and add runtime version info
- Lock requests to >=2.0.0,<3.0.0 (current: 2.32.5)
- Lock numpy to >=2.0.0,<3.0.0 (current: 2.4.0)
- Lock hnswlib to >=0.0.0,<1.0.0 (current: 0.8.0)
- Add runtime version info for requests, numpy, hnswlib in /version endpoint
2026-01-04 01:27:01 +08:00
wuqinchuan cfa589c68f feat: improve topic search UX and dependency gating 2026-01-03 23:49:36 +08:00
wuqinchuan 101a30afb4 Revert "Revert "feat: experimental natural-language categorization & search (persistent scope, clustering, retrieval)""
This reverts commit dd5663dd89.
2026-01-03 23:47:16 +08:00
wuqinchuan dd5663dd89 Revert "feat: experimental natural-language categorization & search (persistent scope, clustering, retrieval)"
This reverts commit d7e2b2f9fc.
2025-12-28 23:16:31 +08:00
wuqinchuan d7e2b2f9fc feat: experimental natural-language categorization & search (persistent scope, clustering, retrieval) 2025-12-28 23:10:13 +08:00
zanllp 89bd778182 fix 2025-12-19 01:29:32 +08:00
zanllp 858453238e feat: fix 2025-12-19 00:43:15 +08:00
zanllp d8ed522996 feat: implement auto-tagging feature with custom tag rules
- 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
2025-11-30 19:00:24 +08:00
bupro 198de49e58 feat: Add video tag search and random sort with i18n support
- 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>
2025-08-23 00:41:10 +08:00
wuqinchuan 4df86dc1e2 feat: Add media type filter support for search functionality 2025-07-13 20:09:36 +08:00
younyokel dde189f99c fix invalid escape sequence warnings in regex expressions 2025-05-28 16:40:56 +05:00
zanllp 387ef7875b
Merge pull request #804 from zanllp/fix/insufficient-random-media-count
fix(media): ensure minimum quantity in random image/video API
2025-05-25 20:35:55 +08:00
zanllp 6fc5dcf35e fix(media): ensure minimum quantity in random image/video API 2025-05-25 20:34:04 +08:00
zanllp 82771115d5 fix: fix cors 2025-03-13 21:35:29 +08:00
zanllp ea10260756 feat: add a new feature try-my-luck 2025-02-23 04:09:01 +08:00
zanllp 476f4ff779 Support disabling maximize and enable fuzzy search with path-only option 2024-12-26 01:53:06 +08:00
zanllp 031e377a1a Add support for batch downloading with options for no compression and packaging 2024-11-24 23:05:55 +08:00
zanllp 9718d545f6 Add support for custom tag colors 2024-09-28 20:23:14 +08:00
zanllp 3ed98ea156 releases/iib_app_cli 2024-08-24 04:53:58 +08:00
zanllp 475764070d Handle cache issues for video cover and file responses 2024-08-18 20:40:07 +08:00
zanllp 313afe3149 update i18n 2024-08-18 06:58:59 +08:00
zanllp c38484d317 Add support for setting the current frame as the video cover 2024-08-18 06:54:29 +08:00
zanllp fdf35eb308 Implement automatic refresh in walk mode 2024-07-17 07:58:32 +08:00
zanllp de48ae1f0d Add WorkspaceSnapshot feature. Add support for customizing the startup page 2024-07-15 05:16:11 +08:00
zanllp d0cd421330 Add display of current working mode at footer 2024-07-14 04:55:23 +08:00
zanllp 50700974eb Release version 0.17.0, adding a pyinstaller-compiled sidecar to reduce the likelihood of false positives from antivirus software. 2024-07-10 21:36:10 +08:00
zanllp 17f048ad0c Add support for pre-generating cache via startup parameters and specifying cache directory through environment variables 2024-07-08 00:07:12 +08:00
zanllp 83b4c65757 Implement a basic plugin mechanism 2024-07-03 11:13:34 +08:00
zanllp 94b27b5a74 Add 'Move To', 'Copy To', 'Copy File Path', and 'Open File Location in New Tab' to context menu 2024-07-01 07:05:09 +08:00
zanllp 7c6051a22d Adjust permissions required for API calls 2024-06-24 07:22:24 +08:00
zanllp bf6c72895d Implement automatic synchronization of global settings to the backend 2024-06-24 06:05:46 +08:00
zanllp a6507d5624
Merge pull request #638 from zanllp/enhance-compatibility
Enhance compatibility across various environments
2024-06-22 23:12:50 +08:00
zanllp 34c2e45b00 Improve performance, add option for pre-generating video covers, and update README 2024-06-20 09:58:22 +08:00
zanllp d578d5c10a fix 2024-06-15 04:10:08 +08:00
zanllp dfa151e9db add missing import 2024-06-15 03:52:24 +08:00
zanllp 81e2802c71 add support for .avif 2024-06-15 02:58:03 +08:00
zanllp 07a5cfad09 fix several bug 2024-06-11 19:52:48 +08:00
zanllp bb4f1e711b Display current version information.Automatically check for updates on app startup and prompt the user to upgrade if a newer version is available 2024-06-11 12:26:10 +08:00
zanllp 5d43a34e52 Enhance compatibility across various environments 2024-05-29 14:13:55 +08:00
zanllp 25a4be4333 add-folder-cover-preview 2024-05-26 13:00:34 +08:00