feat: add message queue for sequential run processing (#501)

Allow sending multiple messages while a run is active. Messages are
queued on the server and processed sequentially after each run
completes. Each completed assistant message triggers speech playback
independently, and the UI shows queue status with a badge indicator.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
ekko
2026-05-07 10:34:58 +08:00
committed by GitHub
parent 5df8734495
commit 424125843f
17 changed files with 964 additions and 181 deletions
+2
View File
@@ -117,6 +117,8 @@ export default {
emptyState: 'Starten Sie eine Konversation mit Hermes Agent',
inputPlaceholder: 'Nachricht eingeben... (Enter zum Senden, Shift+Enter fur neue Zeile)',
attachFiles: 'Dateien anhangen',
messageQueue: 'Nachrichtenwarteschlange',
removeQueuedMessage: 'Nachricht aus Warteschlange entfernen',
stop: 'Stopp',
send: 'Senden',
contextUsed: 'Kontext verwendet:',
+2
View File
@@ -128,6 +128,8 @@ export default {
inputPlaceholder: 'Type a message... (Enter to send, Shift+Enter for new line)',
attachFiles: 'Attach files',
autoPlaySpeech: 'Auto-play voice',
messageQueue: 'Message queue',
removeQueuedMessage: 'Remove queued message',
stop: 'Stop',
start: 'Start',
stopGateway: 'Stop Gateway',
+2
View File
@@ -117,6 +117,8 @@ export default {
emptyState: 'Inicia una conversacion con Hermes Agent',
inputPlaceholder: 'Escribe un mensaje... (Enter para enviar, Shift+Enter para nueva linea)',
attachFiles: 'Adjuntar archivos',
messageQueue: 'Cola de mensajes',
removeQueuedMessage: 'Quitar mensaje de la cola',
stop: 'Detener',
send: 'Enviar',
contextUsed: 'Contexto utilizado:',
+2
View File
@@ -117,6 +117,8 @@ export default {
emptyState: 'Demarrer une conversation avec Hermes Agent',
inputPlaceholder: 'Tapez un message... (Entree pour envoyer, Shift+Entree pour un saut de ligne)',
attachFiles: 'Joindre des fichiers',
messageQueue: 'File de messages',
removeQueuedMessage: 'Retirer le message de la file',
stop: 'Arreter',
send: 'Envoyer',
contextUsed: 'Contexte utilise :',
+2
View File
@@ -117,6 +117,8 @@ export default {
emptyState: 'Hermes Agent と会話を開始しましょう',
inputPlaceholder: 'メッセージを入力... (Enter で送信、Shift+Enter で改行)',
attachFiles: 'ファイルを添付',
messageQueue: 'メッセージキュー',
removeQueuedMessage: 'キューのメッセージを削除',
stop: '停止',
send: '送信',
contextUsed: 'コンテキスト使用量:',
+2
View File
@@ -117,6 +117,8 @@ export default {
emptyState: 'Hermes Agent와 대화를 시작하세요',
inputPlaceholder: '메시지를 입력하세요... (Enter로 전송, Shift+Enter로 줄바꿈)',
attachFiles: '파일 첨부',
messageQueue: '메시지 대기열',
removeQueuedMessage: '대기열 메시지 제거',
stop: '중지',
send: '전송',
contextUsed: '사용된 컨텍스트:',
+2
View File
@@ -117,6 +117,8 @@ export default {
emptyState: 'Inicie uma conversa com o Hermes Agent',
inputPlaceholder: 'Digite uma mensagem... (Enter para enviar, Shift+Enter para nova linha)',
attachFiles: 'Anexar arquivos',
messageQueue: 'Fila de mensagens',
removeQueuedMessage: 'Remover mensagem da fila',
stop: 'Parar',
send: 'Enviar',
contextUsed: 'Contexto utilizado:',
+2
View File
@@ -128,6 +128,8 @@ export default {
inputPlaceholder: '输入消息... (Enter 发送,Shift+Enter 换行)',
attachFiles: '添加附件',
autoPlaySpeech: '自动播放语音',
messageQueue: '消息队列',
removeQueuedMessage: '移除队列消息',
stop: '停止',
start: '启动',
stopGateway: '停止网关',