From 596907ab23923661eab8b5dd8d547fdd4189c5c3 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 24 May 2025 20:28:13 +0200 Subject: [PATCH] Refactor settings.html to handle Ollama CLI errors and improve model selection --- settings.html | 121 ++++++++++++++++++++++++-------------------------- 1 file changed, 57 insertions(+), 64 deletions(-) diff --git a/settings.html b/settings.html index e557bc6..5786ee6 100644 --- a/settings.html +++ b/settings.html @@ -126,76 +126,69 @@ close.addEventListener('click', rollback); - const modelDiv = document.getElementById('ollama-model-selectors'); - // Vorher: deine Standard-Settings holen + const container = document.getElementById('ollama-model-selectors'); + const res = await window.electronAPI.ollamaList(); - // 1. Modelle holen - const ollamaRes = await window.electronAPI.ollamaList(); - if (ollamaRes.error) { - modelDiv.innerHTML = ` -
- !! You need to install Ollama to use intelligent message & readme generation !! -
- `; - return; - } + if (res.status === 'no-cli') { + container.innerHTML = ` +
+ !! You need to install Ollama to use intelligent message & README generation !! +
`; + return; + } - // 2. qwen2.5-coder-Modelle filtern - const qwenModels = ollamaRes.models - .filter(m => /^qwen2\.5-coder(:[\w\d\-]+)?$/.test(m.name || m.model)) - .map(m => m.name || m.model); + // Wenn CLI lief, aber Fehler beim Parsen, oder einfach keine Daten: + const allModels = Array.isArray(res.models) ? res.models : []; + // Filter für qwen2.5-coder + const qwenModels = allModels + .map(m => m.name || m.model) + .filter(name => /^qwen2\.5-coder(:[\w\d\-.]+)?$/.test(name)); - // 3. Kein Modell? Pull-Buttons zeigen! - if (!qwenModels.length) { - modelDiv.innerHTML = ` -
- - `; - document.getElementById('pullCommitModelBtn').onclick = async () => { - await window.electronAPI.ollamaPull('qwen2.5-coder:7b'); - location.reload(); // Reload Settings-Dialog - }; - document.getElementById('pullReadmeModelBtn').onclick = async () => { - await window.electronAPI.ollamaPull('qwen2.5-coder:32b'); - location.reload(); - }; - return; - } + if (!qwenModels.length) { + // Keine passenden Modelle → Pull-Buttons zeigen + container.innerHTML = ` +
+ `; + document.getElementById('pullCommitModelBtn').onclick = async () => { + await window.electronAPI.ollamaPull('qwen2.5-coder:7b'); + location.reload(); + }; + document.getElementById('pullReadmeModelBtn').onclick = async () => { + await window.electronAPI.ollamaPull('qwen2.5-coder:32b'); + location.reload(); + }; + return; + } - // 4. Dropdowns rendern - function makeOptions(models, preferred) { - return models.map(m => ``).join(''); - } - // Defaults wählen - const commitDefault = qwenModels.find(m => m.includes('7b')) || qwenModels[0]; - const readmeDefault = qwenModels.find(m => m.includes('32b')) || qwenModels[0]; + // Endlich: Dropdowns! + const makeOpts = (models, selected) => + models.map(m => ``).join(''); - // Werte ggf. aus dem Store holen! - const currentCommitModel = await window.settingsAPI.getCommitModel?.() || commitDefault; - const currentReadmeModel = await window.settingsAPI.getReadmeModel?.() || readmeDefault; + // Defaults (oder aus Settings lesen) + const commitDefault = qwenModels.find(m => m.includes('7b')) || qwenModels[0]; + const readmeDefault = qwenModels.find(m => m.includes('32b')) || qwenModels[0]; + const currentCommit = await window.settingsAPI.getCommitModel?.() || commitDefault; + const currentReadme= await window.settingsAPI.getReadmeModel?.() || readmeDefault; - modelDiv.innerHTML = ` - - -
- - - `; - - // Werte speichern bei Auswahl - document.getElementById('commitModelSelect').onchange = e => - window.settingsAPI.setCommitModel?.(e.target.value); - document.getElementById('readmeModelSelect').onchange = e => - window.settingsAPI.setReadmeModel?.(e.target.value); - }); + container.innerHTML = ` + + +
+ + `; + document.getElementById('commitModelSelect').onchange = e => + window.settingsAPI.setCommitModel(e.target.value); + document.getElementById('readmeModelSelect').onchange = e => + window.settingsAPI.setReadmeModel(e.target.value); +});