diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 66f7a4ef0e..9633dd11ef 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1242,6 +1242,7 @@ export class ClineProvider extends EventEmitter implements telemetrySetting, showRooIgnoredFiles, language, + showGreeting, maxReadFileLine, } = await this.getState() @@ -1323,6 +1324,7 @@ export class ClineProvider extends EventEmitter implements renderContext: this.renderContext, maxReadFileLine: maxReadFileLine ?? 500, settingsImportedAt: this.settingsImportedAt, + showGreeting: showGreeting ?? true, // Ensure showGreeting is included in the returned state } } @@ -1410,6 +1412,7 @@ export class ClineProvider extends EventEmitter implements telemetrySetting: stateValues.telemetrySetting || "unset", showRooIgnoredFiles: stateValues.showRooIgnoredFiles ?? true, maxReadFileLine: stateValues.maxReadFileLine ?? 500, + showGreeting: stateValues.showGreeting ?? true, // Ensure showGreeting is returned by getState } } diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index ac78088f4c..3f264d2a87 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -645,6 +645,11 @@ export const webviewMessageHandler = async (provider: ClineProvider, message: We await updateGlobalState("diffEnabled", diffEnabled) await provider.postStateToWebview() break + case "showGreeting": + const showGreeting = message.bool ?? true + await updateGlobalState("showGreeting", showGreeting) + await provider.postStateToWebview() + break case "enableCheckpoints": const enableCheckpoints = message.bool ?? true await updateGlobalState("enableCheckpoints", enableCheckpoints) diff --git a/src/exports/roo-code.d.ts b/src/exports/roo-code.d.ts index b337e81fa2..eb778c80ae 100644 --- a/src/exports/roo-code.d.ts +++ b/src/exports/roo-code.d.ts @@ -258,6 +258,7 @@ type GlobalSettings = { cachedChromeHostUrl?: string | undefined enableCheckpoints?: boolean | undefined checkpointStorage?: ("task" | "workspace") | undefined + showGreeting?: boolean | undefined ttsEnabled?: boolean | undefined ttsSpeed?: number | undefined soundEnabled?: boolean | undefined diff --git a/src/exports/types.ts b/src/exports/types.ts index 05a70d133b..3a53a2f9ff 100644 --- a/src/exports/types.ts +++ b/src/exports/types.ts @@ -261,6 +261,7 @@ type GlobalSettings = { cachedChromeHostUrl?: string | undefined enableCheckpoints?: boolean | undefined checkpointStorage?: ("task" | "workspace") | undefined + showGreeting?: boolean | undefined ttsEnabled?: boolean | undefined ttsSpeed?: number | undefined soundEnabled?: boolean | undefined diff --git a/src/schemas/index.ts b/src/schemas/index.ts index a73152773c..80b6bbe197 100644 --- a/src/schemas/index.ts +++ b/src/schemas/index.ts @@ -534,6 +534,8 @@ export const globalSettingsSchema = z.object({ enableCheckpoints: z.boolean().optional(), checkpointStorage: checkpointStoragesSchema.optional(), + showGreeting: z.boolean().optional(), + ttsEnabled: z.boolean().optional(), ttsSpeed: z.number().optional(), soundEnabled: z.boolean().optional(), @@ -610,6 +612,8 @@ const globalSettingsRecord: GlobalSettingsRecord = { enableCheckpoints: undefined, checkpointStorage: undefined, + showGreeting: undefined, + ttsEnabled: undefined, ttsSpeed: undefined, soundEnabled: undefined, diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 4fd8ccf288..822e4239b5 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -143,6 +143,7 @@ export type ExtensionState = Pick< | "remoteBrowserHost" // | "enableCheckpoints" // Optional in GlobalSettings, required here. // | "checkpointStorage" // Optional in GlobalSettings, required here. + | "showGreeting" | "ttsEnabled" | "ttsSpeed" | "soundEnabled" diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index 93b6944739..6cfd582358 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -126,6 +126,7 @@ export interface WebviewMessage { | "maxReadFileLine" | "searchFiles" | "toggleApiConfigPin" + | "showGreeting" text?: string disabled?: boolean askResponse?: ClineAskResponse diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index e38ad28c93..54f7f56e59 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -69,6 +69,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie alwaysAllowSubtasks, customModes, telemetrySetting, + showGreeting, } = useExtensionState() //const task = messages.length > 0 ? (messages[0].say === "task" ? messages[0] : undefined) : undefined) : undefined @@ -95,7 +96,6 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie const [showScrollToBottom, setShowScrollToBottom] = useState(false) const [isAtBottom, setIsAtBottom] = useState(false) const lastTtsRef = useRef("") - const [wasStreaming, setWasStreaming] = useState(false) const [showCheckpointWarning, setShowCheckpointWarning] = useState(false) @@ -1207,10 +1207,12 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie }}> {telemetrySetting === "unset" && } {showAnnouncement && } -
-

