From 17a60e5d3ec463f805c8eaf698a8d09ff891c14c Mon Sep 17 00:00:00 2001 From: duffyduck Date: Fri, 18 Sep 2026 23:49:25 +0200 Subject: [PATCH] refactor(diagnostic): Einstellungen in 3 Sub-Tabs gliedern MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Settings-Tab war auf 13 Sektionen untereinander gewachsen (unuebersichtlich). Jetzt drei Sub-Tabs im #tab-settings: - Modelle & KI: Sprachmodell (Brain), Lokales LLM, Externe Anbieter (OpenRouter & Co — Platzhalter), Sprachausgabe/F5-TTS, Spracherkennung (STT: Voxtral/ Whisper), Voice-ID - Integrationen: OAuth-Apps, FLUX Bildgenerierung - System & Wartung: Reparatur/Restart, Komplett-Reset, Betriebsmodus, Runtime-Konfiguration, App-Onboarding-QR Nur Re-Parenting: jede Sektion wird byte-identisch in ihr Panel verschoben, alle Panels bleiben immer im DOM (nur CSS zeigt/versteckt), Parent bleibt #tab-settings → alle Loader (get_voice_config, loadRuntimeConfig, …) und Save/Load-Handler laufen unveraendert. Verifiziert: 46 Element-ids vorher = 46 nachher, keine verloren/doppelt; JS-Block node --check sauber. Neu: settings-subnav + switchSettingsTab() (merkt den zuletzt gewaehlten Sub-Tab in localStorage), STT-Section-Hinweis dass die Engine pro Compute-Node via COMPOSE_PROFILES gewaehlt wird, Platzhalter-Section fuer externe Anbieter (kein Backend, nur reservierter Platz). App unveraendert. Co-Authored-By: Claude Opus 4.8 --- diagnostic/index.html | 531 +++++++++++++++++++++++------------------- 1 file changed, 285 insertions(+), 246 deletions(-) diff --git a/diagnostic/index.html b/diagnostic/index.html index bd9d1df..e3a1827 100644 --- a/diagnostic/index.html +++ b/diagnostic/index.html @@ -126,6 +126,12 @@ /* Settings */ .settings-section { margin-bottom:20px; } .settings-section h2 { margin-bottom:12px; } + .settings-subnav { display:flex; gap:4px; flex-wrap:wrap; margin:2px 0 18px; border-bottom:1px solid #1E1E2E; } + .settings-subnav-btn { background:none; border:none; color:#8888AA; font-family:inherit; font-size:13px; padding:8px 14px; cursor:pointer; border-bottom:2px solid transparent; } + .settings-subnav-btn:hover { color:#E0E0F0; } + .settings-subnav-btn.active { color:#0096FF; border-bottom-color:#0096FF; } + .settings-subtab { display:none; } + .settings-subtab.visible { display:block; } /* Metric-Zellen im Token/Calls-Card */ .metric-cell { background:#0D0D1A; border:1px solid #1E1E2E; border-radius:6px; padding:8px 10px; } .metric-cell .metric-label { color:#8888AA; font-size:10px; } @@ -488,65 +494,126 @@ - -
-

Reparatur & Restart

-
-

- Wenn ein Container haengt oder ARIA nicht mehr antwortet — hier kann man gezielt eingreifen. -

-
- - - -
-
-
+ +
+ + +
- -
-

Komplett-Reset

-
-

- ⚠ WIPE ALL — alle Einstellungen, Stimmen und das komplette - Gedächtnis (Vector-DB) werden gelöscht. ARIA wird leer wie nach - Erstinstallation. Bleiben tun nur: -

-
    -
  • .env (Tokens + RVS-Config)
  • -
  • aria-data/ssh/ (SSH-Keys für aria-wohnung)
  • -
-

- Vorher exportieren wenn etwas erhalten bleiben soll (Gehirn-Tab + Voice-Liste). -

- -
-
-
+
- + + +
-

Betriebsmodus

+

Sprachmodell (Brain)

-
- - - - - +
+ Welches Claude-Model das Brain pro Anfrage nutzt. Wert wird in + /shared/config/runtime.json als brainModel persistiert. + Bei Aenderung: aria-brain restarten (Reparatur-Section oben), damit's greift. +

+ ARIA laeuft ueber dein Claude-Max-Abo (CLI) — waehlbar ist der Tier + (Opus/Sonnet/Haiku), nicht eine feste Version. Die CLI nimmt automatisch das + jeweils aktuelle Modell des Tiers. +

