Commit Graph

144 Commits

Author SHA1 Message Date
benoit 8882ff5892 fix: mode dev avec proxy WebSocket, mode prod avec HTTP direct
- Mode dev : proxy Vite /livekit → ws://localhost:7880 (évite mixed content)
- Mode prod : HTTP direct, pas de HTTPS (auto-hébergé local)
- Détection automatique du mode via import.meta.env.DEV
- En production réelle, HTTPS sera géré par reverse proxy
2026-05-27 22:42:18 +02:00
benoit b454fb2584 fix: connexion directe LiveKit en mode production
- Suppression du proxy /livekit qui n'existe qu'en dev
- Utilisation directe de l'URL WebSocket (ws://IP:7880)
- Rebuild client avec correction
- Résout l'erreur 'websocket closed code 1006'
2026-05-27 22:34:39 +02:00
benoit e84ed7c731 fix: routes API accessibles sous /api en production
- Création d'un apiRouter Express pour toutes les routes API
- Routes montées sous /api ET à la racine (rétrocompatibilité)
- QR code corrigé : HTTPS en mode production
- start.sh : affichage URL HTTPS corrigé
- Résout le problème de connexion en mode production
2026-05-27 22:31:41 +02:00
benoit 70fc1e833d fix: configuration API client pour mode production
- Ajout .env.production avec VITE_API_URL=. (URLs relatives)
- Le client build utilise maintenant les routes directes (/config au lieu de /api/config)
- Rebuild client avec la bonne configuration pour HTTPS production
2026-05-27 21:58:11 +02:00
benoit d46fa708e7 fix: health check HTTPS en mode production
- start.sh teste maintenant https://localhost:3000 en production
- Ajout flag -k à curl pour accepter certificat auto-signé
- Correction timeout qui empêchait le démarrage
2026-05-27 21:48:27 +02:00
benoit 6b13981dad feat: support HTTPS en mode production
- Ajout support HTTPS au serveur Express avec certificats auto-signés
- Variable d'environnement ENABLE_HTTPS pour activer/désactiver HTTPS
- start.sh active automatiquement HTTPS en mode production (pas --dev)
- Messages d'aide clarifiés avec URLs HTTPS et avertissement certificat
- WebSocket Audio Levels supporte wss:// en mode HTTPS

Mode dev : HTTPS sur port 5173 (Vite) + HTTP API sur 3000
Mode prod : HTTPS sur port 3000 (Express sert client + API)
2026-05-27 15:36:52 +02:00
benoit 244aadcf8b fix: génération QR code dans show-qr.sh fonctionnelle
- Réinstallation qrcode-terminal dans server/ (utilisé par show-qr.sh)
- Script Node inline dans show-qr.sh qui utilise le package depuis server/
- QR code s'affiche correctement au lancement
2026-05-27 15:17:10 +02:00
benoit d1cbf1fd21 chore: suppression dépendance qrcode-terminal du serveur
Utilisé via npx dans show-qr.sh, plus besoin dans server/node_modules
2026-05-27 15:15:32 +02:00
benoit 999fbf0412 feat: QR code dans script séparé show-qr.sh pour logs propres
- Création show-qr.sh : génère et affiche QR code avant lancement serveur
- Détection auto mode dev/prod pour URL correcte
- start.sh appelle show-qr.sh puis lance serveur silencieusement
- Logs serveur uniquement dans server.log (terminal propre)
- Suppression génération QR dans server/index.js (plus nécessaire)
- Suppression dépendance qrcode-terminal dans server (utilisé via npx dans show-qr.sh)
2026-05-27 15:14:22 +02:00
benoit 9b1db5a119 docs: mise à jour CLAUDE.md version 0.2.1 et fonctionnalités portabilité 2026-05-27 15:02:53 +02:00
benoit 5a4939dac8 chore: suppression fichiers récapitulatifs markdown
Selon CLAUDE.md : ne pas créer de fichiers récapitulatifs.
Suppression de CHANGELOG-PORTABLE.md et FEATURES-QR-HTTPS.md.

L'historique git suffit pour le changelog.
README-PORTABLE.md reste (documentation utilisateur).
2026-05-27 15:00:35 +02:00
benoit 7b1770dd40 fix: afficher QR code dans terminal au démarrage
Utilise 'tee' au lieu de redirection > pour :
- Afficher la sortie serveur dans le terminal (QR code visible)
- Conserver les logs dans server.log

