Commit Graph

1211 Commits (2e1562d321b2af3cf29bb78763d4a12c42e47af4)

Author SHA1 Message Date
zanllp 2e1562d321 fix: scroll to top when entering new folder in fixed mode
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>
2026-02-17 21:23:28 +08:00
zanllp 1289db58a9
Merge pull request #919 from zanllp/feat/reuse-existing-folders
feat: AI reuses existing folder names when organizing files
2026-02-17 20:13:04 +08:00
zanllp c062b3bed5 feat: AI reuses existing folder names when organizing files
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>
2026-02-17 20:02:19 +08:00
zanllp d5167e293e
Merge pull request #918 from zanllp/fix/recursive-filter-in-cluster-job
fix: pass recursive parameter to embedding and include in cache key
2026-02-17 18:13:00 +08:00
wuqinchuan 603262e42a fix: pass recursive parameter to embedding and include in cache key
- 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>
2026-02-17 18:11:25 +08:00
zanllp f6b185e8a8
Merge pull request #917 from zanllp/feat/smart-organize
feat: add smart organize feature with AI-powered file organization
2026-02-17 17:31:33 +08:00
zanllp c869860b89 chore: rename button label to 'AI Organize' for all languages
- zh-hans: 智能整理 -> AI整理
- zh-hant: 智能整理 -> AI整理
- en: Smart Organize -> AI Organize
- de: Smart Organize -> AI Organize

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-17 17:29:35 +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 c18964bb53
Merge pull request #916 from zanllp/feat/auto-update-index-toggle
feat(settings): add auto update index toggle
2026-02-08 21:44:21 +08:00
zanllp e23f6c0c98 feat(settings): add auto update index toggle
- 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
2026-02-08 21:26:55 +08:00
zanllp 5fbda41c1e
Merge pull request #915 from zanllp/releases/1.6.0
Releases/1.6.0
2026-02-05 22:27:55 +08:00
zanllp 930f815805 fix 2026-02-05 20:36:32 +08:00
zanllp cd8a38692b release 2026-02-03 21:38:38 +08:00
zanllp ba6310086f
Merge pull request #913 from zanllp/feature/updateDocsChangelogReadme
Update changelog and refresh README features.
2026-02-01 21:27:16 +08:00
zanllp d5505e58c0 Update changelog and refresh README features. 2026-02-01 21:25:06 +08:00
zanllp 50ca2ac8db
Merge pull request #912 from zanllp/feature/continueOnErrorForMoveModal
Feature/continue on error for move modal
2026-02-01 20:19:49 +08:00
zanllp 0520224bbc build 2026-02-01 20:18:48 +08:00
zanllp 7a2fcbe77e feat: add continue-on-error for move copy 2026-02-01 19:53:40 +08:00
zanllp ac7c63b84c
Merge pull request #911 from zanllp/feature/dragDropToFolderConfirm
New shortcut support along with other convenience improvements and bug fixes
2026-02-01 16:13:25 +08:00
zanllp 9fed8fa256 Interface adjustments 2026-02-01 16:02:28 +08:00
zanllp 5f5f40cb12 fix: open folders on right correctly 2026-02-01 13:45:07 +08:00
zanllp d3ded68ea0 feat: support drag drop into folders 2026-02-01 13:33:31 +08:00
zanllp edcaa87e18 feat: add preset shortcut guide 2026-02-01 01:38:10 +08:00
zanllp 6fb32f15d5
Merge pull request #910 from zanllp/feature/log
add log
2026-01-30 23:19:30 +08:00
zanllp 1c38d769e9 add log 2026-01-30 23:12:37 +08:00
zanllp 59283c3f8a
Merge pull request #908 from zanllp/feature/exif
: optimize UI styling and CSS
2026-01-30 00:37:47 +08:00
zanllp 214b1c9b67 : optimize UI styling and CSS 2026-01-30 00:36:47 +08:00
zanllp c4502222ab
Merge pull request #907 from zanllp/feature/exif
feat: add EXIF metadata display support
2026-01-29 23:54:06 +08:00
zanllp 1d9e65f835 feat: add EXIF metadata display support 2026-01-29 23:49:49 +08:00
zanllp 695c5d9758
Merge pull request #904 from zanllp/feature/tiktokDeleteSync
sync delete event for tiktok viewer
2026-01-26 01:43:58 +08:00
zanllp 23f2715e75 chore: update dist build 2026-01-26 01:42:54 +08:00
zanllp 9dfdbc0658 fix: sync delete event for tiktok viewer 2026-01-26 01:41:47 +08:00
zanllp 00c75866db
Merge pull request #902 from zanllp/feature/tiktokPanelBackdrop
feat: update tiktok info panel and dist
2026-01-25 20:12:24 +08:00
zanllp bb7482f17c feat: update tiktok info panel and dist 2026-01-25 20:09:55 +08:00
zanllp 3dc994b9e9
Merge pull request #901 from zanllp/feature/tiktokInfoPanelSync
feat: refine TikTok info panel and preview return
2026-01-25 19:48:33 +08:00
zanllp a3190fc9b1 chore: update dist build assets 2026-01-25 19:35:40 +08:00
zanllp 1c04b7a321 feat: refine TikTok info panel and preview return 2026-01-25 19:10:52 +08:00
zanllp f2b1e4952a
Merge pull request #900 from zanllp/feature/videoStreamRangeFix
fix: 修复视频流 Range 解析并提升大文件吞吐
2026-01-24 19:31:17 +08:00
wuqinchuan e6fcd1afab fix: 修复视频流 Range 解析并提升大文件吞吐
- 支持 bytes=-N 尾部 Range 请求,避免大 mp4 卡顿
- 调整分块大小并在结束时清理文件句柄
2026-01-24 18:04:28 +08:00
zanllp 587b505a5a
Merge pull request #899 from zanllp/pref/tag
fix: add null checks for Tag.get_or_create calls
2026-01-23 00:26:50 +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
zanllp 323b2485e6
Merge pull request #898 from zanllp/feat/tag-validation-and-cleanup
include hyphen in LoRA tag model name matching & improve performance
2026-01-22 02:18:23 +08:00
zanllp bc6eb3c6dc perf: Optimize Tag.get_all for large datasets
Important performance optimization for handling large tag datasets:

- When total tags > 8192, limit 'pos' type tags to top 4096 by count
- Return all non-pos tags without limitation
- Significantly reduces memory usage and load time for large databases
- Maintains functionality while improving performance with massive tag counts
2026-01-22 01:44:11 +08:00
zanllp 40b8361ed0 feat: Add tag name validation and cleanup
- 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
2026-01-22 01:29:53 +08:00
zanllp 4f4d766b73 fix: include hyphen in LoRA tag model name matching 2026-01-21 23:28:20 +08:00
zanllp 5daba8b2b9
Merge pull request #895 from zanllp/feature/comfyui-extract-all-prompts
Feature/comfyui extract all prompts
2026-01-18 16:38:52 +08:00
zanllp 0b26b115ab feat: add option to extract all ComfyUI prompts at once
- 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
2026-01-18 16:37:40 +08:00
zanllp a952a9f9d7 feat: add option to extract all ComfyUI prompts at once
- 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
2026-01-18 16:37:10 +08:00