feat: mode écoute seule pour les server audio users (Master par groupe)

Un participant serveur peut être configuré sans publier de micro —
il reçoit le mix du groupe et le sort sur un canal physique.
- ServerAudioUser: flag publish (défaut true), sendAudio no-op si false
- AudioBridgeManager: canPublish LiveKit selon flag, input_channel null si écoute
- AudioBridge: passe publish à ServerAudioUser, log adapté
- Electron UI: checkbox "Écoute seule" dans add/edit, badges 🎤/👂 dans table
- main.js IPC: persist publish + input_channel null en écoute
This commit is contained in:
2026-07-03 17:13:58 +02:00
parent 06cb6a7dd1
commit b0f7d294d8
6 changed files with 114 additions and 23 deletions
+5 -1
View File
@@ -309,6 +309,7 @@ export class AudioBridge extends EventEmitter {
groupId: userConfig.groupId,
inputChannel: userConfig.inputChannel,
outputChannel: userConfig.outputChannel,
publish: userConfig.publish !== false,
liveKitUrl: this.options.liveKitUrl,
token: userConfig.token,
sampleRate: this.options.sampleRate,
@@ -338,7 +339,10 @@ export class AudioBridge extends EventEmitter {
await user.start();
this.serverAudioUsers.set(userConfig.name, user);
console.log(`✓ Server audio user "${userConfig.name}" démarré (entrée canal ${userConfig.inputChannel} → sortie canal ${userConfig.outputChannel}, room: ${userConfig.groupId})`);
const modeStr = userConfig.publish !== false
? `canal ${userConfig.inputChannel} → sortie canal ${userConfig.outputChannel ?? 'aucune'}`
: `écoute seule → sortie canal ${userConfig.outputChannel ?? 'aucune'}`;
console.log(`✓ Server audio user "${userConfig.name}" démarré (${modeStr}, room: ${userConfig.groupId})`);
}
console.log(`${this.serverAudioUsers.size} server audio user(s) initialisés`);