Dieter Schlüter
76df695111
feat(web): Remote-Web-UI mit Mikrofon + Forward-Auth (YunoHost-SSO)
- Minimale Web-UI (app/web/, vanilla, same-origin -> kein CORS): Text-Prompt +
Mikrofon-Button (Aufnahme im Browser -> /ws/voice -> Antwort wird vorgelesen),
Token-Streaming, PCM-Wiedergabe, Identitaet/Logout/Admin im Menue
- Forward-/Trusted-Header-Auth (app/auth.py): Identitaet aus SSO-Header, nur von
TRUSTED_PROXY_IPS akzeptiert; sonst Token/Anonymous-Fallback. Auto-Provisioning
via store.get_or_create_user_by_external_id (+ external_id-Spalte/Migration)
- /api/me um is_admin + sso_logout_url erweitert; GET /api/admin/users (Liste) und
GET /api/admin/request-headers (SSO-Header-Discovery), Admin-gated
- StaticFiles-Mount; Config: TRUSTED_AUTH_HEADER/_PROXY_IPS, ADMIN_USERS, SSO_LOGOUT_URL
- WS-Auth liest Identitaet aus dem Handshake-Header
- Deploy: nginx-Vorlage (WS-Upgrade!) + deploy/README.md (HTTPS/SSO/Firewall/Discovery)
- Tests: Forward-Auth (Provisioning, Admin-Flag, Proxy-IP-Trust, 401/403, Static)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-18 04:37:16 +02:00 |
| .. |
|
conftest.py
|
feat: Audio-Streaming als Default (Admin abschaltbar via AUDIO_STREAM_DEFAULT)
|
2026-06-17 18:07:36 +02:00 |
|
test_audio_router.py
|
Initial commit: Voice Assistant Gateway mit Konfig-/Routing-Fundament
|
2026-06-17 01:48:56 +02:00 |
|
test_auth.py
|
feat(tts): echtes lokales TTS via piper (kein Stub mehr)
|
2026-06-17 22:11:20 +02:00 |
|
test_basic_layout.py
|
Initial commit: Voice Assistant Gateway mit Konfig-/Routing-Fundament
|
2026-06-17 01:48:56 +02:00 |
|
test_config_profiles.py
|
Initial commit: Voice Assistant Gateway mit Konfig-/Routing-Fundament
|
2026-06-17 01:48:56 +02:00 |
|
test_emergency_llm.py
|
feat(safety): zweistufige Notfall-Erkennung mit LLM-Klassifikation
|
2026-06-18 03:24:25 +02:00 |
|
test_endpoints_e2e.py
|
feat(tts): echtes lokales TTS via piper (kein Stub mehr)
|
2026-06-17 22:11:20 +02:00 |
|
test_forward_auth.py
|
feat(web): Remote-Web-UI mit Mikrofon + Forward-Auth (YunoHost-SSO)
|
2026-06-18 04:37:16 +02:00 |
|
test_memory.py
|
feat: Langzeit-Erinnerungen (#3b) und WebSocket-Streaming-Chat (#4, erster Increment)
|
2026-06-17 04:26:55 +02:00 |
|
test_memory_extraction.py
|
feat(memory): automatische Erinnerungs-Extraktion aus Gespraechen
|
2026-06-18 03:15:08 +02:00 |
|
test_openrouter_tts.py
|
fix(tts): OpenRouter-TTS bei transient leerer/5xx-Antwort wiederholen
|
2026-06-18 00:06:47 +02:00 |
|
test_piper_tts.py
|
feat(tts): echtes lokales TTS via piper (kein Stub mehr)
|
2026-06-17 22:11:20 +02:00 |
|
test_quota_safety.py
|
feat: Tageskontingent und Notfall-Eskalation (#6)
|
2026-06-17 05:29:30 +02:00 |
|
test_realtime.py
|
feat: Barge-in/Turn-Manager und VAD-Aeusserungserkennung (#4 Ausbau)
|
2026-06-17 05:06:58 +02:00 |
|
test_resilience.py
|
feat: Resilienz (Fallback-Ketten) und Metriken (#5)
|
2026-06-17 05:19:07 +02:00 |
|
test_routing.py
|
feat: Cloud-Fundament - Auth, Persistenz und Mandanten-Trennung
|
2026-06-17 02:14:25 +02:00 |
|
test_streaming.py
|
feat(tts): Aussprache-Normalisierung vor Piper (Ordinalia/Einheiten/Abk./Lexikon)
|
2026-06-17 23:01:41 +02:00 |
|
test_tts_normalizer.py
|
feat(tts): Aussprache-Lexikon befüllt (verifizierte Vokallängen-Fixes) + case-insensitiv
|
2026-06-17 23:19:17 +02:00 |
|
test_ws.py
|
feat: Audio-Streaming als Default (Admin abschaltbar via AUDIO_STREAM_DEFAULT)
|
2026-06-17 18:07:36 +02:00 |