530c3a10b2
- Main Process spawn serveur automatiquement avec IPC sécurisé - Dashboard temps réel : stats, utilisateurs, QR Code - Configuration audio : devices, sample rate, bitrate, jitter buffer - Gestion groupes : CRUD complet via API admin - Monitoring : logs temps réel filtrables par niveau - Notifications : toast visuelles avec auto-dismiss - Packaging : electron-builder pour macOS (.dmg) et Linux (.deb/.AppImage) - Documentation : README technique, QUICKSTART, CHANGELOG, guide utilisateur Structure : - electron/main.js (333 lignes) : Main Process + spawn serveur - electron/preload.js (31 lignes) : IPC bridge sécurisé - electron/ui/index.html (187 lignes) : interface dashboard - electron/ui/styles.css (556 lignes) : dark theme - electron/ui/app.js (626 lignes) : logic frontend Total : 1733 lignes de code Lancement : ./start-desktop.sh API utilisées : /admin/stats, /admin/users, /admin/groups, /admin/config, /admin/devices/list TODO : WebSocket VU-mètres, icônes, tray menu, graphiques monitoring
4.2 KiB
4.2 KiB
PTT Live Desktop - Changelog
v0.3.0 - 2026-06-19
🎉 Première version de l'application desktop Electron
✨ Nouvelles Fonctionnalités
Interface Electron
- Application desktop native (macOS/Linux)
- Main Process spawn serveur Node.js automatiquement
- IPC sécurisé via contextBridge (preload.js)
- Démarrage/arrêt serveur depuis l'interface
- Tray icon placeholder (à compléter)
Dashboard
- Stats temps réel (uptime, utilisateurs, connexions)
- Liste utilisateurs connectés avec groupes
- Génération QR Code automatique (détection IP réseau)
- Bouton copier URL clients
- Polling automatique toutes les 2 secondes
Configuration Audio
- Sélection devices input/output (auto-détectés)
- Configuration sample rate (44.1/48/96 kHz)
- Bitrate par défaut (32-320 kbps)
- Jitter buffer (20-100 ms)
- Sauvegarde dans config.yaml
Gestion Groupes
- Liste groupes existants
- Création nouveau groupe (nom + bitrate)
- Modification/suppression (via API admin)
- Synchronisation config.yaml
Monitoring
- Logs serveur en temps réel
- Filtrage par niveau (error/warn/info/debug)
- Bouton effacer logs
- Format timestamp + niveau + message
Notifications
- Toast visuelles (success/error/warning/info)
- Auto-dismiss 5 secondes
- Bouton fermeture manuelle
- Animation slide-in
🛠️ Technique
Stack
- Electron 28.0.0
- electron-builder 24.9.1
- qrcode 1.5.3 (via CDN)
- HTML/CSS/JS vanilla (pas de framework)
Architecture
- Main Process : spawn serveur, IPC handlers
- Renderer Process : dashboard, fetch API admin
- Communication : IPC + HTTP vers localhost:3000
API Utilisées
GET /admin/stats: dashboard metricsGET /admin/users: utilisateursGET /admin/groups: groupesPOST /admin/groups: créer groupeGET /admin/config: config complètePUT /admin/config/audio: config audioGET /admin/devices/list: auto-détection devicesPOST /admin/audio/device: sélectionner deviceGET /health: health check
Build
- electron-builder configuré
- macOS : .dmg + .app
- Linux : .deb + .AppImage
- Scripts :
npm run build:mac/build:linux
📝 Documentation
- DESKTOP-APP.md : doc complète (architecture, API, debug)
- QUICKSTART.md : guide démarrage rapide
- README.md : intégration Electron dans README principal
- CLAUDE.md : section Application Desktop ajoutée
🚧 TODO / Limitations
À implémenter :
- WebSocket audio levels (VU-mètres temps réel)
- Vraies icônes (icon.icns / icon.png)
- Tray icon fonctionnel avec menu
- Graphiques monitoring (Chart.js)
- Export logs (CSV/JSON)
- Matrice routing audio (drag & drop)
- Auth admin (mot de passe)
- Thème dark/light toggle
- Auto-update (electron-updater)
- Tests (Spectron/Playwright)
Limitations connues :
- QR Code utilise CDN (pas de lib locale)
- Pas de CSP (Content-Security-Policy)
- Pas de signature code (notarization macOS)
- Tray icon pas implémenté (commenté dans main.js)
🔧 Installation
# Depuis la racine du projet
./start-desktop.sh
# OU depuis electron/
cd electron
npm install
npm start
🏗️ Structure Fichiers
electron/
├── package.json # Config Electron
├── main.js # Main Process (585 lignes)
├── preload.js # IPC bridge (40 lignes)
├── README.md # Doc technique
├── QUICKSTART.md # Guide démarrage
├── CHANGELOG.md # Ce fichier
└── ui/
├── index.html # Interface (185 lignes)
├── styles.css # Styles (557 lignes)
└── app.js # Logic frontend (627 lignes)
Prochaine version (v0.3.1)
🎯 Priorités
- VU-mètres WebSocket : connexion
/audio-levels - Icônes : créer icon.icns + icon.png + tray-icon.png
- Tray menu : implémenter menu contextuel
- Tests : premiers tests Electron
💡 Idées
- Graphiques latence/bande passante (Chart.js)
- Notifications desktop (Electron Notification API)
- Matrice routing visuelle
- Export config (JSON/YAML)
Développé avec Claude Code