Funk-lab/stt/client/stt
ALI YESILKAYA 2658f92c2f
feat(stt): HUD avancé (phase 4) — design Claude Design câblé au backend (#17)
* feat(stt): HUD avancé — design Claude Design câblé au backend

Remplace le HUD minimal (cercle CSS) par le design Claude Design : avatar
portrait réactif (anneau + ping d'écoute + spinner de réflexion), transcript
à bulles (tag modèle), indicateur de connexion + reconnexion auto, et un
drawer Réglages.

- HUD (stt/hud/index.html) : HTML/CSS/JS sans dépendance externe, DEMO=false
  branché sur le websocket existant (états idle/listening/thinking/speaking,
  user/assistant/error). Portraits chargés depuis hud/avatars/ (repli « あ »
  si absent — voir avatars/README.md).
- Backend (ui/app.py) : le HUD renvoie {"type":"settings",...} ; le serveur
  applique à chaud reset / mode cerveau (modèle LiteLLM) / mot de réveil via
  _apply_settings (best-effort, non bloquant).
- engine/cli : tag du modèle courant ajouté aux réponses (events assistant).
- Docs : hud/README + avatars/README + admin/ia/stt.md (phase 4 ) + config.

Phase 4 de la roadmap STT. Reste : test sur poste + portraits réels.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Qjq5jHiqNepnobJpHYpCa

* fix(stt): HUD servi sans cache navigateur (anti ancienne version)

Le HUD est un dashboard live servi en statique : sans en-tête anti-cache, le
navigateur garde l'ancien index.html après mise à jour (« je vois encore la
version bleue »). Ajoute Cache-Control: no-store + Pragma: no-cache via un
handler dédié, et silence le log HTTP par requête.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Qjq5jHiqNepnobJpHYpCa

* chore(stt): bump client 0.1.0 → 0.2.0 (HUD avancé)

La version inchangée faisait que pipx/uv réutilisait l'ancien build en cache
lors d'un réinstall (HUD bleu persistant malgré le nouveau code). Le bump force
une résolution propre vers la nouvelle version (HUD design Claude Design).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Qjq5jHiqNepnobJpHYpCa

* fix(stt): cache-bust de l'URL HUD en kiosk + bump 0.2.1

Ouvre le HUD avec ?v=<timestamp> (URL unique par lancement) pour que le
navigateur ne puisse jamais servir une version cachée de l'ancien HUD.
Complète Cache-Control: no-store côté serveur.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Qjq5jHiqNepnobJpHYpCa

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-18 22:03:39 +02:00
..
hud feat(stt): HUD avancé (phase 4) — design Claude Design câblé au backend (#17) 2026-06-18 22:03:39 +02:00
memory feat(stt): assistant vocal Jarvis — client pipx + STT-server in-cluster (#4) 2026-06-17 12:08:58 +02:00
ui feat(stt): HUD avancé (phase 4) — design Claude Design câblé au backend (#17) 2026-06-18 22:03:39 +02:00
voice feat(stt): HUD avancé (phase 4) — design Claude Design câblé au backend (#17) 2026-06-18 22:03:39 +02:00
__init__.py feat(stt): assistant vocal Jarvis — client pipx + STT-server in-cluster (#4) 2026-06-17 12:08:58 +02:00
api.py feat(stt): mémoire court-terme de session côté serveur (5a) (#8) 2026-06-17 16:15:57 +02:00
cli.py feat(stt): HUD avancé (phase 4) — design Claude Design câblé au backend (#17) 2026-06-18 22:03:39 +02:00
config.py feat(stt): HUD avancé (phase 4) — design Claude Design câblé au backend (#17) 2026-06-18 22:03:39 +02:00
README.md feat(stt): assistant vocal Jarvis — client pipx + STT-server in-cluster (#4) 2026-06-17 12:08:58 +02:00

stt/stt — package backend

Cœur Python de la commande stt. Réutilise le moteur vocal de tools/hermes-voice.py.

stt/
├── cli.py        # entrypoint `stt` (--setup, --mode, --no-tts)           ✅ phase 1
├── config.py     # défauts embarqués + chargement ~/.config/stt/stt.toml  ✅ phase 1
├── voice/        # wake word + VAD, STT faster-whisper, TTS Piper         ✅ phase 1
├── brain/        # routeur 3 modes hermes/local/claude + auto-détect LAN  ✅ phase 2
├── server/       # HTTP statique (HUD) + websocket (états → HUD)          ✅ phase 1
└── memory/       # tier local SQLite ✅ ; Qdrant s01 + sync GitHub        ⏳ phase 4

États exposés au HUD (via websocket)

idle (veille) → listening (écoute) → thinking (réflexion cerveau) → speaking (TTS) → idle. Le HUD anime le visualiseur selon l'état et affiche transcript utilisateur + réponse.

Point de départ

Le module voice/ part de tools/hermes-voice.py (déjà fonctionnel : wake word « Ok Hermès », faster-whisper, Piper, webrtcvad). À refactorer en classe + callbacks d'état pour le websocket, puis brancher brain/ (routeur) à la place de l'appel direct actuel.