From 5e52cab66429b346278aef1a8896be6b2bf8b540 Mon Sep 17 00:00:00 2001 From: Dariusz L Date: Sun, 7 Jun 2026 18:10:40 +0200 Subject: [PATCH] feat: add auto-fill subfolder toggle to control download target behavior --- web/resolver/search/download_target_methods.js | 8 ++++++++ web/resolver/views/options_methods.js | 13 +++++++++++++ 2 files changed, 21 insertions(+) diff --git a/web/resolver/search/download_target_methods.js b/web/resolver/search/download_target_methods.js index 1edb583..c6254e0 100644 --- a/web/resolver/search/download_target_methods.js +++ b/web/resolver/search/download_target_methods.js @@ -200,6 +200,10 @@ export const downloadTargetMethods = { return this.downloadSubfolders.get((category || '').toLowerCase()) || []; }, + isAutoFillSubfolderEnabled() { + return localStorage.getItem('ModelResolver.autoFillSubfolder') !== 'false'; + }, + getDownloadTargetKey(missing = {}) { return this.getMissingModelKey?.(missing) || `${missing.node_id}:${missing.widget_index}:${missing.subgraph_id || ''}:${missing.is_top_level !== false ? 'T' : 'F'}`; @@ -288,6 +292,7 @@ export const downloadTargetMethods = { }, async applySuggestedCivitaiSubfolder(missing, categoryEl, subfolderEl) { + if (!this.isAutoFillSubfolderEnabled()) return; if (!categoryEl || !subfolderEl || subfolderEl.value.trim()) return; const saved = this.getSavedDownloadTargetSelection(missing); if (saved?.subfolderTouched) return; @@ -589,6 +594,7 @@ export const downloadTargetMethods = { hf_use_comfy_org_fallback: localStorage.getItem('ModelResolver.hfUseComfyOrgFallback') !== 'false', hf_use_brave_fallback: localStorage.getItem('ModelResolver.hfUseBraveFallback') !== 'false', auto_fill_base_model: localStorage.getItem('ModelResolver.autoFillBaseModel') !== 'false', + auto_fill_subfolder: localStorage.getItem('ModelResolver.autoFillSubfolder') !== 'false', civitai_candidate_limit, search_source_enabled }; @@ -631,6 +637,8 @@ export const downloadTargetMethods = { localStorage.setItem('ModelResolver.hfUseBraveFallback', data.hf_use_brave_fallback ? 'true' : 'false'); if (data.auto_fill_base_model !== undefined) localStorage.setItem('ModelResolver.autoFillBaseModel', data.auto_fill_base_model ? 'true' : 'false'); + if (data.auto_fill_subfolder !== undefined) + localStorage.setItem('ModelResolver.autoFillSubfolder', data.auto_fill_subfolder ? 'true' : 'false'); if (data.civitai_candidate_limit !== undefined) localStorage.setItem('ModelResolver.civitaiCandidateLimit', `${data.civitai_candidate_limit}`); diff --git a/web/resolver/views/options_methods.js b/web/resolver/views/options_methods.js index b99c1f2..becd104 100644 --- a/web/resolver/views/options_methods.js +++ b/web/resolver/views/options_methods.js @@ -134,6 +134,15 @@ export const optionsMethods = { + @@ -402,6 +411,7 @@ export const optionsMethods = { const hfUseComfyOrgFallbackInput = this.contentElement.querySelector('#mr-options-hf-use-comfy-org-fallback'); const hfUseBraveFallbackInput = this.contentElement.querySelector('#mr-options-hf-use-brave-fallback'); const autoFillBaseModelInput = this.contentElement.querySelector('#mr-options-auto-fill-base-model'); + const autoFillSubfolderInput = this.contentElement.querySelector('#mr-options-auto-fill-subfolder'); const hfTokenCheckBtn = this.contentElement.querySelector('#mr-options-hf-token-check'); const hfTokenCheckStatus = this.contentElement.querySelector('#mr-options-hf-token-check-status'); const braveKeyCheckBtn = this.contentElement.querySelector('#mr-options-brave-key-check'); @@ -442,6 +452,7 @@ export const optionsMethods = { hfUseComfyOrgFallbackInput, hfUseBraveFallbackInput, autoFillBaseModelInput, + autoFillSubfolderInput, ...sourceEnabledInputs, ].filter(Boolean); @@ -970,6 +981,7 @@ export const optionsMethods = { hf_use_comfy_org_fallback: Boolean(hfUseComfyOrgFallbackInput?.checked), hf_use_brave_fallback: Boolean(hfUseBraveFallbackInput?.checked), auto_fill_base_model: Boolean(autoFillBaseModelInput?.checked), + auto_fill_subfolder: Boolean(autoFillSubfolderInput?.checked), brave_search_api_key: braveInput?.value || '', search_source_enabled: sourceEnabled, }; @@ -985,6 +997,7 @@ export const optionsMethods = { localStorage.setItem('ModelResolver.hfUseComfyOrgFallback', newSettings.hf_use_comfy_org_fallback ? 'true' : 'false'); localStorage.setItem('ModelResolver.hfUseBraveFallback', newSettings.hf_use_brave_fallback ? 'true' : 'false'); localStorage.setItem('ModelResolver.autoFillBaseModel', newSettings.auto_fill_base_model ? 'true' : 'false'); + localStorage.setItem('ModelResolver.autoFillSubfolder', newSettings.auto_fill_subfolder ? 'true' : 'false'); localStorage.setItem('ModelResolver.civitaiCandidateLimit', `${civitaiCandidateLimit}`); Object.entries(sourceEnabled).forEach(([key, val]) => { localStorage.setItem(key, val ? 'true' : 'false');