diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index c917797283..be625d8ee6 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -1,7 +1,7 @@ import React, { forwardRef, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react" import { useEvent } from "react-use" import DynamicTextArea from "react-textarea-autosize" -import { VolumeX, Image, WandSparkles, SendHorizontal, MessageSquareX } from "lucide-react" +import { VolumeX, Image, WandSparkles, SendHorizontal, MessageSquareX, Clock } from "lucide-react" import { mentionRegex, mentionRegexGlobal, commandRegexGlobal, unescapeSpaces } from "@roo/context-mentions" import { WebviewMessage } from "@roo/WebviewMessage" @@ -21,7 +21,13 @@ import { } from "@src/utils/context-mentions" import { cn } from "@src/lib/utils" import { convertToMentionPath } from "@src/utils/path-mentions" -import { StandardTooltip } from "@src/components/ui" +import { + StandardTooltip, + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "@src/components/ui" import Thumbnails from "../common/Thumbnails" import { ModeSelector } from "./ModeSelector" @@ -1102,7 +1108,7 @@ export const ChatTextArea = forwardRef( -
+
{isEditMode && ( )} - - - + + + + + + + + {t("chat:sendMessage")} + + { + // Queue the message for after task completion + if (inputValue.trim() || selectedImages.length > 0) { + vscode.postMessage({ + type: "queueMessage", + text: inputValue, + images: selectedImages, + }) + setInputValue("") + setSelectedImages([]) + } + }}> + + {t("chat:scheduleForAfterTask")} + + +
{!inputValue && ( diff --git a/webview-ui/src/components/chat/QueuedMessages.tsx b/webview-ui/src/components/chat/QueuedMessages.tsx index 5bfb6fdb48..03dece9a91 100644 --- a/webview-ui/src/components/chat/QueuedMessages.tsx +++ b/webview-ui/src/components/chat/QueuedMessages.tsx @@ -41,7 +41,10 @@ export const QueuedMessages = ({ queue, onRemove, onUpdate }: QueuedMessagesProp return (
-
{t("queuedMessages.title")}
+
+ + {t("queuedMessages.scheduledTitle")} +
{queue.map((message, index) => { const editState = getEditState(message.id, message.text) diff --git a/webview-ui/src/i18n/locales/ca/chat.json b/webview-ui/src/i18n/locales/ca/chat.json index 1d20be0c40..24e4bc8ff1 100644 --- a/webview-ui/src/i18n/locales/ca/chat.json +++ b/webview-ui/src/i18n/locales/ca/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "Seleccioneu la configuració de l'API", "enhancePrompt": "Millora la sol·licitud amb context addicional", "addImages": "Afegeix imatges al missatge", - "sendMessage": "Envia el missatge", + "sendMessage": "Send message", "stopTts": "Atura la síntesi de veu", "typeMessage": "Escriu un missatge...", "typeTask": "Escriu la teva tasca aquí...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo vol executar una comanda slash:", "didRun": "Roo ha executat una comanda slash:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/de/chat.json b/webview-ui/src/i18n/locales/de/chat.json index 82f1c77fbf..41e0fb411d 100644 --- a/webview-ui/src/i18n/locales/de/chat.json +++ b/webview-ui/src/i18n/locales/de/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "API-Konfiguration auswählen", "enhancePrompt": "Prompt mit zusätzlichem Kontext verbessern", "addImages": "Bilder zur Nachricht hinzufügen", - "sendMessage": "Nachricht senden", + "sendMessage": "Send message", "stopTts": "Text-in-Sprache beenden", "typeMessage": "Nachricht eingeben...", "typeTask": "Gib deine Aufgabe hier ein...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo möchte einen Slash-Befehl ausführen:", "didRun": "Roo hat einen Slash-Befehl ausgeführt:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/en/chat.json b/webview-ui/src/i18n/locales/en/chat.json index 72eacc5c58..c57201c06d 100644 --- a/webview-ui/src/i18n/locales/en/chat.json +++ b/webview-ui/src/i18n/locales/en/chat.json @@ -128,6 +128,7 @@ "enhancePromptDescription": "The 'Enhance Prompt' button helps improve your prompt by providing additional context, clarification, or rephrasing. Try typing a prompt in here and clicking the button again to see how it works.", "addImages": "Add images to message", "sendMessage": "Send message", + "scheduleForAfterTask": "Schedule for after task completion", "stopTts": "Stop text-to-speech", "typeMessage": "Type a message...", "typeTask": "Type your task here...", @@ -387,6 +388,7 @@ }, "queuedMessages": { "title": "Queued Messages:", + "scheduledTitle": "Scheduled for after task completion", "clickToEdit": "Click to edit message" } } diff --git a/webview-ui/src/i18n/locales/es/chat.json b/webview-ui/src/i18n/locales/es/chat.json index e63731b095..dcd488cce7 100644 --- a/webview-ui/src/i18n/locales/es/chat.json +++ b/webview-ui/src/i18n/locales/es/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "Seleccionar configuración de API", "enhancePrompt": "Mejorar el mensaje con contexto adicional", "addImages": "Agregar imágenes al mensaje", - "sendMessage": "Enviar mensaje", + "sendMessage": "Send message", "stopTts": "Detener texto a voz", "typeMessage": "Escribe un mensaje...", "typeTask": "Escribe tu tarea aquí...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo quiere ejecutar un comando slash:", "didRun": "Roo ejecutó un comando slash:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/fr/chat.json b/webview-ui/src/i18n/locales/fr/chat.json index 2575489787..72b0f4fd49 100644 --- a/webview-ui/src/i18n/locales/fr/chat.json +++ b/webview-ui/src/i18n/locales/fr/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "Sélectionner la configuration de l'API", "enhancePrompt": "Améliorer la requête avec un contexte supplémentaire", "addImages": "Ajouter des images au message", - "sendMessage": "Envoyer le message", + "sendMessage": "Send message", "stopTts": "Arrêter la synthèse vocale", "typeMessage": "Écrivez un message...", "typeTask": "Écrivez votre tâche ici...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo veut exécuter une commande slash:", "didRun": "Roo a exécuté une commande slash:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/hi/chat.json b/webview-ui/src/i18n/locales/hi/chat.json index 28fc26fcaf..94cce7633d 100644 --- a/webview-ui/src/i18n/locales/hi/chat.json +++ b/webview-ui/src/i18n/locales/hi/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "एपीआई कॉन्फ़िगरेशन का चयन करें", "enhancePrompt": "अतिरिक्त संदर्भ के साथ प्रॉम्प्ट बढ़ाएँ", "addImages": "संदेश में चित्र जोड़ें", - "sendMessage": "संदेश भेजें", + "sendMessage": "Send message", "stopTts": "टेक्स्ट-टू-स्पीच बंद करें", "typeMessage": "एक संदेश लिखें...", "typeTask": "अपना कार्य यहां लिखें...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo एक स्लैश कमांड चलाना चाहता है:", "didRun": "Roo ने एक स्लैश कमांड चलाया:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/id/chat.json b/webview-ui/src/i18n/locales/id/chat.json index 0425a02b8f..fb4624b1dd 100644 --- a/webview-ui/src/i18n/locales/id/chat.json +++ b/webview-ui/src/i18n/locales/id/chat.json @@ -130,7 +130,7 @@ "noResults": "Tidak ada hasil yang ditemukan" }, "addImages": "Tambahkan gambar ke pesan", - "sendMessage": "Kirim pesan", + "sendMessage": "Send message", "stopTts": "Hentikan text-to-speech", "typeMessage": "Ketik pesan...", "typeTask": "Bangun, cari, tanya sesuatu", @@ -401,5 +401,7 @@ "slashCommand": { "wantsToRun": "Roo ingin menjalankan perintah slash:", "didRun": "Roo telah menjalankan perintah slash:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/it/chat.json b/webview-ui/src/i18n/locales/it/chat.json index 4dd1270e34..c28f8363c1 100644 --- a/webview-ui/src/i18n/locales/it/chat.json +++ b/webview-ui/src/i18n/locales/it/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "Seleziona la configurazione API", "enhancePrompt": "Migliora prompt con contesto aggiuntivo", "addImages": "Aggiungi immagini al messaggio", - "sendMessage": "Invia messaggio", + "sendMessage": "Send message", "stopTts": "Interrompi sintesi vocale", "typeMessage": "Scrivi un messaggio...", "typeTask": "Scrivi la tua attività qui...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo vuole eseguire un comando slash:", "didRun": "Roo ha eseguito un comando slash:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/ja/chat.json b/webview-ui/src/i18n/locales/ja/chat.json index 9a5d47fec8..c9af0acf53 100644 --- a/webview-ui/src/i18n/locales/ja/chat.json +++ b/webview-ui/src/i18n/locales/ja/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "API構成を選択", "enhancePrompt": "追加コンテキストでプロンプトを強化", "addImages": "メッセージに画像を追加", - "sendMessage": "メッセージを送信", + "sendMessage": "Send message", "stopTts": "テキスト読み上げを停止", "typeMessage": "メッセージを入力...", "typeTask": "ここにタスクを入力...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Rooはスラッシュコマンドを実行したい:", "didRun": "Rooはスラッシュコマンドを実行しました:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/ko/chat.json b/webview-ui/src/i18n/locales/ko/chat.json index aaf29243b7..a44d5f15ae 100644 --- a/webview-ui/src/i18n/locales/ko/chat.json +++ b/webview-ui/src/i18n/locales/ko/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "API 구성 선택", "enhancePrompt": "추가 컨텍스트로 프롬프트 향상", "addImages": "메시지에 이미지 추가", - "sendMessage": "메시지 보내기", + "sendMessage": "Send message", "stopTts": "텍스트 음성 변환 중지", "typeMessage": "메시지 입력...", "typeTask": "여기에 작업 입력...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo가 슬래시 명령어를 실행하려고 합니다:", "didRun": "Roo가 슬래시 명령어를 실행했습니다:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/nl/chat.json b/webview-ui/src/i18n/locales/nl/chat.json index c6d52fa92e..2388a82ed3 100644 --- a/webview-ui/src/i18n/locales/nl/chat.json +++ b/webview-ui/src/i18n/locales/nl/chat.json @@ -116,7 +116,7 @@ "noResults": "Geen resultaten gevonden" }, "addImages": "Afbeeldingen toevoegen aan bericht", - "sendMessage": "Bericht verzenden", + "sendMessage": "Send message", "stopTts": "Stop tekst-naar-spraak", "typeMessage": "Typ een bericht...", "typeTask": "Typ hier je taak...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo wil een slash commando uitvoeren:", "didRun": "Roo heeft een slash commando uitgevoerd:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/pl/chat.json b/webview-ui/src/i18n/locales/pl/chat.json index 2028cb705b..eb83020ddc 100644 --- a/webview-ui/src/i18n/locales/pl/chat.json +++ b/webview-ui/src/i18n/locales/pl/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "Wybierz konfigurację API", "enhancePrompt": "Ulepsz podpowiedź dodatkowym kontekstem", "addImages": "Dodaj obrazy do wiadomości", - "sendMessage": "Wyślij wiadomość", + "sendMessage": "Send message", "stopTts": "Zatrzymaj syntezę mowy", "typeMessage": "Wpisz wiadomość...", "typeTask": "Wpisz swoje zadanie tutaj...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo chce uruchomić komendę slash:", "didRun": "Roo uruchomił komendę slash:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/pt-BR/chat.json b/webview-ui/src/i18n/locales/pt-BR/chat.json index 6ee23ca627..155937c6e7 100644 --- a/webview-ui/src/i18n/locales/pt-BR/chat.json +++ b/webview-ui/src/i18n/locales/pt-BR/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "Selecionar configuração da API", "enhancePrompt": "Aprimorar prompt com contexto adicional", "addImages": "Adicionar imagens à mensagem", - "sendMessage": "Enviar mensagem", + "sendMessage": "Send message", "stopTts": "Parar conversão de texto em fala", "typeMessage": "Digite uma mensagem...", "typeTask": "Digite sua tarefa aqui...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo quer executar um comando slash:", "didRun": "Roo executou um comando slash:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/ru/chat.json b/webview-ui/src/i18n/locales/ru/chat.json index 6cafe6bac9..f6313f3b07 100644 --- a/webview-ui/src/i18n/locales/ru/chat.json +++ b/webview-ui/src/i18n/locales/ru/chat.json @@ -116,7 +116,7 @@ "noResults": "Ничего не найдено" }, "addImages": "Добавить изображения к сообщению", - "sendMessage": "Отправить сообщение", + "sendMessage": "Send message", "stopTts": "Остановить синтез речи", "typeMessage": "Введите сообщение...", "typeTask": "Введите вашу задачу здесь...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo хочет выполнить слеш-команду:", "didRun": "Roo выполнил слеш-команду:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/tr/chat.json b/webview-ui/src/i18n/locales/tr/chat.json index 867acfbc9f..26c99acee5 100644 --- a/webview-ui/src/i18n/locales/tr/chat.json +++ b/webview-ui/src/i18n/locales/tr/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "API yapılandırmasını seçin", "enhancePrompt": "Ek bağlamla istemi geliştir", "addImages": "Mesaja resim ekle", - "sendMessage": "Mesaj gönder", + "sendMessage": "Send message", "stopTts": "Metin okumayı durdur", "typeMessage": "Bir mesaj yazın...", "typeTask": "Görevinizi buraya yazın...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo bir slash komutu çalıştırmak istiyor:", "didRun": "Roo bir slash komutu çalıştırdı:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/vi/chat.json b/webview-ui/src/i18n/locales/vi/chat.json index ef8e951aac..610c068d83 100644 --- a/webview-ui/src/i18n/locales/vi/chat.json +++ b/webview-ui/src/i18n/locales/vi/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "Chọn cấu hình API", "enhancePrompt": "Nâng cao yêu cầu với ngữ cảnh bổ sung", "addImages": "Thêm hình ảnh vào tin nhắn", - "sendMessage": "Gửi tin nhắn", + "sendMessage": "Send message", "stopTts": "Dừng chuyển văn bản thành giọng nói", "typeMessage": "Nhập tin nhắn...", "typeTask": "Nhập nhiệm vụ của bạn tại đây...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo muốn chạy lệnh slash:", "didRun": "Roo đã chạy lệnh slash:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/zh-CN/chat.json b/webview-ui/src/i18n/locales/zh-CN/chat.json index 1e430200a1..633b21fd69 100644 --- a/webview-ui/src/i18n/locales/zh-CN/chat.json +++ b/webview-ui/src/i18n/locales/zh-CN/chat.json @@ -107,7 +107,7 @@ "selectApiConfig": "选择 API 配置", "enhancePrompt": "增强提示词", "addImages": "添加图片到消息", - "sendMessage": "发送消息", + "sendMessage": "Send message", "stopTts": "停止文本转语音", "typeMessage": "输入消息...", "typeTask": "在此处输入您的任务...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo 想要运行斜杠命令:", "didRun": "Roo 运行了斜杠命令:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" } diff --git a/webview-ui/src/i18n/locales/zh-TW/chat.json b/webview-ui/src/i18n/locales/zh-TW/chat.json index f5183d65a9..61b8764d7c 100644 --- a/webview-ui/src/i18n/locales/zh-TW/chat.json +++ b/webview-ui/src/i18n/locales/zh-TW/chat.json @@ -127,7 +127,7 @@ }, "enhancePromptDescription": "「強化提示詞」按鈕可透過提供額外內容、說明或改寫來協助改善您的提示詞。請試著在這裡輸入提示詞,然後再次點選按鈕,以了解其運作方式。", "addImages": "新增圖片到訊息中", - "sendMessage": "傳送訊息", + "sendMessage": "Send message", "stopTts": "停止文字轉語音", "typeMessage": "輸入訊息...", "typeTask": "在這裡輸入您的工作...", @@ -395,5 +395,7 @@ "slashCommand": { "wantsToRun": "Roo 想要執行斜線指令:", "didRun": "Roo 執行了斜線指令:" - } + }, + "scheduleForAfterTask": "Schedule for after task completion", + "scheduledTitle": "Scheduled for after task completion" }