diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 806600235d..e144885bbd 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1653,21 +1653,27 @@ // Check if there are pending tasks (more reliable than lastMessage.done) if (taskIds !== null && taskIds.length > 0) { - // Tasks pending - queue the message instead of blocking - const _files = JSON.parse(JSON.stringify(files)); - messageQueue = [ - ...messageQueue, - { - id: uuidv4(), - prompt: userPrompt, - files: _files - } - ]; - // Clear input - messageInput?.setText(''); - prompt = ''; - files = []; - return; + if ($settings?.enableMessageQueue ?? true) { + // Queue the message + const _files = JSON.parse(JSON.stringify(files)); + messageQueue = [ + ...messageQueue, + { + id: uuidv4(), + prompt: userPrompt, + files: _files + } + ]; + // Clear input + messageInput?.setText(''); + prompt = ''; + files = []; + return; + } else { + // Interrupt: stop current generation and proceed + await stopResponse(); + await tick(); + } } if (history?.currentId) { diff --git a/src/lib/components/chat/Settings/Interface.svelte b/src/lib/components/chat/Settings/Interface.svelte index 14b84aab58..5af1ae8c3d 100644 --- a/src/lib/components/chat/Settings/Interface.svelte +++ b/src/lib/components/chat/Settings/Interface.svelte @@ -58,6 +58,7 @@ let insertFollowUpPrompt = false; let regenerateMenu = true; + let enableMessageQueue = true; let landingPageMode = ''; let chatBubble = true; @@ -224,6 +225,7 @@ insertFollowUpPrompt = $settings?.insertFollowUpPrompt ?? false; regenerateMenu = $settings?.regenerateMenu ?? true; + enableMessageQueue = $settings?.enableMessageQueue ?? true; largeTextAsFile = $settings?.largeTextAsFile ?? false; copyFormatted = $settings?.copyFormatted ?? false; @@ -584,6 +586,25 @@
{$i18n.t('Chat')}
+
+
+
+ {$i18n.t('Enable Message Queue')} +
+ +
+ { + saveSettings({ enableMessageQueue }); + }} + /> +
+
+
+