e6edf1a8bc
Vue Review (liste assets, approuver/refuser + confirm, refresh, 401→logout). Backend sert le SPA same-origin (@fastify/static + fallback) si CHLOVA_WEB_ROOT. Dockerfile multi-stage build web+API (contexte racine), image embarque /app/web. Compose contexte .., image chlova/backend:0.2.0. 65 tests, 0 vuln, compose OK. Palier de risque : privilégié (surface exposée complète) — non déployée ; auth + CHLOVA_PHASE requis pour activer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
web — UI CHLOVA
Client web/PWA du backend CHLOVA. Phase 4. Style dark HUD (voir
../docs/ui-design.md). React 19 + Vite 8 + Tailwind 4 + react-router 7.
Dev
npm install
npm run dev # http://localhost:5173 ; proxy /api → backend :8080
npm run build # → web/dist (servi same-origin par le backend en prod)
npm run typecheck
Le backend doit tourner avec l'auth configurée (CHLOVA_ADMIN_*, voir
orchestrator → npm run provision-auth).
Structure
| Fichier | Rôle |
|---|---|
src/api.ts |
Client API (login, chat, review, state). |
src/auth.tsx |
Contexte JWT (localStorage) + login/logout. |
src/App.tsx |
Router + shell (garde : pas de token → Login). |
src/pages/Login.tsx |
Login fort (mdp + TOTP). |
src/pages/Chat.tsx |
Conversation agent (v0.23.0). |
src/pages/Review.tsx |
Need-review : approuver/refuser (v0.24.0). |
Périmètre v1
Login → Chat → Review. Voix + app RN : phases ultérieures (API commune réutilisée).