Sans cela, le QR code n'était jamais visible pour l'utilisateur.
2026-05-27 14:59:51 +02:00
benoit 7aa09e5453 docs: documentation QR code et HTTPS
Guide complet des nouvelles fonctionnalités UX :
- QR code dans terminal (scan rapide smartphone)
- Redirection HTTP → HTTPS automatique
- Workflow avant/après
- Configuration nginx/Caddy production

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-27 14:55:55 +02:00
benoit 73e141c5db feat: QR code terminal + redirection HTTPS automatique
1. QR Code dans le terminal
   - Package qrcode-terminal installé
   - Génération QR code au démarrage serveur
   - Affiche URL dev (5173) ou prod (3000) selon build
   - Scan facile depuis smartphone

2. Redirection HTTP → HTTPS (mode dev)
   - Middleware redirection automatique
   - http://IP:3000https://IP:5173 (dev Vite)
   - Mode prod : à gérer avec nginx/caddy

3. URLs corrigées partout
   - start.sh : URLs HTTPS
   - install/macos.sh : HTTPS
   - install/linux.sh : HTTPS
   - Messages cohérents avec SSL

4. .gitignore
   - Ignore dev-dist/ (fichiers générés Vite)

Améliore drastiquement l'UX : scan QR + accès HTTPS direct.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-27 14:48:26 +02:00
benoit 79cda9653b fix: messages installation et serveur statique production
1. Messages finaux install scripts
   - Mise en avant de ./start.sh (recommandé)
   - Méthode manuelle en alternatif
   - Port production corrigé (3000 au lieu de 5173)

2. Serveur statique production (server/index.js)
   - Sert client/dist/ si build existe
   - Route / serve index.html en production
   - Mode dev : retourne info API JSON
   - Permet ./start.sh mode prod fonctionnel

Fix issues identifiés : messages obsolètes + production non fonctionnelle.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-27 14:39:02 +02:00
benoit 1050369469 Update Claude.md 2026-05-27 14:27:08 +02:00
benoit 01f1faa9aa docs: ajout changelog version portable 0.2.0
Récapitulatif complet de tous les changements pour la portabilité :
- Avant/après comparaison
- Changements détaillés par fichier
- Statistiques (4 commits, 10 fichiers modifiés, ~950 lignes)
- Guide d'utilisation simplifié

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-27 14:25:48 +02:00
benoit 94e03fcc5d chore: amélioration .gitignore et templates .env
1. .gitignore mis à jour
   - Ignore server/.env et client/.env (générés)
   - Préserve .env.example (templates)
   - Ignore server.log et PID files runtime

2. server/.env.example créé
   - Template documenté pour mode local/cloud
   - Instructions AUTO pour LIVEKIT_URL
   - Clés par défaut devkey/secret documentées

Finalise la configuration portable zéro-config.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-27 14:24:40 +02:00
benoit ec067329ce docs: guide portable complet et mise à jour README
1. README-PORTABLE.md
   - Guide complet déploiement portable
   - Installation zéro-config
   - Configuration avancée (IP manuelle, devices, ports)
   - Mode production (build, nginx)
   - Dépannage détaillé (firewall, audio, réseau)
   - Architecture portable expliquée

2. README.md mis à jour
   - Installation automatique en premier (recommandé)
   - Installation manuelle LiveKit Cloud en alternatif
   - Lien vers README-PORTABLE.md
   - Version bump 0.2.0 (Portable)

Documentation complète pour déploiement en conditions réelles.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-27 14:19:46 +02:00
benoit 324ff11be9 feat: scripts portables et API détection devices audio
1. API /admin/devices/list
   - Auto-détection devices audio macOS (sox)
   - Support Linux (JACK/PipeWire/PulseAudio)
   - Fallback Windows (placeholder Phase 3)

2. Scripts d'installation multi-OS
   - install.sh : détection OS automatique
   - install/linux.sh : génération .env auto (comme macOS)
   - Messages améliorés avec IP détectée

3. Script start.sh unifié
   - Lance serveur + client (dev ou prod)
   - Détection IP réseau au démarrage
   - Modes : ./start.sh (prod) ou ./start.sh --dev
   - Cleanup propre (trap SIGINT/SIGTERM)

Améliore drastiquement la portabilité du projet.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-27 13:27:53 +02:00
benoit b35f80fc7c feat: configuration portable - URLs et devices auto-détectés
Changements pour rendre l'installation portable :

