diff --git a/web/resolver/search/download_target_methods.js b/web/resolver/search/download_target_methods.js index 2a90564..1edb583 100644 --- a/web/resolver/search/download_target_methods.js +++ b/web/resolver/search/download_target_methods.js @@ -588,6 +588,7 @@ export const downloadTargetMethods = { hf_use_api_search: localStorage.getItem('ModelResolver.hfUseApiSearch') !== 'false', 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', civitai_candidate_limit, search_source_enabled }; @@ -628,6 +629,8 @@ export const downloadTargetMethods = { localStorage.setItem('ModelResolver.hfUseComfyOrgFallback', data.hf_use_comfy_org_fallback ? 'true' : 'false'); if (data.hf_use_brave_fallback !== undefined) 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.civitai_candidate_limit !== undefined) localStorage.setItem('ModelResolver.civitaiCandidateLimit', `${data.civitai_candidate_limit}`); diff --git a/web/resolver/search/search_panel.js b/web/resolver/search/search_panel.js index c8b8c4f..06afc91 100644 --- a/web/resolver/search/search_panel.js +++ b/web/resolver/search/search_panel.js @@ -29,7 +29,7 @@ export const searchPanelMethods = { createEmptySearchState() { return { selectedSource: 'all', - selectedBaseModel: 'auto', + selectedBaseModel: this.getDefaultSearchBaseModel(), results: { popular: null, model_list: null, @@ -47,6 +47,14 @@ export const searchPanelMethods = { }; }, + isAutoFillBaseModelEnabled() { + return localStorage.getItem('ModelResolver.autoFillBaseModel') !== 'false'; + }, + + getDefaultSearchBaseModel() { + return this.isAutoFillBaseModelEnabled() ? 'auto' : 'none'; + }, + getKnownBaseModelOptions() { const baseModelsList = this.baseModels?.base_models; if (Array.isArray(baseModelsList) && baseModelsList.length > 0) { @@ -250,7 +258,7 @@ export const searchPanelMethods = { getSearchBaseModelContext(missing = {}) { const state = this.getSearchState(missing); - const selected = state.selectedBaseModel || 'auto'; + const selected = state.selectedBaseModel || this.getDefaultSearchBaseModel(); if (selected === 'none') return ''; if (selected === 'auto') return this.getDominantWorkflowBaseModel(); return selected; @@ -852,7 +860,7 @@ export const searchPanelMethods = { if (baseEl) { const options = this.getKnownBaseModelOptions(); if (!options.some(option => option.value === state.selectedBaseModel)) { - state.selectedBaseModel = 'auto'; + state.selectedBaseModel = this.getDefaultSearchBaseModel(); } this.setDropdownValue(baseEl, state.selectedBaseModel, this.getSearchBaseModelLabel(state.selectedBaseModel)); } @@ -870,8 +878,8 @@ export const searchPanelMethods = { setSearchBaseModel(missing, baseModel, container) { const state = this.getSearchState(missing); - const nextBaseModel = baseModel || 'auto'; - const changed = (state.selectedBaseModel || 'auto') !== nextBaseModel; + const nextBaseModel = baseModel || this.getDefaultSearchBaseModel(); + const changed = (state.selectedBaseModel || this.getDefaultSearchBaseModel()) !== nextBaseModel; if (changed) { this.clearSearchProgressTimers(state.activeSearchRunId); state.results = this.createEmptySearchState().results; @@ -1250,7 +1258,7 @@ export const searchPanelMethods = { const searchBaseListId = `search-base-list-${missing.node_id}-${missing.widget_index}`; const state = this.getSearchState(missing); const selectedSource = state.selectedSource || 'all'; - const selectedBaseModel = state.selectedBaseModel || 'auto'; + const selectedBaseModel = state.selectedBaseModel || this.getDefaultSearchBaseModel(); const buttonText = options.buttonText || (this.hasSearchResultsForMissing(missing) ? 'Search Again' : 'Search'); diff --git a/web/resolver/shell/workflow_state_methods.js b/web/resolver/shell/workflow_state_methods.js index b2c4e64..3d4279b 100644 --- a/web/resolver/shell/workflow_state_methods.js +++ b/web/resolver/shell/workflow_state_methods.js @@ -186,7 +186,7 @@ export const workflowStateMethods = { } clone.selectedSource = clone.selectedSource || 'all'; - clone.selectedBaseModel = clone.selectedBaseModel || 'auto'; + clone.selectedBaseModel = clone.selectedBaseModel || this.getDefaultSearchBaseModel?.() || 'auto'; clone.results = this.mergeSearchResults({}, clone.results || {}); clone.lastAttemptSources = Array.isArray(clone.lastAttemptSources) ? clone.lastAttemptSources @@ -231,7 +231,8 @@ export const workflowStateMethods = { isPersistableSearchState(state = {}) { if ((state?.selectedSource || 'all') !== 'all') return true; - if ((state?.selectedBaseModel || 'auto') !== 'auto') return true; + const defaultBaseModel = this.getDefaultSearchBaseModel?.() || 'auto'; + if ((state?.selectedBaseModel || defaultBaseModel) !== defaultBaseModel) return true; if (state?.lastAttemptError) return true; if (this.hasSearchResults(state?.results || {})) return true; diff --git a/web/resolver/views/options_methods.js b/web/resolver/views/options_methods.js index 69548a8..b99c1f2 100644 --- a/web/resolver/views/options_methods.js +++ b/web/resolver/views/options_methods.js @@ -57,6 +57,18 @@ export const optionsMethods = { +
@@ -84,7 +96,7 @@ export const optionsMethods = { Maintenance - + @@ -106,6 +118,26 @@ export const optionsMethods = { +