+ Die Auswahlliste kommt aus /shared/config/models.json — dort kannst du + Tiers/Beschreibungen anpassen (kein Neustart noetig, danach „↻ Aktualisieren").
-
Aktueller Modus: Normal
+
+ Aktives Model: + + + +
+
+
+
+ Erweitert: freie Model-ID +
+ + + +
+
+
+
+ +
+

Lokales LLM (schnelle Antworten)

+
+
+ Ein schnelles lokales Modell (Qwen3 auf der Gamebox) beantwortet + leichte Fragen in unter 1 Sekunde. Was schwerer wird, gibt es + automatisch an Claude ab. Aenderungen greifen sofort + (kein Neustart) — geschrieben nach /shared/config/local_llm.json. +
+ + + +
+ AN: leichte Fragen → lokal (schnell), schwere → Claude.  + AUS: alles laeuft ueber Claude (wie bisher). — Das ist der Normal-Betrieb. +
+ + + +
+ Nur zum Testen. Erzwingt IMMER das lokale Modell — auch bei + schweren Fragen, ohne Claude-Rettung. So siehst du, was Qwen allein kann. Werkzeug-Fragen + (Wetter/Timer/…) funktionieren dann nicht. Fuer den Alltag: AUS lassen. +
+ + +
+ Werkzeuge lokal: + + +
+
+ Welche Werkzeuge das lokale Modell selbst ausfuehren darf. „Voll" ist gesperrt, + bis eine 2. Grafikkarte da ist (siehe ⓘ). +
Aktueller Stand (B1a): das lokale Modell plaudert nur — Werkzeuge macht noch Claude. Lokale Tools kommen mit B1b. +
+ + +
+ Lokales Modell: + + +
+
+
+ Beim ersten Wechsel zu einem Modell lädt die Gamebox das GGUF (mehrere GB) — + die erste Antwort dauert dann länger, danach ist es gecacht. + Liste kommt aus /shared/config/local_models.json (Keys = xtts/llama-swap/config.yaml). +
+ +
+
+
+ +
+

Externe Anbieter (OpenRouter & Co)

+
+

Geplant: neben den lokalen Diensten (F5-TTS, Whisper/Voxtral, lokales LLM) auch externe Anbieter wie OpenRouter & Co anbinden.

+

Noch nicht angebunden — der Bereich ist hier als Platz reserviert. Die Verdrahtung (API-Key + Routing) kommt als eigener Schritt.

@@ -663,97 +730,10 @@
- -
-

FLUX Bildgenerierung

-
- Steuerung der Image-Generation (flux-bridge auf der Gamebox). - Default-Modell wird via RVS gepusht — Wechsel triggert Pipeline-Reload (15-30s - aus HF-Cache, mehrere Minuten beim Erst-Download). Keywords nutzt ARIAs Brain - im System-Prompt. -
-
-
- - - - - - - - - - - -
- - -
-
- Erst auf huggingface.co/.../FLUX.1-dev "Agree" klicken, - dann unter Settings → Tokens einen Read-Token erzeugen. -
- -
- -
- Beide Modelle = volle Qualitaet, schnell ist nur ein 4-Step-Distillat (Apache-2.0). -
-
-
-
-
- - -
-

OAuth-Apps (Spotify, Google, GitHub, Strava, Microsoft, ...)

-
- Trag pro Service `client_id` + `client_secret` ein (aus dem Developer-Dashboard - des Providers). RVS stellt die Callback-URL bereit — die musst Du EINMAL pro - Service im Provider-Dashboard als gueltige Redirect-URI eintragen. - Danach kann ARIA per `oauth_authorize`-Tool eine Auth-URL bauen; Stefan klickt, - autorisiert, ARIA bekommt den Token automatisch. -
-
- Lade Callback-URL... -
-
-
-
Lade Services...
-
-
- -
- client_secret wird verschlüsselt persistiert (file-mode 0600). Nicht in git, nicht im Repo. -
-
-
-
-
-

Whisper (Spracherkennung)

+

Spracherkennung (STT: Voxtral / Whisper)

+

Die aktive STT-Engine wird pro Compute-Node über COMPOSE_PROFILES gewählt (Voxtral oder Whisper, siehe Satelliten → Compute-Flotte). Die folgenden Einstellungen betreffen Whisper.

Aenderungen werden sofort an die Bridge gesendet und das Modell neu geladen (kann bei medium/large 10-30s dauern — waehrend dieser Zeit ist STT kurz pausiert). @@ -822,6 +802,162 @@
+ + +
+ + +
+

OAuth-Apps (Spotify, Google, GitHub, Strava, Microsoft, ...)

+
+ Trag pro Service `client_id` + `client_secret` ein (aus dem Developer-Dashboard + des Providers). RVS stellt die Callback-URL bereit — die musst Du EINMAL pro + Service im Provider-Dashboard als gueltige Redirect-URI eintragen. + Danach kann ARIA per `oauth_authorize`-Tool eine Auth-URL bauen; Stefan klickt, + autorisiert, ARIA bekommt den Token automatisch. +
+
+ Lade Callback-URL... +
+
+
+
Lade Services...
+
+
+ +
+ client_secret wird verschlüsselt persistiert (file-mode 0600). Nicht in git, nicht im Repo. +
+
+
+
+ + +
+

FLUX Bildgenerierung

+
+ Steuerung der Image-Generation (flux-bridge auf der Gamebox). + Default-Modell wird via RVS gepusht — Wechsel triggert Pipeline-Reload (15-30s + aus HF-Cache, mehrere Minuten beim Erst-Download). Keywords nutzt ARIAs Brain + im System-Prompt. +
+
+
+ + + + + + + + + + + +
+ + +
+
+ Erst auf huggingface.co/.../FLUX.1-dev "Agree" klicken, + dann unter Settings → Tokens einen Read-Token erzeugen. +
+ +
+ +
+ Beide Modelle = volle Qualitaet, schnell ist nur ein 4-Step-Distillat (Apache-2.0). +
+
+
+
+
+
+ +
+ + +
+

Reparatur & Restart

+
+

+ Wenn ein Container haengt oder ARIA nicht mehr antwortet — hier kann man gezielt eingreifen. +

+
+ + + +
+
+
+
+ + +
+

Komplett-Reset

+
+

+ ⚠ WIPE ALL — alle Einstellungen, Stimmen und das komplette + Gedächtnis (Vector-DB) werden gelöscht. ARIA wird leer wie nach + Erstinstallation. Bleiben tun nur: +

+
    +
  • .env (Tokens + RVS-Config)
  • +
  • aria-data/ssh/ (SSH-Keys für aria-wohnung)
  • +
+

+ Vorher exportieren wenn etwas erhalten bleiben soll (Gehirn-Tab + Voice-Liste). +

+ +
+
+
+ + +
+

Betriebsmodus

+
+
+ + + + + +
+
Aktueller Modus: Normal
+
+
@@ -885,112 +1021,8 @@
- - - - -
-

Sprachmodell (Brain)

-
-
- Welches Claude-Model das Brain pro Anfrage nutzt. Wert wird in - /shared/config/runtime.json als brainModel persistiert. - Bei Aenderung: aria-brain restarten (Reparatur-Section oben), damit's greift. -

- ARIA laeuft ueber dein Claude-Max-Abo (CLI) — waehlbar ist der Tier - (Opus/Sonnet/Haiku), nicht eine feste Version. Die CLI nimmt automatisch das - jeweils aktuelle Modell des Tiers. -

- Die Auswahlliste kommt aus /shared/config/models.json — dort kannst du - Tiers/Beschreibungen anpassen (kein Neustart noetig, danach „↻ Aktualisieren"). -
-
- Aktives Model: - - - -
-
-
-
- Erweitert: freie Model-ID -
- - - -
-
-
-
-

Lokales LLM (schnelle Antworten)

-
-
- Ein schnelles lokales Modell (Qwen3 auf der Gamebox) beantwortet - leichte Fragen in unter 1 Sekunde. Was schwerer wird, gibt es - automatisch an Claude ab. Aenderungen greifen sofort - (kein Neustart) — geschrieben nach /shared/config/local_llm.json. -
- - - -
- AN: leichte Fragen → lokal (schnell), schwere → Claude.  - AUS: alles laeuft ueber Claude (wie bisher). — Das ist der Normal-Betrieb. -
- - - -
- Nur zum Testen. Erzwingt IMMER das lokale Modell — auch bei - schweren Fragen, ohne Claude-Rettung. So siehst du, was Qwen allein kann. Werkzeug-Fragen - (Wetter/Timer/…) funktionieren dann nicht. Fuer den Alltag: AUS lassen. -
- - -
- Werkzeuge lokal: - - -
-
- Welche Werkzeuge das lokale Modell selbst ausfuehren darf. „Voll" ist gesperrt, - bis eine 2. Grafikkarte da ist (siehe ⓘ). -
Aktueller Stand (B1a): das lokale Modell plaudert nur — Werkzeuge macht noch Claude. Lokale Tools kommen mit B1b. -
- - -
- Lokales Modell: - - -
-
-
- Beim ersten Wechsel zu einem Modell lädt die Gamebox das GGUF (mehrere GB) — - die erste Antwort dauert dann länger, danach ist es gecacht. - Liste kommt aus /shared/config/local_models.json (Keys = xtts/llama-swap/config.yaml). -
- -
-
-
@@ -1990,6 +2022,7 @@ alert('Es war kein Fingerprint vorhanden.'); } refreshVoiceIdStatus(); + switchSettingsTab(localStorage.getItem('diag_settings_subtab') || 'models'); return; } @@ -4165,6 +4198,12 @@ // ── Haupt-Tab Navigation ────────────────────────────────── + function switchSettingsTab(sub) { + sub = sub || 'models'; + document.querySelectorAll('.settings-subtab').forEach(el => el.classList.toggle('visible', el.dataset.sub === sub)); + document.querySelectorAll('.settings-subnav-btn').forEach(b => b.classList.toggle('active', b.dataset.sub === sub)); + try { localStorage.setItem('diag_settings_subtab', sub); } catch (e) {} + } function switchMainTab(tab) { document.querySelectorAll('.main-tab').forEach(el => el.classList.remove('visible')); document.querySelectorAll('.main-nav-btn').forEach(b => b.classList.remove('active'));