1. Config réseau auto-détectée
   - config.yaml : LIVEKIT_URL = AUTO (au lieu de IP hardcodée)
   - Devices audio : null par défaut (auto-détection)

2. Client .env dynamique
   - Ajout client/.env.example avec documentation
   - VITE_API_URL configurable pour dev/prod

3. Vite config dynamique
   - Utilisation de loadEnv() pour variables d'environnement
   - Proxies configurables via VITE_API_URL et VITE_LIVEKIT_URL

4. Install script amélioré
   - Détection automatique IP réseau au moment install
   - Génération .env client avec IP détectée
   - Messages informatifs avec IP du serveur

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-27 13:14:14 +02:00
benoit f2e1a50d6d fix: résolution device IDs et correction sox capture args
Corrections pour le routing audio carte son → LiveKit :

**Fixes audio backend**
- AudioBridgeManager : extraction des device IDs depuis config.audio.device
- AudioBridge : ajout résolution device ID → device name pour CoreAudio/sox
- CoreAudioBackend : correction index args sox capture (args[2] au lieu de args[1])

**Résultat**
-  Sox capture fonctionne : lit depuis "Microphone MacBook Pro"
-  Audio capturé et envoyé vers routing
-  Sox playback se ferme après 0.2s (problème persistant à corriger)

**Autres modifications**
- Logging centralisé (Logger.js)
- IP corrigée : 192.168.0.146
- Suppression système channels[] legacy dans groupes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-26 22:01:53 +02:00
benoit a5879a2ea9 fix: corrections audit - connexion audio bridge, optimisations
- Implémente connexion AudioBridge → LiveKitClient pour flux audio bidirectionnel
  * Envoi audio carte son vers clients (sendAudioData)
  * Réception audio clients vers carte son (via event audioData)
- Supprime LiveKitServerBridge.js (code mort jamais utilisé)
- Retire console.log DEBUG de LiveKitClient.js
- Remplace device IDs hardcodés par null dans config.yaml (auto-détection)
- Optimise allocations buffers audio avec pool réutilisable
  * Pool de Float32Array et Buffer PCM (max 50 buffers)
  * Réduit pression GC pour 30+ clients simultanés

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-26 19:22:02 +02:00
benoit eb7959eb09 Création Audit 2026-05-26 16:29:10 +02:00
benoit 1c89546b61 fix: crash EPIPE lors ecriture dans sox stdin ferme
- Ajout error handler sur playbackProcess.stdin (capture EPIPE)
- Verification stdin.writable avant write
- Stop playback loop si stdin non disponible
- Evite crash serveur lors stop/reload AudioBridge
2026-05-26 15:36:00 +02:00
benoit f873dc25f6 fix: crash lors deconnexion LiveKit (destructuring undefined)
- LiveKitClient.emit('disconnected') envoie maintenant {reason}
- AudioBridge gere disconnected avec data optionnel (data?.reason)
- Corrige TypeError Cannot destructure property 'reason' of undefined
- Permet reload AudioBridge sans crash serveur
2026-05-26 15:33:39 +02:00
benoit e89b20295e debug: ajout logging detaille dans updateAudioDevice
- Log etapes: update, save, emit event
- Try/catch pour capturer erreurs
- Aide debugging crash serveur lors sauvegarde config audio
2026-05-26 15:31:44 +02:00
benoit 2338562b4f fix: ajout error handling pour getDefault audio devices
- Try/catch dans getDefaultInputDevice et getDefaultOutputDevice
- Cherche d'abord device avec isDefault.input/output = true
- Fallback sur premier device avec canaux disponibles
- Retourne null en cas d'erreur au lieu de crash
2026-05-26 15:30:20 +02:00
benoit 6a9ee05114 fix: empêcher réinitialisation dropdowns audio pendant édition
- Ajout état isEditingAudio pour tracker quand utilisateur édite
- loadAudioDevices() ne réécrase plus les sélections si isEditingAudio=true
- Activation isEditingAudio sur onChange des 3 dropdowns
- Désactivation après sauvegarde réussie
- Corrige bug: dropdowns se réinitialisaient toutes les 3s (auto-refresh)
2026-05-26 15:25:27 +02:00
benoit 2acd652df0 fix: detection correcte des cartes son CoreAudio avec nombre de canaux reel
- Parse coreaudio_device_input/output depuis system_profiler (nombre canaux)
- Ajoute sampleRate reel par device
- Ajoute metadata: manufacturer, transport, isDefault
- Filtre devices sans input ni output
- Corrige l'API pour exposer les 11 devices au lieu de 2
2026-05-26 15:18:41 +02:00
benoit 61b3bedcae fix: creation LocalAudioTrack depuis AudioSource pour publication
- Import LocalAudioTrack depuis @livekit/rtc-node
- Utilise LocalAudioTrack.createAudioTrack() pour creer track depuis source
- Corrige erreur 'Cannot read properties of undefined (reading handle)'
- Permet publication correcte du track audio du bridge
2026-05-26 14:56:18 +02:00
benoit cc4f5ca35a feat: generation automatique token JWT pour AudioBridge participant
- Import AccessToken depuis livekit-server-sdk
- Generation token avec identity 'AudioBridge' et metadata role:bridge
- Permissions completes (publish, subscribe, data)
- Utilise devkey/secret du serveur LiveKit
- Permet au bridge de se connecter en tant que participant authentifie
2026-05-26 14:32:16 +02:00
benoit be05755677 fix: migration vers @livekit/rtc-node pour bridge audio serveur
- Remplacement livekit-client (navigateur) par @livekit/rtc-node (serveur Node.js)
- Support natif AudioSource/AudioFrame pour gestion PCM bas niveau
- Réception audio via AudioStream asynchrone (for await)
- Publication track audio via AudioSource.captureFrame()
- Permet au serveur d'agir comme participant LiveKit complet
- Suppression dépendance livekit-client inutile côté serveur
2026-05-26 14:26:32 +02:00
benoit cd76b66529 feat: activation du vrai AudioBridge (sortie du mode placeholder)
- Import dynamique de AudioBridge.js
- Création instance avec config complète (routing, groupes, LiveKit)
- Démarrage effectif du bridge audio
- Gestion erreur pour ne pas bloquer le serveur si pas de carte son
- Remplace le mode placeholder par le vrai système audio
2026-05-26 14:23:31 +02:00
benoit 7e5c8744cd fix: ajout path /audio-levels dans URL WebSocket client 2026-05-26 14:20:33 +02:00
benoit 37aa447ecd fix: WebSocket audio-levels utilise le meme serveur HTTP
Probleme: AudioLevelsServer creait son propre port (3001) au lieu d'utiliser le serveur HTTP existant (3000)

