diff --git a/templates/index.html b/templates/index.html
index d2c5990..48b78ae 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -81,16 +81,23 @@
font-size: 1.2em;
}
- .toolbar-controls {
- display: flex;
- gap: 10px;
- align-items: center;
- }
-
- .toolbar-controls select, .toolbar-controls button {
+ .toolbar-controls select,
+ .toolbar-controls input,
+ .toolbar-controls button {
padding: 5px 10px;
border-radius: 4px;
border: 1px solid #bdc3c7;
+ color: #333; /* Dunkle Schrift erzwingen */
+ background-color: #fff; /* Weißen Hintergrund erzwingen */
+ }
+
+ /* WICHTIG: Den Speichern-Button überschreiben wir wieder, damit er grün mit weißer Schrift bleibt */
+ .save-btn {
+ background-color: #27ae60;
+ color: white !important;
+ border: none;
+ cursor: pointer;
+ font-weight: bold;
}
.save-btn {
@@ -132,6 +139,11 @@
+
+
+
+
+
@@ -364,6 +376,9 @@
currentSettings = await res.json();
document.getElementById('ai-provider').value = currentSettings.provider;
+ // NEU: Ollama URL laden
+ document.getElementById('ollama-url').value = currentSettings.ollama_url || "http://127.0.0.1:11434/v1";
+
updateModelDropdown(true);
} catch (e) {
console.error("Fehler beim Laden der Einstellungen:", e);
@@ -373,21 +388,30 @@
function updateModelDropdown(isInitialLoad = false) {
const provider = document.getElementById('ai-provider').value;
const modelSelect = document.getElementById('ai-model');
- modelSelect.innerHTML = ''; // Leeren
+ const ollamaContainer = document.getElementById('ollama-url-container'); // NEU
+
+ // NEU: URL-Feld nur anzeigen, wenn Ollama gewählt ist
+ if (provider === 'ollama') {
+ ollamaContainer.style.display = 'flex';
+ } else {
+ ollamaContainer.style.display = 'none';
+ }
+
+ modelSelect.innerHTML = '';
// Modelle des gewählten Providers einfügen
- modelOptions[provider].forEach(m => {
- const opt = document.createElement('option');
- opt.value = m;
- opt.textContent = m;
- modelSelect.appendChild(opt);
- });
+ if(modelOptions[provider]) {
+ modelOptions[provider].forEach(m => {
+ const opt = document.createElement('option');
+ opt.value = m;
+ opt.textContent = m;
+ modelSelect.appendChild(opt);
+ });
+ }
if (isInitialLoad) {
- // Das aktuell gespeicherte Modell setzen
const savedModel = currentSettings[`${provider}_model`];
- // Falls das in der .env gespeicherte Modell nicht in unserer Liste ist, fügen wir es hinzu
if (savedModel && !modelOptions[provider].includes(savedModel)) {
const opt = document.createElement('option');
opt.value = savedModel;
@@ -402,6 +426,7 @@
async function saveSettings() {
const provider = document.getElementById('ai-provider').value;
const model = document.getElementById('ai-model').value;
+ const ollamaUrl = document.getElementById('ollama-url').value; // NEU
const statusEl = document.getElementById('settings-status');
statusEl.textContent = "Speichere...";
@@ -411,15 +436,19 @@
await fetch('/api/settings', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({ provider, model })
+ body: JSON.stringify({
+ provider: provider,
+ model: model,
+ ollama_base_url: ollamaUrl // NEU
+ })
});
statusEl.textContent = "✅ Gespeichert!";
statusEl.style.color = "#2ecc71";
- // Aktualisiere unsere lokalen Daten
currentSettings.provider = provider;
currentSettings[`${provider}_model`] = model;
+ currentSettings.ollama_base_url = ollamaUrl;
} catch (e) {
statusEl.textContent = "❌ Fehler";