Version 2.332.0Dernière entrée
- feat(dance): avatar 3D animé en rythme, branché sur la danse musicale V1 (2.331.0). Squelette automatique via UniRig (VAST-AI, SIGGRAPH'25, MIT) — la prédiction de squelette fonctionne sans flash-attention (import rendu optionnel dans le module de skinning UniRig, inutilisé ici) car les deux GPU du serveur sont Pascal (compute capability < 8.0, non supporté par flash-attn officiel, vérifié). Skinning fait via l'algorithme classique de Blender (poids automatiques par diffusion de chaleur), aucun ML : 28 os, hiérarchie anatomique correcte, textures d'origine conservées. Le mesh 3D (Stable Fast 3D) et le rig sont un asset statique (static/models/amelia_avatar.glb), pas régénérés à la volée.
- amelia_core/dance ne connaît rien à la 3D (aucune dépendance ajoutée côté backend) : static/js/dance-avatar.js anime les os par calcul procédural (fonctions du temps audio absolu, jamais d'accumulation frame-par-frame donc aucune dérive) — chaque mouvement du catalogue (headbang, arm_wave, bounce, spin...) a sa propre formule sur les bons os, avec la fréquence d'oscillation dérivée du BPM réel pour rester synchronisée à la musique. Les accents du plan de danse déclenchent des pulses ponctuels aux timestamps exacts.
- Three.js vendorisé localement dans static/js/vendor/ (pas de CDN externe : la CSP du projet est en script-src 'self' strict, jamais assoupli pour du JS tiers). 3 bugs CSP découverts et corrigés uniquement grâce à un vrai test Playwright bout-en-bout (upload → analyse → rendu 3D → lecture de pixels réels du canvas) : connect-src/media-src/img-src doivent inclure blob: (audio déposé + décodage de texture glTF), et la limite de corps de requête par défaut (64 Ko) doit être relevée spécifiquement pour /api/dance/analyze comme pour les autres endpoints média existants.
- Aucun de ces bugs n'était visible par les tests unitaires seuls — cf. §57 de toute mission : ne jamais se fier uniquement à des tests qui ne démarrent pas un vrai navigateur pour une fonctionnalité qui en dépend. Nouveau test tests/e2e/dance-avatar.spec.mjs. Suite complète (Python + Playwright) relancée sans régression ; 3 échecs Playwright pré-existants identifiés et confirmés indépendants de ce travail (comparaison directe avec/sans ces changements).