feat: QR-Code Onboarding + TTS-Audio-Cache im Filesystem
QR-Code Onboarding - Diagnostic: GET /api/onboarding gibt RVS-Credentials zurueck - Einstellungen-UI: neue Sektion mit QR-Code (qrcode-generator via CDN) - Format kompatibel mit bestehendem QRScanner.parseQRData (host/port/tls/token) - App-SettingsScreen hatte QR-Scanner bereits — funktioniert out of the box - Warnhinweis zu Token im Klartext TTS-Audio-Cache - Bridge: jede ARIA-Chat-Nachricht bekommt eine messageId (UUID) Audio-Payload wird mit messageId verknuepft (Piper-Pfade) - ChatScreen: messageId + audioPath in ChatMessage Interface - audioService.cacheAudio(): speichert Base64 in DocumentDirectory/tts_cache/<id>.wav - audioService.playFromPath(): spielt aus Cache ohne Regenerierung - Play-Button: wenn audioPath gesetzt → aus Cache, sonst tts_request - cleanupOldTTSCache(): alte unreferenzierte WAVs (>30 Tage) weg - Persistiert via AsyncStorage — ueberlebt App-Restart Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1169,6 +1169,15 @@ const server = http.createServer((req, res) => {
|
||||
} else if (req.url === "/api/session") {
|
||||
res.writeHead(200, { "Content-Type": "application/json" });
|
||||
res.end(JSON.stringify({ sessionKey: activeSessionKey }));
|
||||
} else if (req.url === "/api/onboarding") {
|
||||
// RVS-Credentials fuer QR-Code App-Onboarding
|
||||
res.writeHead(200, { "Content-Type": "application/json" });
|
||||
res.end(JSON.stringify({
|
||||
rvsHost: RVS_HOST,
|
||||
rvsPort: RVS_PORT,
|
||||
rvsTLS: RVS_TLS === "true" || RVS_TLS === true,
|
||||
rvsToken: RVS_TOKEN,
|
||||
}));
|
||||
} else if (req.url === "/api/cancel" && req.method === "POST") {
|
||||
log("warn", "server", "HTTP /api/cancel — Cancel-Request (von Bridge)");
|
||||
pendingMessageTime = 0;
|
||||
|
||||
Reference in New Issue
Block a user