diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index e09cdc557a3..d5cc44f4bef 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -1373,10 +1373,10 @@ const ChatViewComponent: React.ForwardRefRenderFunction= 6 && ( } + icon={} onClick={() => openUpsell()} dismissOnClick={false} - className="!bg-vscode-editor-background mt-6 border-border rounded-xl pl-4 pr-3 py-3 !text-base"> + className="bg-none mt-6 border-border rounded-xl p-0 py-3 !text-base"> opt.value === "openrouter") + if (openRouterIndex > 0) { + const [openRouterOption] = options.splice(openRouterIndex, 1) + options.unshift(openRouterOption) + } } return options @@ -475,16 +482,15 @@ const ApiOptions = ({
- + {selectedProvider === "roo" && cloudIsAuthenticated ? ( ) : ( docs && ( -
- - {t("settings:providers.providerDocumentation", { provider: docs.name })} - -
+ + {docs.name} + + ) )}
@@ -509,7 +515,7 @@ const ApiOptions = ({ routerModels={routerModels} selectedModelId={selectedModelId} uriScheme={uriScheme} - fromWelcomeView={fromWelcomeView} + simplifySettings={fromWelcomeView} organizationAllowList={organizationAllowList} modelValidationError={modelValidationError} /> @@ -524,6 +530,7 @@ const ApiOptions = ({ refetchRouterModels={refetchRouterModels} organizationAllowList={organizationAllowList} modelValidationError={modelValidationError} + simplifySettings={fromWelcomeView} /> )} @@ -535,6 +542,7 @@ const ApiOptions = ({ uriScheme={uriScheme} organizationAllowList={organizationAllowList} modelValidationError={modelValidationError} + simplifySettings={fromWelcomeView} /> )} @@ -545,6 +553,7 @@ const ApiOptions = ({ routerModels={routerModels} organizationAllowList={organizationAllowList} modelValidationError={modelValidationError} + simplifySettings={fromWelcomeView} /> )} @@ -556,15 +565,24 @@ const ApiOptions = ({ refetchRouterModels={refetchRouterModels} organizationAllowList={organizationAllowList} modelValidationError={modelValidationError} + simplifySettings={fromWelcomeView} /> )} {selectedProvider === "anthropic" && ( - + )} {selectedProvider === "claude-code" && ( - + )} {selectedProvider === "openai-native" && ( @@ -572,15 +590,24 @@ const ApiOptions = ({ apiConfiguration={apiConfiguration} setApiConfigurationField={setApiConfigurationField} selectedModelInfo={selectedModelInfo} + simplifySettings={fromWelcomeView} /> )} {selectedProvider === "mistral" && ( - + )} {selectedProvider === "baseten" && ( - + )} {selectedProvider === "bedrock" && ( @@ -588,6 +615,7 @@ const ApiOptions = ({ apiConfiguration={apiConfiguration} setApiConfigurationField={setApiConfigurationField} selectedModelInfo={selectedModelInfo} + simplifySettings={fromWelcomeView} /> )} @@ -595,7 +623,7 @@ const ApiOptions = ({ )} @@ -603,7 +631,7 @@ const ApiOptions = ({ )} @@ -613,27 +641,48 @@ const ApiOptions = ({ setApiConfigurationField={setApiConfigurationField} organizationAllowList={organizationAllowList} modelValidationError={modelValidationError} + simplifySettings={fromWelcomeView} /> )} {selectedProvider === "lmstudio" && ( - + )} {selectedProvider === "deepseek" && ( - + )} {selectedProvider === "doubao" && ( - + )} {selectedProvider === "qwen-code" && ( - + )} {selectedProvider === "moonshot" && ( - + )} {selectedProvider === "minimax" && ( @@ -671,6 +720,7 @@ const ApiOptions = ({ routerModels={routerModels} organizationAllowList={organizationAllowList} modelValidationError={modelValidationError} + simplifySettings={fromWelcomeView} /> )} @@ -680,6 +730,7 @@ const ApiOptions = ({ setApiConfigurationField={setApiConfigurationField} organizationAllowList={organizationAllowList} modelValidationError={modelValidationError} + simplifySettings={fromWelcomeView} /> )} @@ -697,6 +748,7 @@ const ApiOptions = ({ setApiConfigurationField={setApiConfigurationField} organizationAllowList={organizationAllowList} modelValidationError={modelValidationError} + simplifySettings={fromWelcomeView} /> )} @@ -707,6 +759,7 @@ const ApiOptions = ({ routerModels={routerModels} organizationAllowList={organizationAllowList} modelValidationError={modelValidationError} + simplifySettings={fromWelcomeView} /> )} @@ -733,6 +786,7 @@ const ApiOptions = ({ cloudIsAuthenticated={cloudIsAuthenticated} organizationAllowList={organizationAllowList} modelValidationError={modelValidationError} + simplifySettings={fromWelcomeView} /> )} @@ -801,24 +855,25 @@ const ApiOptions = ({ )} - {selectedProvider === "roo" ? ( - - ) : ( - - )} + {!fromWelcomeView && + (selectedProvider === "roo" ? ( + + ) : ( + + ))} {/* Gate Verbosity UI by capability flag */} - {selectedModelInfo?.supportsVerbosity && ( + {!fromWelcomeView && selectedModelInfo?.supportsVerbosity && ( void organizationAllowList: OrganizationAllowList errorMessage?: string + simplifySettings?: boolean } export const ModelPicker = ({ @@ -66,6 +67,7 @@ export const ModelPicker = ({ setApiConfigurationField, organizationAllowList, errorMessage, + simplifySettings, }: ModelPickerProps) => { const { t } = useAppTranslation() @@ -246,25 +248,37 @@ export const ModelPicker = ({ {selectedModelInfo?.deprecated && ( )} - {selectedModelId && selectedModelInfo && !selectedModelInfo.deprecated && ( - + + {simplifySettings ? ( +

+ + {t("settings:modelPicker.simplifiedExplanation")} +

+ ) : ( +
+ {selectedModelId && selectedModelInfo && !selectedModelInfo.deprecated && ( + + )} +
+ , + defaultModelLink: ( + onSelect(defaultModelId)} className="text-sm" /> + ), + }} + values={{ serviceName, defaultModelId }} + /> +
+
)} -
- , - defaultModelLink: onSelect(defaultModelId)} className="text-sm" />, - }} - values={{ serviceName, defaultModelId }} - /> -
) } diff --git a/webview-ui/src/components/settings/providers/Anthropic.tsx b/webview-ui/src/components/settings/providers/Anthropic.tsx index feef788d49e..46a239a3fd6 100644 --- a/webview-ui/src/components/settings/providers/Anthropic.tsx +++ b/webview-ui/src/components/settings/providers/Anthropic.tsx @@ -13,6 +13,7 @@ import { inputEventTransform, noTransform } from "../transforms" type AnthropicProps = { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void + simplifySettings?: boolean } export const Anthropic = ({ apiConfiguration, setApiConfigurationField }: AnthropicProps) => { diff --git a/webview-ui/src/components/settings/providers/Baseten.tsx b/webview-ui/src/components/settings/providers/Baseten.tsx index f4b26beab42..2f4efd62c1d 100644 --- a/webview-ui/src/components/settings/providers/Baseten.tsx +++ b/webview-ui/src/components/settings/providers/Baseten.tsx @@ -11,6 +11,7 @@ import { inputEventTransform } from "../transforms" type BasetenProps = { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void + simplifySettings?: boolean } export const Baseten = ({ apiConfiguration, setApiConfigurationField }: BasetenProps) => { diff --git a/webview-ui/src/components/settings/providers/Bedrock.tsx b/webview-ui/src/components/settings/providers/Bedrock.tsx index d23eb5752a3..fac75170e96 100644 --- a/webview-ui/src/components/settings/providers/Bedrock.tsx +++ b/webview-ui/src/components/settings/providers/Bedrock.tsx @@ -19,6 +19,7 @@ type BedrockProps = { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void selectedModelInfo?: ModelInfo + simplifySettings?: boolean } export const Bedrock = ({ apiConfiguration, setApiConfigurationField, selectedModelInfo }: BedrockProps) => { diff --git a/webview-ui/src/components/settings/providers/Chutes.tsx b/webview-ui/src/components/settings/providers/Chutes.tsx index 276ce113657..f061ce49e25 100644 --- a/webview-ui/src/components/settings/providers/Chutes.tsx +++ b/webview-ui/src/components/settings/providers/Chutes.tsx @@ -18,6 +18,7 @@ type ChutesProps = { routerModels?: RouterModels organizationAllowList: OrganizationAllowList modelValidationError?: string + simplifySettings?: boolean } export const Chutes = ({ @@ -26,6 +27,7 @@ export const Chutes = ({ routerModels, organizationAllowList, modelValidationError, + simplifySettings, }: ChutesProps) => { const { t } = useAppTranslation() @@ -69,6 +71,7 @@ export const Chutes = ({ serviceUrl="https://llm.chutes.ai/v1/models" organizationAllowList={organizationAllowList} errorMessage={modelValidationError} + simplifySettings={simplifySettings} /> ) diff --git a/webview-ui/src/components/settings/providers/ClaudeCode.tsx b/webview-ui/src/components/settings/providers/ClaudeCode.tsx index 5ae5f7de282..706c51339f3 100644 --- a/webview-ui/src/components/settings/providers/ClaudeCode.tsx +++ b/webview-ui/src/components/settings/providers/ClaudeCode.tsx @@ -7,6 +7,7 @@ import { Slider } from "@src/components/ui" interface ClaudeCodeProps { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void + simplifySettings?: boolean } export const ClaudeCode: React.FC = ({ apiConfiguration, setApiConfigurationField }) => { diff --git a/webview-ui/src/components/settings/providers/DeepInfra.tsx b/webview-ui/src/components/settings/providers/DeepInfra.tsx index eee3d3996dc..4dca94c39dc 100644 --- a/webview-ui/src/components/settings/providers/DeepInfra.tsx +++ b/webview-ui/src/components/settings/providers/DeepInfra.tsx @@ -19,6 +19,7 @@ type DeepInfraProps = { refetchRouterModels: () => void organizationAllowList: OrganizationAllowList modelValidationError?: string + simplifySettings?: boolean } export const DeepInfra = ({ @@ -28,6 +29,7 @@ export const DeepInfra = ({ refetchRouterModels, organizationAllowList, modelValidationError, + simplifySettings, }: DeepInfraProps) => { const { t } = useAppTranslation() @@ -88,6 +90,7 @@ export const DeepInfra = ({ serviceUrl="https://deepinfra.com/models" organizationAllowList={organizationAllowList} errorMessage={modelValidationError} + simplifySettings={simplifySettings} /> ) diff --git a/webview-ui/src/components/settings/providers/DeepSeek.tsx b/webview-ui/src/components/settings/providers/DeepSeek.tsx index 6f0ac2d92af..cd60609f498 100644 --- a/webview-ui/src/components/settings/providers/DeepSeek.tsx +++ b/webview-ui/src/components/settings/providers/DeepSeek.tsx @@ -11,6 +11,7 @@ import { inputEventTransform } from "../transforms" type DeepSeekProps = { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void + simplifySettings?: boolean } export const DeepSeek = ({ apiConfiguration, setApiConfigurationField }: DeepSeekProps) => { diff --git a/webview-ui/src/components/settings/providers/Doubao.tsx b/webview-ui/src/components/settings/providers/Doubao.tsx index 5e06c0d6fe1..ed56529e385 100644 --- a/webview-ui/src/components/settings/providers/Doubao.tsx +++ b/webview-ui/src/components/settings/providers/Doubao.tsx @@ -11,6 +11,7 @@ import { inputEventTransform } from "../transforms" type DoubaoProps = { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void + simplifySettings?: boolean } export const Doubao = ({ apiConfiguration, setApiConfigurationField }: DoubaoProps) => { diff --git a/webview-ui/src/components/settings/providers/Gemini.tsx b/webview-ui/src/components/settings/providers/Gemini.tsx index ec2e19353c3..ad413df136e 100644 --- a/webview-ui/src/components/settings/providers/Gemini.tsx +++ b/webview-ui/src/components/settings/providers/Gemini.tsx @@ -12,10 +12,10 @@ import { inputEventTransform } from "../transforms" type GeminiProps = { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void - fromWelcomeView?: boolean + simplifySettings?: boolean } -export const Gemini = ({ apiConfiguration, setApiConfigurationField, fromWelcomeView }: GeminiProps) => { +export const Gemini = ({ apiConfiguration, setApiConfigurationField, simplifySettings }: GeminiProps) => { const { t } = useAppTranslation() const [googleGeminiBaseUrlSelected, setGoogleGeminiBaseUrlSelected] = useState( @@ -74,7 +74,7 @@ export const Gemini = ({ apiConfiguration, setApiConfigurationField, fromWelcome /> )} - {!fromWelcomeView && ( + {!simplifySettings && ( <> { const { t } = useAppTranslation() @@ -70,6 +72,7 @@ export const Glama = ({ serviceUrl="https://glama.ai/models" organizationAllowList={organizationAllowList} errorMessage={modelValidationError} + simplifySettings={simplifySettings} /> ) diff --git a/webview-ui/src/components/settings/providers/IOIntelligence.tsx b/webview-ui/src/components/settings/providers/IOIntelligence.tsx index 4a7f74797ae..f54d77b14ae 100644 --- a/webview-ui/src/components/settings/providers/IOIntelligence.tsx +++ b/webview-ui/src/components/settings/providers/IOIntelligence.tsx @@ -21,6 +21,7 @@ type IOIntelligenceProps = { setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void organizationAllowList: OrganizationAllowList modelValidationError?: string + simplifySettings?: boolean } export const IOIntelligence = ({ @@ -28,6 +29,7 @@ export const IOIntelligence = ({ setApiConfigurationField, organizationAllowList, modelValidationError, + simplifySettings, }: IOIntelligenceProps) => { const { t } = useAppTranslation() const { routerModels } = useExtensionState() @@ -71,6 +73,7 @@ export const IOIntelligence = ({ setApiConfigurationField={setApiConfigurationField} organizationAllowList={organizationAllowList} errorMessage={modelValidationError} + simplifySettings={simplifySettings} /> ) diff --git a/webview-ui/src/components/settings/providers/LMStudio.tsx b/webview-ui/src/components/settings/providers/LMStudio.tsx index e3401aa62c4..04fb53aa272 100644 --- a/webview-ui/src/components/settings/providers/LMStudio.tsx +++ b/webview-ui/src/components/settings/providers/LMStudio.tsx @@ -17,6 +17,7 @@ import { ModelRecord } from "@roo/api" type LMStudioProps = { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void + simplifySettings?: boolean } export const LMStudio = ({ apiConfiguration, setApiConfigurationField }: LMStudioProps) => { diff --git a/webview-ui/src/components/settings/providers/LiteLLM.tsx b/webview-ui/src/components/settings/providers/LiteLLM.tsx index 6579b2432df..0b89b671ce9 100644 --- a/webview-ui/src/components/settings/providers/LiteLLM.tsx +++ b/webview-ui/src/components/settings/providers/LiteLLM.tsx @@ -19,6 +19,7 @@ type LiteLLMProps = { setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void organizationAllowList: OrganizationAllowList modelValidationError?: string + simplifySettings?: boolean } export const LiteLLM = ({ @@ -26,6 +27,7 @@ export const LiteLLM = ({ setApiConfigurationField, organizationAllowList, modelValidationError, + simplifySettings, }: LiteLLMProps) => { const { t } = useAppTranslation() const { routerModels } = useExtensionState() @@ -151,6 +153,7 @@ export const LiteLLM = ({ setApiConfigurationField={setApiConfigurationField} organizationAllowList={organizationAllowList} errorMessage={modelValidationError} + simplifySettings={simplifySettings} /> {/* Show prompt caching option if the selected model supports it */} diff --git a/webview-ui/src/components/settings/providers/Mistral.tsx b/webview-ui/src/components/settings/providers/Mistral.tsx index 666d1421c31..0c394a3c310 100644 --- a/webview-ui/src/components/settings/providers/Mistral.tsx +++ b/webview-ui/src/components/settings/providers/Mistral.tsx @@ -14,6 +14,7 @@ type MistralProps = { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void routerModels?: RouterModels + simplifySettings?: boolean } export const Mistral = ({ apiConfiguration, setApiConfigurationField }: MistralProps) => { diff --git a/webview-ui/src/components/settings/providers/Moonshot.tsx b/webview-ui/src/components/settings/providers/Moonshot.tsx index db5f162a9d6..f9ec8e02729 100644 --- a/webview-ui/src/components/settings/providers/Moonshot.tsx +++ b/webview-ui/src/components/settings/providers/Moonshot.tsx @@ -12,6 +12,7 @@ import { cn } from "@/lib/utils" type MoonshotProps = { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void + simplifySettings?: boolean } export const Moonshot = ({ apiConfiguration, setApiConfigurationField }: MoonshotProps) => { diff --git a/webview-ui/src/components/settings/providers/OpenAI.tsx b/webview-ui/src/components/settings/providers/OpenAI.tsx index 59b907c45a5..96fd6c89bed 100644 --- a/webview-ui/src/components/settings/providers/OpenAI.tsx +++ b/webview-ui/src/components/settings/providers/OpenAI.tsx @@ -14,6 +14,7 @@ type OpenAIProps = { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void selectedModelInfo?: ModelInfo + simplifySettings?: boolean } export const OpenAI = ({ apiConfiguration, setApiConfigurationField, selectedModelInfo }: OpenAIProps) => { diff --git a/webview-ui/src/components/settings/providers/OpenAICompatible.tsx b/webview-ui/src/components/settings/providers/OpenAICompatible.tsx index aada8c5f3d5..ad338d342ab 100644 --- a/webview-ui/src/components/settings/providers/OpenAICompatible.tsx +++ b/webview-ui/src/components/settings/providers/OpenAICompatible.tsx @@ -28,6 +28,7 @@ type OpenAICompatibleProps = { setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void organizationAllowList: OrganizationAllowList modelValidationError?: string + simplifySettings?: boolean } export const OpenAICompatible = ({ @@ -35,6 +36,7 @@ export const OpenAICompatible = ({ setApiConfigurationField, organizationAllowList, modelValidationError, + simplifySettings, }: OpenAICompatibleProps) => { const { t } = useAppTranslation() @@ -147,6 +149,7 @@ export const OpenAICompatible = ({ serviceUrl="https://platform.openai.com" organizationAllowList={organizationAllowList} errorMessage={modelValidationError} + simplifySettings={simplifySettings} /> { @@ -77,7 +77,7 @@ export const OpenRouter = ({ {t("settings:providers.getOpenRouterApiKey")} )} - {!fromWelcomeView && ( + {!simplifySettings && ( <>
) diff --git a/webview-ui/src/components/settings/providers/QwenCode.tsx b/webview-ui/src/components/settings/providers/QwenCode.tsx index e521d509d65..e3cfe2c96a5 100644 --- a/webview-ui/src/components/settings/providers/QwenCode.tsx +++ b/webview-ui/src/components/settings/providers/QwenCode.tsx @@ -5,6 +5,7 @@ import { type ProviderSettings } from "@roo-code/types" interface QwenCodeProps { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void + simplifySettings?: boolean } export const QwenCode: React.FC = ({ apiConfiguration, setApiConfigurationField }) => { diff --git a/webview-ui/src/components/settings/providers/Requesty.tsx b/webview-ui/src/components/settings/providers/Requesty.tsx index a2015e4970a..0285dbaed01 100644 --- a/webview-ui/src/components/settings/providers/Requesty.tsx +++ b/webview-ui/src/components/settings/providers/Requesty.tsx @@ -23,6 +23,7 @@ type RequestyProps = { organizationAllowList: OrganizationAllowList modelValidationError?: string uriScheme?: string + simplifySettings?: boolean } export const Requesty = ({ @@ -33,6 +34,7 @@ export const Requesty = ({ organizationAllowList, modelValidationError, uriScheme, + simplifySettings, }: RequestyProps) => { const { t } = useAppTranslation() @@ -143,6 +145,7 @@ export const Requesty = ({ serviceUrl="https://requesty.ai" organizationAllowList={organizationAllowList} errorMessage={modelValidationError} + simplifySettings={simplifySettings} /> ) diff --git a/webview-ui/src/components/settings/providers/Roo.tsx b/webview-ui/src/components/settings/providers/Roo.tsx index 3fc7f090d7d..fec1d2bc1a6 100644 --- a/webview-ui/src/components/settings/providers/Roo.tsx +++ b/webview-ui/src/components/settings/providers/Roo.tsx @@ -15,6 +15,7 @@ type RooProps = { cloudIsAuthenticated: boolean organizationAllowList: OrganizationAllowList modelValidationError?: string + simplifySettings?: boolean } export const Roo = ({ @@ -24,6 +25,7 @@ export const Roo = ({ cloudIsAuthenticated, organizationAllowList, modelValidationError, + simplifySettings, }: RooProps) => { const { t } = useAppTranslation() @@ -55,6 +57,7 @@ export const Roo = ({ serviceUrl="https://roocode.com" organizationAllowList={organizationAllowList} errorMessage={modelValidationError} + simplifySettings={simplifySettings} /> ) diff --git a/webview-ui/src/components/settings/providers/Unbound.tsx b/webview-ui/src/components/settings/providers/Unbound.tsx index 15826d0c0b4..e3a064434ea 100644 --- a/webview-ui/src/components/settings/providers/Unbound.tsx +++ b/webview-ui/src/components/settings/providers/Unbound.tsx @@ -24,6 +24,7 @@ type UnboundProps = { routerModels?: RouterModels organizationAllowList: OrganizationAllowList modelValidationError?: string + simplifySettings?: boolean } export const Unbound = ({ @@ -32,6 +33,7 @@ export const Unbound = ({ routerModels, organizationAllowList, modelValidationError, + simplifySettings, }: UnboundProps) => { const { t } = useAppTranslation() const [didRefetch, setDidRefetch] = useState() @@ -185,6 +187,7 @@ export const Unbound = ({ setApiConfigurationField={setApiConfigurationField} organizationAllowList={organizationAllowList} errorMessage={modelValidationError} + simplifySettings={simplifySettings} /> ) diff --git a/webview-ui/src/components/settings/providers/VercelAiGateway.tsx b/webview-ui/src/components/settings/providers/VercelAiGateway.tsx index e816e79e34b..4578c871bdb 100644 --- a/webview-ui/src/components/settings/providers/VercelAiGateway.tsx +++ b/webview-ui/src/components/settings/providers/VercelAiGateway.tsx @@ -17,6 +17,7 @@ type VercelAiGatewayProps = { routerModels?: RouterModels organizationAllowList: OrganizationAllowList modelValidationError?: string + simplifySettings?: boolean } export const VercelAiGateway = ({ @@ -25,6 +26,7 @@ export const VercelAiGateway = ({ routerModels, organizationAllowList, modelValidationError, + simplifySettings, }: VercelAiGatewayProps) => { const { t } = useAppTranslation() @@ -70,6 +72,7 @@ export const VercelAiGateway = ({ serviceUrl="https://vercel.com/ai-gateway/models" organizationAllowList={organizationAllowList} errorMessage={modelValidationError} + simplifySettings={simplifySettings} /> ) diff --git a/webview-ui/src/components/settings/providers/Vertex.tsx b/webview-ui/src/components/settings/providers/Vertex.tsx index 1a57f4fa5e9..57e82bad42b 100644 --- a/webview-ui/src/components/settings/providers/Vertex.tsx +++ b/webview-ui/src/components/settings/providers/Vertex.tsx @@ -12,10 +12,10 @@ import { inputEventTransform } from "../transforms" type VertexProps = { apiConfiguration: ProviderSettings setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void - fromWelcomeView?: boolean + simplifySettings?: boolean } -export const Vertex = ({ apiConfiguration, setApiConfigurationField, fromWelcomeView }: VertexProps) => { +export const Vertex = ({ apiConfiguration, setApiConfigurationField, simplifySettings }: VertexProps) => { const { t } = useAppTranslation() const handleInputChange = useCallback( @@ -94,7 +94,7 @@ export const Vertex = ({ apiConfiguration, setApiConfigurationField, fromWelcome
- {!fromWelcomeView && apiConfiguration.apiModelId?.startsWith("gemini") && ( + {!simplifySettings && apiConfiguration.apiModelId?.startsWith("gemini") && (
{ }) }) - describe("fromWelcomeView prop", () => { - it("should hide URL context and grounding checkboxes when fromWelcomeView is true, but keep custom base URL", () => { + describe("simplifySettings prop", () => { + it("should hide URL context and grounding checkboxes when simplifySettings is true, but keep custom base URL", () => { render( , ) @@ -145,12 +145,12 @@ describe("Gemini", () => { expect(screen.queryByTestId("checkbox-grounding-search")).not.toBeInTheDocument() }) - it("should show all checkboxes when fromWelcomeView is false", () => { + it("should show all checkboxes when simplifySettings is false", () => { render( , ) @@ -160,7 +160,7 @@ describe("Gemini", () => { expect(screen.getByTestId("checkbox-grounding-search")).toBeInTheDocument() }) - it("should show all checkboxes when fromWelcomeView is undefined (default behavior)", () => { + it("should show all checkboxes when simplifySettings is undefined (default behavior)", () => { render( { expect(urlContextCheckbox).toBeNull() }) - it("should NOT render URL context checkbox when fromWelcomeView is true", () => { + it("should NOT render URL context checkbox when simplifySettings is true", () => { render( , ) @@ -208,12 +208,12 @@ describe("Vertex", () => { expect(groundingCheckbox).toBeNull() }) - it("should NOT render grounding search checkbox when fromWelcomeView is true", () => { + it("should NOT render grounding search checkbox when simplifySettings is true", () => { render( , ) diff --git a/webview-ui/src/components/welcome/WelcomeViewProvider.tsx b/webview-ui/src/components/welcome/WelcomeViewProvider.tsx index 40b8e5ca660..ceebdd7b181 100644 --- a/webview-ui/src/components/welcome/WelcomeViewProvider.tsx +++ b/webview-ui/src/components/welcome/WelcomeViewProvider.tsx @@ -1,5 +1,11 @@ import { useCallback, useEffect, useRef, useState } from "react" -import { VSCodeLink, VSCodeProgressRing, VSCodeTextField } from "@vscode/webview-ui-toolkit/react" +import { + VSCodeLink, + VSCodeProgressRing, + VSCodeRadio, + VSCodeRadioGroup, + VSCodeTextField, +} from "@vscode/webview-ui-toolkit/react" import type { ProviderSettings } from "@roo-code/types" @@ -14,7 +20,7 @@ import { Tab, TabContent } from "../common/Tab" import RooHero from "./RooHero" import { Trans } from "react-i18next" -import { ArrowLeft } from "lucide-react" +import { ArrowLeft, ArrowRight, BadgeInfo } from "lucide-react" type ProviderOption = "roo" | "custom" @@ -27,6 +33,7 @@ const WelcomeViewProvider = () => { const [authInProgress, setAuthInProgress] = useState(false) const [showManualEntry, setShowManualEntry] = useState(false) const [manualUrl, setManualUrl] = useState("") + const [manualErrorMessage, setManualErrorMessage] = useState(undefined) const manualUrlInputRef = useRef(null) // When auth completes during the provider signup flow, save the Roo config @@ -92,6 +99,7 @@ const WelcomeViewProvider = () => { setAuthInProgress(false) setShowManualEntry(false) setManualUrl("") + setManualErrorMessage(false) }, []) const handleManualUrlChange = (e: any) => { @@ -101,19 +109,21 @@ const WelcomeViewProvider = () => { // Auto-trigger authentication when a complete URL is pasted setTimeout(() => { if (url.trim() && url.includes("://") && url.includes("/auth/clerk/callback")) { + setManualErrorMessage(false) vscode.postMessage({ type: "rooCloudManualUrl", text: url.trim() }) } }, 100) } - const handleKeyDown = (e: any) => { - if (e.key === "Enter") { - const url = manualUrl.trim() - if (url && url.includes("://") && url.includes("/auth/clerk/callback")) { - vscode.postMessage({ type: "rooCloudManualUrl", text: url }) - } + const handleSubmit = useCallback(() => { + const url = manualUrl.trim() + if (url && url.includes("://") && url.includes("/auth/clerk/callback")) { + setManualErrorMessage(false) + vscode.postMessage({ type: "rooCloudManualUrl", text: url }) + } else { + setManualErrorMessage(true) } - } + }, [manualUrl]) const handleOpenSignupUrl = () => { vscode.postMessage({ type: "rooCloudSignIn", useProviderSignup: true }) @@ -127,132 +137,149 @@ const WelcomeViewProvider = () => {

{t("welcome:waitingForCloud.heading")}

-

+

{t("welcome:waitingForCloud.description")}

-

- - ), - }} - /> -

- -

- setShowManualEntry(true)} - className="text-vscode-textLink-foreground hover:text-vscode-textLink-activeForeground underline cursor-pointer bg-transparent border-none p-0 text-sm" - /> - ), - }} - /> -

+
+ +

+ + ), + }} + /> +

+
- {showManualEntry && ( -
-

- {t("welcome:waitingForCloud.pasteUrl")} +

+ +
+

+ setShowManualEntry(true)} + className="text-vscode-textLink-foreground hover:text-vscode-textLink-activeForeground underline cursor-pointer bg-transparent border-none p-0 " + /> + ), + }} + />

- + + {showManualEntry && ( +
+

+ {t("welcome:waitingForCloud.pasteUrl")} +

+
+ + +
+ {manualUrl && manualErrorMessage && ( +

+ {t("welcome:waitingForCloud.invalidURL")} +

+ )} +
+ )}
- )} +
+
+ +
+
-
- -
) } return ( - +

{t("welcome:greeting")}

-
-

- -

-

+

+ {selectedProvider === "roo" && ( +

+ +

+ )} +

- {/* Roo Code Cloud Provider Option */} -
setSelectedProvider("roo")}> - setSelectedProvider("roo")} - className="mt-1" - /> -
- - {t("welcome:providerSignup.rooCloudProvider")} - -

- {t("welcome:providerSignup.rooCloudDescription")} ( - - {t("welcome:providerSignup.learnMore")} - - ). -

-
-
+ ) => { + const target = ((e as CustomEvent)?.detail?.target || + (e.target as HTMLInputElement)) as HTMLInputElement + setSelectedProvider(target.value as ProviderOption) + }}> + {/* Roo Code Cloud Provider Option */} + +
+

+ {t("welcome:providerSignup.rooCloudProvider")} +

+

+ {t("welcome:providerSignup.rooCloudDescription")} ( + + {t("welcome:providerSignup.learnMore")} + + ). +

+
+
- {/* Use Another Provider Option */} -
setSelectedProvider("custom")}> - setSelectedProvider("custom")} - className="mt-1" - /> -
- - {t("welcome:providerSignup.useAnotherProvider")} - -

- {t("welcome:providerSignup.useAnotherProviderDescription")} -

-
-
+ {/* Use Another Provider Option */} + +
+

+ {t("welcome:providerSignup.useAnotherProvider")} +

+

+ {t("welcome:providerSignup.useAnotherProviderDescription")} +

+
+
+
- {/* Show API options only when custom provider is selected */} - {selectedProvider === "custom" && ( -
+ {/* Expand API options only when custom provider is selected, max height is used to force a transition */} +
+
+

+ {t("welcome:providerSignup.noApiKeys")} +

{ setErrorMessage={setErrorMessage} />
- )} +
- -
-
+ +
- {errorMessage && selectedProvider === "custom" && ( -
{errorMessage}
- )}
-
+ ) } diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index 75feccd2ddb..4ee88b5ffec 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -858,7 +858,8 @@ "label": "Model", "searchPlaceholder": "Cerca", "noMatchFound": "No s'ha trobat cap coincidència", - "useCustomModel": "Utilitzar personalitzat: {{modelId}}" + "useCustomModel": "Utilitzar personalitzat: {{modelId}}", + "simplifiedExplanation": "Pots ajustar la configuració detallada del model més tard." }, "footer": { "feedback": "Si teniu qualsevol pregunta o comentari, no dubteu a obrir un issue a github.com/RooCodeInc/Roo-Code o unir-vos a reddit.com/r/RooCode o discord.gg/roocode", diff --git a/webview-ui/src/i18n/locales/ca/welcome.json b/webview-ui/src/i18n/locales/ca/welcome.json index 08bface0921..5c19c5e7745 100644 --- a/webview-ui/src/i18n/locales/ca/welcome.json +++ b/webview-ui/src/i18n/locales/ca/welcome.json @@ -23,6 +23,7 @@ "learnMore": "més informació", "useAnotherProvider": "Utilitza un altre proveïdor", "useAnotherProviderDescription": "Introdueix una clau API i comença.", + "noApiKeys": "No vols haver de tractar amb claus? Opta pel Proveïdor Roo Code Cloud.", "getStarted": "Començar" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "Si no se t'avisa per obrir una URL, feu clic aquí.", "havingTrouble": "Si has completat el registre però tens problemes, feu clic aquí.", "pasteUrl": "Enganxa la URL de resposta del teu navegador:", + "invalidURL": "No sembla una URL de resposta vàlida. Copia el que Roo Code Cloud mostra al teu navegador.", "goBack": "Enrere" }, "startRouter": "Recomanem utilitzar un router LLM:", diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index 2b380115780..5545d587035 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -858,7 +858,8 @@ "label": "Modell", "searchPlaceholder": "Suchen", "noMatchFound": "Keine Übereinstimmung gefunden", - "useCustomModel": "Benutzerdefiniert verwenden: {{modelId}}" + "useCustomModel": "Benutzerdefiniert verwenden: {{modelId}}", + "simplifiedExplanation": "Du kannst detaillierte Modelleinstellungen später anpassen." }, "footer": { "feedback": "Wenn du Fragen oder Feedback hast, kannst du gerne ein Issue auf github.com/RooCodeInc/Roo-Code eröffnen oder reddit.com/r/RooCode oder discord.gg/roocode beitreten", diff --git a/webview-ui/src/i18n/locales/de/welcome.json b/webview-ui/src/i18n/locales/de/welcome.json index 78304f0ca26..d4706151d5d 100644 --- a/webview-ui/src/i18n/locales/de/welcome.json +++ b/webview-ui/src/i18n/locales/de/welcome.json @@ -16,21 +16,23 @@ "incentive": "Probier Roo kostenlos aus" } }, - "chooseProvider": "Um loszulegen, brauchst du einen LLM-Anbieter:", + "chooseProvider": "Roo braucht einen LLM-Anbieter. Wähle deinen:", "providerSignup": { "rooCloudProvider": "Roo Code Cloud Provider", "rooCloudDescription": "Der einfachste Weg, Roo zu nutzen. Eine kuratierte Mischung aus kostenlosen und bezahlten Modellen zu niedrigen Kosten", "learnMore": "mehr erfahren", "useAnotherProvider": "Anderen Anbieter verwenden", "useAnotherProviderDescription": "Gib einen API-Schlüssel ein und leg los.", + "noApiKeys": "Du möchtest dich nicht mit Schlüsseln herumschlagen? Geh mit dem Roo Code Cloud Provider.", "getStarted": "Loslegen" }, "waitingForCloud": { "heading": "Wir bringen dich zu Roo Code Cloud...", - "description": "Schließe die Anmeldung in deinem Browser ab und du wirst automatisch hierher zurückgebracht.", + "description": "Wir bringen dich in deinen Browser, um dich für Roo Code Cloud zu registrieren. Dann bringen wir dich hierher zurück, um das Einrichten abzuschließen.", "noPrompt": "Wenn du nicht aufgefordert wirst, eine URL zu öffnen, klick hier.", "havingTrouble": "Wenn du die Anmeldung abgeschlossen hast, aber Probleme hast, klick hier.", "pasteUrl": "Füge die Callback-URL aus deinem Browser ein:", + "invalidURL": "Das sieht nicht wie eine gültige Callback-URL aus. Bitte kopiere das, was Roo Code Cloud in deinem Browser anzeigt.", "goBack": "Zurück" }, "startRouter": "Wir empfehlen die Verwendung eines LLM-Routers:", diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index 7548d44be19..22137e77b5c 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -863,7 +863,8 @@ "label": "Model", "searchPlaceholder": "Search", "noMatchFound": "No match found", - "useCustomModel": "Use custom: {{modelId}}" + "useCustomModel": "Use custom: {{modelId}}", + "simplifiedExplanation": "You can adjust detailed model settings later." }, "footer": { "telemetry": { diff --git a/webview-ui/src/i18n/locales/en/welcome.json b/webview-ui/src/i18n/locales/en/welcome.json index d5e0ec0739e..46a399997d7 100644 --- a/webview-ui/src/i18n/locales/en/welcome.json +++ b/webview-ui/src/i18n/locales/en/welcome.json @@ -16,21 +16,23 @@ "incentive": "Try Roo out for free" } }, - "chooseProvider": "To get started, you need an LLM provider:", + "chooseProvider": "Roo needs an LLM provider to work. Choose yours:", "providerSignup": { "rooCloudProvider": "Roo Code Cloud Provider", "rooCloudDescription": "The simplest way to use Roo. A curated mix of free and paid models at a low cost", "learnMore": "learn more", "useAnotherProvider": "Use another provider", "useAnotherProviderDescription": "Enter an API key and get going.", + "noApiKeys": "Don't want to deal with keys? Go with the Roo Code Cloud Provider.", "getStarted": "Get started" }, "waitingForCloud": { "heading": "Taking you to Roo Code Cloud...", - "description": "Complete sign-up in your browser, then you'll return here automatically.", + "description": "We'll take you to your browser to sign up for Roo Code Cloud. We'll then bring you back here to finish.", "noPrompt": "If you don't get prompted to open a URL, click here.", - "havingTrouble": "If you've completed the sign up but are having trouble, click here.", - "pasteUrl": "Paste the callback URL from your browser:", + "havingTrouble": "If you've completed sign up but are having trouble, click here.", + "pasteUrl": "Paste the callback URL shown in your browser:", + "invalidURL": "That doesn't look like a valid callback URL. Please copy what Roo Code Cloud is showing in your browser.", "goBack": "Go back" }, "startRouter": "We recommend using an LLM Router:", diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 8519938d4af..c2ad31853c5 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -858,7 +858,8 @@ "label": "Modelo", "searchPlaceholder": "Buscar", "noMatchFound": "No se encontraron coincidencias", - "useCustomModel": "Usar personalizado: {{modelId}}" + "useCustomModel": "Usar personalizado: {{modelId}}", + "simplifiedExplanation": "Puedes ajustar la configuración detallada del modelo más tarde." }, "footer": { "feedback": "Si tiene alguna pregunta o comentario, no dude en abrir un issue en github.com/RooCodeInc/Roo-Code o unirse a reddit.com/r/RooCode o discord.gg/roocode", diff --git a/webview-ui/src/i18n/locales/es/welcome.json b/webview-ui/src/i18n/locales/es/welcome.json index 04f559081d8..e4b1f99c274 100644 --- a/webview-ui/src/i18n/locales/es/welcome.json +++ b/webview-ui/src/i18n/locales/es/welcome.json @@ -16,21 +16,23 @@ "incentive": "Prueba Roo gratis" } }, - "chooseProvider": "Para comenzar, necesitas un proveedor LLM:", + "chooseProvider": "Roo necesita un proveedor de LLM. Elige el tuyo:", "providerSignup": { "rooCloudProvider": "Proveedor Roo Code Cloud", "rooCloudDescription": "La forma más sencilla de usar Roo. Una mezcla seleccionada de modelos gratuitos y de pago a bajo costo", "learnMore": "más información", "useAnotherProvider": "Usar otro proveedor", "useAnotherProviderDescription": "Introduce una clave API y comienza.", + "noApiKeys": "¿No quieres lidiar con claves? Ve con el Proveedor de Roo Code Cloud.", "getStarted": "Comenzar" }, "waitingForCloud": { "heading": "Te llevamos a Roo Code Cloud...", - "description": "Completa el registro en tu navegador y volverás aquí automáticamente.", + "description": "Te llevaremos a tu navegador para que te registres en Roo Code Cloud. Luego te traeremos aquí para terminar.", "noPrompt": "Si no se te pide que abras una URL, haz clic aquí.", "havingTrouble": "Si completaste el registro pero tienes problemas, haz clic aquí.", "pasteUrl": "Pega la URL de respuesta de tu navegador:", + "invalidURL": "Eso no parece ser una URL de respuesta válida. Por favor copia lo que Roo Code Cloud está mostrando en tu navegador.", "goBack": "Volver" }, "startRouter": "Recomendamos usar un router LLM:", diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 13f54eb59fd..5d43162ec3c 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -858,7 +858,8 @@ "label": "Modèle", "searchPlaceholder": "Rechercher", "noMatchFound": "Aucune correspondance trouvée", - "useCustomModel": "Utiliser personnalisé : {{modelId}}" + "useCustomModel": "Utiliser personnalisé : {{modelId}}", + "simplifiedExplanation": "Tu peux ajuster les paramètres détaillés du modèle ultérieurement." }, "footer": { "feedback": "Si vous avez des questions ou des commentaires, n'hésitez pas à ouvrir un problème sur github.com/RooCodeInc/Roo-Code ou à rejoindre reddit.com/r/RooCode ou discord.gg/roocode", diff --git a/webview-ui/src/i18n/locales/fr/welcome.json b/webview-ui/src/i18n/locales/fr/welcome.json index 733b22e1f44..5ede6eb37a6 100644 --- a/webview-ui/src/i18n/locales/fr/welcome.json +++ b/webview-ui/src/i18n/locales/fr/welcome.json @@ -23,6 +23,7 @@ "learnMore": "en savoir plus", "useAnotherProvider": "Utiliser un autre fournisseur", "useAnotherProviderDescription": "Entre une clé API et commence.", + "noApiKeys": "Tu ne veux pas te soucier des clés? Opte pour le Fournisseur Roo Code Cloud.", "getStarted": "Commencer" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "Si tu n'es pas invité à ouvrir une URL, clique ici.", "havingTrouble": "Si tu as terminé l'inscription mais que tu rencontres des problèmes, clique ici.", "pasteUrl": "Colle l'URL de rappel depuis ton navigateur :", + "invalidURL": "Cela ne ressemble pas à une URL de rappel valide. Copie ce que Roo Code Cloud affiche dans ton navigateur.", "goBack": "Retour" }, "startRouter": "Nous recommandons d'utiliser un routeur LLM :", diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index b9ceadc55bf..1ee9af9a98d 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -859,7 +859,8 @@ "label": "मॉडल", "searchPlaceholder": "खोजें", "noMatchFound": "कोई मिलान नहीं मिला", - "useCustomModel": "कस्टम उपयोग करें: {{modelId}}" + "useCustomModel": "कस्टम उपयोग करें: {{modelId}}", + "simplifiedExplanation": "आप बाद में विस्तृत मॉडल सेटिंग्स समायोजित कर सकते हैं।" }, "footer": { "feedback": "यदि आपके कोई प्रश्न या प्रतिक्रिया है, तो github.com/RooCodeInc/Roo-Code पर एक मुद्दा खोलने या reddit.com/r/RooCode या discord.gg/roocode में शामिल होने में संकोच न करें", diff --git a/webview-ui/src/i18n/locales/hi/welcome.json b/webview-ui/src/i18n/locales/hi/welcome.json index af58fa50599..d43b90b5535 100644 --- a/webview-ui/src/i18n/locales/hi/welcome.json +++ b/webview-ui/src/i18n/locales/hi/welcome.json @@ -23,6 +23,7 @@ "learnMore": "और जानें", "useAnotherProvider": "दूसरे प्रदाता का उपयोग करें", "useAnotherProviderDescription": "एक API कुंजी दर्ज करें और शुरू करें।", + "noApiKeys": "कुंजियों से निपटना नहीं चाहते? Roo Code Cloud प्रदाता के साथ जाएं।", "getStarted": "शुरू करें" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "यदि आपको URL खोलने के लिए संकेत नहीं मिलता है, तो यहां क्लिक करें।", "havingTrouble": "यदि आपने साइन अप पूरा कर लिया है लेकिन समस्या हो रही है, तो यहां क्लिक करें।", "pasteUrl": "अपने ब्राउज़र से कॉलबैक URL पेस्ट करें:", + "invalidURL": "यह एक वैध कॉलबैक URL नहीं लगता है। कृपया वह कॉपी करें जो Roo Code Cloud आपके ब्राउज़र में दिखा रहा है।", "goBack": "वापस जाएं" }, "startRouter": "हम एक LLM राउटर का उपयोग करने की सलाह देते हैं:", diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json index 2426f8be3cf..37f8ea6b1d5 100644 --- a/webview-ui/src/i18n/locales/id/settings.json +++ b/webview-ui/src/i18n/locales/id/settings.json @@ -888,7 +888,8 @@ "label": "Model", "searchPlaceholder": "Cari", "noMatchFound": "Tidak ada yang cocok ditemukan", - "useCustomModel": "Gunakan kustom: {{modelId}}" + "useCustomModel": "Gunakan kustom: {{modelId}}", + "simplifiedExplanation": "Anda dapat menyesuaikan pengaturan model terperinci nanti." }, "footer": { "feedback": "Jika kamu punya pertanyaan atau feedback, jangan ragu untuk membuka issue di github.com/RooCodeInc/Roo-Code atau bergabung reddit.com/r/RooCode atau discord.gg/roocode", diff --git a/webview-ui/src/i18n/locales/id/welcome.json b/webview-ui/src/i18n/locales/id/welcome.json index 88903f858d2..62364bf89ad 100644 --- a/webview-ui/src/i18n/locales/id/welcome.json +++ b/webview-ui/src/i18n/locales/id/welcome.json @@ -23,6 +23,7 @@ "learnMore": "pelajari lebih lanjut", "useAnotherProvider": "Gunakan penyedia lain", "useAnotherProviderDescription": "Masukkan kunci API dan mulai.", + "noApiKeys": "Tidak ingin menangani kunci? Pilih Penyedia Roo Code Cloud.", "getStarted": "Mulai" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "Jika kamu tidak diminta untuk membuka URL, klik di sini.", "havingTrouble": "Jika kamu telah menyelesaikan pendaftaran tetapi mengalami masalah, klik di sini.", "pasteUrl": "Tempel URL callback dari browser Anda:", + "invalidURL": "Itu tidak terlihat seperti URL callback yang valid. Salin apa yang ditampilkan Roo Code Cloud di browser Anda.", "goBack": "Kembali" }, "startRouter": "Kami merekomendasikan menggunakan Router LLM:", diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index 752b8a6dd20..b6a451d6e1a 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -859,7 +859,8 @@ "label": "Modello", "searchPlaceholder": "Cerca", "noMatchFound": "Nessuna corrispondenza trovata", - "useCustomModel": "Usa personalizzato: {{modelId}}" + "useCustomModel": "Usa personalizzato: {{modelId}}", + "simplifiedExplanation": "Puoi modificare le impostazioni dettagliate del modello in seguito." }, "footer": { "feedback": "Se hai domande o feedback, sentiti libero di aprire un issue su github.com/RooCodeInc/Roo-Code o unirti a reddit.com/r/RooCode o discord.gg/roocode", diff --git a/webview-ui/src/i18n/locales/it/welcome.json b/webview-ui/src/i18n/locales/it/welcome.json index e0329c2b0d6..b5cdba921b6 100644 --- a/webview-ui/src/i18n/locales/it/welcome.json +++ b/webview-ui/src/i18n/locales/it/welcome.json @@ -23,6 +23,7 @@ "learnMore": "scopri di più", "useAnotherProvider": "Usa un altro provider", "useAnotherProviderDescription": "Inserisci una chiave API e inizia.", + "noApiKeys": "Non vuoi occuparti di chiavi? Scegli il Provider Roo Code Cloud.", "getStarted": "Inizia" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "Se non ti viene chiesto di aprire un URL, fai clic qui.", "havingTrouble": "Se hai completato l'iscrizione ma hai problemi, fai clic qui.", "pasteUrl": "Incolla l'URL di callback dal tuo browser:", + "invalidURL": "Questo non sembra un URL di callback valido. Copia quello che Roo Code Cloud mostra nel tuo browser.", "goBack": "Indietro" }, "startRouter": "Consigliamo di utilizzare un router LLM:", diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index 9281f3be15a..4af2d57bf4c 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -859,7 +859,8 @@ "label": "モデル", "searchPlaceholder": "検索", "noMatchFound": "一致するものが見つかりません", - "useCustomModel": "カスタムを使用: {{modelId}}" + "useCustomModel": "カスタムを使用: {{modelId}}", + "simplifiedExplanation": "詳細なモデル設定は後で調整できます。" }, "footer": { "feedback": "質問やフィードバックがある場合は、github.com/RooCodeInc/Roo-Codeで問題を開くか、reddit.com/r/RooCodediscord.gg/roocodeに参加してください", diff --git a/webview-ui/src/i18n/locales/ja/welcome.json b/webview-ui/src/i18n/locales/ja/welcome.json index c54253bf92b..83ecede6a37 100644 --- a/webview-ui/src/i18n/locales/ja/welcome.json +++ b/webview-ui/src/i18n/locales/ja/welcome.json @@ -23,6 +23,7 @@ "learnMore": "詳細を見る", "useAnotherProvider": "別のプロバイダーを使用", "useAnotherProviderDescription": "APIキーを入力して始める。", + "noApiKeys": "キーを扱いたくないですか?Roo Code Cloudプロバイダーを選びましょう。", "getStarted": "始める" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "URLを開くように促されない場合は、ここをクリックしてください。", "havingTrouble": "サインアップを完了しましたが問題がある場合は、ここをクリックしてください。", "pasteUrl": "ブラウザからコールバックURLを貼り付けてください:", + "invalidURL": "有効なコールバックURLのようには見えません。Roo Code Cloudがブラウザに表示しているものをコピーしてください。", "goBack": "戻る" }, "startRouter": "LLMルーターの使用をお勧めします:", diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index c555b81f243..643c735bafb 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -859,7 +859,8 @@ "label": "모델", "searchPlaceholder": "검색", "noMatchFound": "일치하는 항목 없음", - "useCustomModel": "사용자 정의 사용: {{modelId}}" + "useCustomModel": "사용자 정의 사용: {{modelId}}", + "simplifiedExplanation": "나중에 자세한 모델 설정을 조정할 수 있습니다." }, "footer": { "feedback": "질문이나 피드백이 있으시면 github.com/RooCodeInc/Roo-Code에서 이슈를 열거나 reddit.com/r/RooCode 또는 discord.gg/roocode에 가입하세요", diff --git a/webview-ui/src/i18n/locales/ko/welcome.json b/webview-ui/src/i18n/locales/ko/welcome.json index 7cf01158084..48b4078f878 100644 --- a/webview-ui/src/i18n/locales/ko/welcome.json +++ b/webview-ui/src/i18n/locales/ko/welcome.json @@ -23,6 +23,7 @@ "learnMore": "자세히 알아보기", "useAnotherProvider": "다른 제공업체 사용", "useAnotherProviderDescription": "API 키를 입력하고 시작하세요.", + "noApiKeys": "키를 다루기 싫으세요? Roo Code Cloud 제공업체를 선택하세요.", "getStarted": "시작하기" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "URL을 열도록 요청받지 않으면 여기를 클릭하세요.", "havingTrouble": "가입을 완료했지만 문제가 있으면 여기를 클릭하세요.", "pasteUrl": "브라우저에서 콜백 URL을 붙여넣으세요:", + "invalidURL": "유효한 콜백 URL로 보이지 않습니다. Roo Code Cloud에서 브라우저에 표시하는 내용을 복사하세요.", "goBack": "돌아가기" }, "startRouter": "LLM 라우터 사용을 권장합니다:", diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index 01da609400c..68881e7670e 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -859,7 +859,8 @@ "label": "Model", "searchPlaceholder": "Zoeken", "noMatchFound": "Geen overeenkomsten gevonden", - "useCustomModel": "Aangepast gebruiken: {{modelId}}" + "useCustomModel": "Aangepast gebruiken: {{modelId}}", + "simplifiedExplanation": "Je kunt later gedetailleerde modelinstellingen aanpassen." }, "footer": { "feedback": "Heb je vragen of feedback? Open gerust een issue op github.com/RooCodeInc/Roo-Code of sluit je aan bij reddit.com/r/RooCode of discord.gg/roocode", diff --git a/webview-ui/src/i18n/locales/nl/welcome.json b/webview-ui/src/i18n/locales/nl/welcome.json index a52d139fb40..affbfa71d47 100644 --- a/webview-ui/src/i18n/locales/nl/welcome.json +++ b/webview-ui/src/i18n/locales/nl/welcome.json @@ -23,6 +23,7 @@ "learnMore": "meer informatie", "useAnotherProvider": "Gebruik een andere provider", "useAnotherProviderDescription": "Voer een API-sleutel in en ga aan de slag.", + "noApiKeys": "Geen zin in sleutels? Kies dan voor de Roo Code Cloud Provider.", "getStarted": "Beginnen" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "Als je niet wordt gevraagd een URL te openen, klik hier.", "havingTrouble": "Als je de registratie hebt voltooid maar problemen hebt, klik hier.", "pasteUrl": "Plak de callback-URL vanuit je browser:", + "invalidURL": "Dat ziet er niet uit als een geldige callback-URL. Kopieer wat Roo Code Cloud in je browser toont.", "goBack": "Terug" }, "startRouter": "We raden aan om een LLM-router te gebruiken:", diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index a8cf0eca78e..549e12c706e 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -859,7 +859,8 @@ "label": "Model", "searchPlaceholder": "Wyszukaj", "noMatchFound": "Nie znaleziono dopasowań", - "useCustomModel": "Użyj niestandardowy: {{modelId}}" + "useCustomModel": "Użyj niestandardowy: {{modelId}}", + "simplifiedExplanation": "Można dostosować szczegółowe ustawienia modelu później." }, "footer": { "feedback": "Jeśli masz jakiekolwiek pytania lub opinie, śmiało otwórz zgłoszenie na github.com/RooCodeInc/Roo-Code lub dołącz do reddit.com/r/RooCode lub discord.gg/roocode", diff --git a/webview-ui/src/i18n/locales/pl/welcome.json b/webview-ui/src/i18n/locales/pl/welcome.json index 6dc8fd169aa..abf3fbf614e 100644 --- a/webview-ui/src/i18n/locales/pl/welcome.json +++ b/webview-ui/src/i18n/locales/pl/welcome.json @@ -23,6 +23,7 @@ "learnMore": "dowiedz się więcej", "useAnotherProvider": "Użyj innego dostawcy", "useAnotherProviderDescription": "Wprowadź klucz API i zacznij.", + "noApiKeys": "Nie chcesz się zajmować kluczami? Wybierz Dostawcę Roo Code Cloud.", "getStarted": "Rozpocznij" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "Jeśli nie zostaniesz poproszony o otwarcie adresu URL, kliknij tutaj.", "havingTrouble": "Jeśli ukończyłeś rejestrację, ale masz problemy, kliknij tutaj.", "pasteUrl": "Wklej adres URL wywołania zwrotnego z przeglądarki:", + "invalidURL": "To nie wygląda na ważny adres URL wywołania zwrotnego. Skopiuj to, co Roo Code Cloud pokazuje w Twojej przeglądarce.", "goBack": "Wróć" }, "startRouter": "Zalecamy korzystanie z routera LLM:", diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index 0cb0c48afd5..9196e9e694c 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -859,7 +859,8 @@ "label": "Modelo", "searchPlaceholder": "Pesquisar", "noMatchFound": "Nenhuma correspondência encontrada", - "useCustomModel": "Usar personalizado: {{modelId}}" + "useCustomModel": "Usar personalizado: {{modelId}}", + "simplifiedExplanation": "Você pode ajustar as configurações detalhadas do modelo mais tarde." }, "footer": { "feedback": "Se tiver alguma dúvida ou feedback, sinta-se à vontade para abrir um problema em github.com/RooCodeInc/Roo-Code ou juntar-se a reddit.com/r/RooCode ou discord.gg/roocode", diff --git a/webview-ui/src/i18n/locales/pt-BR/welcome.json b/webview-ui/src/i18n/locales/pt-BR/welcome.json index 230cb0a2da8..811727061af 100644 --- a/webview-ui/src/i18n/locales/pt-BR/welcome.json +++ b/webview-ui/src/i18n/locales/pt-BR/welcome.json @@ -23,6 +23,7 @@ "learnMore": "saiba mais", "useAnotherProvider": "Usar outro provedor", "useAnotherProviderDescription": "Digite uma chave API e comece.", + "noApiKeys": "Não quer lidar com chaves? Escolha o Provedor Roo Code Cloud.", "getStarted": "Começar" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "Se você não for solicitado a abrir uma URL, clique aqui.", "havingTrouble": "Se você completou o registro mas está tendo problemas, clique aqui.", "pasteUrl": "Cole a URL de callback do seu navegador:", + "invalidURL": "Isso não parece uma URL de callback válida. Copie o que o Roo Code Cloud está mostrando no seu navegador.", "goBack": "Voltar" }, "startRouter": "Recomendamos usar um roteador LLM:", diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index 69cca8038f5..03996e78259 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -859,7 +859,8 @@ "label": "Модель", "searchPlaceholder": "Поиск", "noMatchFound": "Совпадений не найдено", - "useCustomModel": "Использовать пользовательскую: {{modelId}}" + "useCustomModel": "Использовать пользовательскую: {{modelId}}", + "simplifiedExplanation": "Ты сможешь настроить подробные параметры модели позже." }, "footer": { "feedback": "Если у вас есть вопросы или предложения, откройте issue на github.com/RooCodeInc/Roo-Code или присоединяйтесь к reddit.com/r/RooCode или discord.gg/roocode", diff --git a/webview-ui/src/i18n/locales/ru/welcome.json b/webview-ui/src/i18n/locales/ru/welcome.json index 97556b78af8..91c64af1b35 100644 --- a/webview-ui/src/i18n/locales/ru/welcome.json +++ b/webview-ui/src/i18n/locales/ru/welcome.json @@ -23,6 +23,7 @@ "learnMore": "подробнее", "useAnotherProvider": "Использовать другого провайдера", "useAnotherProviderDescription": "Введи API-ключ и начни.", + "noApiKeys": "Не хочешь заниматься ключами? Выбери Провайдер Roo Code Cloud.", "getStarted": "Начать" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "Если вас не попросят открыть URL, нажмите здесь.", "havingTrouble": "Если вы завершили регистрацию, но у вас возникли проблемы, нажмите здесь.", "pasteUrl": "Вставьте URL обратного вызова из браузера:", + "invalidURL": "Это не похоже на корректный URL обратного вызова. Скопируй то, что показывает Roo Code Cloud в твоем браузере.", "goBack": "Назад" }, "startRouter": "Мы рекомендуем использовать маршрутизатор LLM:", diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index c4491f618c2..5adcc8afb2d 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -859,7 +859,8 @@ "label": "Model", "searchPlaceholder": "Ara", "noMatchFound": "Eşleşme bulunamadı", - "useCustomModel": "Özel kullan: {{modelId}}" + "useCustomModel": "Özel kullan: {{modelId}}", + "simplifiedExplanation": "Ayrıntılı model ayarlarını daha sonra ayarlayabilirsiniz." }, "footer": { "feedback": "Herhangi bir sorunuz veya geri bildiriminiz varsa, github.com/RooCodeInc/Roo-Code adresinde bir konu açmaktan veya reddit.com/r/RooCode ya da discord.gg/roocode'a katılmaktan çekinmeyin", diff --git a/webview-ui/src/i18n/locales/tr/welcome.json b/webview-ui/src/i18n/locales/tr/welcome.json index 233abf61661..e47fc980148 100644 --- a/webview-ui/src/i18n/locales/tr/welcome.json +++ b/webview-ui/src/i18n/locales/tr/welcome.json @@ -23,6 +23,7 @@ "learnMore": "daha fazla bilgi", "useAnotherProvider": "Başka bir sağlayıcı kullan", "useAnotherProviderDescription": "Bir API anahtarı gir ve başla.", + "noApiKeys": "Anahtarlarla uğraşmak istemez misin? Roo Code Cloud Sağlayıcısı'nı seç.", "getStarted": "Başla" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "URL açmanız istenmezse, buraya tıkla.", "havingTrouble": "Kaydı tamamladıysan ama sorun yaşıyorsan, buraya tıkla.", "pasteUrl": "Tarayıcınızdan geri arama URL'sini yapıştırın:", + "invalidURL": "Bu geçerli bir geri arama URL'si gibi görünmüyor. Roo Code Cloud'un tarayıcında gösterdiği şeyi kopyala.", "goBack": "Geri Dön" }, "startRouter": "Bir LLM yönlendiricisi kullanmanı öneririz:", diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 8691d3e7db2..ae896d48501 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -859,7 +859,8 @@ "label": "Mô hình", "searchPlaceholder": "Tìm kiếm", "noMatchFound": "Không tìm thấy kết quả", - "useCustomModel": "Sử dụng tùy chỉnh: {{modelId}}" + "useCustomModel": "Sử dụng tùy chỉnh: {{modelId}}", + "simplifiedExplanation": "Bạn có thể điều chỉnh cài đặt mô hình chi tiết sau." }, "footer": { "feedback": "Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, vui lòng mở một vấn đề tại github.com/RooCodeInc/Roo-Code hoặc tham gia reddit.com/r/RooCode hoặc discord.gg/roocode", diff --git a/webview-ui/src/i18n/locales/vi/welcome.json b/webview-ui/src/i18n/locales/vi/welcome.json index b3fb071ecdd..53bfa921b6a 100644 --- a/webview-ui/src/i18n/locales/vi/welcome.json +++ b/webview-ui/src/i18n/locales/vi/welcome.json @@ -23,6 +23,7 @@ "learnMore": "tìm hiểu thêm", "useAnotherProvider": "Sử dụng nhà cung cấp khác", "useAnotherProviderDescription": "Nhập khóa API và bắt đầu.", + "noApiKeys": "Không muốn phải xử lý các khóa? Hãy sử dụng Nhà cung cấp Roo Code Cloud.", "getStarted": "Bắt đầu" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "Nếu bạn không được nhắc mở URL, hãy nhấp vào đây.", "havingTrouble": "Nếu bạn đã hoàn thành đăng ký nhưng gặp sự cố, hãy nhấp vào đây.", "pasteUrl": "Dán URL callback từ trình duyệt của bạn:", + "invalidURL": "Điều đó không giống như một URL callback hợp lệ. Vui lòng sao chép những gì Roo Code Cloud đang hiển thị trong trình duyệt của bạn.", "goBack": "Quay lại" }, "startRouter": "Chúng tôi khuyên bạn nên sử dụng bộ định tuyến LLM:", diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index 39684435896..ea4867c472a 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -859,7 +859,8 @@ "label": "模型", "searchPlaceholder": "搜索", "noMatchFound": "未找到匹配项", - "useCustomModel": "使用自定义:{{modelId}}" + "useCustomModel": "使用自定义:{{modelId}}", + "simplifiedExplanation": "你可以稍后调整详细的模型设置。" }, "footer": { "feedback": "如果您有任何问题或反馈,请随时在 github.com/RooCodeInc/Roo-Code 上提出问题或加入 reddit.com/r/RooCodediscord.gg/roocode", diff --git a/webview-ui/src/i18n/locales/zh-CN/welcome.json b/webview-ui/src/i18n/locales/zh-CN/welcome.json index f21b35ca8a6..48405069b1c 100644 --- a/webview-ui/src/i18n/locales/zh-CN/welcome.json +++ b/webview-ui/src/i18n/locales/zh-CN/welcome.json @@ -23,6 +23,7 @@ "learnMore": "了解更多", "useAnotherProvider": "使用其他提供商", "useAnotherProviderDescription": "输入 API 密钥即可开始。", + "noApiKeys": "不想处理密钥?选择 Roo Code Cloud 提供商吧。", "getStarted": "开始使用" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "如果你未被提示打开 URL,请点击此处。", "havingTrouble": "如果你已完成注册但遇到问题,请点击此处。", "pasteUrl": "从浏览器粘贴回调 URL:", + "invalidURL": "这看起来不像是有效的回调 URL。请复制 Roo Code Cloud 在你的浏览器中显示的内容。", "goBack": "返回" }, "startRouter": "我们推荐使用 LLM 路由器:", diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 6dc3eada7f9..bbe39a41891 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -859,7 +859,8 @@ "label": "模型", "searchPlaceholder": "搜尋", "noMatchFound": "找不到符合的項目", - "useCustomModel": "使用自訂模型:{{modelId}}" + "useCustomModel": "使用自訂模型:{{modelId}}", + "simplifiedExplanation": "你可以稍後調整詳細的模型設定。" }, "footer": { "feedback": "若您有任何問題或建議,歡迎至 github.com/RooCodeInc/Roo-Code 提出 issue,或加入 reddit.com/r/RooCodediscord.gg/roocode 討論。", diff --git a/webview-ui/src/i18n/locales/zh-TW/welcome.json b/webview-ui/src/i18n/locales/zh-TW/welcome.json index 6d3fc0dca0f..7ce67724d1c 100644 --- a/webview-ui/src/i18n/locales/zh-TW/welcome.json +++ b/webview-ui/src/i18n/locales/zh-TW/welcome.json @@ -23,6 +23,7 @@ "learnMore": "了解更多", "useAnotherProvider": "使用其他提供者", "useAnotherProviderDescription": "輸入 API 金鑰即可開始。", + "noApiKeys": "不想處理金鑰?選擇 Roo Code Cloud 提供者吧。", "getStarted": "開始使用" }, "waitingForCloud": { @@ -31,6 +32,7 @@ "noPrompt": "如果您未被提示開啟 URL,請點擊此處。", "havingTrouble": "如果您已完成註冊但遇到問題,請點擊此處。", "pasteUrl": "從瀏覽器貼上回呼 URL:", + "invalidURL": "這看起來不像是有效的回呼 URL。請複製 Roo Code Cloud 在您的瀏覽器中顯示的內容。", "goBack": "返回" }, "startRouter": "我們建議使用 LLM 路由器:",