Compare commits

...
Author SHA1 Message Date
celestial-vault f5d0c6840f add missing type 2025-06-27 15:04:16 -07:00
celestial-vault 1f267d058a duplicate import 2025-06-27 14:26:35 -07:00
celestial-vault 853b8a6470 merge conflicts 2025-06-27 14:23:04 -07:00
celestial-vault a5258e46e1 add general settings section 2025-06-27 10:24:15 -07:00
celestial-vault 36dfc7de11 refactor out apiconfig section 2025-06-27 10:04:57 -07:00
3 changed files with 67 additions and 45 deletions
@@ -3,25 +3,22 @@ import HeroTooltip from "@/components/common/HeroTooltip"
import { useExtensionState } from "@/context/ExtensionStateContext"
import { StateServiceClient } from "@/services/grpc-client"
import { validateApiConfiguration, validateModelId } from "@/utils/validate"
import { vscode } from "@/utils/vscode"
import { ExtensionMessage } from "@shared/ExtensionMessage"
import { EmptyRequest, StringRequest } from "@shared/proto/common"
import { StringRequest } from "@shared/proto/common"
import { PlanActMode, ResetStateRequest, TogglePlanActModeRequest, UpdateSettingsRequest } from "@shared/proto/state"
import { VSCodeButton, VSCodeCheckbox, VSCodeLink, VSCodeTextArea } from "@vscode/webview-ui-toolkit/react"
import { VSCodeButton, VSCodeLink } from "@vscode/webview-ui-toolkit/react"
import { CheckCheck, FlaskConical, Info, LucideIcon, Settings, SquareMousePointer, SquareTerminal, Webhook } from "lucide-react"
import { memo, useCallback, useEffect, useRef, useState } from "react"
import { useEvent } from "react-use"
import { Tab, TabContent, TabHeader, TabList, TabTrigger } from "../common/Tab"
import { TabButton } from "../mcp/configuration/McpConfigurationView"
import ApiOptions from "./ApiOptions"
import BrowserSettingsSection from "./BrowserSettingsSection"
import { BrowserSettings } from "@shared/BrowserSettings"
import FeatureSettingsSection from "./FeatureSettingsSection"
import PreferredLanguageSetting from "./PreferredLanguageSetting" // Added import
import Section from "./Section"
import SectionHeader from "./SectionHeader"
import TerminalSettingsSection from "./TerminalSettingsSection"
import ApiConfigurationSection from "./sections/ApiConfigurationSection"
import GeneralSettingsSection from "./sections/GeneralSettingsSection"
import { convertApiConfigurationToProtoApiConfiguration } from "@shared/proto-conversions/state/settings-conversion"
import { convertChatSettingsToProtoChatSettings } from "@shared/proto-conversions/state/chat-settings-conversion"
const IS_DEV = process.env.IS_DEV
@@ -776,43 +773,13 @@ const SettingsView = ({ onDone, targetSection }: SettingsViewProps) => {
{/* General Settings Tab */}
{activeTab === "general" && (
<div>
{renderSectionHeader("general")}
<Section>
{chatSettings && (
<PreferredLanguageSetting
chatSettings={chatSettings}
setChatSettings={setChatSettings}
/>
)}
<div className="mb-[5px]">
<VSCodeCheckbox
className="mb-[5px]"
checked={telemetrySetting !== "disabled"}
onChange={(e: any) => {
const checked = e.target.checked === true
setTelemetrySetting(checked ? "enabled" : "disabled")
}}>
Allow anonymous error and usage reporting
</VSCodeCheckbox>
<p className="text-xs mt-[5px] text-[var(--vscode-descriptionForeground)]">
Help improve Cline by sending anonymous usage data and error reports. No code,
prompts, or personal information are ever sent. See our{" "}
<VSCodeLink
href="https://docs.cline.bot/more-info/telemetry"
className="text-inherit">
telemetry overview
</VSCodeLink>{" "}
and{" "}
<VSCodeLink href="https://cline.bot/privacy" className="text-inherit">
privacy policy
</VSCodeLink>{" "}
for more details.
</p>
</div>
</Section>
</div>
<GeneralSettingsSection
chatSettings={chatSettings}
setChatSettings={setChatSettings}
telemetrySetting={telemetrySetting}
setTelemetrySetting={setTelemetrySetting}
renderSectionHeader={renderSectionHeader}
/>
)}
{/* Feature Settings Tab */}
@@ -1,5 +1,4 @@
import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"
import { memo } from "react"
import { TabButton } from "../../mcp/configuration/McpConfigurationView"
import ApiOptions from "../ApiOptions"
import Section from "../Section"
@@ -96,4 +95,4 @@ const ApiConfigurationSection = ({
)
}
export default memo(ApiConfigurationSection)
export default ApiConfigurationSection
@@ -0,0 +1,56 @@
import { VSCodeCheckbox, VSCodeLink } from "@vscode/webview-ui-toolkit/react"
import { ChatSettings } from "@shared/ChatSettings"
import { TelemetrySetting } from "@shared/TelemetrySetting"
import PreferredLanguageSetting from "../PreferredLanguageSetting"
import Section from "../Section"
interface GeneralSettingsSectionProps {
chatSettings: ChatSettings
setChatSettings: (settings: ChatSettings) => void
telemetrySetting: TelemetrySetting
setTelemetrySetting: (value: TelemetrySetting) => void
renderSectionHeader: (tabId: string) => JSX.Element | null
}
const GeneralSettingsSection = ({
chatSettings,
setChatSettings,
telemetrySetting,
setTelemetrySetting,
renderSectionHeader,
}: GeneralSettingsSectionProps) => {
return (
<div>
{renderSectionHeader("general")}
<Section>
{chatSettings && <PreferredLanguageSetting chatSettings={chatSettings} setChatSettings={setChatSettings} />}
<div className="mb-[5px]">
<VSCodeCheckbox
className="mb-[5px]"
checked={telemetrySetting !== "disabled"}
onChange={(e: any) => {
const checked = e.target.checked === true
setTelemetrySetting(checked ? "enabled" : "disabled")
}}>
Allow anonymous error and usage reporting
</VSCodeCheckbox>
<p className="text-xs mt-[5px] text-[var(--vscode-descriptionForeground)]">
Help improve Cline by sending anonymous usage data and error reports. No code, prompts, or personal
information are ever sent. See our{" "}
<VSCodeLink href="https://docs.cline.bot/more-info/telemetry" className="text-inherit">
telemetry overview
</VSCodeLink>{" "}
and{" "}
<VSCodeLink href="https://cline.bot/privacy" className="text-inherit">
privacy policy
</VSCodeLink>{" "}
for more details.
</p>
</div>
</Section>
</div>
)
}
export default GeneralSettingsSection