From 77bb30337d8fe57ad9bb559baca2b51e489d0b92 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 24 May 2025 20:21:48 +0200 Subject: [PATCH] Add Ollama model selection to settings.html --- settings.html | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/settings.html b/settings.html index ede9fcf..bc8a733 100644 --- a/settings.html +++ b/settings.html @@ -124,6 +124,78 @@ }; cancel.addEventListener('click', rollback); close.addEventListener('click', rollback); + + + const modelDiv = document.getElementById('ollama-model-selectors'); + // Vorher: deine Standard-Settings holen + + // 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; + } + + // 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); + + // 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; + } + + // 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]; + + // Werte ggf. aus dem Store holen! + const currentCommitModel = await window.settingsAPI.getCommitModel?.() || commitDefault; + const currentReadmeModel = 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); + }); });