diff --git a/packages/types/src/global-settings.ts b/packages/types/src/global-settings.ts
index 7e79855f7e1..a56a00fc355 100644
--- a/packages/types/src/global-settings.ts
+++ b/packages/types/src/global-settings.ts
@@ -147,6 +147,7 @@ export const globalSettingsSchema = z.object({
enhancementApiConfigId: z.string().optional(),
includeTaskHistoryInEnhance: z.boolean().optional(),
historyPreviewCollapsed: z.boolean().optional(),
+ reasoningBlockCollapsed: z.boolean().optional(),
profileThresholds: z.record(z.string(), z.number()).optional(),
hasOpenedModeSelector: z.boolean().optional(),
lastModeExportPath: z.string().optional(),
diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts
index 33e2febb9b2..8142639d671 100644
--- a/src/core/webview/ClineProvider.ts
+++ b/src/core/webview/ClineProvider.ts
@@ -1792,6 +1792,7 @@ export class ClineProvider
maxTotalImageSize,
terminalCompressProgressBar,
historyPreviewCollapsed,
+ reasoningBlockCollapsed,
cloudUserInfo,
cloudIsAuthenticated,
sharingEnabled,
@@ -1925,6 +1926,7 @@ export class ClineProvider
terminalCompressProgressBar: terminalCompressProgressBar ?? true,
hasSystemPromptOverride,
historyPreviewCollapsed: historyPreviewCollapsed ?? false,
+ reasoningBlockCollapsed: reasoningBlockCollapsed ?? true,
cloudUserInfo,
cloudIsAuthenticated: cloudIsAuthenticated ?? false,
cloudOrganizations,
@@ -2139,6 +2141,7 @@ export class ClineProvider
maxTotalImageSize: stateValues.maxTotalImageSize ?? 20,
maxConcurrentFileReads: stateValues.maxConcurrentFileReads ?? 5,
historyPreviewCollapsed: stateValues.historyPreviewCollapsed ?? false,
+ reasoningBlockCollapsed: stateValues.reasoningBlockCollapsed ?? true,
cloudUserInfo,
cloudIsAuthenticated,
sharingEnabled,
diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts
index 8f8ab55d733..c3e57c67a20 100644
--- a/src/core/webview/webviewMessageHandler.ts
+++ b/src/core/webview/webviewMessageHandler.ts
@@ -1617,6 +1617,10 @@ export const webviewMessageHandler = async (
await updateGlobalState("historyPreviewCollapsed", message.bool ?? false)
// No need to call postStateToWebview here as the UI already updated optimistically
break
+ case "setReasoningBlockCollapsed":
+ await updateGlobalState("reasoningBlockCollapsed", message.bool ?? true)
+ // No need to call postStateToWebview here as the UI already updated optimistically
+ break
case "toggleApiConfigPin":
if (message.text) {
const currentPinned = getGlobalState("pinnedApiConfigs") ?? {}
diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts
index 70d3a75e148..66f389f81c1 100644
--- a/src/shared/ExtensionMessage.ts
+++ b/src/shared/ExtensionMessage.ts
@@ -287,6 +287,7 @@ export type ExtensionState = Pick<
| "maxDiagnosticMessages"
| "openRouterImageGenerationSelectedModel"
| "includeTaskHistoryInEnhance"
+ | "reasoningBlockCollapsed"
> & {
version: string
clineMessages: ClineMessage[]
diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts
index 023bfa36b62..d43a2fce043 100644
--- a/src/shared/WebviewMessage.ts
+++ b/src/shared/WebviewMessage.ts
@@ -194,6 +194,7 @@ export interface WebviewMessage {
| "focusPanelRequest"
| "profileThresholds"
| "setHistoryPreviewCollapsed"
+ | "setReasoningBlockCollapsed"
| "openExternal"
| "filterMarketplaceItems"
| "marketplaceButtonClicked"
diff --git a/webview-ui/src/components/chat/ChatRow.tsx b/webview-ui/src/components/chat/ChatRow.tsx
index dc5b007dabe..f1dfd9115b6 100644
--- a/webview-ui/src/components/chat/ChatRow.tsx
+++ b/webview-ui/src/components/chat/ChatRow.tsx
@@ -60,6 +60,7 @@ import {
PocketKnife,
FolderTree,
TerminalSquare,
+ MessageCircle,
} from "lucide-react"
import { cn } from "@/lib/utils"
@@ -1118,14 +1119,20 @@ export const ChatRowContent = ({
case "text":
return (
-
- {message.images && message.images.length > 0 && (
-
- {message.images.map((image, index) => (
-
- ))}
-
- )}
+
+
+ {t("chat:text.rooSaid")}
+
+
+
+ {message.images && message.images.length > 0 && (
+
+ {message.images.map((image, index) => (
+
+ ))}
+
+ )}
+
)
case "user_feedback":
diff --git a/webview-ui/src/components/chat/ReasoningBlock.tsx b/webview-ui/src/components/chat/ReasoningBlock.tsx
index 3fa46df5701..1fd0c770a08 100644
--- a/webview-ui/src/components/chat/ReasoningBlock.tsx
+++ b/webview-ui/src/components/chat/ReasoningBlock.tsx
@@ -1,8 +1,10 @@
-import React, { useEffect, useRef, useState } from "react"
+import { useEffect, useRef, useState } from "react"
import { useTranslation } from "react-i18next"
+import { useExtensionState } from "@src/context/ExtensionStateContext"
import MarkdownBlock from "../common/MarkdownBlock"
-import { Lightbulb } from "lucide-react"
+import { Lightbulb, ChevronUp } from "lucide-react"
+import { cn } from "@/lib/utils"
interface ReasoningBlockProps {
content: string
@@ -12,18 +14,20 @@ interface ReasoningBlockProps {
metadata?: any
}
-/**
- * Render reasoning with a heading and a simple timer.
- * - Heading uses i18n key chat:reasoning.thinking
- * - Timer runs while reasoning is active (no persistence)
- */
export const ReasoningBlock = ({ content, isStreaming, isLast }: ReasoningBlockProps) => {
const { t } = useTranslation()
+ const { reasoningBlockCollapsed } = useExtensionState()
+
+ const [isCollapsed, setIsCollapsed] = useState(reasoningBlockCollapsed)
const startTimeRef = useRef(Date.now())
const [elapsed, setElapsed] = useState(0)
+ const contentRef = useRef(null)
+
+ useEffect(() => {
+ setIsCollapsed(reasoningBlockCollapsed)
+ }, [reasoningBlockCollapsed])
- // Simple timer that runs while streaming
useEffect(() => {
if (isLast && isStreaming) {
const tick = () => setElapsed(Date.now() - startTimeRef.current)
@@ -36,21 +40,35 @@ export const ReasoningBlock = ({ content, isStreaming, isLast }: ReasoningBlockP
const seconds = Math.floor(elapsed / 1000)
const secondsLabel = t("chat:reasoning.seconds", { count: seconds })
+ const handleToggle = () => {
+ setIsCollapsed(!isCollapsed)
+ }
+
return (
-
-
+
+
{t("chat:reasoning.thinking")}
+ {elapsed > 0 && (
+ {secondsLabel}
+ )}
+
+
+
- {elapsed > 0 && (
-
- {secondsLabel}
-
- )}
- {(content?.trim()?.length ?? 0) > 0 && (
-
+ {(content?.trim()?.length ?? 0) > 0 && !isCollapsed && (
+
)}
diff --git a/webview-ui/src/components/common/MarkdownBlock.tsx b/webview-ui/src/components/common/MarkdownBlock.tsx
index 24b0eaa4b43..47c61a5ce02 100644
--- a/webview-ui/src/components/common/MarkdownBlock.tsx
+++ b/webview-ui/src/components/common/MarkdownBlock.tsx
@@ -146,6 +146,12 @@ const StyledMarkdown = styled.div`
}
}
+ h1 {
+ font-size: 1.65em;
+ font-weight: 700;
+ margin: 1.35em 0 0.5em;
+ }
+
h2 {
font-size: 1.35em;
font-weight: 500;
diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx
index 66b7ff680fe..39f57613b73 100644
--- a/webview-ui/src/components/settings/SettingsView.tsx
+++ b/webview-ui/src/components/settings/SettingsView.tsx
@@ -24,6 +24,7 @@ import {
MessageSquare,
LucideIcon,
SquareSlash,
+ Glasses,
} from "lucide-react"
import type { ProviderSettings, ExperimentId, TelemetrySetting } from "@roo-code/types"
@@ -66,6 +67,7 @@ import { About } from "./About"
import { Section } from "./Section"
import PromptsSettings from "./PromptsSettings"
import { SlashCommandsSettings } from "./SlashCommandsSettings"
+import { UISettings } from "./UISettings"
export const settingsTabsContainer = "flex flex-1 overflow-hidden [&.narrow_.tab-label]:hidden"
export const settingsTabList =
@@ -88,6 +90,7 @@ const sectionNames = [
"contextManagement",
"terminal",
"prompts",
+ "ui",
"experimental",
"language",
"about",
@@ -191,6 +194,7 @@ const SettingsView = forwardRef
(({ onDone, t
includeTaskHistoryInEnhance,
openRouterImageApiKey,
openRouterImageGenerationSelectedModel,
+ reasoningBlockCollapsed,
} = cachedState
const apiConfiguration = useMemo(() => cachedState.apiConfiguration ?? {}, [cachedState.apiConfiguration])
@@ -364,6 +368,7 @@ const SettingsView = forwardRef(({ onDone, t
vscode.postMessage({ type: "updateCondensingPrompt", text: customCondensingPrompt || "" })
vscode.postMessage({ type: "updateSupportPrompt", values: customSupportPrompts || {} })
vscode.postMessage({ type: "includeTaskHistoryInEnhance", bool: includeTaskHistoryInEnhance ?? true })
+ vscode.postMessage({ type: "setReasoningBlockCollapsed", bool: reasoningBlockCollapsed ?? true })
vscode.postMessage({ type: "upsertApiConfiguration", text: currentApiConfigName, apiConfiguration })
vscode.postMessage({ type: "telemetrySetting", text: telemetrySetting })
vscode.postMessage({ type: "profileThresholds", values: profileThresholds })
@@ -458,6 +463,7 @@ const SettingsView = forwardRef(({ onDone, t
{ id: "contextManagement", icon: Database },
{ id: "terminal", icon: SquareTerminal },
{ id: "prompts", icon: MessageSquare },
+ { id: "ui", icon: Glasses },
{ id: "experimental", icon: FlaskConical },
{ id: "language", icon: Globe },
{ id: "about", icon: Info },
@@ -757,6 +763,14 @@ const SettingsView = forwardRef(({ onDone, t
/>
)}
+ {/* UI Section */}
+ {activeTab === "ui" && (
+
+ )}
+
{/* Experimental Section */}
{activeTab === "experimental" && (
{
+ reasoningBlockCollapsed: boolean
+ setCachedStateField: SetCachedStateField
+}
+
+export const UISettings = ({ reasoningBlockCollapsed, setCachedStateField, ...props }: UISettingsProps) => {
+ const { t } = useAppTranslation()
+
+ const handleReasoningBlockCollapsedChange = (value: boolean) => {
+ setCachedStateField("reasoningBlockCollapsed", value)
+
+ // Track telemetry event
+ telemetryClient.capture("ui_settings_collapse_thinking_changed", {
+ enabled: value,
+ })
+ }
+
+ return (
+
+
+
+
+
{t("settings:sections.ui")}
+
+
+
+
+
+ {/* Collapse Thinking Messages Setting */}
+
+
handleReasoningBlockCollapsedChange(e.target.checked)}
+ data-testid="collapse-thinking-checkbox">
+ {t("settings:ui.collapseThinking.label")}
+
+
+ {t("settings:ui.collapseThinking.description")}
+
+
+
+
+
+ )
+}
diff --git a/webview-ui/src/components/settings/__tests__/UISettings.spec.tsx b/webview-ui/src/components/settings/__tests__/UISettings.spec.tsx
new file mode 100644
index 00000000000..43bb013a08f
--- /dev/null
+++ b/webview-ui/src/components/settings/__tests__/UISettings.spec.tsx
@@ -0,0 +1,43 @@
+import { render, fireEvent, waitFor } from "@testing-library/react"
+import { describe, it, expect, vi } from "vitest"
+import { UISettings } from "../UISettings"
+
+describe("UISettings", () => {
+ const defaultProps = {
+ reasoningBlockCollapsed: false,
+ setCachedStateField: vi.fn(),
+ }
+
+ it("renders the collapse thinking checkbox", () => {
+ const { getByTestId } = render()
+ const checkbox = getByTestId("collapse-thinking-checkbox")
+ expect(checkbox).toBeTruthy()
+ })
+
+ it("displays the correct initial state", () => {
+ const { getByTestId } = render()
+ const checkbox = getByTestId("collapse-thinking-checkbox") as HTMLInputElement
+ expect(checkbox.checked).toBe(true)
+ })
+
+ it("calls setCachedStateField when checkbox is toggled", async () => {
+ const setCachedStateField = vi.fn()
+ const { getByTestId } = render()
+
+ const checkbox = getByTestId("collapse-thinking-checkbox")
+ fireEvent.click(checkbox)
+
+ await waitFor(() => {
+ expect(setCachedStateField).toHaveBeenCalledWith("reasoningBlockCollapsed", true)
+ })
+ })
+
+ it("updates checkbox state when prop changes", () => {
+ const { getByTestId, rerender } = render()
+ const checkbox = getByTestId("collapse-thinking-checkbox") as HTMLInputElement
+ expect(checkbox.checked).toBe(false)
+
+ rerender()
+ expect(checkbox.checked).toBe(true)
+ })
+})
diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx
index 247eb9426b2..542b2385c02 100644
--- a/webview-ui/src/context/ExtensionStateContext.tsx
+++ b/webview-ui/src/context/ExtensionStateContext.tsx
@@ -144,6 +144,7 @@ export interface ExtensionStateContextType extends ExtensionState {
terminalCompressProgressBar?: boolean
setTerminalCompressProgressBar: (value: boolean) => void
setHistoryPreviewCollapsed: (value: boolean) => void
+ setReasoningBlockCollapsed: (value: boolean) => void
autoCondenseContext: boolean
setAutoCondenseContext: (value: boolean) => void
autoCondenseContextPercent: number
@@ -240,6 +241,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
terminalZdotdir: false, // Default ZDOTDIR handling setting
terminalCompressProgressBar: true, // Default to compress progress bar output
historyPreviewCollapsed: false, // Initialize the new state (default to expanded)
+ reasoningBlockCollapsed: true, // Default to collapsed
cloudUserInfo: null,
cloudIsAuthenticated: false,
cloudOrganizations: [],
@@ -416,6 +418,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
const contextValue: ExtensionStateContextType = {
...state,
+ reasoningBlockCollapsed: state.reasoningBlockCollapsed ?? true,
didHydrateState,
showWelcome,
theme,
@@ -532,6 +535,8 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
}),
setHistoryPreviewCollapsed: (value) =>
setState((prevState) => ({ ...prevState, historyPreviewCollapsed: value })),
+ setReasoningBlockCollapsed: (value) =>
+ setState((prevState) => ({ ...prevState, reasoningBlockCollapsed: value })),
setHasOpenedModeSelector: (value) => setState((prevState) => ({ ...prevState, hasOpenedModeSelector: value })),
setAutoCondenseContext: (value) => setState((prevState) => ({ ...prevState, autoCondenseContext: value })),
setAutoCondenseContextPercent: (value) =>
diff --git a/webview-ui/src/i18n/locales/ca/chat.json b/webview-ui/src/i18n/locales/ca/chat.json
index 0d84ca17c88..65ffdfa0151 100644
--- a/webview-ui/src/i18n/locales/ca/chat.json
+++ b/webview-ui/src/i18n/locales/ca/chat.json
@@ -220,6 +220,9 @@
},
"response": "Resposta",
"arguments": "Arguments",
+ "text": {
+ "rooSaid": "En Roo ha dit"
+ },
"feedback": {
"youSaid": "Has dit"
},
diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json
index 91a02e7a1c9..2aa6b7ad729 100644
--- a/webview-ui/src/i18n/locales/ca/settings.json
+++ b/webview-ui/src/i18n/locales/ca/settings.json
@@ -30,6 +30,7 @@
"terminal": "Terminal",
"slashCommands": "Comandes de barra",
"prompts": "Indicacions",
+ "ui": "UI",
"experimental": "Experimental",
"language": "Idioma",
"about": "Sobre Roo Code"
@@ -879,5 +880,11 @@
"output": "Sortida",
"cacheReads": "Lectures de memòria cau"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "Replega els missatges de pensament per defecte",
+ "description": "Quan estigui activat, els blocs de pensament es replegaran per defecte fins que interactuïs amb ells"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/de/chat.json b/webview-ui/src/i18n/locales/de/chat.json
index 43f20643458..a68bc69b932 100644
--- a/webview-ui/src/i18n/locales/de/chat.json
+++ b/webview-ui/src/i18n/locales/de/chat.json
@@ -220,6 +220,9 @@
},
"response": "Antwort",
"arguments": "Argumente",
+ "text": {
+ "rooSaid": "Roo hat gesagt"
+ },
"feedback": {
"youSaid": "Du hast gesagt"
},
diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json
index fd89eb96378..a96e2151851 100644
--- a/webview-ui/src/i18n/locales/de/settings.json
+++ b/webview-ui/src/i18n/locales/de/settings.json
@@ -30,6 +30,7 @@
"terminal": "Terminal",
"slashCommands": "Slash-Befehle",
"prompts": "Eingabeaufforderungen",
+ "ui": "UI",
"experimental": "Experimentell",
"language": "Sprache",
"about": "Über Roo Code"
@@ -879,5 +880,11 @@
"output": "Ausgabe",
"cacheReads": "Cache-Lesevorgänge"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "Gedankenblöcke standardmäßig ausblenden",
+ "description": "Wenn aktiviert, werden Gedankenblöcke standardmäßig ausgeblendet, bis du mit ihnen interagierst"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/en/chat.json b/webview-ui/src/i18n/locales/en/chat.json
index 99464dfb607..7bd0cde9d34 100644
--- a/webview-ui/src/i18n/locales/en/chat.json
+++ b/webview-ui/src/i18n/locales/en/chat.json
@@ -239,6 +239,9 @@
},
"response": "Response",
"arguments": "Arguments",
+ "text": {
+ "rooSaid": "Roo said"
+ },
"feedback": {
"youSaid": "You said"
},
diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json
index 50d8470abfa..aa3199e8e8b 100644
--- a/webview-ui/src/i18n/locales/en/settings.json
+++ b/webview-ui/src/i18n/locales/en/settings.json
@@ -30,6 +30,7 @@
"terminal": "Terminal",
"slashCommands": "Slash Commands",
"prompts": "Prompts",
+ "ui": "UI",
"experimental": "Experimental",
"language": "Language",
"about": "About Roo Code"
@@ -37,6 +38,12 @@
"slashCommands": {
"description": "Manage your slash commands to quickly execute custom workflows and actions. Learn more"
},
+ "ui": {
+ "collapseThinking": {
+ "label": "Collapse Thinking messages by default",
+ "description": "When enabled, thinking blocks will be collapsed by default until you interact with them"
+ }
+ },
"prompts": {
"description": "Configure support prompts that are used for quick actions like enhancing prompts, explaining code, and fixing issues. These prompts help Roo provide better assistance for common development tasks."
},
diff --git a/webview-ui/src/i18n/locales/es/chat.json b/webview-ui/src/i18n/locales/es/chat.json
index a64927e05e8..20de4dcaba6 100644
--- a/webview-ui/src/i18n/locales/es/chat.json
+++ b/webview-ui/src/i18n/locales/es/chat.json
@@ -220,6 +220,9 @@
},
"response": "Respuesta",
"arguments": "Argumentos",
+ "text": {
+ "rooSaid": "Roo ha dicho"
+ },
"feedback": {
"youSaid": "Has dicho"
},
diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json
index 8e6968e8c26..44c1b9496d1 100644
--- a/webview-ui/src/i18n/locales/es/settings.json
+++ b/webview-ui/src/i18n/locales/es/settings.json
@@ -30,6 +30,7 @@
"terminal": "Terminal",
"slashCommands": "Comandos de Barra",
"prompts": "Indicaciones",
+ "ui": "UI",
"experimental": "Experimental",
"language": "Idioma",
"about": "Acerca de Roo Code"
@@ -879,5 +880,11 @@
"output": "Salida",
"cacheReads": "Lecturas de caché"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "Colapsar mensajes de pensamiento por defecto",
+ "description": "Cuando está activado, los bloques de pensamiento se colapsarán por defecto hasta que interactúes con ellos"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/fr/chat.json b/webview-ui/src/i18n/locales/fr/chat.json
index 151fe3932eb..4d31f328ad3 100644
--- a/webview-ui/src/i18n/locales/fr/chat.json
+++ b/webview-ui/src/i18n/locales/fr/chat.json
@@ -220,6 +220,9 @@
},
"response": "Réponse",
"arguments": "Arguments",
+ "text": {
+ "rooSaid": "Roo a dit"
+ },
"feedback": {
"youSaid": "Tu as dit"
},
diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json
index fd48e1e358f..cd2b3bef876 100644
--- a/webview-ui/src/i18n/locales/fr/settings.json
+++ b/webview-ui/src/i18n/locales/fr/settings.json
@@ -30,6 +30,7 @@
"terminal": "Terminal",
"slashCommands": "Commandes Slash",
"prompts": "Invites",
+ "ui": "UI",
"experimental": "Expérimental",
"language": "Langue",
"about": "À propos de Roo Code"
@@ -879,5 +880,11 @@
"output": "Sortie",
"cacheReads": "Lectures du cache"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "Réduire les messages de réflexion par défaut",
+ "description": "Si activé, les blocs de réflexion seront réduits par défaut jusqu'à ce que vous interagissiez avec eux"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/hi/chat.json b/webview-ui/src/i18n/locales/hi/chat.json
index a53070834c4..17b5ceef01d 100644
--- a/webview-ui/src/i18n/locales/hi/chat.json
+++ b/webview-ui/src/i18n/locales/hi/chat.json
@@ -220,6 +220,9 @@
},
"response": "प्रतिक्रिया",
"arguments": "आर्ग्युमेंट्स",
+ "text": {
+ "rooSaid": "रू ने कहा"
+ },
"feedback": {
"youSaid": "आपने कहा"
},
diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json
index 1383eb8703a..d9d8184fbbd 100644
--- a/webview-ui/src/i18n/locales/hi/settings.json
+++ b/webview-ui/src/i18n/locales/hi/settings.json
@@ -30,6 +30,7 @@
"terminal": "टर्मिनल",
"slashCommands": "स्लैश कमांड",
"prompts": "प्रॉम्प्ट्स",
+ "ui": "UI",
"experimental": "प्रायोगिक",
"language": "भाषा",
"about": "परिचय"
@@ -880,5 +881,11 @@
"output": "आउटपुट",
"cacheReads": "कैश रीड"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "सोच संदेशों को डिफ़ॉल्ट रूप से संक्षिप्त करें",
+ "description": "सक्षम होने पर, सोच ब्लॉक आपके द्वारा उनके साथ इंटरैक्ट करने तक डिफ़ॉल्ट रूप से संक्षिप्त रहेंगे"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/id/chat.json b/webview-ui/src/i18n/locales/id/chat.json
index e5b73067f40..532ab413031 100644
--- a/webview-ui/src/i18n/locales/id/chat.json
+++ b/webview-ui/src/i18n/locales/id/chat.json
@@ -242,6 +242,9 @@
},
"response": "Respons",
"arguments": "Argumen",
+ "text": {
+ "rooSaid": "Roo berkata"
+ },
"feedback": {
"youSaid": "Anda bilang"
},
diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json
index c29f6cf88c1..187f42958b6 100644
--- a/webview-ui/src/i18n/locales/id/settings.json
+++ b/webview-ui/src/i18n/locales/id/settings.json
@@ -30,6 +30,7 @@
"terminal": "Terminal",
"slashCommands": "Perintah Slash",
"prompts": "Prompt",
+ "ui": "UI",
"experimental": "Eksperimental",
"language": "Bahasa",
"about": "Tentang Roo Code"
@@ -909,5 +910,11 @@
"output": "Output",
"cacheReads": "Pembacaan cache"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "Ciutkan pesan Berpikir secara default",
+ "description": "Jika diaktifkan, blok berpikir akan diciutkan secara default sampai Anda berinteraksi dengannya"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/it/chat.json b/webview-ui/src/i18n/locales/it/chat.json
index f3fadd84d8e..fd3bf967d32 100644
--- a/webview-ui/src/i18n/locales/it/chat.json
+++ b/webview-ui/src/i18n/locales/it/chat.json
@@ -220,6 +220,9 @@
},
"response": "Risposta",
"arguments": "Argomenti",
+ "text": {
+ "rooSaid": "Roo ha detto"
+ },
"feedback": {
"youSaid": "Hai detto"
},
diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json
index a930c53a5e7..335877b0a87 100644
--- a/webview-ui/src/i18n/locales/it/settings.json
+++ b/webview-ui/src/i18n/locales/it/settings.json
@@ -30,6 +30,7 @@
"terminal": "Terminal",
"slashCommands": "Comandi Slash",
"prompts": "Prompt",
+ "ui": "UI",
"experimental": "Sperimentale",
"language": "Lingua",
"about": "Informazioni su Roo Code"
@@ -880,5 +881,11 @@
"output": "Output",
"cacheReads": "Letture cache"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "Comprimi i messaggi di pensiero per impostazione predefinita",
+ "description": "Se abilitato, i blocchi di pensiero verranno compressi per impostazione predefinita finché non interagisci con essi"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/ja/chat.json b/webview-ui/src/i18n/locales/ja/chat.json
index 1b0945e0d60..52e633b3ef5 100644
--- a/webview-ui/src/i18n/locales/ja/chat.json
+++ b/webview-ui/src/i18n/locales/ja/chat.json
@@ -220,6 +220,9 @@
},
"response": "応答",
"arguments": "引数",
+ "text": {
+ "rooSaid": "Rooの発言"
+ },
"feedback": {
"youSaid": "あなたの発言"
},
diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json
index c6b24dcd58d..bce95eeab20 100644
--- a/webview-ui/src/i18n/locales/ja/settings.json
+++ b/webview-ui/src/i18n/locales/ja/settings.json
@@ -30,6 +30,7 @@
"terminal": "ターミナル",
"slashCommands": "スラッシュコマンド",
"prompts": "プロンプト",
+ "ui": "UI",
"experimental": "実験的",
"language": "言語",
"about": "Roo Codeについて"
@@ -880,5 +881,11 @@
"output": "出力",
"cacheReads": "キャッシュ読み取り"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "デフォルトで思考メッセージを折りたたむ",
+ "description": "有効にすると、操作するまで思考ブロックがデフォルトで折りたたまれます"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/ko/chat.json b/webview-ui/src/i18n/locales/ko/chat.json
index a33131fb519..991955f1e8a 100644
--- a/webview-ui/src/i18n/locales/ko/chat.json
+++ b/webview-ui/src/i18n/locales/ko/chat.json
@@ -220,6 +220,9 @@
},
"response": "응답",
"arguments": "인수",
+ "text": {
+ "rooSaid": "루가 말했다"
+ },
"feedback": {
"youSaid": "당신은 말했다"
},
diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json
index 49ff40ebc79..f7aec2f4ced 100644
--- a/webview-ui/src/i18n/locales/ko/settings.json
+++ b/webview-ui/src/i18n/locales/ko/settings.json
@@ -30,6 +30,7 @@
"terminal": "터미널",
"slashCommands": "슬래시 명령",
"prompts": "프롬프트",
+ "ui": "UI",
"experimental": "실험적",
"language": "언어",
"about": "Roo Code 정보"
@@ -880,5 +881,11 @@
"output": "출력",
"cacheReads": "캐시 읽기"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "기본적으로 생각 메시지 접기",
+ "description": "활성화하면 상호 작용할 때까지 생각 블록이 기본적으로 접힙니다"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/nl/chat.json b/webview-ui/src/i18n/locales/nl/chat.json
index 3de1b2f23cc..e5d779f70c2 100644
--- a/webview-ui/src/i18n/locales/nl/chat.json
+++ b/webview-ui/src/i18n/locales/nl/chat.json
@@ -215,6 +215,9 @@
},
"response": "Antwoord",
"arguments": "Argumenten",
+ "text": {
+ "rooSaid": "Roo zei"
+ },
"feedback": {
"youSaid": "Jij zei"
},
diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json
index 571453c4b3b..d5b246e22ae 100644
--- a/webview-ui/src/i18n/locales/nl/settings.json
+++ b/webview-ui/src/i18n/locales/nl/settings.json
@@ -30,6 +30,7 @@
"terminal": "Terminal",
"slashCommands": "Slash-opdrachten",
"prompts": "Prompts",
+ "ui": "UI",
"experimental": "Experimenteel",
"language": "Taal",
"about": "Over Roo Code"
@@ -880,5 +881,11 @@
"output": "Uitvoer",
"cacheReads": "Cache leest"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "Denkberichten standaard samenvouwen",
+ "description": "Indien ingeschakeld, worden denkblokken standaard samengevouwen totdat je ermee interageert"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/pl/chat.json b/webview-ui/src/i18n/locales/pl/chat.json
index 30353c2eabb..26e8e59e2c6 100644
--- a/webview-ui/src/i18n/locales/pl/chat.json
+++ b/webview-ui/src/i18n/locales/pl/chat.json
@@ -220,6 +220,9 @@
},
"response": "Odpowiedź",
"arguments": "Argumenty",
+ "text": {
+ "rooSaid": "Roo powiedział"
+ },
"feedback": {
"youSaid": "Powiedziałeś"
},
diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json
index 51a5b4c3894..385a38fe2c4 100644
--- a/webview-ui/src/i18n/locales/pl/settings.json
+++ b/webview-ui/src/i18n/locales/pl/settings.json
@@ -30,6 +30,7 @@
"terminal": "Terminal",
"slashCommands": "Polecenia Slash",
"prompts": "Podpowiedzi",
+ "ui": "UI",
"experimental": "Eksperymentalne",
"language": "Język",
"about": "O Roo Code"
@@ -880,5 +881,11 @@
"output": "Wyjście",
"cacheReads": "Odczyty z pamięci podręcznej"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "Domyślnie zwijaj komunikaty o myśleniu",
+ "description": "Gdy włączone, bloki myślenia będą domyślnie zwinięte, dopóki nie wejdziesz z nimi w interakcję"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/pt-BR/chat.json b/webview-ui/src/i18n/locales/pt-BR/chat.json
index d6d0ba13fc9..b14a1bbaa79 100644
--- a/webview-ui/src/i18n/locales/pt-BR/chat.json
+++ b/webview-ui/src/i18n/locales/pt-BR/chat.json
@@ -220,6 +220,9 @@
},
"response": "Resposta",
"arguments": "Argumentos",
+ "text": {
+ "rooSaid": "Roo disse"
+ },
"feedback": {
"youSaid": "Você disse"
},
diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json
index 09320ea7196..be2ff89ff78 100644
--- a/webview-ui/src/i18n/locales/pt-BR/settings.json
+++ b/webview-ui/src/i18n/locales/pt-BR/settings.json
@@ -30,6 +30,7 @@
"terminal": "Terminal",
"slashCommands": "Comandos de Barra",
"prompts": "Prompts",
+ "ui": "UI",
"experimental": "Experimental",
"language": "Idioma",
"about": "Sobre"
@@ -880,5 +881,11 @@
"output": "Saída",
"cacheReads": "Leituras de cache"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "Recolher mensagens de pensamento por padrão",
+ "description": "Quando ativado, os blocos de pensamento serão recolhidos por padrão até que você interaja com eles"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/ru/chat.json b/webview-ui/src/i18n/locales/ru/chat.json
index 2d6e08377c0..c5acc9f25a3 100644
--- a/webview-ui/src/i18n/locales/ru/chat.json
+++ b/webview-ui/src/i18n/locales/ru/chat.json
@@ -216,6 +216,9 @@
},
"response": "Ответ",
"arguments": "Аргументы",
+ "text": {
+ "rooSaid": "Ру сказал"
+ },
"feedback": {
"youSaid": "Вы сказали"
},
diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json
index 3bed3624da2..b429f01f4e2 100644
--- a/webview-ui/src/i18n/locales/ru/settings.json
+++ b/webview-ui/src/i18n/locales/ru/settings.json
@@ -30,6 +30,7 @@
"terminal": "Терминал",
"slashCommands": "Слэш-команды",
"prompts": "Промпты",
+ "ui": "UI",
"experimental": "Экспериментальное",
"language": "Язык",
"about": "О Roo Code"
@@ -880,5 +881,11 @@
"output": "Выход",
"cacheReads": "Чтения из кэша"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "Сворачивать сообщения о размышлениях по умолчанию",
+ "description": "Если включено, блоки с размышлениями будут свернуты по умолчанию, пока вы не начнете с ними взаимодействовать"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/tr/chat.json b/webview-ui/src/i18n/locales/tr/chat.json
index 660766f0c5d..8e2a1077dfb 100644
--- a/webview-ui/src/i18n/locales/tr/chat.json
+++ b/webview-ui/src/i18n/locales/tr/chat.json
@@ -221,6 +221,9 @@
},
"response": "Yanıt",
"arguments": "Argümanlar",
+ "text": {
+ "rooSaid": "Roo dedi"
+ },
"feedback": {
"youSaid": "Dediniz ki"
},
diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json
index 7de08d48261..429599d7ea0 100644
--- a/webview-ui/src/i18n/locales/tr/settings.json
+++ b/webview-ui/src/i18n/locales/tr/settings.json
@@ -30,6 +30,7 @@
"terminal": "Terminal",
"slashCommands": "Eğik Çizgi Komutları",
"prompts": "Promptlar",
+ "ui": "UI",
"experimental": "Deneysel",
"language": "Dil",
"about": "Roo Code Hakkında"
@@ -880,5 +881,11 @@
"output": "Çıkış",
"cacheReads": "Önbellek okumaları"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "Düşünme mesajlarını varsayılan olarak daralt",
+ "description": "Etkinleştirildiğinde, düşünme blokları siz onlarla etkileşime girene kadar varsayılan olarak daraltılır"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/vi/chat.json b/webview-ui/src/i18n/locales/vi/chat.json
index ed328e44149..221ced0377a 100644
--- a/webview-ui/src/i18n/locales/vi/chat.json
+++ b/webview-ui/src/i18n/locales/vi/chat.json
@@ -221,6 +221,9 @@
},
"response": "Phản hồi",
"arguments": "Tham số",
+ "text": {
+ "rooSaid": "Roo đã nói"
+ },
"feedback": {
"youSaid": "Bạn đã nói"
},
diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json
index 46dc077d4d1..35fd639ba66 100644
--- a/webview-ui/src/i18n/locales/vi/settings.json
+++ b/webview-ui/src/i18n/locales/vi/settings.json
@@ -30,6 +30,7 @@
"terminal": "Terminal",
"slashCommands": "Lệnh Gạch Chéo",
"prompts": "Lời nhắc",
+ "ui": "UI",
"experimental": "Thử nghiệm",
"language": "Ngôn ngữ",
"about": "Giới thiệu"
@@ -880,5 +881,11 @@
"output": "Đầu ra",
"cacheReads": "Lượt đọc bộ nhớ đệm"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "Thu gọn tin nhắn Suy nghĩ theo mặc định",
+ "description": "Khi được bật, các khối suy nghĩ sẽ được thu gọn theo mặc định cho đến khi bạn tương tác với chúng"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/zh-CN/chat.json b/webview-ui/src/i18n/locales/zh-CN/chat.json
index 388a0cafe2b..cbb0e8633ce 100644
--- a/webview-ui/src/i18n/locales/zh-CN/chat.json
+++ b/webview-ui/src/i18n/locales/zh-CN/chat.json
@@ -221,6 +221,9 @@
},
"response": "响应",
"arguments": "参数",
+ "text": {
+ "rooSaid": "Roo 说"
+ },
"feedback": {
"youSaid": "你说"
},
diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json
index ab47a2c9e08..abb3e44637c 100644
--- a/webview-ui/src/i18n/locales/zh-CN/settings.json
+++ b/webview-ui/src/i18n/locales/zh-CN/settings.json
@@ -30,6 +30,7 @@
"terminal": "终端",
"slashCommands": "斜杠命令",
"prompts": "提示词",
+ "ui": "UI",
"experimental": "实验性",
"language": "语言",
"about": "关于 Roo Code"
@@ -880,5 +881,11 @@
"output": "输出",
"cacheReads": "缓存读取"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "默认折叠“思考”消息",
+ "description": "启用后,“思考”块将默认折叠,直到您与其交互"
+ }
}
}
diff --git a/webview-ui/src/i18n/locales/zh-TW/chat.json b/webview-ui/src/i18n/locales/zh-TW/chat.json
index bd1d9566d8d..dbc4b3dd9f8 100644
--- a/webview-ui/src/i18n/locales/zh-TW/chat.json
+++ b/webview-ui/src/i18n/locales/zh-TW/chat.json
@@ -240,6 +240,9 @@
},
"response": "回應",
"arguments": "參數",
+ "text": {
+ "rooSaid": "Roo 說"
+ },
"feedback": {
"youSaid": "您說"
},
diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json
index 57d647d9cf8..91f7c5677a4 100644
--- a/webview-ui/src/i18n/locales/zh-TW/settings.json
+++ b/webview-ui/src/i18n/locales/zh-TW/settings.json
@@ -30,6 +30,7 @@
"terminal": "終端機",
"slashCommands": "斜線命令",
"prompts": "提示詞",
+ "ui": "UI",
"experimental": "實驗性",
"language": "語言",
"about": "關於 Roo Code"
@@ -880,5 +881,11 @@
"output": "輸出",
"cacheReads": "快取讀取"
}
+ },
+ "ui": {
+ "collapseThinking": {
+ "label": "預設折疊“思考”訊息",
+ "description": "啟用後,“思考”塊將預設折疊,直到您與其互動"
+ }
}
}