fix: démarrage manuel et gestion état serveur

Corrections :
- Serveur NE démarre PLUS automatiquement au lancement
- Utilisateur doit cliquer "Démarrer" (contrôle explicite)
- Logs stderr LiveKit traités comme INFO (pas ERROR)
- Détection démarrage dans stderr aussi ("starting LiveKit server")
- Frontend : charge données seulement si serveur actif
- Polling démarre/arrête selon état serveur
- État initial : bouton Démarrer enabled, Arrêter disabled

Expérience :
1. Lancer app → Interface visible, serveur arrêté
2. Cliquer "Démarrer" → Serveur démarre
3. Dashboard se met à jour automatiquement
4. Cliquer "Arrêter" → Serveur s'arrête, polling stop

Plus de démarrage automatique surprise !
This commit is contained in:
2026-06-19 13:29:11 +02:00
parent f0cf363408
commit ad214f644b
2 changed files with 41 additions and 7 deletions
+26 -5
View File
@@ -152,14 +152,34 @@ async function startServer() {
serverProcess.stderr.on('data', (data) => {
const output = data.toString();
console.error('[Serveur Error]', output);
// LiveKit envoie INFO/WARN dans stderr (comportement normal Go)
// Ne les traiter comme erreurs que s'ils contiennent vraiment "ERROR"
const isError = output.includes('ERROR') || output.includes('Error:');
console.log(isError ? '[Serveur Error]' : '[Serveur]', output);
if (mainWindow) {
mainWindow.webContents.send('server:log', {
level: 'error',
level: isError ? 'error' : 'info',
message: output.trim()
});
}
// Détecter démarrage LiveKit dans stderr
if (output.includes('starting LiveKit server') || output.includes('Serveur prêt')) {
if (!serverStarted) {
serverStarted = true;
console.log('✅ Serveur démarré (détecté via stderr)');
if (mainWindow) {
mainWindow.webContents.send('server:status', { running: true });
}
createTray();
resolve({ success: true, url: SERVER_URL });
}
}
});
serverProcess.on('error', (error) => {
@@ -361,9 +381,10 @@ app.whenReady().then(async () => {
console.log('✅ Certificats présents\n');
}
// Démarrer le serveur automatiquement
console.log('🔄 Démarrage automatique du serveur...');
await startServer();
// NE PAS démarrer automatiquement
// L'utilisateur cliquera sur "Démarrer" dans l'interface
console.log('✅ Application prête');
console.log('💡 Cliquez sur "Démarrer" pour lancer le serveur\n');
});
app.on('window-all-closed', () => {
+15 -2
View File
@@ -26,8 +26,12 @@ document.addEventListener('DOMContentLoaded', async () => {
// Vérifier le statut initial du serveur
await checkServerStatus();
// Charger les données initiales
loadInitialData();
// Charger les données initiales SEULEMENT si serveur actif
if (serverRunning) {
loadInitialData();
} else {
console.log('⏸️ Serveur arrêté, en attente de démarrage...');
}
});
// ========== Navigation ==========
@@ -159,11 +163,20 @@ function updateServerStatus(running) {
statusText.textContent = 'Actif';
btnStart.disabled = true;
btnStop.disabled = false;
// Démarrer le polling
startStatsPolling();
// Charger les données initiales
loadInitialData();
} else {
indicator.textContent = '⚪';
statusText.textContent = 'Arrêté';
btnStart.disabled = false;
btnStop.disabled = true;
// Arrêter le polling
stopStatsPolling();
}
}