Si le micro actif reste muet 5 s, l'app bascule à chaud sur les autres
micros un par un jusqu'à en trouver un qui capte du son, puis le mémorise.
Le sélecteur permet aussi de changer de micro en cours d'enregistrement.
https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
- Sélecteur de micro intégré à l'interface (persisté, deviceId exact)
- Amplification serveur des segments trop faibles (mode mains-libres BT)
- Alerte visible si aucun son n'est capté pendant 5 s
- Niveau crête de chaque segment dans les logs
- Cache-Control: no-cache sur les fichiers statiques (fini le vieux JS en cache)
https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
- Page de connexion, session 7 jours par cookie HMAC signé (secret persisté)
- Protection de l'API (401) et du WebSocket (code 4401), / redirige vers /login
- Bouton de déconnexion, redirection automatique à l'expiration de session
- Identifiants configurables via LIVEFLOW_USER / LIVEFLOW_PASSWORD
https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
vLLM avec Qwen3-ASR peut répondre 400 quand 'language' est fourni. L'app
retente alors en détection automatique, et les erreurs ASR remontent
désormais avec le corps de la réponse pour faciliter le diagnostic.
Ajout du favicon (404 dans la console).
https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
Un conteneur de moins. Le HTTPS reste nécessaire pour l'accès micro
(getUserMedia) depuis un autre appareil : certificat auto-signé généré au
démarrage pour LIVEFLOW_HOST, servi par uvicorn.
https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe