Compare commits

..

95 Commits

Author SHA1 Message Date
duffyduck db053c2dbd fixed sst to milliseconds and autoscroll the the third, attachments added shared volume, addes attachments at chats, updateded readme 2026-03-29 12:34:28 +02:00
duffyduck 8c1dac86d5 fixed autoscroll, second case, update received messages, resend text for information if voice message sendet 2026-03-29 12:09:17 +02:00
duffyduck 8fb95b884f added auto scroll, fixed stt for voice messages, fixed get answers in chat, hope fixed attachments 2026-03-29 11:56:13 +02:00
duffyduck f1f297b3a7 fixed voice button apk and update readme 2026-03-29 11:41:32 +02:00
duffyduck 65b7fc2964 build new android version 2026-03-29 11:33:52 +02:00
duffyduck 2227e49993 updates android buold environment and setup.sh 2026-03-29 11:32:37 +02:00
duffyduck dbd97d3cf4 added audio workword, and recording, editied readme 2026-03-29 11:29:15 +02:00
duffyduck b687f790ba fixed, chat loaded 2026-03-29 03:37:53 +02:00
duffyduck 65ae75494f added logging for session ids 2026-03-29 03:33:09 +02:00
duffyduck 54b4331e1e fixed, session selector at start and fixed load chat 2026-03-29 03:26:11 +02:00
duffyduck 8e52b05032 fix load chat change session 2026-03-29 03:22:35 +02:00
duffyduck 1972c4d1b4 fixed chat textjson format, selected session for all, fixed android echo 2026-03-29 03:18:02 +02:00
duffyduck f2aebcbad9 fixed, chat messages, reload 2026-03-29 03:04:45 +02:00
duffyduck 4722e1a0ee fixed, aria reuse old session, and reload chat 2026-03-29 01:55:57 +01:00
duffyduck 242f67ec2b fixed timeout 2026-03-16 01:10:33 +01:00
duffyduck 1ee800f451 updated readme ans increased timeout 2026-03-16 01:05:32 +01:00
duffyduck 8a6625b117 added curl to conatiner 2026-03-16 00:52:47 +01:00
duffyduck 906d462eee fixed bootstrap 2026-03-15 23:26:44 +01:00
duffyduck b3c87ad7b7 fixe aria-setup for ssh keys generation 2026-03-15 23:05:56 +01:00
duffyduck 75882545c8 changed ssh keys for root 2026-03-15 22:57:23 +01:00
duffyduck 4b4db6885b change from sh auf bash 2026-03-15 22:47:49 +01:00
duffyduck f0e7b04758 fixed claude credentials mount, to prevent container restarts 2026-03-15 22:39:45 +01:00
duffyduck 5b91975061 add clickable links, media embeds and lightbox to chat
- URLs are now clickable (open in new tab)
- Images (jpg/png/gif/webp/svg) embed inline, click for fullscreen
- Videos (mp4/webm) embed inline with controls, click for fullscreen
- PDFs and other files open in new tab (browser handles download)
- Fullscreen lightbox closes on click or Escape

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 22:10:50 +01:00
duffyduck a58b5073c6 add SHELL env var to proxy for Claude Code Bash tool
Alpine doesn't set SHELL by default — Claude Code's Bash tool
refuses to run without it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 22:05:52 +01:00
duffyduck e1bee1bcf6 add SSH access to proxy container for ARIA's Bash tool
Claude Code CLI runs in aria-proxy, so Bash commands execute there.
SSH keys and host.docker.internal were only in aria-core — ARIA
couldn't reach aria-wohnung. Now the proxy has SSH client, keys,
and host resolution too.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 21:59:32 +01:00
duffyduck 7acc2b7329 fix openclaw config viewer — removed reference to deleted variable
OPENCLAW_SETTINGS_PATHS wurde mit dem Permissions-Cleanup gelöscht,
aber handleGetOpenClawConfig() nutzte es noch. Ersetzt durch direkte
Pfade zu openclaw.json und exec-approvals.json.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 19:56:21 +01:00
duffyduck 62d5d73c74 remove granular tool permissions, add architecture docs
Granulare Tool-Permissions in der Diagnostic UI entfernt — sie hatten
keinen Effekt weil Claude Code mit --dangerously-skip-permissions läuft
(Alles-oder-Nichts). Ersetzt durch statischen Hinweis-Toggle.

