ARIA-AGENT/issue.md

6.3 KiB

ARIA Issues & Features

Erledigt

  • Bildupload funktioniert (Shared Volume /shared/uploads/)
  • Sprachnachrichten werden als Text angezeigt (STT → Chat-Bubble)
  • Cache leeren + Auto-Download von Anhaengen
  • ARIA liest Nachrichten vor (TTS via Piper, später ersetzt)
  • Autoscroll zur letzten Nachricht (inverted FlatList)
  • Bilder im Chat groesser + Vollbild-Vorschau
  • Ohr-Button → Gespraechsmodus (Auto-Aufnahme nach ARIA-Antwort)
  • Play-Button in ARIA-Nachrichten fuer Sprachwiedergabe
  • Chat-Suche in der App (Lupe in Statusleiste)
  • Watchdog mit Container-Restart (2min Warnung → 5min doctor --fix → 8min Restart)
  • Abbrechen-Button im Diagnostic Chat
  • Nachrichten Backup on-the-fly (/shared/config/chat_backup.jsonl)
  • Grosse Nachrichten satzweise aufteilen fuer TTS
  • RVS Nachrichten vom Smartphone gehen durch
  • Stimmen-Einstellungen (Ramona/Thorsten, Speed pro Stimme — durch XTTS/F5-TTS ersetzt)
  • Highlight-Trigger konfigurierbar in Diagnostic
  • XTTS v2 Integration (Gaming-PC, GPU, Voice Cloning) — durch F5-TTS ersetzt
  • XTTS Voice Cloning (Audio-Samples hochladen, eigene Stimme)
  • TTS Engine waehlbar (Piper/XTTS) — Piper raus, XTTS raus, jetzt nur F5-TTS
  • Auto-Update System (APK via RVS WebSocket)
  • Auto-Update: APK-Installation via FileProvider
  • Auto-Update: "Auf Updates pruefen" Button in App-Einstellungen
  • Audio-Queue (sequentielle Wiedergabe, kein Ueberlappen)
  • Textnachrichten werden von ARIA beantwortet (Bridge chat handler fix)
  • Mehrere Anhaenge + Text vor dem Senden (Pending-Vorschau)
  • Paste-Support fuer Bilder in Diagnostic Chat
  • Markdown-Bereinigung fuer TTS (fett, kursiv, code, links, etc.)
  • SSH Volume read-write fuer Proxy (kein -F Workaround mehr)
  • Diagnostic: Sessions als Markdown exportieren (Download-Button)
  • Speech Gate: Aufnahme wird verworfen wenn keine Sprache erkannt
  • Session-Persistenz: Gewaehlte Session bleibt ueber Container-Restarts erhalten
  • Diagnostic: "ARIA denkt..." bleibt nicht mehr stehen
  • App: "ARIA denkt..." Indicator + Abbrechen-Button (Bridge spiegelt agent_activity via RVS)
  • Whisper STT: Model-Auswahl in Diagnostic (tiny/base/small/medium/large-v3), Hot-Reload
  • App: Audio-Aufnahme explizit 16kHz mono (spart Resample, optimal fuer Whisper)
  • Streaming TTS: PCM-Stream → AudioTrack MODE_STREAM, keine WAV-Gaps
  • Piper komplett entfernt
  • Gespraechsmodus: Speech-Gate strenger (-28dB / 500ms)
  • Diagnostic: Archivierte Session-Versionen (.reset.*) angezeigt + exportierbar
  • tools/export-jsonl-to-md.js: CLI-Konverter fuer Session-JSONL zu Markdown
  • NO_REPLY-Filter in Bridge + Diagnostic
  • Audio-Ducking + Exklusiv-Focus (Kotlin AudioFocusModule)
  • TTS-Cleanup serverseitig: Code-Bloecke raus, Einheiten ausgeschrieben, Abkuerzungen buchstabiert, URLs zu "ein Link"
  • QR-Code Onboarding: Diagnostic generiert QR, App scannt
  • TTS-Audio-Cache im Filesystem: WAV pro messageId, Play-Button spielt aus Cache
  • Config via Diagnostic: RVS-Credentials + Auth-Token persistiert in /shared/config/runtime.json
  • Disk-Voll Banner in Diagnostic: rotes Overlay + copy-baren Cleanup-Befehlen (safe + aggressiv)
  • cleanup.sh: kombinierter Docker-Aufraeum-Befehl (safe / --full)
  • Streaming TTS Pre-Roll: AudioTrack play() startet erst wenn 2.5s gepuffert sind
  • Streaming TTS Stop-Race: Writer wartet auf playbackHeadPosition vor stop()/release() — keine abgeschnittenen Saetze mehr
  • Leading-Silence (200ms) am Stream-Anfang — AudioTrack faehrt sauber an
  • Pre-Roll-Buffer einstellbar in App-Settings (1.0-6.0s, Default 3.5s)
  • Fade-In auf erstem PCM-Chunk (120ms) — versteckt XTTS/F5-TTS Warmup-Glitches
  • Decimal-zu-Worte fuer TTS (0.1 → null komma eins, mit IP-Schutz-Lookahead)
  • Generic Acronym-Buchstabieren (XTTS → X T T S, USB → U S B, ueber expliziter Liste)
  • Voice-Auswahl funktioniert wieder: speaker_wav als Basename statt Pfad fuer daswer123 local-Mode
  • Diagnostic-Voice-Wechsel resettet alle App-lokalen Voice-Overrides via type "config"
  • voice_preload/voice_ready: Stille Mini-Render bei Voice-Wechsel + Toast/Status "bereit"
  • Whisper STT auf die Gamebox ausgelagert (faster-whisper CUDA, float16) — neuer aria-whisper-bridge Container
  • aria-bridge: STT primaer remote (Gamebox), Fallback lokal nach 45s Timeout
  • Whisper-Modell hot-swap auf Gamebox via config-Broadcast aus Diagnostic
  • F5-TTS ersetzt XTTS komplett — neuer aria-f5tts-bridge Container, Voice Cloning, satzweises Streaming
  • Voice-Upload mit Whisper-Auto-Transkription — User muss keinen Referenz-Text eintippen
  • Audio-Pause statt Ducking: Spotify/YouTube pausieren komplett waehrend TTS (TRANSIENT statt MAY_DUCK)
  • AudioFocus.release wartet auf echten Playback-Ende — kein Volume-Hochfahren mehr mid-Antwort
  • VAD-Stille einstellbar in App-Settings (1.0-8.0s, Default 2.8s)
  • MAX_RECORDING auf 120s — laengere Erklaerungen moeglich
  • App: Audioausgabe hoert nicht mehr mitten im Satz auf (playbackHeadPosition wait + Stop-Race fix)

