feat(auto-organize): improve exclusion handling and progress reporting

- Add auto_organize_exclusions to settings handler proxy keys
- Refactor model file service to handle exclusions relative to model roots
- Improve auto-organize progress reporting for empty operations
- Fix exclusion pattern matching to consider relative paths within model roots
- Ensure proper validation when no model roots are configured
- Add comprehensive cleanup reporting for empty auto-organize operations
This commit is contained in:
Will Miao
2025-11-20 18:33:48 +08:00
parent c533a8e7bf
commit 26e4895807
15 changed files with 140 additions and 79 deletions

View File

@@ -341,29 +341,6 @@
</div>
</div>
<div class="settings-section">
<h3>{{ t('settings.sections.autoOrganize') }}</h3>
<div class="setting-item">
<div class="setting-row">
<div class="setting-info">
<label for="autoOrganizeExclusions">{{ t('settings.autoOrganizeExclusions.label') }}</label>
</div>
<div class="setting-control">
<textarea
id="autoOrganizeExclusions"
rows="3"
placeholder="{{ t('settings.autoOrganizeExclusions.placeholder') }}"
onblur="settingsManager.saveAutoOrganizeExclusions()"
></textarea>
</div>
</div>
<div class="input-help">
{{ t('settings.autoOrganizeExclusions.help') }}
</div>
<div class="settings-input-error-message" id="autoOrganizeExclusionsError"></div>
</div>
</div>
<!-- Default Path Customization Section -->
<div class="settings-section">
<h3>{{ t('settings.downloadPathTemplates.title') }}</h3>
@@ -524,6 +501,25 @@
</div>
</div>
<div class="setting-item priority-tags-item auto-organize-exclusions-item">
<div class="setting-row priority-tags-header">
<div class="setting-info priority-tags-info">
<label>{{ t('settings.autoOrganizeExclusions.label') }}</label>
</div>
</div>
<div class="input-help">
{{ t('settings.autoOrganizeExclusions.help') }}
</div>
<textarea
id="autoOrganizeExclusions"
class="priority-tags-input auto-organize-exclusions-input"
rows="3"
placeholder="{{ t('settings.autoOrganizeExclusions.placeholder') }}"
onblur="settingsManager.saveAutoOrganizeExclusions()"
></textarea>
<div class="settings-input-error-message" id="autoOrganizeExclusionsError"></div>
</div>
<!-- Add Example Images Settings Section -->
<div class="settings-section">
<h3>{{ t('settings.sections.exampleImages') }}</h3>