{t("chat:greeting")}

-

{t("chat:aboutMe")}

-
+ {showGreeting === true && ( +
+

{t("chat:greeting")}

+

{t("chat:aboutMe")}

+
+ )} {taskHistory.length > 0 && } )} diff --git a/webview-ui/src/components/settings/InterfaceSettings.tsx b/webview-ui/src/components/settings/InterfaceSettings.tsx new file mode 100644 index 0000000000..d7e959a75a --- /dev/null +++ b/webview-ui/src/components/settings/InterfaceSettings.tsx @@ -0,0 +1,40 @@ +import { HTMLAttributes } from "react" +import { useAppTranslation } from "@/i18n/TranslationContext" +import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react" +import { Monitor } from "lucide-react" + +import { SetCachedStateField } from "./types" +import { SectionHeader } from "./SectionHeader" +import { Section } from "./Section" + +type InterfaceSettingsProps = HTMLAttributes & { + showGreeting?: boolean + setCachedStateField: SetCachedStateField<"showGreeting"> +} + +export const InterfaceSettings = ({ showGreeting, setCachedStateField, ...props }: InterfaceSettingsProps) => { + const { t } = useAppTranslation() + return ( +
+ +
+ +
{t("settings:sections.interface")}
+
+
+ +
+
+ setCachedStateField("showGreeting", e.target.checked)}> + {t("settings:interface.showgreeting.label")} + +
+ {t("settings:interface.showgreeting.description")} +
+
+
+
+ ) +} diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index c8b24e0dcd..35b78cfc83 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -14,6 +14,7 @@ import { Globe, Info, LucideIcon, + Monitor, } from "lucide-react" import { CaretSortIcon } from "@radix-ui/react-icons" @@ -47,6 +48,7 @@ import ApiOptions from "./ApiOptions" import { AutoApproveSettings } from "./AutoApproveSettings" import { BrowserSettings } from "./BrowserSettings" import { CheckpointSettings } from "./CheckpointSettings" +import { InterfaceSettings } from "./InterfaceSettings" import { NotificationSettings } from "./NotificationSettings" import { ContextManagementSettings } from "./ContextManagementSettings" import { TerminalSettings } from "./TerminalSettings" @@ -65,6 +67,7 @@ const sectionNames = [ "autoApprove", "browser", "checkpoints", + "interface", "notifications", "contextManagement", "terminal", @@ -139,6 +142,7 @@ const SettingsView = forwardRef(({ onDone, t showRooIgnoredFiles, remoteBrowserEnabled, maxReadFileLine, + showGreeting, } = cachedState // Make sure apiConfiguration is initialized and managed by SettingsView. @@ -262,6 +266,7 @@ const SettingsView = forwardRef(({ onDone, t vscode.postMessage({ type: "alwaysAllowSubtasks", bool: alwaysAllowSubtasks }) vscode.postMessage({ type: "upsertApiConfiguration", text: currentApiConfigName, apiConfiguration }) vscode.postMessage({ type: "telemetrySetting", text: telemetrySetting }) + vscode.postMessage({ type: "showGreeting", bool: showGreeting }) setChangeDetected(false) } } @@ -290,6 +295,7 @@ const SettingsView = forwardRef(({ onDone, t const autoApproveRef = useRef(null) const browserRef = useRef(null) const checkpointsRef = useRef(null) + const interfaceRef = useRef(null) const notificationsRef = useRef(null) const contextManagementRef = useRef(null) const terminalRef = useRef(null) @@ -304,6 +310,7 @@ const SettingsView = forwardRef(({ onDone, t { id: "autoApprove", icon: CheckCheck, ref: autoApproveRef }, { id: "browser", icon: SquareMousePointer, ref: browserRef }, { id: "checkpoints", icon: GitBranch, ref: checkpointsRef }, + { id: "interface", icon: Monitor, ref: interfaceRef }, { id: "notifications", icon: Bell, ref: notificationsRef }, { id: "contextManagement", icon: Database, ref: contextManagementRef }, { id: "terminal", icon: SquareTerminal, ref: terminalRef }, @@ -317,6 +324,7 @@ const SettingsView = forwardRef(({ onDone, t autoApproveRef, browserRef, checkpointsRef, + interfaceRef, notificationsRef, contextManagementRef, terminalRef, @@ -469,6 +477,10 @@ const SettingsView = forwardRef(({ onDone, t /> +
+ +
+
setPinnedApiConfigs: (value: Record) => void togglePinnedApiConfig: (configName: string) => void + setShowGreeting: (value: boolean) => void } export const ExtensionStateContext = createContext(undefined) @@ -123,6 +124,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode clineMessages: [], taskHistory: [], shouldShowAnnouncement: false, + showGreeting: true, allowedCommands: [], soundEnabled: false, soundVolume: 0.5, @@ -316,6 +318,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode setAwsUsePromptCache: (value) => setState((prevState) => ({ ...prevState, awsUsePromptCache: value })), setMaxReadFileLine: (value) => setState((prevState) => ({ ...prevState, maxReadFileLine: value })), setPinnedApiConfigs: (value) => setState((prevState) => ({ ...prevState, pinnedApiConfigs: value })), + setShowGreeting: (value) => setState((prevState) => ({ ...prevState, showGreeting: value })), togglePinnedApiConfig: (configId) => setState((prevState) => { const currentPinned = prevState.pinnedApiConfigs || {} diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index 80b3ef3a48..cb5ca346dc 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -29,7 +29,8 @@ "advanced": "Avançat", "experimental": "Funcions experimentals", "language": "Idioma", - "about": "Sobre Roo Code" + "about": "Sobre Roo Code", + "interface": "Interfície" }, "autoApprove": { "description": "Permet que Roo realitzi operacions automàticament sense requerir aprovació. Activeu aquesta configuració només si confieu plenament en la IA i enteneu els riscos de seguretat associats.", @@ -471,5 +472,11 @@ "labels": { "customArn": "ARN personalitzat", "useCustomArn": "Utilitza ARN personalitzat..." + }, + "interface": { + "showgreeting": { + "label": "Mostrar missatge de benvinguda", + "description": "Quan està activat, Roo mostrarà un missatge de benvinguda i introducció." + } } } diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index a577199e86..7363108f9f 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -29,7 +29,8 @@ "advanced": "Erweitert", "experimental": "Experimentelle Funktionen", "language": "Sprache", - "about": "Über Roo Code" + "about": "Über Roo Code", + "interface": "Oberfläche" }, "autoApprove": { "description": "Erlaubt Roo, Operationen automatisch ohne Genehmigung durchzuführen. Aktiviere diese Einstellungen nur, wenn du der KI vollständig vertraust und die damit verbundenen Sicherheitsrisiken verstehst.", @@ -471,5 +472,11 @@ "labels": { "customArn": "Benutzerdefinierte ARN", "useCustomArn": "Benutzerdefinierte ARN verwenden..." + }, + "interface": { + "showgreeting": { + "label": "Begrüßungsnachricht anzeigen", + "description": "Wenn aktiviert, zeigt Roo eine Willkommensnachricht und Einführung an." + } } } diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index 9d2b6f8920..d22f02cabf 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -29,7 +29,8 @@ "advanced": "Advanced", "experimental": "Experimental Features", "language": "Language", - "about": "About Roo Code" + "about": "About Roo Code", + "interface": "Interface" }, "autoApprove": { "description": "Allow Roo to automatically perform operations without requiring approval. Enable these settings only if you fully trust the AI and understand the associated security risks.", @@ -470,5 +471,11 @@ "labels": { "customArn": "Custom ARN", "useCustomArn": "Use custom ARN..." + }, + "interface": { + "showgreeting": { + "label": "Show greeting message", + "description": "When enabled, Roo will display a welcome message and introduction." + } } } diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 4b29147b59..505be0ff37 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -29,7 +29,8 @@ "advanced": "Avanzado", "experimental": "Funciones experimentales", "language": "Idioma", - "about": "Acerca de Roo Code" + "about": "Acerca de Roo Code", + "interface": "Interfaz" }, "autoApprove": { "description": "Permitir que Roo realice operaciones automáticamente sin requerir aprobación. Habilite esta configuración solo si confía plenamente en la IA y comprende los riesgos de seguridad asociados.", @@ -471,5 +472,11 @@ "labels": { "customArn": "ARN personalizado", "useCustomArn": "Usar ARN personalizado..." + }, + "interface": { + "showgreeting": { + "label": "Mostrar mensaje de bienvenida", + "description": "Cuando está habilitado, Roo mostrará un mensaje de bienvenida e introducción." + } } } diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 5a064411b6..2fc93e8395 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -29,7 +29,8 @@ "advanced": "Avancé", "experimental": "Fonctionnalités expérimentales", "language": "Langue", - "about": "À propos de Roo Code" + "about": "À propos de Roo Code", + "interface": "Interface" }, "autoApprove": { "description": "Permettre à Roo d'effectuer automatiquement des opérations sans requérir d'approbation. Activez ces paramètres uniquement si vous faites entièrement confiance à l'IA et que vous comprenez les risques de sécurité associés.", @@ -471,5 +472,11 @@ "labels": { "customArn": "ARN personnalisé", "useCustomArn": "Utiliser un ARN personnalisé..." + }, + "interface": { + "showgreeting": { + "label": "Afficher le message de bienvenue", + "description": "Lorsque cette option est activée, Roo affichera un message de bienvenue et une introduction." + } } } diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index d8bf7cd72e..a97ff0a33b 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -29,7 +29,8 @@ "advanced": "उन्नत", "experimental": "प्रायोगिक सुविधाएँ", "language": "भाषा", - "about": "Roo Code के बारे में" + "about": "Roo Code के बारे में", + "interface": "इंटरफ़ेस" }, "autoApprove": { "description": "Roo को अनुमोदन की आवश्यकता के बिना स्वचालित रूप से ऑपरेशन करने की अनुमति दें। इन सेटिंग्स को केवल तभी सक्षम करें जब आप AI पर पूरी तरह से भरोसा करते हों और संबंधित सुरक्षा जोखिमों को समझते हों।", @@ -471,5 +472,11 @@ "labels": { "customArn": "कस्टम ARN", "useCustomArn": "कस्टम ARN का उपयोग करें..." + }, + "interface": { + "showgreeting": { + "label": "स्वागत संदेश दिखाएँ", + "description": "जब सक्षम किया जाता है, तो Roo एक स्वागत संदेश और परिचय प्रदर्शित करेगा।" + } } } diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index fb2edd63c9..37428735fd 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -29,7 +29,8 @@ "advanced": "Avanzate", "experimental": "Funzionalità sperimentali", "language": "Lingua", - "about": "Informazioni su Roo Code" + "about": "Informazioni su Roo Code", + "interface": "Interfaccia" }, "autoApprove": { "description": "Permetti a Roo di eseguire automaticamente operazioni senza richiedere approvazione. Abilita queste impostazioni solo se ti fidi completamente dell'IA e comprendi i rischi di sicurezza associati.", @@ -471,5 +472,11 @@ "labels": { "customArn": "ARN personalizzato", "useCustomArn": "Usa ARN personalizzato..." + }, + "interface": { + "showgreeting": { + "label": "Mostra messaggio di benvenuto", + "description": "Quando abilitato, Roo mostrerà un messaggio di benvenuto e un'introduzione." + } } } diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index aa5b893529..d1c8cab9e4 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -29,7 +29,8 @@ "advanced": "詳細設定", "experimental": "実験的機能", "language": "言語", - "about": "Roo Codeについて" + "about": "Roo Codeについて", + "interface": "インターフェース" }, "autoApprove": { "description": "Rooが承認なしで自動的に操作を実行できるようにします。AIを完全に信頼し、関連するセキュリティリスクを理解している場合にのみ、これらの設定を有効にしてください。", @@ -471,5 +472,11 @@ "labels": { "customArn": "カスタム ARN", "useCustomArn": "カスタム ARN を使用..." + }, + "interface": { + "showgreeting": { + "label": "ようこそメッセージを表示", + "description": "有効にすると、Rooはようこそメッセージと紹介を表示します。" + } } } diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index 49e253360b..226dd2f938 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -29,7 +29,8 @@ "advanced": "고급", "experimental": "실험적 기능", "language": "언어", - "about": "Roo Code 정보" + "about": "Roo Code 정보", + "interface": "인터페이스" }, "autoApprove": { "description": "Roo가 승인 없이 자동으로 작업을 수행할 수 있도록 허용합니다. AI를 완전히 신뢰하고 관련 보안 위험을 이해하는 경우에만 이러한 설정을 활성화하세요.", @@ -471,5 +472,11 @@ "labels": { "customArn": "사용자 지정 ARN", "useCustomArn": "사용자 지정 ARN 사용..." + }, + "interface": { + "showgreeting": { + "label": "환영 메시지 표시", + "description": "활성화하면 Roo가 환영 메시지와 소개를 표시합니다." + } } } diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 9b70bb1dc6..7d20c90d12 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -29,7 +29,8 @@ "advanced": "Zaawansowane", "experimental": "Funkcje eksperymentalne", "language": "Język", - "about": "O Roo Code" + "about": "O Roo Code", + "interface": "Interfejs" }, "autoApprove": { "description": "Pozwól Roo na automatyczne wykonywanie operacji bez wymagania zatwierdzenia. Włącz te ustawienia tylko jeśli w pełni ufasz AI i rozumiesz związane z tym zagrożenia bezpieczeństwa.", @@ -471,5 +472,11 @@ "labels": { "customArn": "Niestandardowy ARN", "useCustomArn": "Użyj niestandardowego ARN..." + }, + "interface": { + "showgreeting": { + "label": "Pokaż wiadomość powitalną", + "description": "Gdy włączone, Roo wyświetli wiadomość powitalną i wprowadzenie." + } } } diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index 3f238e2b37..014b96458a 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -29,7 +29,8 @@ "advanced": "Avançado", "experimental": "Recursos experimentais", "language": "Idioma", - "about": "Sobre o Roo Code" + "about": "Sobre o Roo Code", + "interface": "Interface" }, "autoApprove": { "description": "Permitir que o Roo realize operações automaticamente sem exigir aprovação. Ative essas configurações apenas se confiar totalmente na IA e compreender os riscos de segurança associados.", @@ -471,5 +472,11 @@ "labels": { "customArn": "ARN personalizado", "useCustomArn": "Usar ARN personalizado..." + }, + "interface": { + "showgreeting": { + "label": "Mostrar mensagem de boas-vindas", + "description": "Quando ativado, o Roo exibirá uma mensagem de boas-vindas e introdução." + } } } diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 4e2f5b816a..dac7a4eeac 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -29,7 +29,8 @@ "advanced": "Gelişmiş", "experimental": "Deneysel Özellikler", "language": "Dil", - "about": "Roo Code Hakkında" + "about": "Roo Code Hakkında", + "interface": "Arayüz" }, "autoApprove": { "description": "Roo'nun onay gerektirmeden otomatik olarak işlemler gerçekleştirmesine izin verin. Bu ayarları yalnızca yapay zekaya tamamen güveniyorsanız ve ilgili güvenlik risklerini anlıyorsanız etkinleştirin.", @@ -471,5 +472,11 @@ "labels": { "customArn": "Özel ARN", "useCustomArn": "Özel ARN kullan..." + }, + "interface": { + "showgreeting": { + "label": "Karşılama mesajını göster", + "description": "Etkinleştirildiğinde, Roo bir karşılama mesajı ve tanıtım gösterecektir." + } } } diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 0b83f89634..b3820a0b95 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -29,7 +29,8 @@ "advanced": "Nâng cao", "experimental": "Tính năng thử nghiệm", "language": "Ngôn ngữ", - "about": "Về Roo Code" + "about": "Về Roo Code", + "interface": "Giao diện" }, "autoApprove": { "description": "Cho phép Roo tự động thực hiện các hoạt động mà không cần phê duyệt. Chỉ bật những cài đặt này nếu bạn hoàn toàn tin tưởng AI và hiểu rõ các rủi ro bảo mật liên quan.", @@ -471,5 +472,11 @@ "labels": { "customArn": "ARN tùy chỉnh", "useCustomArn": "Sử dụng ARN tùy chỉnh..." + }, + "interface": { + "showgreeting": { + "label": "Hiển thị thông báo chào mừng", + "description": "Khi được bật, Roo sẽ hiển thị thông báo chào mừng và giới thiệu." + } } } diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index e995e0101f..bc0ae271ad 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -21,8 +21,9 @@ "sections": { "providers": "提供商", "autoApprove": "自动批准", - "browser": "浏览器交互设置", + "browser": "浏览器交互", "checkpoints": "检查点", + "interface": "界面内容", "notifications": "通知", "contextManagement": "上下文管理", "terminal": "终端", @@ -258,7 +259,7 @@ "checkpoints": { "enable": { "label": "启用自动检查点", - "description": "开启后自动创建任务检查点,方便回溯修改" + "description": "开启后自动创建任务检查点,方便回溯修改。" } }, "notifications": { @@ -471,5 +472,11 @@ "labels": { "customArn": "自定义 ARN", "useCustomArn": "使用自定义 ARN..." + }, + "interface": { + "showgreeting": { + "label": "显示欢迎消息", + "description": "启用后,Roo 将显示欢迎语和简介。" + } } } diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 23a0b3ba5c..7ead9eee36 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -29,7 +29,8 @@ "advanced": "進階", "experimental": "實驗性功能", "language": "語言", - "about": "關於 Roo Code" + "about": "關於 Roo Code", + "interface": "介面" }, "autoApprove": { "description": "允許 Roo 無需核准即執行操作。僅在您完全信任 AI 並了解相關安全風險時啟用這些設定。", @@ -470,5 +471,11 @@ "labels": { "customArn": "自訂 ARN", "useCustomArn": "使用自訂 ARN..." + }, + "interface": { + "showgreeting": { + "label": "顯示歡迎訊息", + "description": "啟用後,Roo 將顯示歡迎訊息與介紹。" + } } }