Files
PTT-Live/electron/CHANGELOG.md
benoit 530c3a10b2 feat: application desktop Electron avec interface graphique complète
- 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
2026-06-19 11:04:29 +02:00

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 metrics
  • GET /admin/users : utilisateurs
  • GET /admin/groups : groupes
  • POST /admin/groups : créer groupe
  • GET /admin/config : config complète
  • PUT /admin/config/audio : config audio
  • GET /admin/devices/list : auto-détection devices
  • POST /admin/audio/device : sélectionner device
  • GET /health : health check

Build

  • electron-builder configuré
  • macOS : .dmg + .app
  • Linux : .deb + .AppImage
  • Scripts : npm run build:mac / build:linux

📝 Documentation

🚧 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

  1. VU-mètres WebSocket : connexion /audio-levels
  2. Icônes : créer icon.icns + icon.png + tray-icon.png
  3. Tray menu : implémenter menu contextuel
  4. 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