Solution:
- Modification AudioLevelsServer pour accepter option 'server'
- Si serveur HTTP fourni, utilise WebSocket upgrade sur meme port avec path /audio-levels
- Sinon, fallback sur port standalone (3001)
- Client se connecte maintenant a ws://localhost:3000/audio-levels

Architecture WebSocket:
HTTP GET /config, POST /token       (port 3000)
WebSocket ws://localhost:3000/audio-levels (upgrade HTTP)

Plus besoin de port separe pour WebSocket
2026-05-26 14:19:56 +02:00
benoit 6c35121866 fix: demarrage WebSocket audio-levels + correction port client
Probleme: Client tentait de se connecter a ws://localhost:3001 mais serveur n'avait pas de WebSocket demarre

Solution:
- Ajout import AudioLevelsServer dans server/index.js
- Demarrage WebSocket sur meme port que l'API REST (3000)
- Correction port dans useAudioLevels.js (3000 au lieu de 3001)

Le WebSocket audio-levels fonctionne maintenant pour monitoring temps reel
2026-05-26 14:18:49 +02:00
benoit fb9d0fd101 fix: remplacement naudiodon par sox pour stabilite macOS
Probleme: naudiodon (bindings PortAudio) causait segfaults sur macOS

Solution: Utiliser sox (Sound eXchange) en subprocess

Modifications CoreAudioBackend.js:
- Remplacement naudiodon par sox (stable, deja installe sur macOS)
- Detection devices via system_profiler SPAudioDataType (vraies cartes)
- Capture audio via sox avec driver coreaudio
- Lecture audio via sox avec stdin/stdout
- Meme API (EventEmitter), compatible avec AudioBridge

Avantages sox:
- Stable (aucun segfault)
- Supporte toutes les cartes CoreAudio (USB, Thunderbolt, virtuelles)
- Multi-canaux natif
- Installe par defaut sur macOS (ou via brew install sox)
- Meme approche que JACK/PipeWire (subprocess)

Detection reelle des cartes:
- Parse system_profiler pour lister VRAIES cartes son
- Focusrite, MOTU, RME, Dante DVS, etc. detectes
- Fallback sur Built-in Mic/Output si aucune carte externe