Neue Doku in aria-data/docs/tool-permissions.md: alle Erkenntnisse zu
OpenClaw Tool-Permissions, 17 gescheiterte Versuche, finale Lösung
(CLAUDE_CODE_BUBBLEWRAP=1).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 19:46:56 +01:00
duffyduck 1afb47c49c set env for claude no ki and reverted node user 2026-03-15 19:28:10 +01:00
duffyduck 483957b272 fixed docker-compose for claude volumes 2026-03-15 10:10:36 +01:00
duffyduck 5af0587d00 changed claud credentials path 2026-03-15 10:07:41 +01:00
duffyduck aaf97b7904 docker compose geändert mit su for claus credentials 2026-03-15 10:03:07 +01:00
duffyduck e11610985d zweiten volume mount für den node user 2026-03-15 09:57:44 +01:00
duffyduck 806bc57944 added symlink to docker credentials for login 2026-03-15 09:54:21 +01:00
duffyduck 7d74dd091b added non root user in docker compose for claud code 2026-03-15 09:46:36 +01:00
duffyduck 86d8489078 added bypass in docker-compose 2026-03-15 09:43:13 +01:00
duffyduck da52556c26 changed docker-sed to allowtools 2026-03-15 09:38:39 +01:00
duffyduck 47ed8de586 added sed pacth for permission to docker-compose 2026-03-15 09:32:17 +01:00
duffyduck 47cd730fd1 fixed bootrap agendt and aria-setup for permissions 2026-03-15 09:20:40 +01:00
duffyduck 0bd7e5bf83 fixed bootstrap 2026-03-14 19:53:07 +01:00
duffyduck 8968db27c0 implemted no asking in bootsrap.md and agent.md 2026-03-14 18:33:18 +01:00
duffyduck 45c3e30843 add permission fix in aria-setup for claude config directory 2026-03-14 17:32:42 +01:00
duffyduck 9f2d898d82 insert try cathc method at save permissions function 2026-03-14 17:26:36 +01:00
duffyduck 800a57d28a fixed permission withour create new session, only restarted session 2026-03-14 17:22:56 +01:00
duffyduck c23e4ff1ad cretead more paths were openclaw find settings 2026-03-14 16:58:58 +01:00
duffyduck 1d48dbe7d5 save with verify and restart new session 2026-03-13 18:02:44 +01:00
duffyduck cd9d8cda1f added setting and permissions 2026-03-13 17:39:50 +01:00
duffyduck 08256c6113 fixed delete session and added create button 2026-03-13 17:19:50 +01:00
duffyduck 8d7bb90a82 fixed session viewer and brain 2026-03-13 17:08:11 +01:00
duffyduck 706005d7f5 added brain and session viewer 2026-03-13 16:45:56 +01:00
duffyduck 6a04d861bd Bump diagnostic session key to v3 for fresh session after config changes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 11:23:47 +01:00
duffyduck 8dfda37ef5 ssh permission for own vm assigned 2026-03-13 11:11:22 +01:00
duffyduck 58a862c98d added live windows 2026-03-13 11:00:20 +01:00
duffyduck feba1ca13f added vm integration 2026-03-13 10:54:23 +01:00
duffyduck dd23b6f352 Zusammenfassung der Fixes:
Textfeld leeren — input.value = '' nach Gateway/RVS senden
Duplikate verhindern — seenFinalRuns Set speichert runId für 60s, ignoriert wiederholte final Events mit gleicher runId
2026-03-13 10:33:58 +01:00
duffyduck 6964fdcae1 home verzeichnis adjusted 2026-03-13 09:13:41 +01:00
duffyduck c7e509a04c claude.md erstellt 2026-03-13 09:09:55 +01:00
duffyduck 22d16dbdc7 cretate bootstrap.md 2026-03-13 09:05:25 +01:00
duffyduck 0868c3c59f fixex claude bridge, fix in docker-compose file 2026-03-13 09:00:35 +01:00
duffyduck 58c709f196 fixed text response 2026-03-13 08:50:34 +01:00
duffyduck 29e175e75f fixed event handler 2026-03-13 08:37:04 +01:00
duffyduck f0f3b40a30 fixex chat response text from objet to string 2026-03-13 08:32:17 +01:00
duffyduck 4893d5e2ba swicthed back to network mod and added helatcheck for diagnostic to restart 2026-03-13 08:26:02 +01:00
duffyduck 72fdebe50d fiexd networ mode at restart 2026-03-13 08:19:27 +01:00
duffyduck 9cad631015 diagnostic/server.js — Handler umgebaut: event: "agent" für Deltas, event: "chat" mit state: "final" für Antworten, extractChatText() parst das content[] Array
bridge/aria_bridge.py — Gleicher Fix: _extract_chat_text() Methode, neue Event-Handler für agent und chat mit state, Legacy-Namen als Fallback
2026-03-13 08:14:52 +01:00
duffyduck fcb22f60d3 expanded logs with catch all 2026-03-13 08:05:26 +01:00
duffyduck 571345ed0d added log for sending text and aria-setup.sh 2026-03-13 07:54:21 +01:00
duffyduck 34353493b5 fixes aria setup 2026-03-12 23:26:45 +01:00
duffyduck 087aee88d3 fixed handshake for model 2026-03-12 23:19:11 +01:00
duffyduck 882adb2dea fixed permiision 2026-03-12 19:30:36 +01:00
duffyduck 4dd9599c47 fix openclaw data volume 2026-03-12 19:24:16 +01:00
duffyduck 618248e8df added subscription for opencloud 2026-03-12 19:20:26 +01:00
duffyduck 364cf378b3 remove echo in chat and added openclae.env dummy file 2026-03-12 19:12:57 +01:00
duffyduck 9783de85f5 fix windows and write credentials 2026-03-12 18:57:18 +01:00
duffyduck 3a82f9bab0 added xterm for login 2026-03-12 16:53:31 +01:00
duffyduck 0beef70651 fixed login with theme selection, default 1 2026-03-12 02:22:35 +01:00
duffyduck ac1e5c332f fixed claude login 2026-03-12 02:19:31 +01:00
duffyduck 5e2b31385f added claude login for credentials creation if credentials not exist 2026-03-12 02:13:11 +01:00
duffyduck c711899e4d added check claude credentials in log server and changelog altered 2026-03-12 02:05:01 +01:00
duffyduck f0b4e586c0 added model list to proxy log in diagnostic server 2026-03-12 01:55:23 +01:00
duffyduck c255a85ffb ost-Bind — Proxy hört auf 0.0.0.0:3456 statt 127.0.0.1:3456
Null-Guard — model undefined crasht nicht mehr, Fallback auf "claude-sonnet-4"
2026-03-12 01:51:09 +01:00
duffyduck 8853ec697d claude-max-api-proxy hat host hardcoded auf 127.0.0.1 in standalone.js — die startServer() Funktion unterstützt zwar einen host Parameter, aber der CLI-Einstiegspunkt übergibt ihn nie. 2026-03-12 01:47:01 +01:00
duffyduck 258f6e0629 fixed host in proxy docker compose 2026-03-12 01:40:18 +01:00
duffyduck 42d1cce567 fixed hostmode proxy 2026-03-12 01:36:55 +01:00
duffyduck 580141fa17 added docker logs to diagnostic 2026-03-12 01:34:16 +01:00
duffyduck 2e4a12c812 added claude cli log and test and optimize log windows through seperate tabs, update readme changelog 2026-03-12 01:25:35 +01:00
duffyduck b3a2fd7092 fixed openclaws 2026-03-12 00:32:12 +01:00
duffyduck 9b101e9c9f fixed meesage format to openclaw 2026-03-12 00:24:50 +01:00
duffyduck 3baa67d8de fixed client id bride and diagnostic 2026-03-12 00:23:03 +01:00
duffyduck 537c5b06c1 fixed log error in diagnostic 2026-03-12 00:17:15 +01:00
duffyduck eaa0c2bcbe added tls fallback and auto pause in log window 2026-03-12 00:14:32 +01:00
duffyduck dc8ff7a406 added diagnostic page 2026-03-12 00:08:30 +01:00
duffyduck c5d835ea09 - aria-data/config/AGENT.md — ARIAs Persönlichkeit und Sicherheitsregeln
- `aria-data/config/USER.md` — Stefans Präferenzen
- `aria-data/config/TOOLING.md` — VM-Tooling Liste
- `aria-data/skills/README.md` — Skill-Bauanleitung

