Commit Graph

21 Commits (117aa7fb277e1a201d1bffcb540b4f50b2c8a6c5)

Author SHA1 Message Date
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
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 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 1c38d769e9 add log 2026-01-30 23:12:37 +08:00
zanllp d0e916f920 Update: cache banner and type declarations 2026-01-18 14:20:06 +08:00
zanllp 7b2af32b10 feat: enhance topic search with keyword limit, irregular layout, and cache banner
- 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
2026-01-18 01:29:25 +08:00
zanllp 0c1998bdb0 Improve keyword consistency in topic clustering
- Add get_all_keywords_frequency method to TopicTitleCache
- Initialize keyword frequency from historical cached cluster keywords
- Prioritize top 100 high-frequency keywords when generating new keywords
- Update LLM prompt to prefer existing keywords from frequency list
- Reduce duplicate/similar keyword generation across clusters
- Add streaming support for tag_graph LLM requests
- Increase LLM timeout and retry limits for better reliability
2026-01-12 00:56:03 +08:00
wuqinchuan 96655d89c4 feat: show cached topics by default and fix topic deletion/capping 2026-01-03 23:50:27 +08:00
wuqinchuan 4d3617671d tune: reduce over-merging in topic clustering defaults 2026-01-03 23:49:36 +08:00
wuqinchuan 67c93dd9f3 fix: retry on network/API errors in LLM title generation 2026-01-03 23:49:36 +08:00
wuqinchuan 3a6b155db5 refactor: parse title JSON from text with retries 2026-01-03 23:49:36 +08:00
wuqinchuan cfa589c68f feat: improve topic search UX and dependency gating 2026-01-03 23:49:36 +08:00
wuqinchuan 3ba8997626 chore: require numpy/hnswlib for topic clustering 2026-01-03 23:47:16 +08:00
wuqinchuan 25190f7307 refactor: drop legacy synchronous cluster endpoint 2026-01-03 23:47:16 +08:00
wuqinchuan c22ac83bde perf: accelerate clustering with ANN (hnswlib) 2026-01-03 23:47:16 +08:00
wuqinchuan efcb500c53 feat: cache embedding failures and persist cluster results 2026-01-03 23:47:16 +08:00
wuqinchuan 2edf9e52d7 feat: async clustering job with progress UI 2026-01-03 23:47:16 +08:00
wuqinchuan e522d8e878 fix: make topic embedding non-blocking and cap embedding input length 2026-01-03 23:47:16 +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