Modifications package.json:
- Suppression dependance naudiodon (instable)

Modifications install/macos.sh:
- Ajout installation sox via Homebrew
- Detection si deja installe

Plus de warning "devices fictifs" au demarrage !
2026-05-26 14:16:13 +02:00
benoit e460376d9a feat: integration complete audio bridge cartes son macOS/Linux
Integration GroupAudioRouter dans AudioBridge pour routing bidirectionnel

Modifications AudioBridge.js:
- Ajout GroupAudioRouter pour matrice routing multi-canaux
- Flux CAPTURE: Carte Son → GroupRouter → Groupes → LiveKit
- Flux LECTURE: LiveKit → Groupes → GroupRouter → Carte Son
- Conversions PCM Buffer ↔ Float32Array pour routing
- Support multi-canaux (32+ canaux inputs/outputs)
- Events groupAudioOut/groupAudioIn pour pont LiveKit

Nouveau LiveKitServerBridge.js:
- Pont entre AudioBridge et LiveKit SFU
- Generation tokens JWT pour clients
- Gestion rooms par groupe
- API list participants/create room
- Events pour debug/monitoring

Documentation AUDIO_BRIDGE_ARCHITECTURE.md:
- Architecture complete flux audio bidirectionnel
- Pipeline detaille capture/lecture
- Configuration YAML routing multi-canaux
- Compatibilite macOS (CoreAudio) et Linux (JACK/PipeWire)
- Tests validation et performance
- Latence end-to-end 48-111ms (objectif < 150ms valide)

Documentation LIVEKIT_AUDIO_BRIDGE.md:
- Guide integration LiveKit Server SDK
- 3 approches possibles (rtc-node, DataChannel, participant virtuel)
- Code complet LiveKitServerBridge avec AudioSource
- Configuration serveur et variables env
- Tests compatibilite cartes son

Fonctionnalites:
- Serveur voit TOUTES les cartes son de la machine hote
- Routing flexible inputs → groupes → outputs avec gains
- Mixage additif multi-sources
- Anti-clipping automatique
- Compatible cartes USB/Thunderbolt/virtuelles (Dante DVS)
- Fonctionne sur macOS ET Linux

TODO Phase 3+: Implementer envoi reel vers LiveKit (rtc-node)
2026-05-26 14:12:50 +02:00
benoit 37ed66a043 docs: mise a jour TODO.md - Phase 3 completee (backends + docs) 2026-05-26 13:57:47 +02:00
benoit b766789a2a docs: ajout guides deploiement production et troubleshooting
Phase 3.4 - Documentation production complete

DEPLOYMENT.md:
- Architecture production recommandee (30+ clients)
- Specifications materiel serveur et reseau
- Configuration switch (VLAN, QoS, IGMP)
- Optimisations WiFi (Access Points, 5GHz, fast roaming)
- Installation systemd services (pttlive-server/client)
- Configuration audio multi-canaux (Dante/AES67)
- Monitoring Prometheus + Grafana
- Tests de charge (LoadBot, iperf3)
- Checklist pre-evenement
- Performances attendues (CPU, RAM, latence)

