From 2671247347fd62052dad443fa5ee797442e0b5ff Mon Sep 17 00:00:00 2001 From: legop3 Date: Sun, 25 Jan 2026 23:45:18 -0500 Subject: [PATCH] tts passthrough for all in queue --- server/src/services/chatService.js | 8 +++++++- server/src/services/turnService.js | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/server/src/services/chatService.js b/server/src/services/chatService.js index bb74ffb1..375bb8b3 100644 --- a/server/src/services/chatService.js +++ b/server/src/services/chatService.js @@ -243,7 +243,13 @@ function maybeSpeak(socket, message, ttsOptions) { const audio = record?.meta?.audio || {}; const ttsEnabled = Boolean(audio.ttsEnabled); if (!ttsEnabled) return; - if (!roverManager.canDrive(message.roverId, socket)) return; + const { isQueuedDriver } = require('./turnService'); + if ( + !roverManager.canDrive(message.roverId, socket) && + !isQueuedDriver(message.roverId, socket?.id) + ) { + return; + } try { issueCommand(message.roverId, { type: 'tts', diff --git a/server/src/services/turnService.js b/server/src/services/turnService.js index 8235669d..d5903c82 100644 --- a/server/src/services/turnService.js +++ b/server/src/services/turnService.js @@ -72,6 +72,13 @@ function canDrive(roverId, socket) { return activeDrivers.get(roverId) === socket.id; } +function isQueuedDriver(roverId, socketId) { + if (!socketId) return false; + const queue = driverQueues.get(roverId); + if (!queue) return false; + return queue.queue.includes(socketId); +} + function ensureQueue(roverId) { if (!driverQueues.has(roverId)) { driverQueues.set(roverId, { queue: [], current: null, timer: null }); @@ -312,6 +319,7 @@ module.exports = { driverRemoved, cleanupRover, canDrive, + isQueuedDriver, getActiveDrivers, turnEvents, getTurnQueues,