From ef3ea4a2c0ccb61300a5fdedb3724c88dfdff454 Mon Sep 17 00:00:00 2001 From: mic Date: Mon, 2 Feb 2026 23:37:45 +0100 Subject: [PATCH] correctly setting the saved value at startup. see #603 --- options/mzta-options.js | 3 +++ pages/_lib/connection-ui.js | 10 +++++++++- pages/addtags/mzta-add-tags.js | 3 +++ pages/customprompts/mzta-custom-prompts.js | 18 +++++++++++++++++- pages/spamfilter/mzta-spamfilter.js | 3 +++ pages/summarize/mzta-summarize.js | 3 +++ 6 files changed, 38 insertions(+), 2 deletions(-) diff --git a/options/mzta-options.js b/options/mzta-options.js index 09dd58bb..cc51234d 100644 --- a/options/mzta-options.js +++ b/options/mzta-options.js @@ -101,6 +101,9 @@ async function restoreOptions() { if (element.value === '') { element.selectedIndex = -1; } + if (element.tomselect) { + element.tomselect.setValue(element.value, true); + } break; case 'textarea': element.value = result[element.id]; diff --git a/pages/_lib/connection-ui.js b/pages/_lib/connection-ui.js index 7e92efc3..09a932ac 100644 --- a/pages/_lib/connection-ui.js +++ b/pages/_lib/connection-ui.js @@ -699,6 +699,7 @@ export async function injectConnectionUI({ chatgpt_option.value = prefs.chatgpt_model; chatgpt_option.text = prefs.chatgpt_model; select_chatgpt_model.appendChild(chatgpt_option); + select_chatgpt_model.value = prefs.chatgpt_model; select_chatgpt_model.addEventListener("change", () => warn_ChatGPT_APIKeyEmpty(modelId_prefix)); document.getElementById(getPrefixedId('btnUpdateChatGPTModels')).addEventListener('click', async () => { @@ -749,6 +750,7 @@ export async function injectConnectionUI({ google_gemini_option.value = prefs.google_gemini_model; google_gemini_option.text = prefs.google_gemini_model; select_google_gemini_model.appendChild(google_gemini_option); + select_google_gemini_model.value = prefs.google_gemini_model; select_google_gemini_model.addEventListener("change", () => warn_GoogleGemini_APIKeyEmpty(modelId_prefix)); document.getElementById(getPrefixedId('btnUpdateGoogleGeminiModels')).addEventListener('click', async () => { @@ -792,6 +794,7 @@ export async function injectConnectionUI({ ollama_option.value = prefs.ollama_model; ollama_option.text = prefs.ollama_model; select_ollama_model.appendChild(ollama_option); + select_ollama_model.value = prefs.ollama_model; select_ollama_model.addEventListener("change", () => warn_Ollama_HostEmpty(modelId_prefix)); document.getElementById(getPrefixedId('btnUpdateOllamaModels')).addEventListener('click', async () => { @@ -852,6 +855,7 @@ export async function injectConnectionUI({ openai_comp_option.value = prefs.openai_comp_model; openai_comp_option.text = prefs.openai_comp_model; select_openai_comp_model.appendChild(openai_comp_option); + select_openai_comp_model.value = prefs.openai_comp_model; select_openai_comp_model.addEventListener("change", () => warn_OpenAIComp_HostEmpty(modelId_prefix)); document.getElementById(getPrefixedId('btnUpdateOpenAICompModels')).addEventListener('click', async () => { @@ -897,6 +901,7 @@ export async function injectConnectionUI({ anthropic_option.value = prefs.anthropic_model; anthropic_option.text = prefs.anthropic_model; select_anthropic_model.appendChild(anthropic_option); + select_anthropic_model.value = prefs.anthropic_model; select_anthropic_model.addEventListener("change", () => warn_Anthropic_APIKeyEmpty(modelId_prefix)); select_anthropic_model.addEventListener("change", () => warn_Anthropic_VersionEmpty(modelId_prefix)); @@ -1023,7 +1028,7 @@ export async function injectConnectionUI({ ['chatgpt_model', 'google_gemini_model', 'ollama_model', 'openai_comp_model', 'anthropic_model'].forEach(id => { const el = document.getElementById(getPrefixedId(id)); if (el && !el.tomselect) { - new TomSelect(el, { + let ts = new TomSelect(el, { create: false, maxOptions: null, maxItems: 1, @@ -1032,6 +1037,9 @@ export async function injectConnectionUI({ direction: "asc" } }); + if (el.value) { + ts.setValue(el.value); + } } }); diff --git a/pages/addtags/mzta-add-tags.js b/pages/addtags/mzta-add-tags.js index 421c9e20..87c32f0b 100644 --- a/pages/addtags/mzta-add-tags.js +++ b/pages/addtags/mzta-add-tags.js @@ -339,6 +339,9 @@ async function restoreOptions() { if (element.value === '') { element.selectedIndex = -1; } + if (element.tomselect) { + element.tomselect.setValue(element.value, true); + } }else{ console.error("[ThunderAI] Unhandled input type:", element.type); } diff --git a/pages/customprompts/mzta-custom-prompts.js b/pages/customprompts/mzta-custom-prompts.js index 70386374..bb3a6bfb 100644 --- a/pages/customprompts/mzta-custom-prompts.js +++ b/pages/customprompts/mzta-custom-prompts.js @@ -567,7 +567,23 @@ function populateConnectionUI(tr, id, prefix, selectId) { val = prefs[propName]; } } - inputEl.type === 'checkbox' ? inputEl.checked = (val === true || val === 'true') : inputEl.value = val || ''; + if (inputEl.type === 'checkbox') { + inputEl.checked = (val === true || val === 'true'); + } else { + if (inputEl.tomselect) { + const restoreValue = val || ''; + let optionExists = Array.from(inputEl.options).some(opt => opt.value === restoreValue); + if (!optionExists && restoreValue !== '') { + let newOption = new Option(restoreValue, restoreValue); + inputEl.add(newOption); + } + inputEl.value = restoreValue; + inputEl.tomselect.sync(); + inputEl.tomselect.setValue(restoreValue, true); + } else { + inputEl.value = val || ''; + } + } } } } diff --git a/pages/spamfilter/mzta-spamfilter.js b/pages/spamfilter/mzta-spamfilter.js index 49b28dce..fa821a5d 100644 --- a/pages/spamfilter/mzta-spamfilter.js +++ b/pages/spamfilter/mzta-spamfilter.js @@ -326,6 +326,9 @@ async function restoreOptions() { if (element.value === '') { element.selectedIndex = -1; } + if (element.tomselect) { + element.tomselect.setValue(element.value, true); + } }else{ console.error("[ThunderAI] Unhandled input type:", element.type); } diff --git a/pages/summarize/mzta-summarize.js b/pages/summarize/mzta-summarize.js index 1cac274a..b41d9084 100644 --- a/pages/summarize/mzta-summarize.js +++ b/pages/summarize/mzta-summarize.js @@ -245,6 +245,9 @@ async function restoreOptions() { if (element.value === '') { element.selectedIndex = -1; } + if (element.tomselect) { + element.tomselect.setValue(element.value, true); + } }else{ console.error("[ThunderAI] Unhandled input type:", element.type); }