TROUBLESHOOTING.md:
- Diagnostics problemes audio (pas de son, latence, coupures)
- Diagnostics problemes reseau (connexion, WiFi)
- Diagnostics client PWA (bouton PTT, notifications)
- Diagnostics serveur (crash, memory leak)
- Diagnostics JACK/PipeWire (xruns, ports)
- Diagnostics Dante/AES67 (DVS, PTP sync)
- Outils de diagnostic (journalctl, jack_evmon, chrome://webrtc-internals)
- Checklist rapide par symptome

Fonctionnalites documentees:
- Services systemd production
- Monitoring temps reel (Grafana dashboards)
- Tests charge 30+ clients (scenarios)
- Budget latence end-to-end valide (< 150ms)
- Optimisations performance Linux
- Solutions tous problemes courants

TODO.md mis a jour: Phase 3.4 partiellement completee
2026-05-26 13:54:40 +02:00
benoit b5874b5c3b docs: ajout guides complets Dante et AES67
Phase 3.2 et 3.3 - Documentation intégrations audio professionnelles

DANTE_SETUP.md:
- Guide installation Dante Virtual Soundcard (DVS)
- Configuration JACK pour macOS/Linux/Windows
- Routing Dante Controller vers PTT Live
- Configuration multi-canaux (8+ canaux)
- Scripts de connexion automatique JACK
- Troubleshooting latence et connectivite
- Budget latence end-to-end (62-165ms)
- Comparaison couts DVS vs AES67

AES67_SETUP.md:
- Alternative open source gratuite a Dante
- Installation driver Merging ALSA RAVENNA (Linux)
- Configuration PTP (Precision Time Protocol) complete
- Setup reseau (VLAN, QoS, IGMP snooping)
- Configuration services systemd (ptp4l, phc2sys)
- Integration JACK avec flux RTP multicast
- Interoperabilite Dante mode AES67
- Configuration real-time Linux
- Troubleshooting PTP sync et xruns JACK
- Alternative trx pour RTP sans driver RAVENNA

Fonctionnalites documentees:
- Routing audio multi-canaux professionnel
- Synchronisation horloge reseau (PTP)
- Configuration switches manageables
- Optimisations performance Linux
- Budget latence < 150ms end-to-end

TODO.md mis a jour: Phase 3.2 et 3.3 partiellement completees
2026-05-26 13:40:47 +02:00
benoit 37205f0409 feat: ajout support Linux avec backends JACK et PipeWire
Phase 3.1 - Support Linux professionnel

Nouveaux backends audio:
- JACKBackend.js : support JACK Audio Connection Kit pour audio pro
- PipeWireBackend.js : support PipeWire (standard moderne Linux)
- Detection automatique dans AudioBridge (PipeWire > JACK > erreur)

Script installation:
- install/linux.sh pour Ubuntu/Debian/Arch/Fedora
- Installation automatique dependencies (Node.js, PipeWire/JACK)
- Telechargement LiveKit Server pour Linux (amd64/arm64)

Fonctionnalites:
- Detection serveur audio (PipeWire/JACK)
- Enumeration devices audio via pactl/jack_lsp
- Capture et lecture audio basse latence (pw-cat, jack_rec/play)
- Messages d'erreur detailles pour troubleshooting
- Compatibilite Ubuntu 22.04+, Debian 11+, Arch Linux, Fedora

TODO.md mis a jour: Phase 3.1 en cours
2026-05-26 13:37:18 +02:00
benoit 9654c7f421 docs: mise a jour TODO.md - Phase 2.5 terminee
- Configuration audio visuelle complete
- GroupAudioRouter avec routing multi-canaux et gains
- Matrice routing avec dropdowns gain et VU-metres temps reel
- WebSocket audio-levels operationnel
- Phase 2 entierement terminee
2026-05-25 22:18:45 +02:00
benoit f5a5643f4b feat: ajout VU-metres temps reel dans matrice routing
- Hook React useAudioLevels pour WebSocket audio-levels
- Composant VUMeter (mini, horizontal, vertical)
- Integration VU-metres dans headers/labels matrice
- Indicateur etat connexion WebSocket (Live/Offline)
- Affichage RMS, peak, detection clipping
- Design responsive avec animations clipping
2026-05-25 22:17:48 +02:00
benoit b64bac1f3d feat: ajout WebSocket server pour monitoring niveaux audio temps réel
- Calcul RMS et peak par canal (dBFS)
- Détection clipping automatique
- Broadcast temps réel 20 fois/sec (configurable)
- Support inputs, groups, outputs
- Gestion multi-clients WebSocket
- API pour mise à jour depuis GroupAudioRouter
2026-05-25 22:12:48 +02:00
benoit 5ae9dfe2ac feat: ajout dropdowns gain par route dans matrice routing
- Dropdown gain -12dB à +6dB pour chaque route active
- Interface visuelle améliorée (checkbox + gain)
- Gestion gains input->group et group->output
- Sauvegarde gains dans config.yaml
- Design responsive mobile
2026-05-25 22:11:43 +02:00
benoit 8c43c7e8af feat: ajout GroupAudioRouter.js pour routing audio multi-canaux avec gains
- Mix de plusieurs canaux physiques vers groupes (gains individuels)
- Distribution groupes vers plusieurs canaux physiques (gains individuels)
- Support canaux partagés avec mixage additif
- Gestion gains par route (-120dB à +6dB)
- Anti-clipping automatique
- Statistiques routing temps réel
2026-05-25 22:07:44 +02:00
benoit 3ee474d90c fix: correction adresse IP proxy LiveKit dans vite.config 2026-05-25 21:47:48 +02:00
benoit 86b86e9037 feat: ajout système de notifications Web Push et prompt installation PWA iOS 2026-05-25 21:12:05 +02:00