### Bekannte Probleme
- Android Release-Build: `EMFILE: too many open files` — Fix: `CI=true` in `build.sh`
- JDK 21 inkompatibel mit AGP 8.1 — Fix: Automatischer Fallback auf JDK 17
- `react-native-screens` > 3.27.0 inkompatibel mit RN 0.73.4 — Fix: Version gepinnt
2026-03-11 23:13:28 +01:00
duffyduck 71f9ae221c added claude cli to proxy 2026-03-11 22:41:26 +01:00
duffyduck dd12a49aaf change claude proxy name and added ws support in adroid app 2026-03-11 22:35:26 +01:00
duffyduck e951fc712f TLS Fallback (Bridge → RVS)
Audio-Rendering fuer App (Piper TTS via RVS)
Chat-Persistenz (AsyncStorage, 500 Nachrichten)
2026-03-10 18:40:03 +01:00
557 changed files with 21072 additions and 12810 deletions
+3
View File
@@ -9,6 +9,9 @@ ARIA_AUTH_TOKEN=change-me-to-a-long-random-string
RVS_HOST=rvs.example.de
RVS_PORT=443
RVS_TLS=true
# Bei TLS-Fehler automatisch auf ws:// (ohne TLS) fallback?
# true = Fallback erlaubt, false = nur mit TLS verbinden
RVS_TLS_FALLBACK=true
RVS_TOKEN=
# Gitea (for release.sh — Kennwort wird interaktiv abgefragt)
+1
View File
@@ -11,6 +11,7 @@
!.env.*.example
aria-data/config/*.env
!aria-data/config/*.env.example
!aria-data/config/openclaw.env
# ── ARIAs Gedächtnis (nur per tar gesichert) ────
aria-data/brain/
Binary file not shown.
Binary file not shown.
+119
View File
@@ -4,6 +4,94 @@ Alle Änderungen am Projekt. Format: [Keep a Changelog](https://keepachangelog.c
---
## [0.0.0.5] — 2026-03-13
### Hinzugefügt
**Diagnostic — Pipeline-Tab**
- Neuer "Pipeline"-Tab im Log-Bereich — zeigt den kompletten Nachrichtenfluss wenn eine Chat-Nachricht über die Diagnostic-UI gesendet wird
- Tracking aller Schritte: Senden → Gateway ACK → Streaming Deltas → Finale Antwort (oder Fehler)
- Zeitmessung: Jeder Schritt zeigt Elapsed-Time seit Pipeline-Start
- Farbcodierung: Blau (Schritte), Grün (Erfolg), Rot (Fehler)
- 60s Timeout — markiert Pipeline als fehlgeschlagen wenn keine Antwort kommt
- Funktioniert für Gateway-direkt und RVS-Nachrichten
### Behoben
**OpenClaw Gateway Event-Format — ARIA antwortet jetzt**
- OpenClaw sendet `event: "agent"` (Streaming-Deltas in `payload.data.delta`) und `event: "chat"` mit `payload.state: "delta"|"final"|"error"`**nicht** `chat:delta`/`chat:final`/`chat:error` wie angenommen
- Antworttext steckt in `payload.message.content[0].text` (Array von Content-Blöcken, nicht flacher String) — `text.slice is not a function` Fehler behoben
- `ackReactionScope` von `"group-mentions"` auf `"all"` geändert — Agent reagierte nur auf @mentions, nicht auf direkte Nachrichten
- Diagnostic Server und Bridge auf neues Event-Format umgestellt
- Legacy-Event-Namen (`chat:delta`, `chat:final`, `chat:error`) als Fallback beibehalten
### Geändert
**OpenClaw Config — Custom Provider Format**
- `openclaw.json` nutzt `models.providers` (Object, nicht Array) mit `api: "openai-completions"`
- Model-Einträge brauchen sowohl `id` als auch `name` Feld
- `aria-setup.sh` schreibt korrekte Config mit Heredoc-Pattern (`'"'"'INNEREOF'"'"'`)
- `DEFAULT_MODEL=proxy/claude-sonnet-4` — mit Provider-Prefix für Custom Provider
- `OPENAI_BASE_URL` und `OPENAI_API_KEY` entfernt — OpenClaw ignoriert diese Env-Vars, nutzt nur `models.providers` Config
---
## [0.0.0.4] — 2026-03-11 / 2026-03-12
### Hinzugefügt
**Diagnostic Container — Selbstcheck-UI**
- Neuer Container `aria-diagnostic` mit Web-UI auf Port 3001
- Status-Karten: OpenClaw Gateway, RVS, Claude Proxy — jeweils mit Dot-Indicator
- Claude Proxy Test: Prüft Erreichbarkeit (`/v1/models`) und sendet Test-Prompt an Claude — zeigt verfügbare Modelle als Tags + `DEFAULT_MODEL` Hinweis für docker-compose.yml
- Auth-Check: "Auth prüfen" Button durchsucht alle bekannten Credential-Pfade im Proxy-Container (`/root/.config/claude/`, `/root/.claude/`, `/root/.claude/auth/`) rekursiv — zeigt gefundene Dateien und deren Inhalt
- Claude Login via UI: "Login starten" Button öffnet interaktives Terminal (xterm.js) in einem Modal-Overlay — führt `claude login` im Proxy-Container aus, volle TUI-Unterstützung (kein ANSI-Stripping mehr nötig)
- xterm.js Terminal: Bidirektionaler Stream über Docker Exec API mit `Tty: true` + HTTP Upgrade auf Raw-TCP-Socket — echtes interaktives Terminal im Browser
- UTF-8 Fix: Eingehende Daten werden als `Uint8Array` an xterm.write() übergeben (statt `atob()` → Latin-1 String, der Multi-Byte UTF-8 zerstört), ausgehende Daten über `TextEncoder` UTF-8-safe kodiert
- Credentials manuell einfügen: "Credentials einfügen" Button — JSON von einem eingeloggten Rechner kopieren und direkt in den Container schreiben (schreibt in beide mögliche Pfade: `.config/claude/` und `.claude/`)
- Docker Exec API: Generische `dockerExec()` (nicht-interaktiv, multiplexed stream) + `attachTerminal()` (interaktiv, Tty, raw TCP socket) für Befehle in laufenden Containern (via Docker Socket)
- Chat-Test: Nachrichten direkt über Gateway oder via RVS senden
- Tabbed Logs: Separate Tabs für Alle, Gateway, RVS, Proxy, Server — mit Zähler pro Tab
- Autoscroll-Pause: Automatisch wenn hochgescrollt, "Nach unten" Button zum Fortsetzen
- TLS Fallback für RVS-Verbindung (wie Bridge und App)
### Geändert
**Bridge → aria-core: OpenClaw Gateway Protokoll**
- Bridge nutzt jetzt das echte OpenClaw Gateway WebSocket-Protokoll (Port 18789 statt 8080)
- Vollständiger Handshake: `connect.challenge``connect` Request (mit Auth-Token) → `hello-ok`
- Nachrichten über `chat.send` Method mit `message` und `idempotencyKey`
- Antworten über `chat:final` Events (statt custom JSON)
- Streaming-Support vorbereitet (`chat:delta` Events werden empfangen)
- Fehlerbehandlung für `chat:error` Events — werden an die App weitergeleitet
- Client-ID: `gateway-client` / Mode: `backend` (OpenClaw akzeptiert nur bestimmte Werte)
**Docker-Compose Überarbeitung**
- Bridge + Diagnostic nutzen `network_mode: "service:aria"` — teilen Netzwerk mit aria-core, kein separates Netz nötig
- `ANTHROPIC_API_KEY` + `ANTHROPIC_BASE_URL` entfernt — OpenClaw rief damit die echte Anthropic API direkt an (401 `invalid x-api-key`), statt den Proxy zu nutzen. Nur noch `OPENAI_*` Vars aktiv
- `DEFAULT_MODEL=openai/claude-sonnet-4-6` — mit `openai/` Prefix, damit OpenClaw den OpenAI-Provider und somit den Proxy nutzt
- `openclaw.env` erstellt — Volume-Mount schlug fehl weil die Datei nicht existierte (Docker erstellte stattdessen ein leeres Verzeichnis)
- `OPENCLAW_GATEWAY_TOKEN` statt `AUTH_TOKEN` — korrekter Env-Var-Name
- `ARIA_AUTH_TOKEN` an Bridge und Diagnostic durchgereicht
- Port 3001 auf aria-Service gemappt (für Diagnostic Web-UI)
- Proxy Claude-Config Volume `:ro``:rw` — Login via Diagnostic-UI braucht Schreibzugriff
**OpenClaw Config-Persistenz**
- Named Docker Volume `openclaw-config` für `/home/node/.openclaw` — OpenClaw-Konfiguration (Model, Auth, Sessions) überlebt Container-Neustarts
- `aria-setup.sh` — Einmaliges Setup-Skript: wartet auf aria-core, setzt Model auf `openai/claude-sonnet-4-6`, startet Container neu
### Behoben
- Handshake fehlgeschlagen `[object Object]` — Fehlermeldung wurde nicht korrekt stringifiziert
- `client.id` und `client.mode` im Connect-Request — OpenClaw akzeptiert nur vordefinierte Werte (`cli`, `gateway-client`, `webchat` etc.)
- `chat.send` nutzt `message` statt `text` als Parameter — OpenClaw Schema-Validierung
- **Claude Proxy bindet auf 0.0.0.0** — `claude-max-api-proxy` bindet hardcoded auf `127.0.0.1`, nicht erreichbar im Docker-Netz. Fix: `standalone.js` wird beim Start gepatcht, liest jetzt `HOST` Env-Var (Upstream-Bug: `startServer()` unterstützt `host`, aber CLI übergibt es nicht)
- **Claude Proxy Crash bei Chat-Completion** — `normalizeModelName()` in `cli-to-openai.js` crasht wenn `model` undefined ist (`TypeError: Cannot read properties of undefined`). Fix: Null-Guard-Patch mit Fallback auf `claude-sonnet-4`
- **OpenClaw 401 `invalid x-api-key`** — OpenClaw rief mit `ANTHROPIC_BASE_URL` + `ANTHROPIC_API_KEY=not-needed` die echte Anthropic API an, nicht den Proxy. Fix: Anthropic-Vars entfernt, nur OpenAI-Provider aktiv (`OPENAI_BASE_URL=http://proxy:3456/v1`). Proxy unterstützt nur `/v1/chat/completions` (OpenAI-Format), nicht `/v1/messages` (Anthropic-Format)
- **App Echo-Bug** — Chat-Nachrichten von RVS wurden ohne Sender-Prüfung als ARIA-Nachricht angezeigt. Bei Ghost-Clients (Doppel-Connections nach Reconnect) erschien die eigene Nachricht nochmals. Fix: `message.payload.sender` wird geprüft, Nachrichten von `user` und `diagnostic` werden ignoriert
---
## [0.0.0.3] — 2026-03-09
### Geändert
@@ -50,6 +138,8 @@ Alle Änderungen am Projekt. Format: [Keep a Changelog](https://keepachangelog.c
**Docker & Infrastruktur**
- OpenClaw Image fix: `openclaw/openclaw:latest``ghcr.io/openclaw/openclaw:latest`
- Proxy fix: Binary heißt `claude-max-api`, braucht `@anthropic-ai/claude-code` als Peer-Dependency
- Proxy Binary-Name fix: `claude-max-api-proxy``claude-max-api` (npm-Paket heißt anders als die Binary)
- `libportaudio2` in Bridge Dockerfile hinzugefügt — `sounddevice` braucht PortAudio
- `aria-data/config/aria.env.example` hinzugefügt — Voice Bridge Konfigurationsvorlage
@@ -57,6 +147,35 @@ Alle Änderungen am Projekt. Format: [Keep a Changelog](https://keepachangelog.c
- `WakeWordDetector` umgebaut — sucht Custom-Modell `/voices/wake_aria.onnx`, Fallback auf eingebautes `hey_jarvis`
- Alter Code crashte: `wakeword_models=["aria"]` erwartet Dateipfad, kein Keyword
**TLS Fallback (Bridge → RVS)**
- Bridge versucht zuerst `wss://` (TLS), bei `ssl.SSLError` automatisch Fallback auf `ws://`
- Konfigurierbar über `RVS_TLS_FALLBACK=true` in `.env`
- Loggt deutlich wenn TLS gewollt aber nicht verfügbar ist
**Audio-Rendering für App (Piper TTS via RVS)**
- Bridge rendert Piper TTS → WAV → base64, sendet Text UND Audio gleichzeitig über RVS
- App spielt Audio ab und zeigt Text parallel — Modus entscheidet ob Sprache oder nur Text
- Voice Engine initialisiert IMMER (auch ohne Soundkarte in der VM)
- STT/Wake-Word nur wenn Audio-Hardware vorhanden — graceful degradation
- Neue Dependency: `react-native-fs` (base64 → temp WAV → Sound abspielen)
**Chat-Persistenz (Android App)**
- Chat-Verlauf wird in AsyncStorage gespeichert (letzte 500 Nachrichten)
- Beim App-Start automatisch geladen — Konversation bleibt erhalten
- Linearer 1:1 Chat, keine Threads
**TLS Fallback + Verbindungslog (Android App)**
- App versucht zuerst `wss://`, bei Fehler automatisch Fallback auf `ws://`
- `network_security_config.xml` hinzugefuegt — Android 9+ blockiert sonst `ws://` (Cleartext)
- Verbindungslog im Settings-Tab — zeigt jeden Verbindungsversuch, Fehler, Fallback (scrollbar, max 200px)
- Gespeicherte Config wird beim Start in die Einstellungsfelder geladen
- Fix: TLS-Fallback erzeugte Doppel-Verbindungen (onerror + onclose beide reconnected)
**RVS — Ghost-Client Fix**
- Heartbeat-Intervall 30s → 15s, Cleanup 60s → 30s — tote Clients werden schneller entfernt
- `heartbeat` als erlaubter Nachrichtentyp hinzugefuegt — App-Heartbeats halten Verbindung lebendig
- App-seitiger JSON-Heartbeat zaehlt als Lebenszeichen (zusaetzlich zu WebSocket Ping/Pong)
**Neues Script: `get-voices.sh`**
- Lädt Piper Stimmen (Ramona + Thorsten) von HuggingFace herunter
- Neuer Installationsschritt in README
-11
View File
@@ -1,11 +0,0 @@
[Interface]
Address = 10.252.1.21/32
PrivateKey = 2JmAeJQ1wL+nfaAVp32RiEsPFcaoXVtZh/p7pqHGCl4=
MTU = 1450
[Peer]
PublicKey = IHBroF1ChESXWQQ+2RC4DmrNoHQl54Hc/xhH+iYLTBA=
PresharedKey = A1i59KCEjvwtx9J03pkcqDdGP7Jhr4PcbA5Um32iMoY=
AllowedIPs = 192.168.0.0/24
Endpoint = stb-er.selfhost.eu:51820
PersistentKeepalive = 15
Binary file not shown.
+457 -702
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
@@ -1,2 +1,2 @@
#Mon Mar 09 00:29:19 CET 2026
#Sun Mar 29 11:32:18 CEST 2026
gradle.version=8.3
Binary file not shown.
@@ -27,6 +27,14 @@ import com.imagepicker.ImagePickerPackage;
import com.zoontek.rnpermissions.RNPermissionsPackage;
// react-native-camera-kit
import com.rncamerakit.RNCameraKitPackage;
// @react-native-async-storage/async-storage
import com.reactnativecommunity.asyncstorage.AsyncStoragePackage;
// react-native-fs
import com.rnfs.RNFSPackage;
// react-native-audio-recorder-player
import com.dooboolab.audiorecorderplayer.RNAudioRecorderPlayerPackage;
// react-native-live-audio-stream
import com.imxiqi.rnliveaudiostream.RNLiveAudioStreamPackage;
public class PackageList {
private Application application;
@@ -79,7 +87,11 @@ public class PackageList {
new GeolocationPackage(),
new ImagePickerPackage(),
new RNPermissionsPackage(),
new RNCameraKitPackage()
new RNCameraKitPackage(),
new AsyncStoragePackage(),
new RNFSPackage(),
new RNAudioRecorderPlayerPackage(),
new RNLiveAudioStreamPackage()
));
}
}
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More