Offen

Bugs

  • NO_REPLY wird als "NO" im Chat angezeigt — sollte still verworfen werden (Token nicht gesaeubert)

App Features

  • Wake Word on-device (Porcupine "ARIA" Keyword, Phase 2 — passives Lauschen)
  • Chat-History zuverlaessiger laden (AsyncStorage Race Condition)
  • Background Audio Service (TTS auch bei minimierter App)

TTS / Audio

  • Audio-Normalisierung (Lautstaerke zwischen Saetzen/Chunks angleichen)
  • F5-TTS: Streaming-Inferenz testen (nativ statt satzweise) wenn ein passendes Backend kommt
  • F5-TTS: Optional Deepspeed-Beschleunigung pruefen

Architektur

  • Bilder: Claude Vision direkt nutzen (aktuell nur Dateipfad an ARIA)
  • Auto-Compacting und Memory/Brain Verwaltung (SQLite?)
  • Diagnostic: System-Info Tab (Container-Status, Disk, RAM, CPU)
  • RVS Zombie-Connections endgueltig loesen
  • Alle .env-Variablen ueber Diagnostic konfigurierbar machen (Fallback .env bleibt fuer initialen Bootstrap)
  • Gamebox: kleine Web-Oberflaeche fuer Credentials/Server-Config oder zentral aus Diagnostic per RVS push
  • Root-Cause OpenClaw Session-Reset: Herausfinden warum Sessions beim ersten chat.send nach Container-Restart verworfen werden