From d296bad9f26b11fb6eeb41a887e77de176c3198b Mon Sep 17 00:00:00 2001 From: dschlueter Date: Thu, 25 Jun 2026 04:54:56 +0200 Subject: [PATCH] =?UTF-8?q?feat(3b):=20Einstellungen=20vereinfacht=20?= =?UTF-8?q?=E2=80=94=20wichtige=20sichtbar,=20=E2=80=9EErweitert"=20einkla?= =?UTF-8?q?ppbar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Statt 7 technischer Gruppen jetzt 3: „Sprache & Stimme" und „Antwortverhalten" (die alltagsrelevanten Schalter) immer sichtbar; alle technischen Regler (STT/LLM-Provider, OpenRouter-Modelle, Temperatur, top_p, Tokens, Systemprompt, Normalisierung …) unter „Erweitert", das standardmäßig eingeklappt ist. app.js v=47. Co-Authored-By: Claude Sonnet 4.6 --- app/web/app.js | 39 +++++++++++++++++++++++++++------------ app/web/index.html | 2 +- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/app/web/app.js b/app/web/app.js index 530ce7c..c3da81f 100644 --- a/app/web/app.js +++ b/app/web/app.js @@ -1724,13 +1724,12 @@ const FIELD_META = { }; const FIELD_GROUPS = [ - { label: "Provider & Sprache", keys: ["default_stt_provider","default_llm_provider","default_tts_provider","default_language"] }, - { label: "OpenRouter-Modelle & Stimmen", keys: ["openrouter_llm_model","openrouter_tts_model","openrouter_tts_voice"] }, - { label: "Piper TTS", keys: ["piper_voice"] }, - { label: "Lokales LLM", keys: ["local_llm_system_prompt","local_llm_temperature","local_llm_top_p","local_llm_max_tokens"] }, - { label: "TTS-Verarbeitung", keys: ["tts_normalize_level","audio_stream_default"] }, - { label: "Gedächtnis", keys: ["memory_extraction_enabled","memory_extraction_every_n_turns"] }, - { label: "Limits", keys: ["daily_request_limit"] }, + { label: "Sprache & Stimme", keys: ["default_language","default_tts_provider","openrouter_tts_voice","piper_voice"] }, + { label: "Antwortverhalten", keys: ["memory_extraction_enabled","audio_stream_default","daily_request_limit"] }, + { label: "Erweitert", advanced: true, keys: [ + "default_stt_provider","default_llm_provider","openrouter_llm_model","openrouter_tts_model", + "tts_normalize_level","local_llm_system_prompt","local_llm_temperature","local_llm_top_p", + "local_llm_max_tokens","memory_extraction_every_n_turns" ] }, ]; let _settingsData = []; @@ -1748,15 +1747,31 @@ async function loadSettings() { if (!items.length) return; const section = document.createElement("div"); section.className = "bg-white dark:bg-slate-800 rounded-xl border border-slate-200 dark:border-slate-700 overflow-hidden"; - const header = document.createElement("div"); - header.className = "px-4 py-2.5 border-b border-slate-100 dark:border-slate-700 bg-slate-50/80 dark:bg-slate-800/60"; - header.innerHTML = `

${escHtml(group.label)}

`; - section.appendChild(header); + + const body = document.createElement("div"); items.forEach((item, idx) => { const row = buildSettingRow(item); if (idx > 0) row.classList.add("border-t", "border-slate-100", "dark:border-slate-700/60"); - section.appendChild(row); + body.appendChild(row); }); + + const header = document.createElement(group.advanced ? "button" : "div"); + header.className = "w-full text-left px-4 py-2.5 border-b border-slate-100 dark:border-slate-700 bg-slate-50/80 dark:bg-slate-800/60 flex items-center gap-2"; + if (group.advanced) { + body.classList.add("hidden"); + header.innerHTML = `` + + `

${escHtml(group.label)}

` + + `technische Optionen`; + header.addEventListener("click", () => { + const open = !body.classList.contains("hidden"); + body.classList.toggle("hidden", open); + header.querySelector(".adv-arrow").textContent = open ? "▶" : "▼"; + }); + } else { + header.innerHTML = `

${escHtml(group.label)}

`; + } + section.appendChild(header); + section.appendChild(body); container.appendChild(section); }); } diff --git a/app/web/index.html b/app/web/index.html index 8b1ae76..b5bc8a6 100644 --- a/app/web/index.html +++ b/app/web/index.html @@ -365,6 +365,6 @@
- +